在ros2 humble版本上安装D455相机并获取图像和深度信息
在ros2 humble版本上安装D455相机并获取图像和深度信息
- 一、安装ROS2 Humble
- 二、安装Intel RealSense SDK
- 2.1、更新系统依赖:
- 2.2、安装构建工具:
- 2.3、下载并编译SDK:
- 三、安装ROS2的RealSense驱动
- 3.1、下载ROS2的RealSense驱动:
- 3.3、编译驱动:
- 四、配置和启动RealSense相机
- 4.1、启动相机节点:
- 1. 然后source您的工作区环境
- 2. 现在可以执行节点命令了
- 3.这样没事
- 4.2、使用RViz2查看图像和深度信息:
- 五、调试与优化
- 5.1、 调整相机设置:
- 5.2、查看日志和错误信息:
一、安装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
运行时报以下错误:
$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.这样没事
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的日志和错误信息,以便进行调试和优化。