参考以下链接:
原文链接:https://blog.youkuaiyun.com/jin15203846657/article/details/125870504
基于ROS的自动驾驶 激光雷达点云物体检测 项目实战_caffe 训练激光点云-优快云博客
前言:
基于Apollo的preception与Autoware的lidar_apollo_cnn_seg_detect模块,并详细记录ROS系统上进行实时检测全部流程和踩坑,文章最后附上rosbag和rosbag的制作方法。
环境
RTX 2060(后面关于算力)
ubuntu 18.04
ROS melodic (ubuntu 18.04安装ROS melodic可以参看我这篇文章ubuntu 18.04安装ROS系统)
CUDA 10.0
cudnn 7.6.5
caffe
cmake 3.18.2(不能低于3.12.2)
opencv 3.2.0
安装
ubuntu 18.04、ROS melodic 、CUDA 10.0、cudnn 7.6.5安装在此就不赘述。
caffe安装
分步执行,安装依赖项
sudo apt-get install -y libopencv-dev
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y liblapack-dev
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-numpy python-scipy
sudo apt-get install -y python3-pip
sudo apt-get install -y python3-numpy python3-scipy
下载caffe开源软件项目(一定要在下载到home文件目录下)
cd ~
git clone https://github.com/BVLC/caffe
进入caffe/python/目录下,执行下面的命令,下载依赖的软件
cd caffe/python/
for req in $(cat requirements.txt); do pip3 install $req; done
下载本项目源码:
git clone https://github.com/AbangLZU/cnn_seg_lidar.git
将下载下来源码里面的Makefile.config复制到caffe文件夹下
更改Makefile.config里面的部分内容
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_61,code=sm_61
改为(这部分算力根据自己显卡型号来哈):
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
改为(根据自己OpenCV版本来,我的是3.2.0):
OPENCV_VERSION :=3
注:如果不清楚自己opencv版本型号,输入下面命令产看版本:
pkg-config opencv --modversion
编译caffe
make -j8
make distribute
成功后如下图所示:
再编译本项目
首先要对源码做一部分修改(修改数据的topic,以便检测算法能读取数据):
修改cnn_seg_lidar/src/lidar_cnn_seg_detect/nodes/cnn_segmentation.cpp
如果不知道topic是啥,先运行下rosbag包,打开rviz看下
修改完后就可以再项目文件夹cnn_seg_lidar
下编译了:
catkin_make
可能会报错:
-- Could NOT find jsk_recognition_msgs (missing: jsk_recognition_msgs_DIR)
-- Could not find the required component 'jsk_recognition_msgs'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by
"jsk_recognition_msgs" with any of the following names:
jsk_recognition_msgsConfig.cmake
jsk_recognition_msgs-config.cmake
解决方法:
sudo apt-get install ros-melodic-jsk-recognition-msgs
sudo apt-get install ros-melodic-jsk-rviz-plugins
此时再catkin_make
就没问题了,成功如下:
然后我们下面开始制做rosbag
使用kitti2bag项目将kitti 的raw data转化为rosbag
其中需要将kitti2bag项目中的kitti2bag/kitti2bag.py
里面fill pcl msg
中的反射强度i
改成intensity
,如下所示:
fields = [PointField('x', 0, PointField.FLOAT32, 1),
PointField('y', 4, PointField.FLOAT32, 1),
PointField('z', 8, PointField.FLOAT32, 1),
PointField('intensity', 12, PointField.FLOAT32, 1)]
下载kitti raw data中的一部分就行(如2011_09_26_drive_0101_sync.zip数据文件包括点云、图像等和2011_09_26_calib.zip标定文件,这两个组合起来用的,所以前面的数字要对应,不能不匹配),放在kitti2bag文件夹下
解压这两个文件:
unzip 2011_09_26_drive_0101_sync.zip
unzip 2011_09_26_calib.zip
开始转换:
python -m kitti2bag -t 2011_09_26 -r 0101 raw_synced .
可能会遇到下面错误:
ImportError: dynamic module does not define module export function (PyInit__tf2)
这是因为tf2是为了Python2写的,不适用于Python3,所以需要吧python换成ubuntu系统自带的2.7版本
此时在转换应该就没问题了,成功后界面如下:
在kitti2bag文件夹下应该就有了rosbag:
启动激光雷达点云三维目标检测
先启动ROS
roscore
再循环播放rosbag数据:
rosbag play kitti_2011_09_26_drive_0101_synced.bag -l --clock
然后在cnn_seg_lidar
文件夹下打开终端:
source devel/setup.bash
roslaunch lidar_cnn_seg_detect lidar_cnn_seg_detect.launch
在cnn_seg_lidar
文件夹下新开终端打开rviz:
rviz -d src/lidar_cnn_seg_detect/rviz_config/lidar_detect.rviz
点击Add(我是因为提前开了,所以有画面,正常情况下刚打开rviz是没这样的画面的)
选择如下
更改这里,就会显示雷达画面:
刚开始点云的点很小,可以改下尺寸:
最终检测画面如下所示:
至此全部完成。
测试rosbag链接:
链接:百度网盘 请输入提取码https://pan.baidu.com/s/17Nqm4VzwoJxBGZOl2tnQwQ
提取码:k1us