kitti-b站教程

  Kittidata处理-B站教程

一,kitti资料介绍与可视化

1,所用数据集

2011_09_26_drive_0005_sync

2,使用kitti2bag,把kitti数据集转换为ros的bag文件,可供ros读取。

  1,安装kitti2bag

   pip install kitti2bag

  2,用kitti2bag命令把数据转换为包

  

  

 

 

 

   在下面放着三个标定文件

  kitti2bag -t 2011_09_26 -r 0005 raw_synced

  上面的数据参考数据集的序号:2011_09_26_drive_0005_sync

  

 

 

   生成以下的话题

  

3,执行生成的bag文件

rqt_bag kitti_2011_09_26_drive_0005_synced.bag 

 

 

 

  选中一个话题,右键可以查看相关的图像

4,也可以用rviz查看

roscore

rviz

rosbag play -l kitti_2011_10_03_drive_0042_synced.bag 

只转化lidar数据为bag文件:

KITTI数据集bin转化为bag

 

 

 

 

二,发布照片

使用自己写的程序来publish照片,并用rviz可视化

1,建立功能包kitti_tutorial 依赖于rospy

python代码如下

# coding=UTF-8
#! /usr/bin/env python
import  rospy
from sensor_msgs.msg import Image
import cv2 #图片以opencv的形式展现,导入opencv的包
import os #文件拼接要用这个
from cv_bridge import CvBridge

"""
    1,导入包
    2,创建节点
    3,创建发布者
    4,发布者循环发布数据
"""

DATA_PATH = "/home/l/kittidata/1kittiros/RawData/2011_09_26/2011_09_26_drive_0005_sync"

if __name__ == "__main__":
    frame = 0
    # 1,导入包
    rospy.init_node("kitti_node", anonymous=True)
    cam_pub = rospy.Publisher("kitti_cam", Image, queue_size=10)
    brideg = CvBridge() #cv的图片格式转换为ros图片格式的桥梁
    rate = rospy.Rate(10)

    while not rospy.is_shutdown():
        #文件路径拼接,%010d 是一个十位的整数,%0是第零号,0000000000
        # img = cv2.imread(os.path.join(DATA_PATH, "image_02/data/%010d.png"%0))
        img = cv2.imread(os.path.join(DATA_PATH, "image_02/data/%010d.png"%frame))
        #把cv和ros的图片格式进行相互的转换
        cam_pub.publish(brideg.cv2_to_imgmsg(img,"bgr8"))
        rospy.loginfo("left color camera published")
        frame += 1
        #frame最大为153,过了153后,不会出错,然后循环,从零开始
        frame %=154
        rate.sleep()

 

 

三,发布点云资料

发布点云资料,在rviz中

# coding=UTF-8
#! /usr/bin/env python
import  rospy
from std_msgs.msg import Header
from sensor_msgs.msg import Image, PointCloud2 #ros里专门用来发布点云的格式
import sensor_msgs.point_cloud2 as pcl2
import cv2 #图片以opencv的形式展现,导入opencv的包
import os #文件拼接要用这个
from cv_bridge import CvBridge
import numpy as np #导入处理数据的资料库
"""
    1,导入包
    2,创建节点
    3,创建发布者
    4,发布者循环发布数据
"""

DATA_PATH = "/home/l/kittidata/1kittiros/RawData/2011_09_26/2011_09_26_drive_0005_sync"

if __name__ == "__main__":
    frame = 0
    # 1,导入包
    rospy.init_node("kitti_node", anonymous=True)
    cam_pub = rospy.Publisher("kitti_cam", Image, queue_size=10)
    pcl_pub = rospy.Publisher("kitti_point_cloud", PointCloud2, queue_size=10)
    brideg = CvBridge() #cv的图片格式转换为ros图片格式的桥梁
    rate = rospy.Rate(10)

    while not rospy.is_shutdown():
        #文件路径拼接,%010d 是一个十位的整数,%0是第零号,0000000000
        # img = cv2.imread(os.path.join(DATA_PATH, "image_02/data/%010d.png"%0))
        img = cv2.imread(os.path.join(DATA_PATH, "image_02/data/%010d.png"%frame))
        #把cv和ros的图片格式进行相互的转换
        cam_pub.publish(brideg.cv2_to_imgmsg(img,"bgr8"))

        #用numpy来读取数据,并转换为numpy的格式,从bin里读取数据,必须告诉他是浮点数float32的数据格式,读取的数据是一维的阵列,把他变成n行4列的矩阵格式
        #point__cloud是n*4的矩阵
        point_cloud = np.fromfile(os.path.join(DATA_PATH, "velodyne_points/data/%010d.bin"%frame),dtype=np.float32).reshape(-1,4)
        #将点云正确的以PointCloud2的格式发布出去,用sensor_msgs.point_cloud2的资料库
        #建立Header,告诉他现在的资讯
        header = Header()
        header.stamp = rospy.Time.now() #时间点
        header.frame_id = "map" #坐标系的名称,可以随便改
        #读取的点云的xyz坐标都是float32的形态,并把它转换为ros里的pointcloud2的格式
        #pcl2.create_cloud_xyz32,只接受xyz三个坐标,不接受反射率的资料,因此point_cloud[:, :3],第一个:指导入所有的点,第二个:指的是取这个资料的前三列
        pcl_pub.publish(pcl2.create_cloud_xyz32(header, point_cloud[:, :3]))
        rospy.loginfo("published,第%d帧",frame)
        rate.sleep()
        frame += 1
        #frame最大为153,过了153后,不会出错,然后循环,从零开始
        frame %=154

 

 

四,画出自己的车子和相机的视野

五,发布IMU资料

六,发布GPS资料

七,下载tracking资料并读取

八,画出2d侦测框

九,画出所有的2d侦测框

十,在rviz上显示2d侦测框

十一,画出3d侦测框

 

https://github.com/charlesq34/frustum-pointnets

计算坐标

 

 

十二,画出所有3d侦测框

 

1,rawdata转换为kitti2bag

2,

 

 

 

1, 学会用tutorial

2, 代码复现

 

 

 

 

 

 

 

 

 

有道词典
roscore rviz ro ...
详细X
roscore rviz rosbag - l kitti_2011_10_03_drive_0042_synced.bag玩

 

posted @ 2021-06-04 11:16  ashuo  阅读(680)  评论(0编辑  收藏  举报