Instalación, configuración y calibración del controlador Realsense d435i

Escrito al frente
Este artículo está instalado bajo ubuntu20.04, otras versiones son similares. Los posibles problemas se deben principalmente a la inconsistencia de las respectivas versiones de la biblioteca relacionada con la instalación, por lo que los problemas son diferentes, pero generalmente son fáciles de resolver y no aparecerán en circunstancias normales.

La cámara de profundidad Intel Realsense D435i combina la poderosa capacidad de percepción de profundidad de la D435 con una unidad de medición inercial (IMU) para cumplir con RGBD, investigación de golpes monoculares y binoculares y combate real. Este artículo presenta la instalación, configuración y calibración de las herramientas relacionadas con D435i, que también es un requisito previo y una parte indispensable del algoritmo de golpe de combate real. La cosa real se muestra en la imagen:
inserte la descripción de la imagen aquí

1. Instalación de herramientas

Las herramientas D435i incluyen Intel Realsense SDK2.0 y realsense-ros.

1 Intel Realsense SDK2.0
(1) Descarga el código fuente
  • clon de git https://github.com/IntelRealSense/librealsense.git
  • cd librealsense
(2) Dependencias de instalación
  • sudo apt-get install libudev-dev pkg-config libgtk-3-dev
  • sudo apt-get install libusb-1.0-0-dev pkg-config
  • sudo apt-get install libglfw3-dev
  • sudo apt-get install libssl-dev
(3) Agregar permisos
  • sudo cp config/99-realsense-libusb.rules /etc/udev/rulesgger
  • sudo udevadm control --reload-rules && desencadenador udevadm
(4) Compilar e instalar
  • construir mkdir
  • compilación de CD
  • hacer…
  • hacer
  • sudo hacer instalar
(5) prueba
  • cd ejemplos/captura
  • ./rs-captura

o

  • visor de sentido real

Después de que la instalación sea exitosa, la interfaz SDK se muestra de la siguiente manera
inserte la descripción de la imagen aquí

Nota: Utilice la interfaz USB3.0.

2. Instalar realsense-ros

Debido a que necesita usar ros para publicar datos binoculares e imu, necesita instalar realsense-ros.

(1) Crear espacio de trabajo, descargar código fuente y compilar
  • mkdir -p realsense_ws/src
  • cd realsense_ws/src
  • clon de git https://github.com/IntelRealSense/realsense-ros.git
  • clon de git https://github.com/pal-robotics/ddynamic_reconfigure.git
  • La
    compilación catkin_make está completa y la fuente se puede agregar de forma permanente según las preferencias personales.
  • echo “fuente /realsense_ws/devel/setup.bash” >> ~/.bashrc
  • fuente ~/.bashrc
(2) prueba

Si la fuente no se agregó en el paso anterior, debe ejecutar el lanzamiento

  • fuente de desarrollo/setup.bash
  • roslaunch realsense2_camera rs_camera.launch

Puede ver los temas publicados

  • lista rostópica

Como se muestra abajo
inserte la descripción de la imagen aquí

dos, configuración

Debido a que el d435i debe usarse para el combate real de vins_fusion, la configuración es binocular + imu, y rs_camera.launch se modifica de la siguiente manera. Otros, como RGBD, se pueden modificar según sea necesario consultando rs_rgbd.launch.

1. <launch>
2.   <arg name="serial_no"           default=""/>
3.   <arg name="json_file_path"      default=""/>
4.   <arg name="camera"              default="camera"/>
5.   <arg name="tf_prefix"           default="$(arg camera)"/>
6.   <arg name="external_manager"    default="false"/>
7.   <arg name="manager"             default="realsense2_camera_manager"/>
8. 
9.   <arg name="fisheye_width"       default="640"/>
10.   <arg name="fisheye_height"      default="480"/>
11.   <arg name="enable_fisheye"      default="false"/>
12. 
13.   <arg name="depth_width"         default="640"/>
14.   <arg name="depth_height"        default="480"/>
15.   <arg name="enable_depth"        default="false"/>
16. 
17.   <arg name="infra_width"        default="640"/>
18.   <arg name="infra_height"       default="480"/>
19.   <arg name="enable_infra1"       default="true"/>
20.   <arg name="enable_infra2"       default="true"/>
21. 
22.   <arg name="color_width"         default="640"/>
23.   <arg name="color_height"        default="480"/>
24.   <arg name="enable_color"        default="true"/>
25. 
26.   <arg name="fisheye_fps"         default="30"/>
27.   <arg name="depth_fps"           default="30"/>
28.   <arg name="infra_fps"           default="30"/>
29.   <arg name="color_fps"           default="30"/>
30.   <arg name="gyro_fps"            default="400"/>
31.   <arg name="accel_fps"           default="200"/>
32.   <arg name="enable_gyro"         default="true"/>
33.   <arg name="enable_accel"        default="true"/>
34. 
35.   <arg name="enable_pointcloud"         default="false"/>
36.   <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
37.   <arg name="pointcloud_texture_index"  default="0"/>
38. 
39.   <arg name="enable_sync"               default="true"/>
40.   <arg name="align_depth"               default="true"/>
41. 
42.   <arg name="publish_tf"                default="true"/>
43.   <arg name="tf_publish_rate"           default="0"/>
44. 
45.   <arg name="filters"                   default=""/>
46.   <arg name="clip_distance"             default="-2"/>
47.   <arg name="linear_accel_cov"          default="0.01"/>
48.   <arg name="initial_reset"             default="false"/>
49.   <arg name="reconnect_timeout"         default="6.0"/>
50.   <arg name="unite_imu_method"          default="linear_interpolation"/>
51.   <arg name="topic_odom_in"             default="odom_in"/>
52.   <arg name="calib_odom_file"           default=""/>
53.   <arg name="publish_odom_tf"           default="true"/>
54.   <arg name="allow_no_texture_points"   default="false"/>
65. 
66.   <group ns="$(arg camera)">
67.     <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
68.       <arg name="tf_prefix"                value="$(arg tf_prefix)"/>
69.       <arg name="external_manager"         value="$(arg external_manager)"/>
70.       <arg name="manager"                  value="$(arg manager)"/>
71.       <arg name="serial_no"                value="$(arg serial_no)"/>
72.       <arg name="json_file_path"           value="$(arg json_file_path)"/>
73. 
74.       <arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/>
75.       <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
76.       <arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/>
77.       <arg name="enable_sync"              value="$(arg enable_sync)"/>
78.       <arg name="align_depth"              value="$(arg align_depth)"/>
79. 
80.       <arg name="fisheye_width"            value="$(arg fisheye_width)"/>
81.       <arg name="fisheye_height"           value="$(arg fisheye_height)"/>
82.       <arg name="enable_fisheye"           value="$(arg enable_fisheye)"/>
83. 
84.       <arg name="depth_width"              value="$(arg depth_width)"/>
85.       <arg name="depth_height"             value="$(arg depth_height)"/>
86.       <arg name="enable_depth"             value="$(arg enable_depth)"/>
87. 
88.       <arg name="color_width"              value="$(arg color_width)"/>
89.       <arg name="color_height"             value="$(arg color_height)"/>
90.       <arg name="enable_color"             value="$(arg enable_color)"/>
91. 
92.       <arg name="infra_width"              value="$(arg infra_width)"/>
93.       <arg name="infra_height"             value="$(arg infra_height)"/>
94.       <arg name="enable_infra1"            value="$(arg enable_infra1)"/>
95.       <arg name="enable_infra2"            value="$(arg enable_infra2)"/>
96. 
97.       <arg name="fisheye_fps"              value="$(arg fisheye_fps)"/>
98.       <arg name="depth_fps"                value="$(arg depth_fps)"/>
99.       <arg name="infra_fps"                value="$(arg infra_fps)"/>
100.       <arg name="color_fps"                value="$(arg color_fps)"/>
101.       <arg name="gyro_fps"                 value="$(arg gyro_fps)"/>
102.       <arg name="accel_fps"                value="$(arg accel_fps)"/>
103.       <arg name="enable_gyro"              value="$(arg enable_gyro)"/>
104.       <arg name="enable_accel"             value="$(arg enable_accel)"/>
105. 
106.       <arg name="filters"                  value="$(arg filters)"/>
107.       <arg name="clip_distance"            value="$(arg clip_distance)"/>
108.       <arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/>
109.       <arg name="initial_reset"            value="$(arg initial_reset)"/>
110.       <arg name="reconnect_timeout"        value="$(arg reconnect_timeout)"/>
111.       <arg name="unite_imu_method"         value="$(arg unite_imu_method)"/>
112.       <arg name="topic_odom_in"            value="$(arg topic_odom_in)"/>
113.       <arg name="calib_odom_file"          value="$(arg calib_odom_file)"/>
114.       <arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/>
115.       <arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
116.     </include>
117.   </group>
118. </launch>
109. 

3. Calibración

La calibración d435i es principalmente para referencia interna de cámara binocular, distorsión y calibración imu.

1. Apaga la luz estructurada

El d435i incluye IR Project, que se utiliza para ayudar a medir la información de profundidad, y este artículo busca principalmente completar el combate de golpe a través de un solo o binocular, sin que IR proporcione información de profundidad. Sin embargo, la luz estructurada IR causará muchos puntos en la imagen, lo que afectará la calibración y el uso subsiguiente de los binoculares, por lo que debe apagarse.
Modificar rs_camera.launch

  • gedit rs_camera.lanzamiento

Agregar después del parámetro

<arg name="emitter_enable"   		      default="false"/>

<!-- rosparam set /camera/stereo_module/emitter_enabled false -->
<rosparam>
 /camera/stereo_module/emitter_enabled: false
</rosparam>

<rosparam if="$(arg emitter_enable)">
/camera/stereo_module/emitter_enabled: true
</rosparam>

El bloque de código significa que cuando rs_camera.launch está habilitado, la luz estructurada está desactivada de manera predeterminada.
Cuando sea necesario, puede usar los siguientes métodos para abrir

  • roslaunch realsense2_camera rs_camera.launch emitter_enable:=true
    Cuando el valor predeterminado está desactivado, no es necesario agregar el siguiente parámetro emitter_enable:=true para ejecutar
2. Referencia interna de la cámara y calibración de distorsión

Ver los parámetros internos predeterminados de la cámara

  • fuente de desarrollo/setup.bash
  • roslaunch realsense_camera rs_camera.launch
  • echo /cámara/infra1/camera_info
  • eco rostopic /camera/infra2/camera_info
    como se muestra a continuación:
    inserte la descripción de la imagen aquí

Nota: Preste especial atención aquí, si necesita usar una cámara binocular, el tema es el anterior, no /camera/color/camera_info

Como puede verse en la figura, los parámetros internos de la lente binocular se proporcionan de forma predeterminada, pero no hay ningún parámetro de distorsión. Dado que kailbr se debe usar más tarde para calibrar la caminata aleatoria de la imu y los parámetros externos de la cámara y la imu, las herramientas integradas no se usan aquí para la calibración de referencia interna de la cámara.

3.imu calibración de seis lados

La calibración de seis lados de imu se refiere a la calibración de acc, el sesgo cero del giroscopio, el factor de escala y el error no ortogonal. realsense proporciona una biblioteca oficial.

(1) Dependencias de instalación
  • sudo pip3 instalar pyrealsense2
(2) correr

Ingrese a la carpeta rs-imu-calibration

  • cd librealsense/herramientas/rs-imu-calibration
  • python rs-imu-calibración.py

Como se muestra abajo
inserte la descripción de la imagen aquí

Gire los seis lados como se indica. Para obtener más información, consulte https://github.com/IntelRealSense/librealsense/blob/master/tools/rs-imu-calibration/README.md

Nota: 1. Para garantizar el nivel de los seis lados, la caja de empaque realsense se puede usar para hacer la herramienta de calibración de seis lados 2. Al recopilar datos en cada lado, asegúrese de que no haya interferencia de vibraciones.

(3) Guardar y escribir datos de calibración

Una vez completada la recopilación de datos de seis lados, se le preguntará: ¿
Desea guardar los datos sin procesar?
Ingrese sí para completar y escribir en el hardware. Los datos de calibración se guardan encalibration.json en el mismo directorio.

referencia:

https://github.com/IntelRealSense/librealsense
https://github.com/IntelRealSense/realsense-ros
https://blog.csdn.net/Hanghang_article/details/103612300

Supongo que te gusta

Origin blog.csdn.net/u010196944/article/details/127238908
Recomendado
Clasificación