使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

article/2025/10/23 8:43:42

本次内容主要是使用kitti数据集来可视化kitti车上一些传感器(相机、激光雷达、IMU)采集的资料以及对行人和车辆进行检测并在图像中画出行人和车辆的2D框、在点云中画出行人和车辆的3D框。

首先先看看最终实现的效果:

自动驾驶视频

看了上面的效果视频,是不是充满好奇了呢,下面让我们一步步的来学习。。。

1、准备工作

1.1数据集下载

在开始之前,先做一些准备工作,即从kitti上下载相关数据:kitty官网

如图所示:下载途中箭头所指的两个文件【注:需要先进行注册】

除了下载这两个文件,后面还需要下载汽车模型文件和标注文件,这里直接贴出下载地址:数据下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OnhRasMG-1639920546758)(C:\Users\WSJ\AppData\Roaming\Typora\typora-user-images\image-20211219111558235.png)]

1.2 创建工作空间并建立一些文件

  • 创建功能包
cd ~/catkin_ws/src
catkin_create_pkg kitti_turtorial rospy 
  • 在刚创建的功能包下的src文件夹中创建以下python文件

2、详细步骤

说明:该部分只是自己的学习笔记,故只会贴出每一步比较核心的代码,要想看懂整个流程,建议完整的观看相关视频:视频

当然最后我也会贴出所有文件的源码供大家学习


2.1 发布照片

#创建一个摄像头的发布者
cam_pub = rospy.Publisher('kitti_cam',Image,queue_size=10)
#读取摄像机数据
image = read_camera(os.path.join(DAtA_PATH, 'image_02/data/%010d.png'%frame))
#发布数据
publish_camera(cam_pub,bridge,image,boxes_2d,types)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcSwXiK1-1639920546763)(C:\Users\WSJ\AppData\Roaming\Typora\typora-user-images\image-20211219203514146.png)]

2.2 发布点云

#创建一个点云的发布者
pcl_pub = rospy.Publisher('kitti_point_cloud',PointCloud2,queue_size=10)
#读取点云数据
point_cloud = read_point_cloud(os.path.join(DAtA_PATH,'velodyne_points/data/%010d.bin'%frame))
#发布数据    
publish_point_cloud(pcl_pub,point_cloud)

2.3 画出自己车子以及照相机视野

#创建一个汽车的发布者
ego_pub = rospy.Publisher('kitti_ego_car',MarkerArray,queue_size=10)
#发布ego_car数据
publish_ego_car(ego_pub)##绘制车子的照相机视野
marker.id = 0
marker.action = marker.ADD
marker.lifetime = rospy.Duration()
marker.type = Marker.LINE_STRIPmarker.color.r = 0.0
marker.color.g = 1.0
marker.color.b = 0.0
marker.color.a = 1.0
marker.scale.x = 0.2marker.points = []
marker.points.append(Point(10,-10,0))
marker.points.append(Point(0,0,0))
marker.points.append(Point(10,10,0))marker_array.markers.append(marker)


2.4 发布IMU

#创建一个IMU发布者
imu_pub = rospy.Publisher('kitti_imu',Imu,queue_size=10)#发布imu数据
publish_imu(imu_pub,imu_data)##IMU发布函数相关设置
def publish_imu(imu_pub,imu_data):imu = Imu()imu.header.frame_id = FRAME_IDimu.header.stamp = rospy.Time.now()#设置旋转量q = tf.transformations.quaternion_from_euler(float(imu_data.roll),float(imu_data.pitch),float(imu_data.yaw));imu.orientation.x = q[0]imu.orientation.y = q[1]imu.orientation.z = q[2]imu.orientation.w = q[3]#设置线性加速度imu.linear_acceleration.x = imu_data.afimu.linear_acceleration.y = imu_data.alimu.linear_acceleration.z = imu_data.au#设置角加速度imu.angular_velocity.x = imu_data.wfimu.angular_velocity.y = imu_data.wlimu.angular_velocity.z = imu_data.wuimu_pub.publish(imu)

2.5 发布GPS

#创建一个GPS发布者
gps_pub = rospy.Publisher('kitti_gps',NavSatFix,queue_size=10)
#发布GPS数据
publish_gps(gps_pub,imu_data)##GPS发布函数相关设置
def publish_gps(gps_pub,imu_data):gps = NavSatFix()gps.header.frame_id = FRAME_IDgps.header.stamp = rospy.Time.now()#gps经度、纬度、海拔高度gps.latitude = imu_data.latgps.longitude = imu_data.longps.altitude = imu_data.altgps_pub.publish(gps) 

2.6 在rviz上显示2D侦测框

#读取2D检测框数据
boxes_2d = np.array(df_tracking_frame[['bbox_left', 'bbox_top', 'bbox_right', 'bbox_bottom']])
types = np.array(df_tracking_frame['type'])## 2D框相关设置
for typ,box in zip(types,boxes):top_left = int(box[0]),int(box[1])bottom_right = int(box[2]),int(box[3])cv2.rectangle(image,top_left,bottom_right,DETECTION_COLOR_DICT[typ],2)
cam_pub.publish(bridge.cv2_to_imgmsg(image,"bgr8"))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VlxeydG9-1639920546766)(C:\Users\WSJ\AppData\Roaming\Typora\typora-user-images\image-20211219203301610.png)]

2.7 在rviz上显示3D 侦测框

 #读取3D检测框数据
boxes_3d = np.array(df_tracking_frame[['height', 'width', 'length', 'pos_x', 'pos_y', 'pos_z', 'rot_y']]      corners_3d_velos = []
for box_3d in boxes_3d:corners_3d_cam2 = compute_3d_box_cam2(*box_3d)corners_3d_velo = calib.project_rect_to_velo(corners_3d_cam2.T)corners_3d_velos += [corners_3d_velo]##3D框发布函数相关设置
def publish_3dbox(box3d_pub,corners_3d_velos,types):marker_array = MarkerArray()for i, corners_3d_velo in enumerate(corners_3d_velos):# 3d boxmarker = Marker()marker.header.frame_id = FRAME_IDmarker.header.stamp = rospy.Time.now()marker.id = imarker.action = Marker.ADDmarker.lifetime = rospy.Duration(LIFETIME)marker.type = Marker.LINE_LISTb, g, r = DETECTION_COLOR_DICT[types[i]]marker.color.r = r/255.0marker.color.g = g/255.0marker.color.b = b/255.0marker.color.a = 1.0marker.scale.x = 0.1marker.points = []for l in LINES:p1 = corners_3d_velo[l[0]]marker.points.append(Point(p1[0], p1[1], p1[2]))p2 = corners_3d_velo[l[1]]marker.points.append(Point(p2[0], p2[1], p2[2]))marker_array.markers.append(marker)box3d_pub.publish(marker_array)

3、代码合集

代码托管在Gitee上,自行下载:代码


咻咻咻咻~~duang~~点个赞呗

下一篇:使用kitti数据集实现自动驾驶——绘制出所有物体的行驶轨迹


http://chatgpt.dhexx.cn/article/1efXHVYo.shtml

相关文章

KITTI数据集-label解析笔记

笔记摘自:KITTI数据集--label解析与传感器间坐标转换参数解析_苏源流的博客-CSDN博客 KITTI数据集是自动驾驶领域最知名的数据集之一。 一、kitti数据集,label解析 16个数代表的含义: 第1个字符串:代表目标的类别 Car, Van, Tru…

16个车辆信息检测数据集收集汇总(简介及链接)

16个车辆信息检测数据集收集汇总(简介及链接) 转载自:https://blog.csdn.net/u014546828/article/details/109089621?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm1001.2101.3001.4242 目录 1. UA-DETRAC …

双目网络公开数据集的特性

文章目录 概述SceneFlowKITTI 2012 & 2015ETH3D 2017Middlebury 2014 概述 参考文章:Rethinking Training Strategy in Stereo Matching 主流双目公开数据集有:SceneFlow、KITTI、ETH3D、MB。 各个双目网络主流训练数据视差分布的直方图:…

KITTI数据集下载及介绍

KITTI数据集下载及介绍 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry…

KITTI 数据集--下载链接

Visual Odometry / SLAM Evaluation 2012 数据集主页:The KITTI Vision Benchmark Suite (cvlibs.net) 里程计基准由22个立体序列组成,以无损失png格式保存。 11个具有真实轨迹的序列(00-10)用于训练,11个没有真实…

KITTI数据集下载及解析

KITTI数据集下载及解析 W.P. Xiao, Vision group,SHUSV 版本更新时间更新内容作者1V 1.02020.01.09完成主体内容W.P. Xiao2 文章目录 KITTI Dataset1 简介1.1 数据采集平台1.2 坐标系 2 数据解析2.1 image文件2.2 velodyne文件2.3 calib文件2.4 label文件 3 KITTI可…

无人驾驶之KITTI数据集介绍与应用(一)——数据组织方式介绍

本系列博客旨在介绍无人驾驶领域中颇负盛名的KITTI公开数据集,首先整体介绍该数据集的由来、数据组织方式、官方开发工具的使用,重点详细介绍其中对于Object、Tracking和raw data的数据使用,主要分享了我在使用这些数据集时开发的一些工具&am…

waymo数据集总结

参考资料 官网: https://waymo.com/open/data/perception/#lidar-data 文章: https://arxiv.org/pdf/1912.04838.pdf github: https://github.com/waymo-research/waymo-open-dataset colab教程: https://colab.research.google.…

KITTI数据集介绍

目录 1、KITTI数据集概述2、kitti数据采集平台3、Kitti数据集标注格式参考文献: 1、KITTI数据集概述 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的算法评测数据集。该数据集用于评测立体图像(…

KITTI 数据集简介

数据集简介 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上自动驾驶场景下常用的数据集之一。KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光…

KITTI数据集简析

文章目录 KITTI数据集数据集结构数据集内容data_object_calib 样本标定数据data_object_label_2 3D点云标注文件 KITTI数据集 数据集结构 KITTI数据集网盘 提取码:0bjl KITTI ├── devkit_object | ├── cpp | ├── mapping | ├── matlab | └─…

KITTI数据集(概念版)

一、参考资料 KITTI 官网 kitti数据集各个榜单介绍 自动驾驶KITTI数据集详解 KITTI数据集简介与使用 kitti数据集各个榜单介绍 KITTI数据集介绍 KITTI数据集简介(一) — 激光雷达数据 【KITTI】KITTI数据集简介(二) — 标注数据l…

KITTI数据集

KITTI数据集分为2012和2015 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多达15辆车和30个行…

Vins-fusion gps融合 KITTY数据集测试

下载kitti数据集 下载kitti数据集和真值poses的00.txt以及sequences文件00序列的times.txt,(全网找了好久,最后不得已翻墙从官网down下来的) 代码修改,保存输出数据 先指定输出路径:打开vins-fusion/config/kitti_r…

详解KITTI数据集

详解KITTI数据集 一、KITTI数据集发布方 2011年,Andreas Geiger(KIT)、Philip Lenz(KIT)、Raquel Urtasun(TTIC)三位年轻人发现,阻碍视觉感知系统在自动驾驶领域应用的主要原因之一…

KITTI数据集简介与使用

1.KITTI数据集概述 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry)&…

计算机视觉数据集介绍:KITTI数据集

KITTI数据集简介 KITTI数据集是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,利用组装的设备齐全的采集车辆对实际交通场景进行数据采集获得的公开数据集。该数据集包含丰富多样的传感器数据(有双目相机、64线激光雷达、GPS/IMU组合导航定位系…

盘阿里云ECS内挖矿程序

1.二话不说先上图,cpu一路飙升在100% 2.进入服务器top命令查看占用cpu的异常进程 3.找到目标PID kill -9 10478 干掉这个进程,没几秒这个Macron的进程又死灰复燃 4.定位Macron目录 ls -l /proc/$PID/exe 定位到发现目标文件为/tmp/Macron,…

记录_第一次解决挖矿程序入侵问题

记录第一次处理,服务器也被挖矿程序入侵,原本是不想处理的,但是阿里云一直给我警告,然后再不处理服务器给我停了,这导致我立马打开电脑进行处理,怎么处理的我也不会啊,就一直百度,还…

centos8 处理挖矿程序攻击

ll /usr/bin/top* top命令被修改,并且隐藏了两个进程 chattr命令不可用,先删除e2fsprogs再重新安装。 yum remove e2fsprogs #rpm -qa|grep e2fsprogs yum -y install e2fsprogs #yum install e2fsprogs-1.45.6-2.el8.x86_64 解锁TOP文件并恢复 c…