在ros2 humble版本上安装D455相机并获取图像和深度信息

在ros2 humble版本上安装D455相机并获取图像和深度信息

一、安装ROS2 Humble

鱼香ros一键安装,如果源问题报错也可以用这个命令

复制代码
wget http://fishros.com/install -O fishros && bash fishros

二、安装Intel RealSense SDK

2.1、更新系统依赖:

打开终端,执行以下命令来更新系统的依赖项:

复制代码
sudo apt-get update && sudo apt-get upgrade

2.2、安装构建工具:

安装构建Intel RealSense SDK所需的工具:

复制代码
sudo apt-get install git wget cmake build-essential

2.3、下载并编译SDK:

从Intel RealSense的GitHub仓库下载最新版本的SDK源码:

复制代码
git clone https://github.com/IntelRealSense/librealsense.git

进入SDK源码目录,并按照官方文档中的说明进行编译和安装。通常情况下,可以执行以下命令来构建SDK:

复制代码
mkdir build && cd build
cmake ../ -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false
make -j$(nproc)
sudo make install

注:cmake .../ -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false时报错

解决办法

1、系统中缺少OpenGL开发库,导致多个示例程序无法链接到OpenGL::GL目标。让我先尝试安装OpenGL开发库来解决这个问题。

复制代码
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

2、尝试通过禁用构建示例程序来避开这个问题,使用-DBUILD_EXAMPLES=OFF选项重新运行cmake。

复制代码
cmake ../ -DBUILD_GRAPHICAL_EXAMPLES=false -DBUILD_EXAMPLES=OFF

通过禁用示例程序,可以避开缺少 OpenGL 库的问题,让 CMake 配置成功完成。不编译示例程序会减少编译时间和生成的文件数量。

三、安装ROS2的RealSense驱动

3.1、下载ROS2的RealSense驱动:

从Intel RealSense的GitHub仓库下载适用于ROS2的RealSense驱动源码:

复制代码
git clone https://github.com/IntelRealSense/realsense-ros.git

3.3、编译驱动:

进入驱动源码目录cd realsense-ros,并使用colcon进行编译。首先,确保已经安装了colcon和python3-colcon-common-extensions:

复制代码
sudo apt-get install python3-colcon-common-extensions

首先,构建realsense2_camera_msgs依赖包:

复制代码
colcon build --packages-select realsense2_camera_msgs

然后,安装缺失的ROS 2诊断更新器包:

复制代码
sudo apt-get install ros-humble-diagnostic-updater

安装 librealsense2 包

复制代码
sudo apt install ros-$ROS_DISTRO-librealsense2

最后,在驱动源码目录中执行以下命令进行编译:

复制代码
colcon build --packages-select realsense2_camera

四、配置和启动RealSense相机

4.1、启动相机节点:

• 在终端中,使用ros2 run命令启动RealSense相机的节点:

复制代码
ros2 run realsense2_camera realsense2_camera_node

运行时报以下错误:

javascript 复制代码
$ros2 launch realsense2_camera rs_launch.py
Package 'realsense2_camera' not found: "package 'realsense2_camera' not found, searching: ['/opt/ros/humble']" 

从错误信息可以看出,系统只在/opt/ros/humble目录中搜索包,而没有包含您的工作区路径。这是一个典型的ROS 2环境变量配置问题。

复制代码
# 查看AMENT_PREFIX_PATH环境变量,应该包含您的工作区路径
echo $AMENT_PREFIX_PATH

# 验证系统是否能找到realsense2_camera包
ros2 pkg list | grep realsense

问题根源

1、环境变量未包含工作区路径:ROS 2使用AMENT_PREFIX_PATH环境变量来确定去哪里搜索包。 错误信息显示系统只在/opt/ros/humble中搜索,这是ROS 2的默认安装路径 但您的realsense2_camera包安装在/home/hbs/projects/ros2_d455/realsense-ros/install目录中 系统没有在这个路径中搜索包,所以找不到它

2、缺少source工作区的setup文件:每次打开新终端或需要使用已安装的包时,都需要先source相应的setup文件来设置环境变量。
要解决这个问题,您需要按照以下步骤正确设置环境变量:

1. 然后source您的工作区环境

复制代码
source ./install/setup.bash

2. 现在可以执行节点命令了

复制代码
ros2 run realsense2_camera realsense2_camera_node

3.这样没事

javascript 复制代码
C_QBUF) failed when requesting new frame! fd: 21 error: No such device
[ros2run]: Segmentation fault

launch测试一下

复制代码
ros2 launch realsense2_camera rs_launch.py

获取realsense相机内参

复制代码
ros2 topic echo /camera/camera/color/camera_info 

可以得到参数

4.2、使用RViz2查看图像和深度信息:

• 启动RViz2:

复制代码
ros2 run rviz2 rviz2

• 在RViz2中,添加Image或PointCloud2显示,

并选择相应的话题(例如/camera/color/image_raw用于查看彩色图像,

/camera/depth/image_rect_raw用于查看深度图像,

/camera/depth/points用于查看点云数据)。

五、调试与优化

5.1、 调整相机设置:

• 可以通过修改启动命令中的参数来调整相机的设置,例如分辨率、帧率、滤波器参数等。

5.2、查看日志和错误信息:

• 如果在运行过程中遇到问题,可以查看ROS2的日志和错误信息,以便进行调试和优化。