一个字稳!BEVDet TensorRT的ROS工程实现

作者 | 菜鸡学slam  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/671208950

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【模型部署】技术交流群

本文只做学术分享,如有侵权,联系删文

BEVDet-TensorRT-ROS工程实现

4a381b041118a80f9f7a7878736aa6e6.jpeg

  • 本工程所有代码都是参考大佬们的开源项目,如发现代码有雷同,都是本人引用大佬们

  • 感谢大佬们的开源工作

1 环境配置

  1. 基本环境依赖

ubuntu-20.04, cuda-11.3, cudnn-8.6, TensorRT-8.5

yaml-cpp、Eigen3、libjpeg

  1. 拉取源码

mkdir -p bev_ws/src  
cd bev_ws/src  
git clone https://github.com/linClubs/BEVDet-ROS-TensorRT.git
  1. onnx2engine

The onnx folder can be downloaded from Baidu Netdisk

# 1 创建一个python环境,并安装相关python库
pip install onnx ruamel.yaml==0.17.32

# 2 进入工程目录
cd BEVDet-ROS-TensorRT

# 3 onnx2engine 运行时报错差什么库就安装该库即可
python tools/export_engine.py ./ckpts/lt_d.yaml ./ckpts/img_stage_lt_d.onnx ./ckpts/bev_stage_lt_d.onnx --postfix=_lt_d --fp16 true

2 ros编译运行

# 1. 编译
cd bev_ws 
catkin make

# 2 工作空间生效
source devel/setup.bash

# 3 运行
roslaunch bevdet bevdet_node.launch

# 4 播放数据集
rosbag play nus.bag
  • 测试数据建议直接下载Baidu Netdiskrosbag包, 经本人生成的包,稳的1p。

65c30a5b31fc536bae096e594f29557d.png

3 传感器实时数据

  • 一定要标定(相机内参, 雷达到相机的外参), 不然置信度极低

  • 一定要训练模型 自己场景数据需要重新训练模型

  • 传感器数据直接通过ros发布, 就能实时接本工程并上车

4 待提升

  • 图像传输可以压缩

  • 因为读了6张图,可以多线程读取

  • 图像预处理可以用cuda加速,比如去畸, 仿射变换等操作

  • 可以删掉可视化, 去掉雷达数据

  • 后处理采用cuda加速

  • ...待续

  • ...待续 ...

5 普通编译

# 1 创建build目录并进入该目录
mkdir build && cd build

# 2 编译 # 第1次make报错如下,就再次make就能通过编译
cmake .. && make 

Error copying file (if different) from "/home/lin/code/bevdet-tensorrt-cpp/build/CMakeFiles/bevdemo.dir/src/bevdemo_generated_postprocess.cu.o.depend.tmp" to "/home/lin/code/bevdet-tensorrt-cpp/build/CMakeFiles/bevdemo.dir/src/bevdemo_generated_postprocess.cu.o.depend".
CMake Error at bevdemo_generated_postprocess.cu.o.RELEASE.cmake:246 (message):
  Error generating
  /home/lin/code/bevdet-tensorrt-cpp/build/CMakeFiles/bevdemo.dir/src/./bevdemo_generated_postprocess.cu.o

# 错误2:
AttributeError: 
"load()" has been removed, use

  yaml = YAML(typ='rt')
  yaml.load(...)
改正:
pip install ruamel.yaml==0.17.32

# 错误3
报libffi.so.7的错,禁用掉conda
# 1 运行  生成sample0/sample0_lidarbox.txt检测结果
cd build
./bevdemo ../configure.yaml

# 我的运行
./01test ../configure.yaml

# 可视化
cd ../tools
python viewer.py --config ../configure.yaml
  • 本工程是基于bevdet-tensorrt-cpp魔改

  • 为了快速实现ros版本,只修改了/test/demo_bevdet.cpp中的TestSample函数

  • 仅将TestSample改成ros回调函数,导致代码很乱,可读性比较差, 比如读取参数实现方式不统一, 类只封装了推理函数等问题

  • 有时间再整理更新代码风格, 代码和人一个能跑就行^_^。

  • 再次声明,本工程所有代码都是参考大佬们的开源项目,如发现代码有雷同,都是本人引用大佬们的。

  • 感谢大佬们的开源工作

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

f70fe0ba5946c04f3e6eec5abca858de.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

58e11e960beb19935ec9e55c53fdc608.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

46e0f46fb93f24e6443951733ce4f7d5.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

38fcf58cbac9d10dc35ae2e1dc69f13a.jpeg

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值