设备环境:Ubuntu18.04 + ros melodic
相机:乐视相机(乐视遗产,和奥比中光的Astra Pro同方案,便宜)
1. 首先要安装一部分依赖
sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros
2. 我建议建立一个空的工作空间,供调试(当然,也可以放入自己原有的ros工作空间)
mkdir -p ~/astra_ws/src
3. 从github下载astra的包并安装(也可以ros命令安装,这里采用github下载再编译)
cd ~/astra_ws/src
git clone https://github.com/orbbec/ros_astra_camera
roscd astro_camera
sudo sh ./scripts/create_udev_rules
随后进行编译
cd ..
catkin_make --pkg astra_camera
4. 插上相机的USB线,再
lsusb
得到输出
Bus 001 Device 019: ID 2bc5:0502 # RGB模块
Bus 001 Device 018: ID 2bc5:0403 # 深度模块
根据本机信息修改launch文件
找到ros_astra_camera/launch文件夹下的astropro.launch进行修改
将默认的0x0501改为刚才lsusb得到的0x0502
修改launch无需重新编译,但需要source一下
5. 查看相机原始数据
source devel/setup.bash
roslaunch astra_camera astrapro.launch
终端会弹出大量调试信息,主要注意有无红色,黄色的警告也可以自己看一下要不要修改
然后另开一个新的终端
rosrun rviz rviz
通过 add by topic添加image数据即可,需要深度图还是RGB均可自行选择
6. 查看点云数据
(忘记截图了,也不是刚需,埋个坑待更新)
7. 下载darknet-ros并编译
cd ~/astra_ws/src
git clone https://github.com/leggedrobotics/darknet_ros
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
这部分需要等待较长时间,系统会自动检查并下载yolo的权重文件,看着很像假死,建议耐心等待
8. 修改darket_ros中订阅的图像话题
首先查看当前的图像数据发布话题
rostopic list
然后记住,再在darket_ros/config/ros.yaml中进行修改
source devel/setup.bash
roslaunch astra_camera astrapro.launch
另开一个终端
source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch
正常的话会弹出一个对话框,名称为YOLO,大概效果如图
需要修改权重为自己的数据集的话,可以修改如下文件
10. 修改YoloObjectDetector.cpp和image.c,增加对应的测距和三维坐标计算
(这部分当时改代码改的太乱了,就不贴代码了,大概思路是,首先将RGB图和深度图进行配准,然后在修改YoloObjectDetector中,在回调函数用bridge搞一个深度图的副本,然后在YOLOv3检测完,对满足阈值条件的目标进行测距)
测距部分我使用了5个点取均值,不然容易出现nan的情况,也不好适应不规则物体(具体取哪5个点应该需要返校后更详细的测试)
放一个大概的效果动图(测距暂时显示在终端了,加在图上应该会更直观一点)
测试当时是在笔记本的GTX1050测的,帧率低的可怜,返校之后放到xavier nx试了一下,无tensorRT加速的情况下又20帧左右,但由于项目移交学弟处理了,所以后续没有再更新这篇文章了
参考过的博客链接:
https://blog.csdn.net/Arcann/article/details/109495134
https://blog.csdn.net/qq_42145185/article/details/105730256
https://blog.csdn.net/qq_40700822/article/details/118523941