ROS gc_bridge

O gc_bridge destina-se a servir de interface entre os nodes ROS e os serviços do google cloud vision e é composto por dois pacotes.

  • gc_msgs
  • gc_vision_bridge

O repositório com os dois pacotes para o ROS está disponivel no seguinte link.

https://github.com/jihoonl/gc_bridge

 

Instalação do gc_bride no ROS

A instalação do gc_bridge no ROS é executada com os seguintes comandos.

cd ~/catkin_ws/src
git clone https://github.com/jihoonl/gc_bridge.git
cd gc_bridge/gc_vision_bridge
sudo apt-get install python-pip
pip install -r requirements.txt
cd ~/catkin_ws/
catkin_make

Antes de avançar para a configuração é necessário obter uma conta do google cloud, obter as credenciais de acesso e instalar o software.

O procedimento está descrito em na página: Autenticação no Google Cloud.

Adicionalmente deve adicionar o google cloud vision ao projecto a usar.

Configurar e testar a instalação do gc_bride no ROS

Depois de executar o procedimento préviamente indicado, é necessário configurar o ambiente, caso nao o tenha colocado no ficheiro .bashrc, executar:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/filename.json"

De seguida preparar o ambiente com o caminho para a pasta com as imagens a usar.

export GC_VISION_TEST_IMAGE_DIR=/home/user/catkin_ws/src/gc_bridge/gc_vision_bridge/imgs/

Posicionamo-nos na pasta dos testes com o seguinte comando:

cd /home/user/catkin_ws/src/gc_bridge/gc_vision_bridge/tests

Após este procedimento está pronto para executar os testes com os seguintes comandos:

./test_face.py

Este comando executa a detecção facial com identificação de emoções.

O seguinte comando enumera os objectos, ou os atributos de um objecto, que deteta na imagem.

./test_label.py

O próximo comando identifica o monumento ou local exibido na imagem.

./test_landmark.py

O ultimo teste identifica o texto numa imagem.

./test_text.py

Este teste terminou com erro. No entanto iniciou a produção do output apresentando as propriedades que identificou. O output foi extenso. Bastante extenso, O erro final foi o seguinte:

 File "./test_text.py", line 53, in <module>
show_detection(cv_image, result)
File "./test_text.py", line 33, in show_detection
box = [(v['x'], v['y']) for v in f['boundingPoly']['vertices']]
KeyError: 'y'

Parece que o problema está na apresentação da imagem.

Feitos os testes, e apesar do ultimo falhar, o resultado foi positivo.

Por isso é hora de avançar para a exploração das funcionalidades do pacote no ROS.

Exploração do gc_bride no ROS

Caso não tenha preparado as variaveis de ambiente conforme descrito na configuração e teste do pacote. Deve efectuar esse procedimento antes de executar os seguintes comandos (o roscore é opcional):

roscore &
rosrun gc_vision_bridge srv_server.py &
rosrun gc_vision_bridge srv_client.py

O node cliente implementa a funcionalidade do primeiro teste.

Se funcionar, como foi o caso, abre uma janela com a imagem analisada e no terminal do cliente é exibida a resposta do google vision.

 

export GC_VISION_TEST_IMAGE_DIR=/home/user/catkin_ws/src/gc_bridge/gc_vision_bridge/imgs/

export GC_VISION_TEST_IMAGE_DIR=/home/inaciose/src/git/GoogleVisionTutorials/

export GC_VISION_TEST_IMAGE_DIR=/home/inaciose/scripts/google-vision-test-scripts/

cd /home/inaciose/catkin_ws/src/gc_bridge/gc_vision_bridge/tests/

./test_face.py face-input.jpg

./test_landmark.py photo.jpeg

./test_label.py photo.jpeg