当前位置:   article > 正文

Ubuntu 20.04 配置 Realsense_ubuntu 20.04 librealsense

ubuntu 20.04 librealsense

一、硬件说明

可以在官网查看各个类型的相机说明

Intel® RealSense™ Computer Vision - Depth and Tracking cameras

目前实验室常用的是 D400 系列的相机,如 D435i相机,D455相机等,本文主要使用 D435i 相机,如下图所示

D435i 相机是一个RGB-D相机,也就是我们常说的深度相机,目前深度相机的实现原理主要分为三种:分别是结构光,Tof,双目成像。

二、安装 realsense 驱动

参考 librealsense 的 github 官方教程

librealsense/doc/distribution_linux.md at master · IntelRealSense/librealsense · GitHub

创建服务器公钥

  1. sudo mkdir -p /etc/apt/keyrings
  2. curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null

确保安装了 apt-transport-https 

sudo apt-get install apt-transport-https

将服务添加到仓库列表中:

  1. echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] https://librealsense.intel.com/Debian/apt-repo `lsb_release -cs` main" | \
  2. sudo tee /etc/apt/sources.list.d/librealsense.list
  3. sudo apt-get update

部署  librealsense2 udev 规则,构建和激活内核模块、运行库以及可执行演示和工具:

  1. sudo apt-get install librealsense2-dkms
  2. sudo apt-get install librealsense2-utils

安装开发程序包和调试程序包:

  1. sudo apt-get install librealsense2-dev
  2. sudo apt-get install librealsense2-dbg

确认成功安装 librealsense :

realsense-viewer

如果需要安装指定版本的 librealsene(2.54.1 之后 的版本不支持 realsense t265 相机),参考

realsense-viewer 不识别 T265——Realsense SDK 在 v2.54.1 版本以后不再支持T265相机的解决办法_realsense t265_看我放个大招的博客-CSDN博客

三、安装 realsense-ros

作用:将 realsense 数据转换为 ros 数据并发布到 ros 话题中,相当于realsense 和 ros 的桥梁。

参考 realsense-ros 的 github 官方教程:

GitHub - IntelRealSense/realsense-ros at ros1-legacy

官方提供了直接方式和源码方式两种方法安装 realsense-ros

3.1 直接方式安装

终端输入:

sudo apt-get install ros-$ROS_DISTRO-realsense2-camera

其中 $ROS_DISTRO 为自己的 ros 版本, Ubuntu 18.04 对应 melodic,Ubuntu 20.04 对应 noetic,这种方法的安装路径为

/opt/ros/noetic/share/realsense2_camera/

3.2 源码方式安装

创建工作目录

  1. mkdir -p ~/realsense_ws/src
  2. cd ~/realsense_ws/src/

下载源码

  1. git clone https://github.com/IntelRealSense/realsense-ros.git
  2. cd realsense-ros/
  3. git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
  4. cd ..

请确保安装了 ros 软件包 ddynamic_reconfigure, 如果没有安装,可以通过 apt 安装

sudo apt-get install ros-$ROS_DISTRO-ddynamic-reconfigure

或者将其源码下载到当前工作目录

git clone https://github.com/pal-robotics/ddynamic_reconfigure.git

注意,这里如果通过 apt 安装了 ddynamic_reconfigure 就不要再下载源码到工作空间一起编译了,可能会冲突报错。

接下来编译工作空间

  1. catkin_init_workspace
  2. cd ..
  3. catkin_make clean
  4. catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
  5. catkin_make install

最后将其加到 ~/.basrc 文件中

  1. echo "source ~/realsense_ws/devel/setup.bash" >> ~/.bashrc
  2. source ~/.bashrc

这两种方法选择一种安装就可以。

3.3 修改配置文件

首先通过 ros 启动相机,终端输入

roslaunch realsense2_camera rs_camera.launch

查看能否收到相机数据。

一般来说,安装完成后可能会出现 ros 能接收到话题但是收不到数据的情况。

这时需要修改 /opt/ros/noetic/share/realsense2_camera/rs_camera.launch 文件。

调整 图像尺寸 :

  1. <arg name="infra_width" default="640"/>
  2. <arg name="infra_height" default="480"/>

打开 双目相机 数据,

  1. <arg name="enable_infra1" default="true"/>
  2. <arg name="enable_infra2" default="true"/>

打开深度相机

  1. <arg name="depth_width" default="640"/>
  2. <arg name="depth_height" default="480"/>
  3. <arg name="enable_depth" default="true"/>

打开 陀螺仪和加速度计 数据

  1. <arg name="enable_gyro" default="true"/>
  2. <arg name="enable_accel" default="true"/>

设置双目相机、深度相机、陀螺仪和加速度计的频率

  1. <arg name="fisheye_fps" default="-1"/>
  2. <arg name="depth_fps" default="30"/>
  3. <arg name="infra_fps" default="30"/>
  4. <arg name="color_fps" default="-1"/>
  5. <arg name="gyro_fps" default="400"/>
  6. <arg name="accel_fps" default="400"/>

打开 imu 数据

  <arg name="unite_imu_method"          default="linear_interpolation"/>

关闭结构光(光斑),添加

  1. <arg name="emitter_enable" default="false"/>
  2. <!-- rosparam set /camera/stereo_module/emitter_enabled false -->
  3. <rosparam>
  4. /camera/stereo_module/emitter_enabled: 0
  5. </rosparam>
  6. <rosparam if="$(arg emitter_enable)">
  7. /camera/stereo_module/emitter_enabled: 1
  8. </rosparam>

也可以直接粘贴如下代码:

  1. <launch>
  2. <arg name="serial_no" default=""/>
  3. <arg name="usb_port_id" default=""/>
  4. <arg name="device_type" default=""/>
  5. <arg name="json_file_path" default=""/>
  6. <arg name="camera" default="camera"/>
  7. <arg name="tf_prefix" default="$(arg camera)"/>
  8. <arg name="external_manager" default="false"/>
  9. <arg name="manager" default="realsense2_camera_manager"/>
  10. <arg name="output" default="screen"/>
  11. <arg name="respawn" default="false"/>
  12. <arg name="fisheye_width" default="-1"/>
  13. <arg name="fisheye_height" default="-1"/>
  14. <arg name="enable_fisheye" default="false"/>
  15. <arg name="depth_width" default="640"/>
  16. <arg name="depth_height" default="480"/>
  17. <arg name="enable_depth" default="true"/>
  18. <arg name="confidence_width" default="-1"/>
  19. <arg name="confidence_height" default="-1"/>
  20. <arg name="enable_confidence" default="false"/>
  21. <arg name="confidence_fps" default="-1"/>
  22. <arg name="infra_width" default="640"/>
  23. <arg name="infra_height" default="480"/>
  24. <arg name="enable_infra" default="false"/>
  25. <arg name="enable_infra1" default="true"/>
  26. <arg name="enable_infra2" default="true"/>
  27. <arg name="infra_rgb" default="false"/>
  28. <arg name="color_width" default="-1"/>
  29. <arg name="color_height" default="-1"/>
  30. <arg name="enable_color" default="false"/>
  31. <arg name="fisheye_fps" default="-1"/>
  32. <arg name="depth_fps" default="30"/>
  33. <arg name="infra_fps" default="30"/>
  34. <arg name="color_fps" default="-1"/>
  35. <arg name="gyro_fps" default="400"/>
  36. <arg name="accel_fps" default="400"/>
  37. <arg name="enable_gyro" default="true"/>
  38. <arg name="enable_accel" default="true"/>
  39. <arg name="enable_pointcloud" default="false"/>
  40. <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
  41. <arg name="pointcloud_texture_index" default="0"/>
  42. <arg name="allow_no_texture_points" default="false"/>
  43. <arg name="ordered_pc" default="false"/>
  44. <arg name="enable_sync" default="false"/>
  45. <arg name="align_depth" default="false"/>
  46. <arg name="publish_tf" default="true"/>
  47. <arg name="tf_publish_rate" default="0"/>
  48. <arg name="filters" default=""/>
  49. <arg name="clip_distance" default="-2"/>
  50. <arg name="linear_accel_cov" default="0.01"/>
  51. <arg name="initial_reset" default="false"/>
  52. <arg name="reconnect_timeout" default="6.0"/>
  53. <arg name="wait_for_device_timeout" default="-1.0"/>
  54. <arg name="unite_imu_method" default="linear_interpolation"/>
  55. <arg name="topic_odom_in" default="odom_in"/>
  56. <arg name="calib_odom_file" default=""/>
  57. <arg name="publish_odom_tf" default="true"/>
  58. <arg name="stereo_module/exposure/1" default="7500"/>
  59. <arg name="stereo_module/gain/1" default="16"/>
  60. <arg name="stereo_module/exposure/2" default="1"/>
  61. <arg name="stereo_module/gain/2" default="16"/>
  62. <arg name="emitter_enable" default="false"/>
  63. <!-- rosparam set /camera/stereo_module/emitter_enabled false -->
  64. <rosparam>
  65. /camera/stereo_module/emitter_enabled: 0
  66. </rosparam>
  67. <rosparam if="$(arg emitter_enable)">
  68. /camera/stereo_module/emitter_enabled: 1
  69. </rosparam>
  70. <group ns="$(arg camera)">
  71. <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
  72. <arg name="tf_prefix" value="$(arg tf_prefix)"/>
  73. <arg name="external_manager" value="$(arg external_manager)"/>
  74. <arg name="manager" value="$(arg manager)"/>
  75. <arg name="output" value="$(arg output)"/>
  76. <arg name="respawn" value="$(arg respawn)"/>
  77. <arg name="serial_no" value="$(arg serial_no)"/>
  78. <arg name="usb_port_id" value="$(arg usb_port_id)"/>
  79. <arg name="device_type" value="$(arg device_type)"/>
  80. <arg name="json_file_path" value="$(arg json_file_path)"/>
  81. <arg name="enable_pointcloud" value="$(arg enable_pointcloud)"/>
  82. <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
  83. <arg name="pointcloud_texture_index" value="$(arg pointcloud_texture_index)"/>
  84. <arg name="enable_sync" value="$(arg enable_sync)"/>
  85. <arg name="align_depth" value="$(arg align_depth)"/>
  86. <arg name="fisheye_width" value="$(arg fisheye_width)"/>
  87. <arg name="fisheye_height" value="$(arg fisheye_height)"/>
  88. <arg name="enable_fisheye" value="$(arg enable_fisheye)"/>
  89. <arg name="depth_width" value="$(arg depth_width)"/>
  90. <arg name="depth_height" value="$(arg depth_height)"/>
  91. <arg name="enable_depth" value="$(arg enable_depth)"/>
  92. <arg name="confidence_width" value="$(arg confidence_width)"/>
  93. <arg name="confidence_height" value="$(arg confidence_height)"/>
  94. <arg name="enable_confidence" value="$(arg enable_confidence)"/>
  95. <arg name="confidence_fps" value="$(arg confidence_fps)"/>
  96. <arg name="color_width" value="$(arg color_width)"/>
  97. <arg name="color_height" value="$(arg color_height)"/>
  98. <arg name="enable_color" value="$(arg enable_color)"/>
  99. <arg name="infra_width" value="$(arg infra_width)"/>
  100. <arg name="infra_height" value="$(arg infra_height)"/>
  101. <arg name="enable_infra" value="$(arg enable_infra)"/>
  102. <arg name="enable_infra1" value="$(arg enable_infra1)"/>
  103. <arg name="enable_infra2" value="$(arg enable_infra2)"/>
  104. <arg name="infra_rgb" value="$(arg infra_rgb)"/>
  105. <arg name="fisheye_fps" value="$(arg fisheye_fps)"/>
  106. <arg name="depth_fps" value="$(arg depth_fps)"/>
  107. <arg name="infra_fps" value="$(arg infra_fps)"/>
  108. <arg name="color_fps" value="$(arg color_fps)"/>
  109. <arg name="gyro_fps" value="$(arg gyro_fps)"/>
  110. <arg name="accel_fps" value="$(arg accel_fps)"/>
  111. <arg name="enable_gyro" value="$(arg enable_gyro)"/>
  112. <arg name="enable_accel" value="$(arg enable_accel)"/>
  113. <arg name="publish_tf" value="$(arg publish_tf)"/>
  114. <arg name="tf_publish_rate" value="$(arg tf_publish_rate)"/>
  115. <arg name="filters" value="$(arg filters)"/>
  116. <arg name="clip_distance" value="$(arg clip_distance)"/>
  117. <arg name="linear_accel_cov" value="$(arg linear_accel_cov)"/>
  118. <arg name="initial_reset" value="$(arg initial_reset)"/>
  119. <arg name="reconnect_timeout" value="$(arg reconnect_timeout)"/>
  120. <arg name="wait_for_device_timeout" value="$(arg wait_for_device_timeout)"/>
  121. <arg name="unite_imu_method" value="$(arg unite_imu_method)"/>
  122. <arg name="topic_odom_in" value="$(arg topic_odom_in)"/>
  123. <arg name="calib_odom_file" value="$(arg calib_odom_file)"/>
  124. <arg name="publish_odom_tf" value="$(arg publish_odom_tf)"/>
  125. <arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
  126. <arg name="stereo_module/gain/1" value="$(arg stereo_module/gain/1)"/>
  127. <arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
  128. <arg name="stereo_module/gain/2" value="$(arg stereo_module/gain/2)"/>
  129. <arg name="allow_no_texture_points" value="$(arg allow_no_texture_points)"/>
  130. <arg name="ordered_pc" value="$(arg ordered_pc)"/>
  131. </include>
  132. </group>
  133. </launch>

最后终端输入

roslaunch realsense2_camera rs_camera.launch

就能收到相机数据了。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号