ROS google_cloud_vision
Este node não subscreve nem publica em nenhum tópico. Apenas expõe o seguinte serviço:
/annotate
Funciona como base para o pacote google_cloud_vision_example que tem de ser instalado e executado posteriormente.
Instalação do pacote a partir das fontes
Este pacote só está disponivel para instalação a partir das fontes.
Para a sua correcta compilação necessita de outros pacotes do ros e bibliotecas que estão referidos mais abaixo.
Pacotes do ROS requeridos
https://github.com/yoshito-n-students/google_cloud_vision_msgs
https://github.com/yoshito-n-students/google_cloud_vision_srvs
Compilação de bibliotecas rqueridas a partir das fontes
Para a correcta compilação do pacote é necessário instalar a biblioteca ccpnetlib a partir das fontes.
Ver mensagem de erro de compilação mais abaixo.
Instalar o ccpnetlib
Executar os seguintes comandos
git clone https://github.com/cpp-netlib/cpp-netlib.git cd cpp-netlib git checkout cpp-netlib-0.13.0-final git submodule init git submodule update mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make sudo make install
Se tudo correr sem erros a biblioteca fica instada.
Instalar o pacote ROS google_cloud_vision
Clonar o pacote do github e para a pasta ~/catkin_ws/src e compilar com o catkin_make.
cd ~/catkin_ws/src git clone https://github.com/yoshito-n-students/google_cloud_vision.git cd ~/catkin_ws/ catkin_make
Instalação do pacote com o exemplo
Clonar o pacote do github e para a pasta ~/catkin_ws/src e compilar com o catkin_make.
cd ~/catkin_ws/src git clone https://github.com/yoshito-n-students/google_cloud_vision_example.git cd ~/catkin_ws/ catkin_make
Exploração do pacote google_cloud_vision
Só tem um node e não tem ficheiros launch
O node pode ser executado com o seguinte comando
rosrun google_cloud_vision google_cloud_vision_node _key:='abc'
Se o executarmos sem a key dá o seguinte erro de execução
[ERROR] [1572835861.062970014]: Required parameter ~key is missing
Quando executa correctamente o node não exibe nenhuma mensagem no terminal, nem subscreve nem publica em nenhum tópico.
A unica funcionalidade do node está exposta no serviço /annotate.
Execução de node do pacote de exemplo
rosrun google_cloud_vision_example annotate_example _image:=/home/user/img.jpg
Se o executarmos sem a key dá o seguinte erro de execução:
[ERROR] [1572837720.075061086]: A required parameter ~image is missing
Se executarmos sem o node google_cloud_vision estar a ser executado exibe o seguinte aviso no terminal:
[ INFO] [1572837952.943121673]: waitForService: Service [/annotate] has not been advertised, waiting…
Por ultimo quando tudo parecia resolvido e estava com esperança que funcionase bem. Surgiu o seguinte erro.
[ERROR] [1572838190.215140372]: Error response:
has_code: 0
code: 0
message: Network is unreachable
details:
Como esta mensagem é a devolvida pelo serviço. Dediquei a minha atençao a esse node.
Uma sessão cave man debuging permitiu-me isolar o ponto de falha na seguinte linha no ficheiro client.hpp, do pacote que presta o serviço:
json_response.str(bnh::body(http_client.post(http_destination_, json_request.str())));
E mais especificamente na execuçao do metodo json_response.str(). Já que o seu argumento(abaixo) executa sem problemas, mas nada devolve.
bnh::body(http_client.post(http_destination_, json_request.str()))
Portanto, antes de me embrenhar no que estava mal daqui para a frente, resolvi experimentar o acesso ao google cloud vision por outros metodos.
- Experimentei na shell com curl e funcionou.
- Experimentei com um exemplo python e funcionou.
- Experimentei com outro exemplo python e funcionou.
As experiencia form efectudas usando os exemplos disponiveis nos seguinte endereços, pela ordem indicada:
- https://codelabs.developers.google.com/codelabs/cloud-vision-intro/
- https://cloud.google.com/vision/docs/libraries
- https://cloud.google.com/vision/docs/face-tutorial
Na informação disponivel não está indicada nenhuma biblioteca para C/C++.
Alem disso quando se pesquisa fora da documentação do googlle a biblioteca que está disponivel está descontinuada.
Portanto este pacote deixou de parecer um bom investimento de tempo e decidi, que antes de fazer nodes para o ROS em python com base nos exemplos que executei com sucesso , deveria fazer uma pesquisa centrada no ros python e google vision.
Como resultado encontrei o pacote:
https://github.com/jihoonl/gc_bridge
Que instalei e funcionou.
Mensagens de erro na compilação
Could not find a package configuration file provided by “cppnetlib” with
any of the following names:
cppnetlibConfig.cmake
cppnetlib-config.cmake