ROS google_cloud_vision

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