Hola a todos!
Quiero compartir mi experiencia con la cámara Intel RealSense, modelo d435 . Como sabe, muchos algoritmos de visión artificial requieren una calibración preliminar de la cámara . Dio la casualidad de que en nuestro proyecto usamos ROS para construir componentes individuales de un sistema inteligente automatizado. Sin embargo, después de estudiar Internet en ruso, no encontré ningún tutorial sensato sobre este tema. Esta publicación está destinada a llenar este vacío.
Prerrequisito de software
Como ROS funciona en sistemas Unix, supondré que tenemos disponible el sistema Ubuntu 16.04. No describiré los detalles detallados de la instalación, solo daré enlaces a los tutoriales correspondientes.
sudo apt-get install python-opencv
Instalación de controladores RealSense
- En primer lugar, debe instalar controladores para la cámara.
- El paquete ROS para la cámara está aquí . En el momento de la publicación, la última versión era 2.0.3. Para instalar el paquete, debe descargar el código fuente y descomprimirlo en el directorio de inicio de ROS. A continuación, necesitaremos instalarlo:
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
Probando la cámara
Después de instalar la cámara, debemos asegurarnos de que los controladores funcionen como deberían. Para hacer esto, conectamos la cámara a través de USB y ejecutamos la demostración:
roslaunch realsense2_camera demo_pointcloud.launch
Este comando abrirá la visualización ROS, en la que puede ver la nube de puntos registrados en el tema /camera/depth/color/points
:

Calibración de cámara
A continuación se muestra una versión adaptada del tutorial de OpenCV .
import numpy as np import cv2 import glob
Para que este script funcione, necesitamos al menos 10 imágenes de tablero de ajedrez recibidas de nuestra cámara. Para esto, podemos usar, por ejemplo, el paquete image_view ROS o cualquier otro programa que pueda tomar capturas de pantalla de una cámara USB. Las imágenes capturadas deben colocarse en cualquier carpeta. Ejemplo de imagen:

Después de ejecutar el script, los resultados de la calibración se guardarán en un archivo
calibration.npy
. Estos datos se pueden usar con el siguiente 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]
Conclusión
Pudimos calibrar con éxito la cámara RealSense d435 usando OpenCV2 y ROS. Los resultados de la calibración se pueden usar en aplicaciones como objetos de seguimiento, marcadores de aruco, algoritmos de realidad aumentada y muchos otros. En el siguiente artículo, me gustaría dar más detalles sobre el seguimiento de los marcadores de aruco.