Olá pessoal!
Quero compartilhar minha experiência com a câmera Intel RealSense, modelo d435 . Como você sabe, muitos algoritmos de visão de máquina requerem calibração preliminar da câmera . Aconteceu que em nosso projeto usamos o ROS para criar componentes individuais de um sistema inteligente automatizado. No entanto, tendo estudado a Internet em russo, não encontrei nenhum tutorial sensato sobre esse assunto. Esta publicação pretende preencher essa lacuna.
Pré-requisito de software
Como o ROS funciona em sistemas Unix, assumirei que temos o sistema Ubuntu 16.04 disponível. Não descreverei os detalhes detalhados da instalação, apenas fornecerei links para os tutoriais correspondentes.
sudo apt-get install python-opencv
Instalando drivers RealSense
- Primeiro de tudo, você precisa instalar drivers para a câmera.
- O pacote ROS para a câmera está aqui . No momento da publicação, a versão mais recente era 2.0.3. Para instalar o pacote, você precisa baixar o código-fonte e descompactá-lo no diretório inicial do ROS. Em seguida, precisaremos instalá-lo:
catkin_make clean catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release catkin_make install echo "source path_to_workspace/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
Testando a câmera
Depois de instalar a câmera, precisamos garantir que os drivers funcionem como deveriam. Para fazer isso, conectamos a câmera via USB e executamos a demonstração:
roslaunch realsense2_camera demo_pointcloud.launch
Este comando abrirá a visualização ROS, na qual é possível ver a nuvem de pontos registrados no tópico /camera/depth/color/points
:

Calibração da câmera
Abaixo está uma versão adaptada do tutorial do OpenCV .
import numpy as np import cv2 import glob
Para que esse script funcione, precisamos de pelo menos 10 imagens do tabuleiro de xadrez recebidas de nossa câmera. Para isso, podemos usar, por exemplo, o pacote image_view ROS ou qualquer outro programa que possa tirar capturas de tela de uma câmera USB. As imagens capturadas devem ser colocadas em qualquer pasta. Exemplo de imagem:

Depois de executar o script, os resultados da calibração serão salvos em um arquivo
calibration.npy
. Esses dados podem ser usados com o seguinte script:
calibration_data = np.load('path_to_images/calibration.npy') mtx = calibration_data[0] dist = calibration_data[1] rvecs = calibration_data[2] tvecs = calibration_data[3]
Conclusão
Conseguimos calibrar com sucesso a câmera RealSense d435 usando OpenCV2 e ROS. Os resultados da calibração podem ser usados em aplicativos como objetos de rastreamento, marcadores aruco, algoritmos de realidade aumentada e muitos outros. No próximo artigo, gostaria de elaborar sobre o rastreamento de marcadores aruco.