kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)

最近想要实现点云可视化的目标检测,故开始考虑使用点云在ros的rviz中进行实验。

参考文章:

ROS1结合自动驾驶数据集Kitti开发教程(一)Kitti资料介绍和可视化 - 古月居

最后实验效果(本文实现点云,图像发布,后续笔记更新边界框等信息发布):

该文首先记录 在rviz中实现视屏以及点云的话题发布,后需笔记在更新边界框、小车模型的加载

本机相关环境:ubutnu20.04 ros_neotic

pytorch(后续进行点云实时检测会用到,这里不会使用)环境:

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第1张图片

具体操作:
准备数据:本文用到的数据是:kitti官网中raw data下的2011 数据集0005(需要登陆才能看到第二张图的数据集),下载[synced+rectified data] [calibration]两个文件夹(嫌麻烦留邮箱,我直接发也可以)
kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第2张图片

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第3张图片

下载后我的解压路径如下:

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第4张图片

代码准备: 准备两个python文件(1个用于程序入口,一个具体实现)

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第5张图片

 input_ros_kitti.py中代码:

import rospy
from sensor_msgs.msg import Image,PointCloud2
from cv_bridge import CvBridge
import numpy as np
import os
import cv2
from pub_publish import *
# 保存解压后数据的地方

DATA_PATH='/home/t/t/Row_Data/2011_09_26/2011_09_26_drive_0005_sync/'
if __name__=='__main__':
    rospy.init_node('kitti_node',anonymous=True)
    cam_pub=rospy.Publisher('kitti_cam',Image,queue_size=10)
    pcl_pub=rospy.Publisher('kitti_pcl',PointCloud2,queue_size=10)
    bridge=CvBridge()
    rate=rospy.Rate(10)
    frame=0
    # 循环播放,通过frame控制帧数
    while not rospy.is_shutdown():
        img=cv2.imread(os.path.join(DATA_PATH,'image_02/data/%010d.png'%frame))
        pcl=np.fromfile(os.path.join(DATA_PATH,'velodyne_points/data/%010d.bin'%frame),dtype=np.float32).reshape(-1,4)
        publish_camera(cam_pub,bridge,img)
        publish_pcl(pcl_pub,pcl)
        rospy.loginfo('published')
        rate.sleep()
        frame+=1
        frame%=154

pub_publish.py中代码:

from std_msgs.msg import Header
import rospy
import sensor_msgs.point_cloud2 as pcl2
FRAME_ID='map'
def publish_camera(cam_pub,bridge,image):
    cam_pub.publish(bridge.cv2_to_imgmsg(image,'bgr8'))

def publish_pcl(pcl_pub,point_cloud):
    header=Header()
    header.stamp=rospy.Time.now()
    header.frame_id=FRAME_ID
    pcl_pub.publish(pcl2.create_cloud_xyz32(header,point_cloud[:,:3]))

运行时先运行roscore,再在vscode中直接运行input_ros_kitti.py即可(注意安装代码中的包,可以在anaconda虚拟环境下运行)

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第6张图片

右下角是我的python环境

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第7张图片

结果显示:

kitti数据集在ros中可视化一(显示(发布)点云、图像信息,学习笔记)_第8张图片

 

你可能感兴趣的:(ros_kitti显示,学习,计算机视觉,python)