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