IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 三维目标检测之ROS可视化 -> 正文阅读

[人工智能]三维目标检测之ROS可视化

实验室有一个镭神C16的激光雷达,最近在我这,想拿来玩一玩。本意是做一个实时的检测,通过ROS获取激光雷达的激光点云,用pointpillars模型来进行实时的三维目标检测任务。但是镭神c16这一个激光雷达,不太好处理,目前只能用自带的驱动,进行一个实时的显示。所以下边的思路就是,先存储镭神c16的点云数据,再用ros进行三维目标检测。

1. 思路:

??通过ros来实现点云消息的订阅和检测框bbox消息的发布,来实现一个检测效果的可视化功能。

2. 实验环境:

  • Ubuntu16.04
  • cuda 10.1
  • ros-kinetic
    检测环境主要依托OpenPCDet,环境搭建可参考我的这篇博客

3. 步骤:

1. 前提条件

已经搭建过了OpenPCDet。
已经搭建了ROS环境,我用的是kinetic版本,用其他版本应该也可以。

2. 编译环境

创建一个工作空间并进入

mkdir -p ~/pointpillars_ros/src
cd pointpillars_ros/src

将ROS包复制或者克隆到当前文件夹下

git clone https://github.com/BIT-DYN/pointpillars_ros
cd ..

编译

# 进入到搭建好的openpcdet环境
conda activate openpcdet
pip install --user rospkg catkin_pkg
pip install pyquaternion
# 因为我用的是kinetic,所以需要安装pcl-ros,以上版本不用安装
sudo apt-get install ros-kinetic-pcl-ros
sudo apt-get install ros-kinetic-jsk-recognition-msg
sudo apt-get install ros-kinetic-jsk-rviz-plugins
## 注意,执行catkin_make时,在最外层的文件夹下,也就是我例子中的~/pointpillars_ros
catkin_make

迁移OpenPCDet中的一些文件

为保险起见,我将下边这些文件全部放入到src/pointpillars/tools文件夹下了。
在这里插入图片描述
可以先修改一下demo.py文件的配置文件和预训练模型的位置,测试是否能成功调用pcdet,如果可以的话,说明环境迁移过来后没问题,再尝试修改ros.py的代码。

修改代码

ros.py代码

# 下边的路径改成自己的
sys.path.append("/home/ubuntu/pointpillars_ros/src/pointpillars_ros") # Line 22
# 54行后边
""" Initialize ros parameters """
config_path = rospy.get_param("/config_path", "/home/ubuntu/pointpillars_ros/src/pointpillars_ros/tools/cfgs/kitti_models/pointpillar.yaml")
ckpt_path = rospy.get_param("/ckpt_path", "/home/ubuntu/pointpillars_ros/src/pointpillars_ros/tools/models/pointpillar.pth")
# 订阅的激光点云名字,改成自己的,我用的是kitti的.bag文件
self.sub_velo = rospy.Subscriber("/kitti/velo/pointcloud", PointCloud2, self.lidar_callback, queue_size=1,  buff_size=2**12)

launch/pointpillars.launch代码

<launch>
# 主要修改下边第一行
  <node pkg="rosbag" type="play" name="player" output="log" args="-l /media/ubuntu/ximing/dataset/ros_kitti/bag/2011_10_03/kitti_2011_10_03_drive_0027_synced.bag" />
  <node name="pointpillars_ros" type="ros.py" pkg="pointpillars_ros" output="screen"/>
  <node type="rviz" name="rviz" pkg="rviz" args="-d $(find pointpillars_ros)/launch/pointpillars.rviz" />
</launch>

launch/pointpillars.rviz代码
主要修改你所用的话题的名字,我改了点云和图像的名字
在这里插入图片描述

3. 运行

执行下边的命令

conda activate openpcdet
source ~/pointpillars_ros/devel/setup.bash
roslaunch pointpillars_ros pointpillars.launch

4. 图片效果:

我使用kitti原数据的某一段时间,转成.bag格式,用pointpillars的模型进行测试的,效果也不行,猜测原因可能是1.旋转矩阵参数没有修改;2.激光点云显示的跟检测框有延时,不能很好匹配;3.第三点可能就是模型不行(可能性不大)。
在这里插入图片描述在这里插入图片描述下图是用雷神c16雷达在实验室采集的30秒的数据,不到1分钟,696MB。
在这里插入图片描述
目前用rosbag record存储了一些雷神C16激光雷达的数据,还不太会使用雷达实时读取,实时检测。后期再想办法吧。

5. 视频效果

哔哩哔哩

6. 主要参考资料:

??非常感谢这些网友分享的开源资料,让一个小白的我,也能快速demo出一个效果。

遇到的问题,解决办法:

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:44:55  更:2022-08-06 10:49:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:47:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码