3.gemini336相机在ubuntu22.04的ros2下运行
在这里,已经提前在ubuntu22.04系统下安装好了ros2,让相继运行步骤如下:
1.创建 ROS2 工作空间
mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src2.克隆官方源码(GitHub / Gitee 二选一)
# GitHub(海外/稳定) git clone -b v2-main https://github.com/orbbec/OrbbecSDK_ROS2.git # Gitee(国内/加速) # git clone -b v2-main https://gitee.com/orbbecdeveloper/OrbbecSDK_ROS2.git3.安装编译依赖
sudo apt install -y libgflags-dev nlohmann-json3-dev libgoogle-glog-dev \ ros-humble-image-transport ros-humble-image-publisher ros-humble-camera-info-manager \ ros-humble-diagnostic-updater ros-humble-diagnostic-msgs ros-humble-xacro4.编译、设置环境
cd ~/ros2_ws colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release # 加载环境(加入~/.bashrc可永久生效) echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc source ~/.bashrc只编译以下3个包
cd ~/ros2_ws # 1. 先只编译相机包(安全) colcon build --packages-select orbbec_camera orbbec_camera_msgs orbbec_description --symlink-install --event-handlers console_direct+ # 2. 刷新环境 source ~/ros2_ws/install/setup.bash # 3. 测试相机是否工作 ros2 launch orbbec_camera orbbec_camera.launch.py enable_depth_align:=false rgb_encoding:=bgr85.安装 udev 规则(源码版专用脚本)
cd ~/ros2_ws/src/OrbbecSDK_ROS2/orbbec_camera/scripts sudo bash install_udev_rules.sh sudo udevadm control --reload-rules && sudo udevadm trigger如果以后需要全部重新编译(比如系统大更新后),可以用:
# 清理所有编译产物(谨慎操作!) rm -rf ~/ros2_ws/build ~/ros2_ws/install ~/ros2_ws/log # 重新编译所有包 colcon build --symlink-install📊 验证其他包是否完好
# 查看已安装的包(应该能看到之前的包还在) ls ~/ros2_ws/install/ # 运行之前的节点测试 ros2 run vision_node your_node_name # 替换成你之前的节点名6.验证安装
# 查看包是否存在 ros2 pkg list | grep orbbec # 启动相机节点(以Gemini 335为例) ros2 launch orbbec_camera gemini_330_series.launch.py若ros2 pkg list | grep orbbec命令后有orbbec_camera、orbbec_camera_msgs、orbbec_description,则这个命令的验证成功,如果空白,没有这些的输出,则编译失败,有可能是ros2的backward_ros包没有安装,直接运行以下命令:
sudo apt update sudo apt install -y ros-humble-backward-ros安装完成后,直接重新编译Orbbec 包(backward_ros已经被打包进 Ubuntu 的 ROS 2 软件源里了,直接一条命令就能安装,完全不用下载源码)
cd ~/ros2_ws rm -rf build install log colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release source install/setup.bash ros2 pkg list | grep orbbec把 ROS2 和工作空间的环境永久加到.bashrc里,这样每次打开终端都自动加载:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc echo "conda deactivate" >> ~/.bashrc source ~/.bashrc7.验证成功后,运行相机
7.1 运行相机
ros2 launch orbbec_camera gemini_330_series.launch.py或者
ros2 launch orbbec_camera orbbec_camera.launch.py enable_depth_align:=false启动相机节点
ros2 launch orbbec_camera gemini_330_series.launch.py调整相机曝光度
ros2 param set /camera/camera depth_exposure 28000 ros2 param set /camera/camera depth_gain 24 ros2 param set /camera/camera enable_laser true7.2 运行rqt_image_view
ros2 run rqt_image_view rqt_image_view想永久解决rqt_image_view: command not found的问题,可以把环境变量加到.bashrc里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc source ~/.bashrc7.3 客户端界面运行和设置
# 安装 RViz(如果没装) sudo apt install -y ros-humble-rviz2 # 启动 RViz ros2 run rviz2 rviz2打开界面后,设置如下:
1.左侧Displays面板里:
- 找到
Fixed Frame,把默认的map改成camera_color_frame - 改完之后,那个红色报错提示就会消失了
2. 添加彩色图像
- 点击左下角的
Add按钮 - 在弹出的窗口里,选择
Image,点击OK - 左侧列表里会出现新的
Image项,点进去设置:- 把
Topic改成/camera/color/image_raw - 调整
Image Rendering里的Size,可以让画面显示得更合适
- 把
3.添加3D点云
- 再点一次
Add按钮 - 选择
PointCloud2,点击OK - 左侧新出现的
PointCloud2项里:- 把
Topic改成/camera/depth/points - 把
Style改成Flat Squares,点云会更清晰 - 可以把
Size (m)调到0.005,点云更细腻
- 把
7.4 ros2调取摄像头的数据和信息
7.4.1 查看相机内参(标定信息)
ros2 topic echo /camera/color/camera_info7.4.2 查看话题发布频率(帧率)
ros2 topic hz /camera/color/image_raw7,4,3 打开摄像头
ros2 run orbbec_camera orbbec_camera_node --ros-args -p color_topic_name:=/camera_head/rgb -p depth_topic_name:=/camera_head/depth -p color_camera_info_topic_name:=/camera_head/camera_info如果没有彩色图,可以终端强制打开彩色图:
ros2 run orbbec_camera orbbec_camera_node --ros-args \ -p enable_color:=true \ -p color_width:=640 \ -p color_height:=480 \ -p color_fps:=308.深度图和彩图坐标对齐
找到launch 文件应该就在这里
~/ros2_ws/src/OrbbecSDK_ROS2-2-main/orbbec_camera/launch/ob_camera.launch.py打开文件修改函数generate_launch_arguments(),在函数的最后加2行参数,加完参数后如下:
def generate_launch_arguments(): launch_arguments = [ #general config DeclareLaunchArgument('camera_model', default_value=default_camera_model), DeclareLaunchArgument('config_file_path', default_value=''), #multi-device sync param DeclareLaunchArgument('camera_name', default_value='camera'), DeclareLaunchArgument('usb_port', default_value=''), DeclareLaunchArgument('device_num', default_value='1'), DeclareLaunchArgument('sync_mode', default_value='standalone'), DeclareLaunchArgument('trigger_out_enabled', default_value='true'), #instra-process demo set DeclareLaunchArgument('use_intra_process_comms', default_value='false'), DeclareLaunchArgument('attach_component_container_enable', default_value='false'), DeclareLaunchArgument('attach_component_container_name', default_value=default_component_container_name), # 👇 👇 👇 你加的两行(开启深度彩图对齐) DeclareLaunchArgument('depth_registration', default_value='true'), DeclareLaunchArgument('align_mode', default_value='depth_to_color'), ] return launch_arguments加完参数后编译
source /opt/ros/humble/setup.bash cd ~/ros2_ws colcon build --packages-select orbbec_camera_msgs orbbec_camera orbbec_description source install/setup.bash ros2 launch orbbec_camera orbbec_camera.launch.py最后运行相机节点就可以了。
