1. 项目概述
奥比中光Astra Pro是一款性价比较高的RGBD相机,广泛应用于机器人视觉、三维重建和SLAM等领域。作为一款国产深度相机,它在精度、帧率和价格之间取得了不错的平衡。本文将详细介绍在Ubuntu 20.04系统下,如何为ROS 1 Noetic和ROS 2 Humble环境配置Astra Pro相机。
深度相机在机器人领域的重要性不言而喻。相比传统RGB相机,它能直接获取场景的深度信息,为SLAM、避障、物体识别等任务提供关键数据支持。Astra Pro采用结构光技术,在室内环境下能提供稳定的深度图像输出。
2. 环境准备
2.1 系统要求
推荐使用Ubuntu 20.04 LTS系统,这是目前ROS 1 Noetic和ROS 2 Humble官方支持的主要发行版。系统安装时建议选择最小安装模式,避免不必要的软件包冲突。
注意:虽然理论上Ubuntu 18.04也能运行,但由于内核版本和库依赖问题,可能会出现兼容性问题,强烈建议使用20.04版本。
2.2 硬件连接检查
在开始软件安装前,请确保:
- 相机通过USB 3.0接口连接(蓝色接口)
- 电源供应充足(建议使用带外接供电的USB Hub)
- 设备已被系统识别(可通过
lsusb命令检查,应能看到"Orbbec"相关设备)
3. 依赖安装
3.1 基础依赖
首先安装必要的系统依赖库:
bash复制sudo apt update
sudo apt install -y build-essential cmake git libudev-dev libusb-1.0-0-dev
3.2 特定版本库安装
由于Ubuntu 20.04默认仓库中的某些库版本可能导致兼容性问题,我们需要手动安装特定版本:
bash复制sudo apt install libudev1=249.11-0ubuntu3.19 libudev-dev=249.11-0ubuntu3.19
sudo apt install libusb-1.0-0=2:1.0.25-1ubuntu1 libusb-1.0-0-dev=2:1.0.25-1ubuntu1
为防止这些包被自动更新,可以将其标记为保留:
bash复制sudo apt-mark hold libudev1 libudev-dev libusb-1.0-0 libusb-1.0-0-dev
4. ROS驱动安装
4.1 ROS 1 Noetic环境配置
对于使用ROS 1 Noetic的用户,推荐使用鱼香ROS提供的安装脚本:
bash复制wget http://fishros.com/install -O fishros && . fishros
选择"安装奥比中光Astra Pro驱动"选项,脚本会自动完成以下工作:
- 下载并编译Astra SDK
- 安装ROS wrapper
- 配置udev规则
- 创建测试launch文件
4.2 ROS 2 Humble环境配置
对于ROS 2用户,需要从源码编译安装:
bash复制mkdir -p ~/astra_ws/src
cd ~/astra_ws/src
git clone https://github.com/orbbec/ros_astra_camera.git
cd ..
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
编译完成后,记得source工作空间:
bash复制echo "source ~/astra_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
5. 相机测试与校准
5.1 基本功能测试
启动相机节点:
bash复制# ROS 1
roslaunch astra_camera astrapro.launch
# ROS 2
ros2 launch astra_camera astrapro.launch.py
使用RViz查看图像:
- 打开RViz:
rviz2(ROS 2)或rviz(ROS 1) - 添加Image显示类型
- 选择
/camera/color/image_raw话题查看彩色图像 - 选择
/camera/depth/image_raw话题查看深度图像
5.2 相机校准
为提高深度数据精度,建议进行相机校准:
bash复制# 安装校准工具
sudo apt install ros-$ROS_DISTRO-camera-calibration
# 启动校准
rosrun camera_calibration cameracalibrator.py \
--size 8x6 \
--square 0.024 \
image:=/camera/color/image_raw \
camera:=/camera/color
按照提示移动校准板,直到所有参数变为绿色后点击"Calibrate"按钮。
6. 常见问题排查
6.1 设备权限问题
如果遇到Permission denied错误,需要配置udev规则:
bash复制echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2bc5", MODE="0666"' | sudo tee /etc/udev/rules.d/99-orbbec.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
6.2 图像帧率低
检查USB连接:
- 确认使用USB 3.0接口(蓝色)
- 尝试更换USB线缆
- 使用
lsusb -t命令查看设备是否运行在USB 3.0模式
6.3 深度图像噪声大
可能原因及解决方案:
- 强光干扰:避免阳光直射或强反射表面
- 距离过近/过远:Astra Pro最佳工作距离为0.6-8米
- 多相机干扰:如使用多台深度相机,需错开工作频率
7. SLAM集成示例
7.1 与RTAB-Map集成
RTAB-Map是一个优秀的RGBD SLAM解决方案,配置方法:
bash复制sudo apt install ros-$ROS_DISTRO-rtabmap-ros
创建launch文件astra_rtabmap.launch:
xml复制<launch>
<include file="$(find astra_camera)/launch/astrapro.launch"/>
<node pkg="rtabmap_ros" type="rtabmap" name="rtabmap" output="screen">
<remap from="rgb/image" to="/camera/color/image_raw"/>
<remap from="depth/image" to="/camera/depth/image_raw"/>
<remap from="rgb/camera_info" to="/camera/color/camera_info"/>
<param name="frame_id" type="string" value="base_link"/>
<param name="odom_frame_id" type="string" value="odom"/>
<param name="queue_size" type="int" value="10"/>
</node>
</launch>
7.2 与Cartographer集成
对于ROS 2用户,可以配置Cartographer节点:
python复制from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='cartographer_ros',
executable='cartographer_node',
name='cartographer_node',
output='screen',
parameters=[{'use_sim_time': False}],
remappings=[
('scan', '/camera/scan'),
('odom', '/odom')
]
),
Node(
package='cartographer_ros',
executable='occupancy_grid_node',
name='occupancy_grid_node',
output='screen',
parameters=[{'resolution': 0.05}]
)
])
8. 性能优化技巧
8.1 降低计算负载
通过修改launch文件参数减少资源占用:
xml复制<param name="depth_registration" type="bool" value="false"/>
<param name="depth_processing" type="bool" value="false"/>
<param name="disparity_processing" type="bool" value="false"/>
8.2 提高帧率
在astrapro.launch中调整参数:
xml复制<param name="depth_mode" type="str" value="640x480_30"/>
<param name="color_mode" type="str" value="640x480_30"/>
8.3 网络传输优化
对于远程可视化,使用压缩传输:
bash复制rosrun topic_tools throttle messages /camera/color/image_raw 5 /camera/color/image_raw_throttle
rosrun image_transport republish raw in:=/camera/color/image_raw_throttle compressed out:=/camera/color/image_raw_compressed
9. 实际应用案例
9.1 室内建图
配置建图参数时的经验值:
- 地图分辨率:0.05m(平衡精度和内存)
- 闭环检测频率:每3-5米一次
- 点云降采样:体素滤波0.01m
9.2 物体识别
结合深度信息的物体识别流程:
- 使用RGB图像进行目标检测
- 根据检测框位置提取对应深度区域
- 计算物体三维位置和尺寸
- 过滤异常深度值(通常>8m或<0.3m)
9.3 机械臂抓取
深度相机在抓取应用中的配置要点:
- 相机安装高度:1.2-1.5m(俯视角度30-45度)
- 工作距离:0.5-1.2m
- 标定精度要求:末端执行器与相机坐标系转换误差<2mm
10. 维护与升级
10.1 固件升级
定期检查固件版本:
bash复制sudo apt update
sudo apt install orbbec-firmware
sudo orbbec-firmware-update
10.2 驱动更新
建议每季度检查驱动更新:
bash复制cd ~/astra_ws/src/ros_astra_camera
git pull origin master
cd ~/astra_ws
colcon build --symlink-install
10.3 长期使用建议
为延长相机寿命:
- 避免长时间连续工作(建议每4小时休息15分钟)
- 定期清洁镜头(使用专用镜头布)
- 避免剧烈温度变化(工作温度0-40℃)
在实际项目中,我发现Astra Pro在中等光照条件下的稳定性最好。当环境光过强时,深度数据会出现较多噪声;而光线太弱时,彩色图像质量会下降。一个实用的技巧是在相机周围添加适度补光(避免直射),这样能同时保证彩色和深度图像的质量。