Software para visão artificial no ROS

A visão artificial é efectuada com base no processamento de imagens, de modo a detectar objectos, faces, padrões emocionais, relações de causa efeito, etc. Ou seja tudo aquilo que caracteriza a visão humana, e que não funciona dissociada da capacidade dos nossos cerebros de processar as imagens recolhidas pelos nossos olhos.

Por isso, podemos dividir a aquisição das imagens do seu processamento, e centrar-nos neste ultimo como o cerne da visão artificial.

Para serem processadas as imagens em que ser adquiridas por um dispositivo que substitui o olho humano.

No ROS a aquisição das imagens pode ser efectuada  com uma camera usb, mesmo das mais baratas.

Sem correspondencia no ser humano, para alem das artes visuais, existe na robótica a necessidade de visualizar as imagens, adquiridas, ou resultantes do processamento,

Poderemos por isso considerar as seguintes divisões:

  • Aquisição de imagens (ver fontes de imagens no ROS)
  • Processamento de imagens
  • Visualização de imagens

Para cada uma destas divisões funcionais existem vários pacotes disponiveis, e vários metodos de implementação com vista a obter os resultados pretendidos.

Os nodes de visão artificial comunicam tal como todos os outros atravez de mensagens nos tópicos adequados. Os tópicos de imagens tem mensagens do tipo: sensor_msgs/Image.

Fontes de imagens no ROS

Para emular a visão, é necessária pelo menos uma fonte de imagens.

No ROS podemos usar, entre outros tipos de cameras, as vulgares cameras de video usb como fontes de imagens, assim como cameras de profundidade como a incluida na microsoft kinect.

Também é possivel recorrer a visão estéreoscopica mas para isso é necessário pelo menos duas cameras, de preferência iguais.

O ROS tem pelo menos um pacote que permite usar cameras usb e que se instala com facilidade com o seguinte comando:

sudo apt install ros-melodic-usb-cam

Para saber mais sobre este pacote consultar o seguinte link:

ROS usb_cam

Mas também é possivel fazermos o nosso próprio node de captura de imagens da camara de video com base no código disponivel no seguinte link:

https://github.com/AaronMR/Learning_ROS_for_Robotics_Programming_2nd_edition/tree/hydro-devel/chapter5_tutorials

O volume de dados que envolve o processamendo da visão artificial é grande,. Por isso em sistemas com poucos recursos computacionais e baixo debito de transmissão é conviniente diminuir  o tamanho da imagem capturada pela camera.

Visualização de imagens no ROS

As imagens de video podem ser visualizadas recorrendo aos seguintes recursos do ROS:

  • rviz (visualização de camera, requer camera calibrada)
  • Pacote image_view

Para visualizar as imagens adquiridas ou processadas pode.se usar o pacote o rviz ou o pacote image image_view que se pode instalar com o seguinte comando:

sudo apt install ros-melodic-image-view

Para saber mais sobre este pacote consultar o seguinte link:

ROS image_view

Processamento de imagens no ROS

O processamento das imagens no ROS tem como base o openCV, e mesmo que se utilizem recursos externos, o openCV é  usado sempre que se pretende manipular imagens localmente.

Mas a implementação das operações que necessitam de grande poder de processamento podem ser efectudas com os recursos locais do opencv, ou efectuadas por sistemas remotos que prestam  esse serviço.

Por isso podemos dizer que existem dois paradigmas de processamento

  • Processamento local, ou remoto, de visão artificial no ROS com base no openCV
  • Processamento remoto de visão artifical no ROS com base em serviços externos como o gcloud ou o aws, mas que recorrem ao opencv para pequenos processamentos locais.

 

Para um breve resumo sobre os serviços remotos disponiveis consultar a página: Serviços remotos para ROS robots.

Pacotes importantes de visão artificial no ROS

Existem vários pacotes importantes para a exploração da visão artificial no ROS.

Abaixo esta uma lista dos mais importantes, e eventuais informações complementares sobre os mesmos, e links para as minha experiencias de instalação e exploração de alguns dos pacotes referidos.

ROS vision_opencv

http://wiki.ros.org/vision_opencv

Os pacotes que inclui são os seguintes

  • cv_bridge: A ponte entre o ROS e o OpenCV.
  • image_geometry: metodos para descrever a geometria das imagens

Para além destes pacotes de base, existem outros que, quando usados em conjunto, fornecem as funcionalidades necessárias para implementar projectos de visão artificial.

ROS image_view

O pacote do visualizador de imagens no ROS

ROS usb_cam

O pacote para a aquisição de imagens com cameras de video usb no ROS

ROS camera_calibration

O pacote para a calibração das cameras para uso no ROS

ROS opencv_apps

ver: reconhecimento facial

Pacotes de visão do ROS avaliados e não funcionais

Lista de pacotes de visão artificial para o ROS que já instalei ou tentei instalar e que considerei bão funcionais por terem existido dificuldades que pelo menos o meu conhecimento e tempo disponivel nao permitiu resolver.

Outros pacotes de visão artificial disponiveis para o ROS

Lista de outros pacotes de visão artificial para o ROS que pretendo avaliar.

  • https://github.com/jihoonl/gc_bridge (gc_bridge)