赞
踩
可以在官网查看各个类型的相机说明
Intel® RealSense™ Computer Vision - Depth and Tracking cameras
目前实验室常用的是 D400 系列的相机,如 D435i相机,D455相机等,本文主要使用 D435i 相机,如下图所示


D435i 相机是一个RGB-D相机,也就是我们常说的深度相机,目前深度相机的实现原理主要分为三种:分别是结构光,Tof,双目成像。
参考 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 数据转换为 ros 数据并发布到 ros 话题中,相当于realsense 和 ros 的桥梁。
参考 realsense-ros 的 github 官方教程:
GitHub - IntelRealSense/realsense-ros at ros1-legacy
官方提供了直接方式和源码方式两种方法安装 realsense-ros
终端输入:
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/
创建工作目录
- 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
这两种方法选择一种安装就可以。
首先通过 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
就能收到相机数据了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。