基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

这篇具有很好参考价值的文章主要介绍了基于ROS的自动驾驶 激光雷达点云物体检测 项目实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:
基于Apollo的preception与Autoware的lidar_apollo_cnn_seg_detect模块,并详细记录ROS系统上进行实时检测全部流程和踩坑,文章最后附上rosbag和rosbag的制作方法。参考文章:https://adamshan.blog.csdn.net/article/details/106157761?spm=1001.2014.3001.5502感谢大佬的杰作。

检测效果视频

环境

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

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

进入caffe/python/目录下,执行下面的命令,下载依赖的软件

cd caffe/python/
for req in $(cat requirements.txt); do pip3 install $req; done

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

下载本项目源码:

git clone https://github.com/AbangLZU/cnn_seg_lidar.git

将下载下来源码里面的Makefile.config复制到caffe文件夹下
基于ROS的自动驾驶 激光雷达点云物体检测 项目实战
基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

更改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

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

改为(根据自己OpenCV版本来,我的是3.2.0):
OPENCV_VERSION :=3

注:如果不清楚自己opencv版本型号,输入下面命令产看版本:

pkg-config opencv --modversion

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

编译caffe

make -j8
make distribute

成功后如下图所示:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

再编译本项目
首先要对源码做一部分修改(修改数据的topic,以便检测算法能读取数据):
修改cnn_seg_lidar/src/lidar_cnn_seg_detect/nodes/cnn_segmentation.cpp
基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

如果不知道topic是啥,先运行下rosbag包,打开rviz看下

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

修改完后就可以再项目文件夹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就没问题了,成功如下:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

然后我们下面开始制做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)]

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

下载kitti raw data中的一部分就行(如2011_09_26_drive_0101_sync.zip数据文件包括点云、图像等和2011_09_26_calib.zip标定文件,这两个组合起来用的,所以前面的数字要对应,不能不匹配),放在kitti2bag文件夹下

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

解压这两个文件:

unzip 2011_09_26_drive_0101_sync.zip
unzip 2011_09_26_calib.zip

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

开始转换:

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版本

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

此时在转换应该就没问题了,成功后界面如下:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

在kitti2bag文件夹下应该就有了rosbag:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

启动激光雷达点云三维目标检测

先启动ROS

roscore

再循环播放rosbag数据:

rosbag play kitti_2011_09_26_drive_0101_synced.bag -l --clock

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

然后在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是没这样的画面的)

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

选择如下

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

更改这里,就会显示雷达画面:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

刚开始点云的点很小,可以改下尺寸:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

最终检测画面如下所示:

基于ROS的自动驾驶 激光雷达点云物体检测 项目实战
至此全部完成。

测试rosbag链接:

链接:https://pan.baidu.com/s/17Nqm4VzwoJxBGZOl2tnQwQ
提取码:k1us文章来源地址https://www.toymoban.com/news/detail-474735.html

到了这里,关于基于ROS的自动驾驶 激光雷达点云物体检测 项目实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达

    DBSCAN: Density Based Spatial Clustering of Applications with Noise; DBSCAN是基于密度的聚类方法,对样本分布的适应能力比K-Means更好。 红色的点是核心对象 黑色的点是非核心对象 注意 :距离的度量不限于点的空间距离,还可以是其它点特征,比如速度、反射强度等 基本思路 假定类别可以

    2024年02月11日
    浏览(45)
  • Apollo官方课程算法解读笔记——激光雷达感知模块、基于PointPillars的激光雷达点云检测算法、PointPillars模型的部署和优化模型的部署和优化

    感知模块检测效果: 左边为摄像头拍摄图像,激光雷达感知不依赖左边CAMERA,而是点云数据对应的效果图(黄色上方数字为Tracking ID) 主车红灯时的激光点云检测效果图 车道线给CAMERA提供一个标定参考,使得camera检测出来的障碍物从2维转化为3维的信息,因为此标定的参考,

    2024年02月14日
    浏览(43)
  • 【论文阅读】你看不见我:对基于激光雷达的自动驾驶汽车驾驶框架的物理移除攻击

    自动驾驶汽车(AVs)越来越多地使用基于激光雷达的物体检测系统来感知道路上的其他车辆和行人。目前,针对基于激光雷达的自动驾驶架构的攻击主要集中在降低自动驾驶物体检测模型的置信度,以诱导障碍物误检测,而我们的研究发现了如何利用基于激光的欺骗技术,在传

    2024年02月11日
    浏览(48)
  • 自动驾驶专题介绍 ———— 激光雷达标定

     激光雷达在感知、定位方面发挥着重要作用。跟摄像头一样,激光雷达也是需要进行内外参数标定的。内参标定是指内部激光发射器坐标系与雷达自身坐标系的转换关系,在出厂之前就已经完成了标定,可以直接使用。自动驾驶系统需要进行的是外参的标定,即激光雷达自

    2024年02月08日
    浏览(47)
  • 自动驾驶二维激光雷达标定板

    自动驾驶是人类智慧的结晶,它融合了多种高科技技术,包括传感器技术、计算机视觉、人工智能等,它让汽车具备了自主感知和决策的能力,可以在复杂多变的道路环境中自如应对。这种技术带给我们的不仅仅是出行的便利,更是对未来生活的美好憧憬。 在自动驾驶汽车中

    2024年01月20日
    浏览(45)
  • 计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理

            激光雷达是目前正在改变世界的传感器。它集成在自动驾驶汽车、自主无人机、机器人、卫星、火箭等中。该传感器使用激光束了解世界,并测量激光击中目标返回所需的时间,输出是点云信息,利用这些信息,我们可以从3D点云中查找障碍物。         从自

    2024年02月07日
    浏览(58)
  • 深入浅出讲解自动驾驶 - 激光雷达原理和结构简介

    💂 个人主页 : 同学来啦 🤟 版权 : 本文由【同学来啦】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助, 欢迎关注、点赞、收藏和订阅专栏哦 激光雷达最先应用于海洋深度探测领域,其实现思路是通过相同回波之间的时间差实现海洋深度测算。后来不断演

    2024年02月16日
    浏览(44)
  • 使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(下篇)

    原创 | 文 BFT机器人  【原文链接】使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(上篇) 05 Open3D可视化工具 多功能且高效的3D数据处理:Open3D是一个全面的开源库,为3D数据处理提供强大的解决方案。它具有优化的后端架构,可实现高效的并行化,非常适

    2024年02月04日
    浏览(61)
  • 使用Open3D实现3D激光雷达可视化:以自动驾驶的2DKITTI深度框架为例(上篇)

    原创 | 文 BFT机器人  3DLiDAR传感器(或)三维光探测和测距是一种先进的发光仪器,能够像我们人类一样在三维空间中感知现实世界。这项技术特别彻底改变了地球观测、环境监测、侦察和现在的自动驾驶领域,它提供准确和详细数据的能力有助于促进我们对环境和自然资源

    2024年02月03日
    浏览(56)
  • 【单目3D】在自动驾驶中将 2D 物体检测提升到 3D

    单目 3D 目标检测使用 RGB 图像来预测目标 3D 边界框。由于 RGB 图像中缺少关键的深度信息,因此该任务从根本上说是不适定的。然而在自动驾驶中,汽车是具有(大部分)已知形状和大小的刚体。那么一个关键的问题是如何有效地利用汽车的强大先验,在传统 2D 对象检测之上

    2024年02月19日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包