在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時報錯

在ROS中實現多Realscene D455數據的讀取併發布_環境變量


解決辦法

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的日誌和錯誤信息,以便進行調試和優化。