Ubuntu 20.04 + ROS Noetic 下奥比中光Astra相机驱动安装全攻略
第一次在Ubuntu 20.04上安装奥比中光Astra相机的ROS驱动时,我本以为按照网上的教程一步步来就能顺利完成。然而现实给了我当头一棒——从依赖缺失到版本冲突,从路径错误到编译失败,每一步都暗藏玄机。这篇文章将带你完整经历我踩过的每一个坑,并分享最终成功的解决方案。
1. 环境准备与基础依赖安装
在开始之前,确保你已经完成了以下基础环境配置:
- Ubuntu 20.04 LTS 系统
- ROS Noetic 完整安装
- 基本的编译工具链(gcc, g++, make等)
1.1 安装libuvc
大多数教程都会从libuvc开始,这是一个开源的USB视频类库,Astra相机依赖它进行底层通信。
git clone https://github.com/libuvc/libuvc cd libuvc mkdir build cd build cmake .. make && sudo make install这个步骤通常比较顺利,但如果遇到问题,可能是缺少基础开发库:
sudo apt-get install build-essential cmake libusb-1.0-0-dev1.2 处理ROS依赖包
网上常见的依赖安装命令是:
sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros但实际执行时,你可能会遇到"无法定位软件包ros-noetic-libuvc"的错误。这是因为Noetic版本的ROS中,这个包已经被重命名或不再维护。
解决方案:跳过这个依赖,事实证明Astra相机驱动可以不依赖这些ROS包正常运行。
2. 创建工作空间与驱动下载
2.1 创建工作空间
mkdir -p ~/camera_ws/src cd ~/camera_ws/ catkin_make source devel/setup.bash2.2 获取Astra相机驱动
官方驱动仓库位于:
cd ~/camera_ws/src git clone https://github.com/orbbec/ros_astra_camera如果克隆速度慢,可以考虑从国内镜像获取,或者直接下载zip包。
3. 编译过程中的疑难杂症
3.1 glog缺失问题
首次编译时,最常见的错误是:
None of the required 'libglog' found解决方案:安装Google的glog库
git clone https://github.com/google/glog sudo apt-get install autoconf automake libtool cd glog mkdir build cd build cmake .. make -j$(nproc) sudo make install注意:如果make过程中出现内存不足,去掉-j参数使用单线程编译
3.2 CMake版本过低
在较新的Ubuntu系统上这个问题较少见,但如果你遇到"CMake 3.19.2 or higher is required"的错误,需要升级CMake:
sudo apt remove cmake wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz tar -xzvf cmake-3.22.1.tar.gz cd cmake-3.22.1 ./bootstrap make -j$(nproc) sudo make install验证版本:
cmake --version3.3 glog版本冲突
即使安装了glog,仍可能遇到编译错误。这是因为驱动可能需要特定版本的glog。
解决方案:尝试使用glog 0.5.0版本:
wget https://github.com/google/glog/archive/refs/tags/v0.5.0.tar.gz tar -xzvf v0.5.0.tar.gz cd glog-0.5.0 mkdir build cd build cmake .. make sudo make install4. 路径配置与最终编译
4.1 解决libuvc路径问题
编译卡在96%通常是找不到libuvc库的问题。需要手动指定libuvc的路径:
编辑~/camera_ws/src/ros_astra_camera/CMakeLists.txt,在适当位置添加:
set(libuvc_INCLUDE_DIRS "/usr/local/include/libuvc") set(libuvc_LIBRARIES "/usr/local/lib/libuvc.so")4.2 完整编译流程
cd ~/camera_ws rm -rf build devel # 清除之前的编译结果 catkin_make source devel/setup.bash4.3 设置USB权限
roscd astra_camera sudo chmod 777 scripts/create_udev_rules ./scripts/create_udev_rules5. 启动相机与验证
5.1 启动相机节点
roslaunch astra_camera astra.launch5.2 使用RViz查看图像
rosrun rviz rviz在RViz中添加Image显示,并选择相应的topic:
- /camera/rgb/image_raw (彩色图像)
- /camera/depth/image (深度图像)
5.3 常见问题排查
如果启动失败,检查以下方面:
- USB连接是否正常(尝试不同USB口)
- 查看日志中的具体错误信息
- 确认所有依赖都已正确安装
- 检查~/.bashrc中是否source了ROS和workspace的setup.bash
6. 性能优化与高级配置
6.1 相机参数调整
通过修改launch文件可以调整相机参数:
<param name="depth_registration" value="true" /> <param name="color_depth_synchronization" value="false" /> <param name="auto_exposure" value="true" />6.2 降低CPU占用
在launch文件中添加:
<param name="depth_mode" value="320x240_30" /> <param name="color_mode" value="320x240_30" />6.3 多相机支持
如果需要使用多个Astra相机,需要为每个相机指定唯一的serial_no:
<param name="serial_no" value="ABC123" />7. 开发建议与经验分享
在实际项目中使用Astra相机时,有几个实用技巧值得分享:
- 帧率稳定性:在ROS中,Astra相机的帧率有时会不稳定。可以通过限制USB带宽使用来改善:
sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'- 点云生成:结合
depth_image_proc包可以轻松生成点云:
roslaunch astra_camera astra_pro.launch rosrun depth_image_proc point_cloud_xyzrgb depth:=/camera/depth/image_raw rgb:=/camera/rgb/image_rect_color camera_info:=/camera/rgb/camera_info _queue_size:=10- 校准建议:定期进行相机校准能显著提高深度图像质量。推荐使用
camera_calibration包:
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/camera/rgb/image_raw camera:=/camera/rgb- ROS2支持:如果你计划迁移到ROS2,可以考虑使用
astra_camera2包,它提供了更好的ROS2支持。