ROS处理kitti数据集

news2024/11/15 11:49:53

一、参考资料

kitti2bag代码仓库

二、KITTI数据集之tracking数据集

ROS1结合自动驾驶数据集Kitti开发教程(七)下载图像标注资料并读取显示

1. tracking数据集简介

tracking

tracking任务分为三种类型,分别是Multi-Object Tracking(多目标跟踪)Multi-Object Tracking and Segmentation(多目标跟踪和分割)Segmenting and Tracking Every Pixel(分割和像素跟踪)。本文以Multi-Object Tracking(多目标跟踪)为例,展开介绍。
在这里插入图片描述

2. 下载label标注数据

label标注数据下载:Download training labels of tracking data set (9 MB)
在这里插入图片描述
label标注数据其目录结构如下所示:

├── training
│   └── label_02
│       ├── 0000.txt
│       ├── 0001.txt
│       ├── 0002.txt
│       ├── 0003.txt
│       ├── 0004.txt
│       ├── 0005.txt
│       ├── 0006.txt
│       ├── 0007.txt
│       ├── 0008.txt
│       ├── 0009.txt
│       ├── 0010.txt
│       ├── 0011.txt
│       ├── 0012.txt
│       ├── 0013.txt
│       ├── 0014.txt
│       ├── 0015.txt
│       ├── 0016.txt
│       ├── 0017.txt
│       ├── 0018.txt
│       ├── 0019.txt
│       └── 0020.txt

label标注数据以xxxx.txt 命名,以0000.txt为例,标注格式如下所示:

0 -1 DontCare -1 -1 -10.000000 219.310000 188.490000 245.500000 218.560000 -1000.000000 -1000.000000 -1000.000000 -10.000000 -1.000000 -1.000000 -1.000000
0 -1 DontCare -1 -1 -10.000000 47.560000 195.280000 115.480000 221.480000 -1000.000000 -1000.000000 -1000.000000 -10.000000 -1.000000 -1.000000 -1.000000
0 0 Van 0 0 -1.793451 296.744956 161.752147 455.226042 292.372804 2.000000 1.823255 4.433886 -4.552284 1.858523 13.410495 -2.115488
0 1 Cyclist 0 0 -1.936993 737.619499 161.531951 931.112229 374.000000 1.739063 0.824591 1.785241 1.640400 1.675660 5.776261 -1.675458
0 2 Pedestrian 0 0 -2.523309 1106.137292 166.576807 1204.470628 323.876144 1.714062 0.767881 0.972283 6.301919 1.652419 8.455685 -1.900245
1 -1 DontCare -1 -1 -10.000000 228.120000 183.030000 258.830000 217.340000 -1000.000000 -1000.000000 -1000.000000 -10.000000 -1.000000 -1.000000 -1.000000
1 -1 DontCare -1 -1 -10.000000 59.210000 191.300000 137.370000 227.430000 -1000.000000 -1000.000000 -1000.000000 -10.000000 -1.000000 -1.000000 -1.000000
...
...
...

3. 解析label标注数据

关于label标注数据的字段解释,请参阅:https://github.com/pratikac/kitti/blob/master/readme.tracking.txt。

kitti数据集原始数据集被分为RoadCityResidentialCampusPerson。对于3D物体检测,label细分为carvantruckpedestrianpedestrian(sitting)cyclisttram 以及 misc 组成。注意,DontCarelabel 表示该区域没有被标注,比如目标物体距离激光雷达太远。为了防止在评估过程中(主要计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare区域的预测结果。

4. 读取label标注数据

使用jupyter notebook 工具,读取label标注数据。

# 安装jupyter
pip install jupyter

# 启动jupyter
jupyter notebook
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

import cv2
import pandas as pd
import numpy as np
import os
LABEL_NAME = ["frame", "track id", "type", "truncated", "occluded", "alpha", "bbox_left", "bbox_top", "bbox_right", "bbox_bottom", "dimensions_height", "dimensions_width", "dimensions_length", "location_x", "location_y", "location_z", "rotation_y"] 
BASE_PATH = "/media/yoyo/U/2011_10_03/2011_10_03_drive_0027_sync"    
data = pd.read_csv(os.path.join(BASE_PATH, "training/label_02/0000.txt"), header=None, sep=" ")
# 修改列名
data.columns = LABEL_NAME
data

在这里插入图片描述

三、加载kitti数据集在rivz中显示

1. 准备KITTI数据集

下载并解压KITTI数据集的 RawData数据。

2011_10_03_drive_0027_sync.zip
2011_10_03_calib.zip

文件目录结构

.
├── 2011_10_03
│   ├── 2011_10_03_drive_0027_sync
│   │   ├── image_00
│   │   ├── image_01
│   │   ├── image_02
│   │   ├── image_03
│   │   ├── oxts
│   │   └── velodyne_points
│   ├── calib_cam_to_cam.txt
│   ├── calib_imu_to_velo.txt
│   └── calib_velo_to_cam.txt

2. KITTI转bag文件

使用kitti2bag将KITTI数据集转换成ROS的bag文件。

2.1 安装依赖

安装kitti2bag之前,需要安装ROS。缺什么就安装什么。

pip install -U numpy

pip install opencv-python
pip install pycryptodomex
pip install gnupg

2.2 安装kitti2bag

# 安装pykitti
pip install pykitti

# 安装kitti2bag
pip install kitti2bag

kitti2bag安装成功

yoyo@yoyo:~$ kitti2bag
usage: kitti2bag [-h] [-t DATE] [-r DRIVE]
                 [-s {00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21}]
                 {raw_synced,odom_color,odom_gray} [dir]
kitti2bag: error: too few arguments

2.3 转换bag文件

# 转换文件
kitti2bag -t 2011_10_03 -r 0027 raw_synced
yoyo@yoyo:/media/yoyo/U$ kitti2bag -t 2011_10_03 -r 0027 raw_synced
Exporting static transformations
Exporting time dependent transformations
Exporting IMU
Exporting camera 0
100% (4544 of 4544) |#####################| Elapsed Time: 0:00:34 Time:  0:00:34
Exporting camera 1
100% (4544 of 4544) |#####################| Elapsed Time: 0:00:38 Time:  0:00:38
Exporting camera 2
100% (4544 of 4544) |#####################| Elapsed Time: 0:01:29 Time:  0:01:29
Exporting camera 3
100% (4544 of 4544) |#####################| Elapsed Time: 0:01:29 Time:  0:01:29
Exporting velodyne data
100% (4544 of 4544) |#####################| Elapsed Time: 0:08:31 Time:  0:08:31
## OVERVIEW ##
path:        kitti_2011_10_03_drive_0027_synced.bag
version:     2.0
duration:    7:50s (470s)
start:       Oct 03 2011 12:55:34.00 (1317617735.00)
end:         Oct 03 2011 13:03:25.83 (1317618205.83)
size:        24.0 GB
messages:    63616
compression: none [18184/18184 chunks]
types:       geometry_msgs/TwistStamped [98d34b0043a2093cf9d9345ab6eef12e]
             sensor_msgs/CameraInfo     [c9a58c1b0b154e0e6da7578cb991d214]
             sensor_msgs/Image          [060021388200f6f0f447d0fcd9c64743]
             sensor_msgs/Imu            [6a62c6daae103f4ff57a132d6f95cec2]
             sensor_msgs/NavSatFix      [2d3a8cd499b9b4a0249fb98fd05cfa48]
             sensor_msgs/PointCloud2    [1158d486dd51d683ce2f1be655c3c181]
             tf2_msgs/TFMessage         [94810edda583a504dfda3829e70d7eec]
topics:      /kitti/camera_color_left/camera_info    4544 msgs    : sensor_msgs/CameraInfo    
             /kitti/camera_color_left/image_raw      4544 msgs    : sensor_msgs/Image         
             /kitti/camera_color_right/camera_info   4544 msgs    : sensor_msgs/CameraInfo    
             /kitti/camera_color_right/image_raw     4544 msgs    : sensor_msgs/Image         
             /kitti/camera_gray_left/camera_info     4544 msgs    : sensor_msgs/CameraInfo    
             /kitti/camera_gray_left/image_raw       4544 msgs    : sensor_msgs/Image         
             /kitti/camera_gray_right/camera_info    4544 msgs    : sensor_msgs/CameraInfo    
             /kitti/camera_gray_right/image_raw      4544 msgs    : sensor_msgs/Image         
             /kitti/oxts/gps/fix                     4544 msgs    : sensor_msgs/NavSatFix     
             /kitti/oxts/gps/vel                     4544 msgs    : geometry_msgs/TwistStamped
             /kitti/oxts/imu                         4544 msgs    : sensor_msgs/Imu           
             /kitti/velo/pointcloud                  4544 msgs    : sensor_msgs/PointCloud2   
             /tf                                     4544 msgs    : tf2_msgs/TFMessage        
             /tf_static                              4544 msgs    : tf2_msgs/TFMessage

执行结束之后,生成文件 kitti_2011_10_03_drive_0027_synced.bag

3. rviz可视化bag文件

使用rviz可视化bag文件。

# 打开新终端,启动roscore
roscore

# 打开新终端,启动rviz
rosrun rviz rviz
yoyo@yoyo:~/catkin_ws$ rosrun rviz rviz
[ INFO] [1690354820.980297976]: rviz version 1.12.17
[ INFO] [1690354820.980329927]: compiled against Qt version 5.5.1
[ INFO] [1690354820.980337661]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1690354821.111348690]: Stereo is NOT SUPPORTED
[ INFO] [1690354821.111407271]: OpenGl version: 3 (GLSL 1.3).

4. 播放bag文件

rosbag play kitti_2011_10_03_drive_0027_synced.bag

5. 查看bag

在这里插入图片描述
在这里插入图片描述

三、FAQ

Q:ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

解决python3.5无法导入cv2.so的问题

(demo) yoyo@yoyo:~$ python
Python 3.9.6 (default, Aug 18 2021, 19:38:01) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pykitti
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yoyo/miniconda3/envs/demo/lib/python3.9/site-packages/pykitti/__init__.py", line 5, in <module>
    from pykitti.tracking import tracking
  File "/home/yoyo/miniconda3/envs/demo/lib/python3.9/site-packages/pykitti/tracking.py", line 12, in <module>
    import cv2
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
>>> 
KeyboardInterrupt
错误原因:
安装ROS时,ROS的环境变量覆盖了Anaconda的环境变量
ROS默认的PYTHONPATH为python2.7
具体参见 /opt/ros/kinetic/_setup_util.py文件中的PYTHONPATH

默认使用 /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so

方法一(亲测有效)

退出Anaconda虚拟环境,在python2.7环境中安装kitti2bag

方法二

在python文件中,清除ROS的环境变量。

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
(demo) yoyo@yoyo:~$ python
Python 3.9.6 (default, Aug 18 2021, 19:38:01) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
>>> import cv2
>>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/823403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat

2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat https://ac.nowcoder.com/acm/contest/57359/C 文章目录 2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat题意解题思路兰道定理&#xff1a; 代码 题意 解题思路 可以将边 ( i , j n ) (i,jn) (i,jn)转变成 ( i , j ) (…

项目管理中的需求分析:实施策略与最佳实践

引言 在项目管理的过程中&#xff0c;需求分析起着至关重要的作用。理解和定义项目需求是项目成功的关键一步&#xff0c;它可以帮助我们确定项目的目标和范围&#xff0c;以及如何有效地达到这些目标。在本文中&#xff0c;我们将深入探讨需求分析的重要性&#xff0c;讨论如…

使用 AntV X6 + vue 实现单线流程图

使用 AntV X6 vue 实现单线流程图 X6 是 AntV 旗下的图编辑引擎&#xff0c;提供了一系列开箱即用的交互组件和简单易用的节点定制能力&#xff0c;方便我们快速搭建 DAG 图、ER 图、流程图等应用。 官方文档 安装 yarn add antv/x61.34.6Tips&#xff1a; 目前 X6 有 1.x…

css滚动条样式指南

css滚动条样式指南 滚动条是网页设计中经常被忽视的元素。虽然它看起来像是一个小细节&#xff0c;但它在网站导航中起着至关重要的作用。默认的滚动条可能看起来不合适&#xff0c;有损整体美观。本文将介绍如何使用 CSS 自定义滚动条。 在 Chrome、Edge 和 Safari 中设置滚…

微信小程序接入腾讯云天御验证码

腾讯云新一代行为验证码&#xff08;Captcha&#xff09;&#xff0c;基于十道安全防护策略&#xff0c;为网页、APP、小程序开发者打造立体、全面的人机验证。在保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时&#xff0c;提供更精细化的用户体验。 …

Uniapp_app端使用重力感应实现横屏竖屏自动切换

1、进入页面默认是竖屏当手机横着的时候页面也跟着横着 进入页面开启定时器调用相关api去触发横屏竖屏&#xff0c;主要核心代码都在onShow()里面和onHide()里 <template> <view class"monitor"><u-no-network></u-no-network><web-view …

6.使用typeof注释,只读修饰符

目录 1 使用typeof注释 2 只读修饰符 readonly 2.1 在类中使用 2.2 在接口中使用 2.3 在很多的地方都能使用 1 使用typeof注释 比如我就像传入像 p 这个变量的样子的参数 如果你给的不是这个样子的就会报错 也可以这样用 ts中的typeof后面不能跟未定义返回值类型的…

金融学复习博迪(第1-5章)

第一部分 金融和金融体系 第1章 金融学 金融&#xff1a;资金的流通&#xff0c;即储蓄&#xff0c;信贷、汇兑、股票和证券交易等经济活动的总称。 金融学&#xff1a;研究货币流通的学问。 传统的金融学研究领域大致有两个方向&#xff1a; >宏观层面的金融市场运行理论…

k8s概念-深入pod

回到目录 工作负载&#xff08;workloads&#xff09; 工作负载&#xff08;workload&#xff09;是在kubernetes集群中运行的应用程序。无论你的工作负载是单一服务还是多个一同工作的服务构成&#xff0c;在kubernetes中都可以使用pod来运行它 workloads分为pod与control…

Android 13(T) - Media框架(2)- MediaPlayer与native的串接 libmedia

这一节学习有两个目标&#xff1a; 1 熟悉Android Media API的源码路径与调用层次 2 从MediaPlayer的创建与销毁了解与native的串接 1、源码路径 Media相关的API位于&#xff1a;frameworks/base/media/java/android/media&#xff0c;里面提供有MediaPlayer MediaCodecList M…

数据结构一轮复习 之 第二章

一、线性表&#xff08;逻辑结构&#xff09;-顺序表&#xff08;物理结构&#xff09; 操作&#xff1a; 静态分配&#xff1a;ElemType data[Lenght] 动态分配&#xff08;空间可扩充&#xff1a;新开辟一个更大的空间&#xff0c;并移动原数据&#xff09;&#xff1a;Ele…

【机器学习】西瓜书学习心得及课后习题参考答案—第5章神经网络

5.1神经元模型——这是神经网络中最基本的成分。 5.2感知机与多层网络——由简单的感知机循序渐进引出多层前馈神经网络。 5.3误差逆传播算法——BP算法&#xff0c;迄今最成功的神经网络学习算法。算法如下&#xff08;公式参考西瓜书&#xff09; 停止条件与缓解BP过拟合的…

与“云”共舞,联想凌拓的新科技与新突破

伴随着数字经济的高速发展&#xff0c;IT信息技术在数字中国建设中起到的驱动和支撑作用也愈发凸显。特别是2023年人工智能和ChatGPT在全球的持续火爆&#xff0c;更是为整个IT产业注入了澎湃动力。那么面对日新月异的IT信息技术&#xff0c;再结合疫情之后截然不同的经济环境和…

【Redis】内存数据库Redis进阶(Redis持久化)

目录 分布式缓存 Redis 四大问题Redis 持久化RDB (Redis DataBase)RDB执行时机RDB启动方式——save指令save指令相关配置save指令工作原理save配置自动执行 RDB启动方式——bgsave指令bgsave指令相关配置bgsave指令工作原理 RDB三种启动方式对比RDB特殊启动形式RDB优点与缺点 A…

2023年的深度学习入门指南(23) - ChatGLM2

2023年的深度学习入门指南(23) - ChatGLM2 在《在你的电脑上运行大模型》这一节&#xff0c;我们曾经介绍过ChatGLM模型&#xff0c;它是当时最好的中文大模型之一。现在&#xff0c;它又更新到了第二代&#xff0c;即ChatGLM2。 当时&#xff0c;我们的技术储备还不足&#…

selenium 遇到更新chorme驱动

打开浏览器,在地址栏输入chrome://version/便可以查看到谷歌当前的版本号 谷歌浏览器驱动的下载网址 http://chromedriver.storage.googleapis.com/index.htmlhttp://chromedriver.storage.googleapis.com/index.html 解压后把chromedriver.exe 放到python安装的目录下&am…

3.netty和protobuf

1.ChannelGroup可以免遍历由netty提供,覆盖remove方法即可触发删除channel\ 2.群聊私聊 13.群聊私聊简单原理图 3.netty心跳检测机制,客户端对服务器有没有读写(读,写空闲) //IdleStateHandler(3,5,7,TimeUnite.SECONDS)是netty提供的检测状态的处理器,也加到pipeline,读,写,…

Windows下FreeImage库的配置

首先下载FreeImage库&#xff0c;http://freeimage.sourceforge.net/download.html&#xff0c;官网下载如下&#xff1a; 内部下载地址&#xff1a;https://download.csdn.net/download/qq_36314864/88140305 解压后&#xff0c;打开FreeImage.2017.sln&#xff0c;如果是vs…

【 Redis】的乱码问题

问题描述&#xff1a; 使用RedisTemplate存储的数据&#xff0c;在 redis-cli 客户端查看时&#xff0c;key 和 value 都会携带类似\xac\xad\这样的字符串。 原因&#xff1a; 由于默认使用了 jdk 的序列化方式。以下是支持的序列化方式 项目一般都会有缓存&#xff0c;常常…

Python人工智能在气象中怎样应用?

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…