0


Ubuntu 20.04 配置 Realsense

一、硬件说明

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

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

创建服务器公钥

sudo mkdir -p /etc/apt/keyrings
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

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

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

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

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

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

sudo apt-get install librealsense2-dev
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 源码方式安装

创建工作目录

mkdir -p ~/realsense_ws/src
cd ~/realsense_ws/src/

下载源码

git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
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 就不要再下载源码到工作空间一起编译了,可能会冲突报错。

接下来编译工作空间

catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install

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

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

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

3.3 修改配置文件

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

roslaunch realsense2_camera rs_camera.launch

查看能否收到相机数据。

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

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

调整 图像尺寸 :

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

打开 双目相机 数据,

  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>

打开深度相机

<arg name="depth_width"         default="640"/>
<arg name="depth_height"        default="480"/>
<arg name="enable_depth"        default="true"/>

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

  <arg name="enable_gyro"         default="true"/>
  <arg name="enable_accel"        default="true"/>

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

  <arg name="fisheye_fps"         default="-1"/>
  <arg name="depth_fps"           default="30"/>
  <arg name="infra_fps"           default="30"/>
  <arg name="color_fps"           default="-1"/>
  <arg name="gyro_fps"            default="400"/>
  <arg name="accel_fps"           default="400"/>

打开 imu 数据

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

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

  <arg name="emitter_enable"       default="false"/>
  <!-- rosparam set /camera/stereo_module/emitter_enabled false -->
  <rosparam>
    /camera/stereo_module/emitter_enabled: 0
  </rosparam>
  <rosparam if="$(arg emitter_enable)">
    /camera/stereo_module/emitter_enabled: 1
  </rosparam>

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

<launch>
  <arg name="serial_no"           default=""/>
  <arg name="usb_port_id"         default=""/>
  <arg name="device_type"         default=""/>
  <arg name="json_file_path"      default=""/>
  <arg name="camera"              default="camera"/>
  <arg name="tf_prefix"           default="$(arg camera)"/>
  <arg name="external_manager"    default="false"/>
  <arg name="manager"             default="realsense2_camera_manager"/>
  <arg name="output"              default="screen"/>
  <arg name="respawn"              default="false"/>

  <arg name="fisheye_width"       default="-1"/>
  <arg name="fisheye_height"      default="-1"/>
  <arg name="enable_fisheye"      default="false"/>

  <arg name="depth_width"         default="640"/>
  <arg name="depth_height"        default="480"/>
  <arg name="enable_depth"        default="true"/>

  <arg name="confidence_width"    default="-1"/>
  <arg name="confidence_height"   default="-1"/>
  <arg name="enable_confidence"   default="false"/>
  <arg name="confidence_fps"      default="-1"/>

  <arg name="infra_width"         default="640"/>
  <arg name="infra_height"        default="480"/>
  <arg name="enable_infra"        default="false"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>
  <arg name="infra_rgb"           default="false"/>

  <arg name="color_width"         default="-1"/>
  <arg name="color_height"        default="-1"/>
  <arg name="enable_color"        default="false"/>

  <arg name="fisheye_fps"         default="-1"/>
  <arg name="depth_fps"           default="30"/>
  <arg name="infra_fps"           default="30"/>
  <arg name="color_fps"           default="-1"/>
  <arg name="gyro_fps"            default="400"/>
  <arg name="accel_fps"           default="400"/>
  <arg name="enable_gyro"         default="true"/>
  <arg name="enable_accel"        default="true"/>

  <arg name="enable_pointcloud"         default="false"/>
  <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
  <arg name="pointcloud_texture_index"  default="0"/>
  <arg name="allow_no_texture_points"   default="false"/>
  <arg name="ordered_pc"                default="false"/>

  <arg name="enable_sync"               default="false"/>
  <arg name="align_depth"               default="false"/>

  <arg name="publish_tf"                default="true"/>
  <arg name="tf_publish_rate"           default="0"/>

  <arg name="filters"                   default=""/>
  <arg name="clip_distance"             default="-2"/>
  <arg name="linear_accel_cov"          default="0.01"/>
  <arg name="initial_reset"             default="false"/>
  <arg name="reconnect_timeout"         default="6.0"/>
  <arg name="wait_for_device_timeout"   default="-1.0"/>
  <arg name="unite_imu_method"          default="linear_interpolation"/>
  <arg name="topic_odom_in"             default="odom_in"/>
  <arg name="calib_odom_file"           default=""/>
  <arg name="publish_odom_tf"           default="true"/>

  <arg name="stereo_module/exposure/1"  default="7500"/>
  <arg name="stereo_module/gain/1"      default="16"/>
  <arg name="stereo_module/exposure/2"  default="1"/>
  <arg name="stereo_module/gain/2"      default="16"/>

  <arg name="emitter_enable"       default="false"/>
  <!-- rosparam set /camera/stereo_module/emitter_enabled false -->
  <rosparam>
    /camera/stereo_module/emitter_enabled: 0
  </rosparam>
  <rosparam if="$(arg emitter_enable)">
    /camera/stereo_module/emitter_enabled: 1
  </rosparam>

  <group ns="$(arg camera)">
    <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
      <arg name="tf_prefix"                value="$(arg tf_prefix)"/>
      <arg name="external_manager"         value="$(arg external_manager)"/>
      <arg name="manager"                  value="$(arg manager)"/>
      <arg name="output"                   value="$(arg output)"/>
      <arg name="respawn"                  value="$(arg respawn)"/>
      <arg name="serial_no"                value="$(arg serial_no)"/>
      <arg name="usb_port_id"              value="$(arg usb_port_id)"/>
      <arg name="device_type"              value="$(arg device_type)"/>
      <arg name="json_file_path"           value="$(arg json_file_path)"/>

      <arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/>
      <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
      <arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/>
      <arg name="enable_sync"              value="$(arg enable_sync)"/>
      <arg name="align_depth"              value="$(arg align_depth)"/>

      <arg name="fisheye_width"            value="$(arg fisheye_width)"/>
      <arg name="fisheye_height"           value="$(arg fisheye_height)"/>
      <arg name="enable_fisheye"           value="$(arg enable_fisheye)"/>

      <arg name="depth_width"              value="$(arg depth_width)"/>
      <arg name="depth_height"             value="$(arg depth_height)"/>
      <arg name="enable_depth"             value="$(arg enable_depth)"/>

      <arg name="confidence_width"         value="$(arg confidence_width)"/>
      <arg name="confidence_height"        value="$(arg confidence_height)"/>
      <arg name="enable_confidence"        value="$(arg enable_confidence)"/>
      <arg name="confidence_fps"           value="$(arg confidence_fps)"/>

      <arg name="color_width"              value="$(arg color_width)"/>
      <arg name="color_height"             value="$(arg color_height)"/>
      <arg name="enable_color"             value="$(arg enable_color)"/>

      <arg name="infra_width"              value="$(arg infra_width)"/>
      <arg name="infra_height"             value="$(arg infra_height)"/>
      <arg name="enable_infra"             value="$(arg enable_infra)"/>
      <arg name="enable_infra1"            value="$(arg enable_infra1)"/>
      <arg name="enable_infra2"            value="$(arg enable_infra2)"/>
      <arg name="infra_rgb"                value="$(arg infra_rgb)"/>

      <arg name="fisheye_fps"              value="$(arg fisheye_fps)"/>
      <arg name="depth_fps"                value="$(arg depth_fps)"/>
      <arg name="infra_fps"                value="$(arg infra_fps)"/>
      <arg name="color_fps"                value="$(arg color_fps)"/>
      <arg name="gyro_fps"                 value="$(arg gyro_fps)"/>
      <arg name="accel_fps"                value="$(arg accel_fps)"/>
      <arg name="enable_gyro"              value="$(arg enable_gyro)"/>
      <arg name="enable_accel"             value="$(arg enable_accel)"/>

      <arg name="publish_tf"               value="$(arg publish_tf)"/>
      <arg name="tf_publish_rate"          value="$(arg tf_publish_rate)"/>

      <arg name="filters"                  value="$(arg filters)"/>
      <arg name="clip_distance"            value="$(arg clip_distance)"/>
      <arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/>
      <arg name="initial_reset"            value="$(arg initial_reset)"/>
      <arg name="reconnect_timeout"        value="$(arg reconnect_timeout)"/>
      <arg name="wait_for_device_timeout"  value="$(arg wait_for_device_timeout)"/>
      <arg name="unite_imu_method"         value="$(arg unite_imu_method)"/>
      <arg name="topic_odom_in"            value="$(arg topic_odom_in)"/>
      <arg name="calib_odom_file"          value="$(arg calib_odom_file)"/>
      <arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/>
      <arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
      <arg name="stereo_module/gain/1"     value="$(arg stereo_module/gain/1)"/>
      <arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
      <arg name="stereo_module/gain/2"     value="$(arg stereo_module/gain/2)"/>

      <arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
      <arg name="ordered_pc"               value="$(arg ordered_pc)"/>
      
    </include>
  </group>
</launch>

最后终端输入

roslaunch realsense2_camera rs_camera.launch

就能收到相机数据了。

标签: ubuntu realsense ros

本文转载自: https://blog.csdn.net/qq_44998513/article/details/131517394
版权归原作者 想要个小姑娘 所有, 如有侵权,请联系我们删除。

“Ubuntu 20.04 配置 Realsense”的评论:

还没有评论