• Nenhum resultado encontrado

6.2 tobias_drivers

6.2.7 Câmara Arducam IMX219

A Jetson Nano Developer Kit possui um conector Mobile Industry Processor Interface (MIPI)-CSI, J13, que é compatível com a câmara Arducam IMX219 e os drivers de comunicação já vêm instalados no SDK JetPack. No entanto foi desenvol- vido um guia de instalação destes drivers para futuros trabalhos e implementações, caso haja algum problema de compatibilidade com este equipamento. Este guia encontra-se na secção A.6 do apêndice A e foi desenvolvido tendo por base o guia da ArduCam para interface com a Jetson Nano77.

A Jetson Nano utiliza uma biblioteca GStreamer78 para assegurar o strea- ming de vídeo das câmaras CSI (JetsonHacks79).

Através do comando exposto no código-fonteA.5do apêndiceAfoi testada a interface da Jetson com a camara. Este código utiliza o GStreamer para abrir o fluxo de vídeo da câmara, com largura de 3820 píxeis, comprimento de 2464 píxeis a 21 frames por segundo e mostra-o numa janela de largura 1920 píxeis e de comprimento 1080 píxeis. O flip-method pode ser utilizado para alterar a orientação da câmara e pode tomar vários valores de rotação.

74Mensagem pré-formatada disponível no website: http://docs.ros.org/melodic/api/sensor_m

sgs/html/msg/FluidPressure.html.

75Mensagem pré-formatada disponível no website: http://docs.ros.org/melodic/api/sensor_m

sgs/html/msg/Temperature.html.

76Mensagem pré-formatada disponível no website: http://docs.ros.org/api/geometry_msgs/ht

ml/msg/Vector3.html.

77Disponível no website: https://www.arducam.com/docs/camera-for-jetson-nano/mipi-camer

a-modules-for-jetson-nano/driver-installation/.

78O GStreamer é uma biblioteca de código aberto e multi-plataforma utilizada na construção

e manipulação de componentes de vídeo e imagens. As aplicações desta biblioteca passam por reprodução simples de Ogg/Vorbis, streaming de áudio/vídeo, processamento complexo de áudio e vídeo (edição não linear) (https://gstreamer.freedesktop.org/).

79Disponível no website: https://www.jetsonhacks.com/2019/04/02/jetson-nano-raspberry-pi-

A JetsonHacks80 disponibiliza alguns exemplos de código em Python e C++ para teste da câmara em aplicações externas.

Foi necessário criar um metapackage chamado camara_csi por forma a ser possível incluir dois pacotes na mesma pasta. Estes pacotes são o gscam e o jet- son_csi_cam.

Para integrar a câmara no ROS, foi necessário adaptar e utilizar um pacote ROS camera_driver81 chamado GSCam82, pacote que cria uma interface entre o GStreamer e o ROS. Para ser possível a utilização deste pacote foi necessário instalar algumas bibliotecas do GStreamer adicionais (guia de instalação no apêndiceA.6). O pacote gscam utiliza as bibliotecas de ROS image_pipeline83 projetada para preencher a lacuna entre as entradas de vídeo e imagem não processadas e o processamento de visão de alto nível. Por sua vez, esta biblioteca utiliza o OpenCV84 para aplicar os diversos algoritmos de visão computacional.

O pacote ROS chamado jetson_csi_cam foi desenvolvido para simplificar a integração da câmara CSI e das aplicações multimédia da Nvidia no pacote ROS gscam. É constituído por um ficheiro .launch, que configura corretamente o gscam para funcionar com o hardware da Jetson.

O ficheiro jetson_csi_cam.launch define o valor da variável GSCAM_- CONFIG para operar com o plugin nvarguscamerasrc que foi criado pela NVi- dia para a codificação de vídeo da conexão CSI. Para além disso cria os tópicos csi_cam_0/image_raw e csi_cam_0/camara_info. O primeiro publica a imagem bruta (matriz de pixeis) utilizando a mensagem ROS sensor_msgs/Images, o se- gundo publica a informação da câmara (nome da câmara, caminho e calibração) utilizando a mensagem ROS sensor_msgs/SetCameraInfo . Neste ficheiro também são inicializados os nós image_saver, que irá guardar as imagens, e video_recorder que gravará o vídeo.

80Disponível no repositório: https://github.com/JetsonHacksNano/CSI-Camera.

81Pacote ROS de drivers para as câmaras desenvolvidos pela comunidade (http://wiki.ros.org

/camera_drivers).

82Disponível no repositório: https://github.com/ros-drivers/gscam.

83Disponível no website: https://github.com/ros-perception/image_pipeline.

84O OpenCV é uma biblioteca de código aberto e multi-plataforma desenvolvida para aplicações

de visão computacional e aprendizagem de máquina. Foi originalmente desenvolvida em 2000 pela

Intel. O OpenCV possui módulos de processamento de imagem e Video I/O, estrutura de dados,

6.2. tobias_drivers

A calibração da câmara é efetuada com recurso ao pacote camera_calibration da biblioteca image_pipeline. Para ser possível testar a driver foi efetuada uma cali- bração inicial com recurso ao comando evidenciado no código fonteA.4do apêndice A.

Os nós image_saver e video_recorder pertencem ao pacote image_view85 da biblioteca ros-perception/image_pipeline. Foi criado um ficheiro de configuração para cada nó onde cada um tem parâmetros distintos:

• image_saver :

– filename_format: define o caminho e o nome do ficheiro onde serão guar-

dadas as imagens. A string ’% 04i’ serve para alterar o nome do ficheiro com o número da sequência e a string ’% s’ define o formato do ficheiro, que poderá ser definido para jpg, png ou pgm;

– encoding: define o espaço de cores da imagem;

– save_all_image: se for definido como falso as imagens só são guardas

quando o serviço save é chamado ( rosservice call /image_saver/save). Caso contrário as imagens são guardadas sempre que o tópico csi_cam_0/ image_raw sofre alterações.

• video_recorder :

– filename_format: define o caminho e o nome do vídeo;

– fps: define a framerate do vídeo, deverá de ser igual à framerate do

argumento fps do ficheiro jetson_csi_cam.launch;

– codec: define o codec de vídeo Four Character Code (FOURCC)86;

– encoding: define o espaço de cores da imagem.

Para visualizar o streaming da câmara pode ser utilizado o comando rqt_i- mage_view. Este comando abre uma janela de visualização de vídeo, onde pode ser selecionada a entrada de vídeo, por defeito é /csi_cam_0/image_raw.

85Informação sobre o pacote disponível no website: http://wiki.ros.org/image_view. 86Tipos de codecs disponíveis no website: http://www.fourcc.org/mjpg/.

Documentos relacionados