📌 前言
最近在做一个SLAM相关的项目,需要用到Nuwa-HP60C深度相机。官方文档以Ubuntu20.04+ROS2 Foxy为例,而我是在Windows 11 + WSL2 Ubuntu 22.04 + ROS2 Humble环境下开发的,踩了不少坑。这篇文章记录了完整的配置过程,希望能帮助到和我遇到同样问题的朋友。
🎯 环境概览
| 项目 | 版本 |
|---|---|
| 主机系统 | Windows 11 |
| 虚拟环境 | WSL2 |
| Linux发行版 | Ubuntu 22.04 LTS |
| ROS2版本 | Humble Hawksbill |
| 深度相机 | Yahboom Nuwa-HP60C(安思疆) |
📦 第一步:ROS2环境准备
确认ROS2已安装
# 检查ROS2是否安装
ros2 --version
# 如果没有安装,参考官方文档安装ROS2 Humble
安装依赖包
# 注意:将foxy替换为humble
sudo apt install libgflags-dev nlohmann-json3-dev libgoogle-glog-dev \
ros-humble-image-transport ros-humble-image-publisher
🔌 第二步:WSL2连接USB相机(Windows独有步骤)
这是WSL环境最关键的一步。WSL2默认无法直接访问USB设备,需要借助usbipd-win工具。
2.1 安装usbipd-win
- 访问 usbipd-win发布页面
- 下载
usbipd-win_x.msi安装包 - 双击安装
2.2 连接相机到WSL
在Windows PowerShell(管理员)中:
# 查看所有USB设备
usbipd list
# 找到相机设备,记下BUSID(例如 2-4)
# 绑定设备
usbipd bind --busid <你的BUSID>
# 附加到WSL
usbipd attach --wsl --busid <你的BUSID>
在WSL终端中验证:
# 检查USB设备
lsusb
# 检查视频设备
ls -la /dev/video*
⚠️ 注意:每次重新插拔相机或重启电脑后,都需要重新运行
usbipd attach命令。
🛠️ 第三步:编译相机驱动
3.1 获取驱动代码
从官方资料页下载:https://www.yahboom.com/study/hp60c
解压后将ascam_ros2_ws文件夹复制到home目录:
# 如果压缩包在Windows D盘
cp /mnt/d/Downloads/ascam_ros2_ws.zip ~/
cd ~
unzip ascam_ros2_ws.zip
3.2 解决编译依赖问题
问题1:ORB_SLAM2报错
错误信息: Could NOT find ORB_SLAM2
解决方案: 修改build.sh,跳过orbslam包
cd ~/ascam_ros2_ws
nano build.sh
将编译命令改为:
colcon build --packages-ignore ros2_orbslam
问题2:Boost库找不到
错误信息: common is required but boost was not found
解决方案: 安装完整的Boost库
sudo apt install libboost-all-dev
如果仍然报错,修改ascamera的CMakeLists.txt:
nano ~/ascam_ros2_ws/src/ascamera/CMakeLists.txt
在find_package(PCL REQUIRED)之前添加:
find_package(Boost REQUIRED COMPONENTS system filesystem thread date_time iostreams)
并在target_link_libraries中添加${Boost_LIBRARIES}。
问题3:OpenCV版本不匹配
错误信息: Could NOT find OpenCV with version 4.2.0
解决方案: 修改yahboomcar_kcftracker/CMakeLists.txt
nano ~/ascam_ros2_ws/src/yahboomcar_kcftracker/CMakeLists.txt
将:
find_package(OpenCV 4.2.0 REQUIRED)
改为:
find_package(OpenCV 4.2 REQUIRED)
3.3 编译
cd ~/ascam_ros2_ws
chmod a+x build.sh
./build.sh
编译成功后,你会看到类似输出:
Finished <<< ascamera
Summary: 7 packages finished
3.4 添加环境变量
echo "source ~/ascam_ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
🔧 第四步:安装udev规则
cd ~/ascam_ros2_ws/src/ascamera/scripts
sudo bash create_udev_rules.sh
成功后会提示SUCCESS。
重新插拔相机使规则生效。
📝 第五步:配置文件路径
检查配置文件是否存在:
ls ~/ascam_ros2_ws/src/ascamera/configurationfiles/
如果路径不正确,修改launch文件:
nano ~/ascam_ros2_ws/src/ascamera/launch/hp60c.launch.py
确保配置文件路径指向正确的位置。
修改后重新编译:
cd ~/ascam_ros2_ws
./build.sh
🚀 第六步:运行相机
6.1 启动相机节点
ros2 launch ascamera hp60c.launch.py
成功启动后你会看到:
[INFO] [ascamera_hp60c.camera_publisher]: get depth_width 640
[INFO] [ascamera_hp60c.camera_publisher]: get depth_height 480
[INFO] [ascamera_hp60c.camera_publisher]: Angstrong camera sdk version:v1.2.28
6.2 查看话题
打开新终端:
ros2 topic list
应该能看到:
/camera/camera_info
/camera/depth/image_raw
/camera/rgb/image_raw
/parameter_events
/rosout
6.3 查看彩色图像
ros2 run rqt_image_view rqt_image_view
在左上角选择/camera/rgb/image_raw。
6.4 查看深度图
在rqt_image_view中选择/camera/depth/image_raw,记得将色彩映射改为rainbow。
6.5 查看点云(RViz2)
rviz2
在RViz2中:
- 点击左下角 Add
- 选择 By topic
- 选择
/camera/pointcloud→ PointCloud2 - 在左侧Display中设置 Fixed Frame 为
camera_link
📹 第七步:录制SLAM数据集
手持相机在房间里走动,录制rosbag:
# 录制所有相机话题
ros2 bag record -o my_walking_data \
/camera/rgb/image_raw \
/camera/depth/image_raw \
/camera/camera_info
按Ctrl+C停止录制。之后可以离线回放:
ros2 bag play my_walking_data
⚠️ 常见问题汇总
| 问题 | 解决方案 |
|---|---|
package 'ascamera' not found | 运行source ~/ascam_ros2_ws/install/setup.bash |
| 话题列表为空 | 检查USB连接:usbipd attach --wsl |
| Boost库找不到 | sudo apt install libboost-all-dev |
| OpenCV版本不匹配 | 修改CMakeLists.txt中的版本要求 |
| ORB_SLAM2报错 | 在build.sh中用--packages-ignore跳过 |
📚 参考资料
- 官方资料页:https://www.yahboom.com/study/hp60c
- usbipd-win:https://github.com/dorssel/usbipd-win
- ROS2 Humble:https://docs.ros.org/en/humble/
💡 写在最后
整个配置过程最大的坑点在于WSL2的USB设备连接和编译依赖的处理。如果你使用的是原生Ubuntu系统,会省去usbipd-win这一步,其他步骤基本相同。
希望这篇文章能帮助到正在使用Nuwa-HP60C相机的你。如果有任何问题,欢迎在评论区交流!
454

被折叠的 条评论
为什么被折叠?



