注意:
- 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识
ubuntu版本:20.04
ros版本:noetic
课程回顾
ROS1结合自动驾驶数据集Kitti开发教程(一)Kitti资料介绍和可视化
ROS1结合自动驾驶数据集Kitti开发教程(二)发布图片
1.数据分析
在kitti数据集中给出了velodyne
扫描并且已经修正的激光雷达数据。可以在2011_09_26_drive_0005_sync
文件夹下的velodyne_points/data
文件夹下看到数据。
如下所示:
可以看到这些数据是以.bin
结尾的数据文件,和上一节一样一共有153个。文件中的数据都是数字,每一行有4个数据,分别是xyz三维点的坐标,最后一个数据是这一行这个点的反射率。
2.python源码
在上一节的kitti_node.py代码的基础上进行修改:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
import cv2
from cv_bridge import CvBridge
import rospy
import numpy as np
from std_msgs.msg import Header
from sensor_msgs.msg import Image,PointCloud2
import sensor_msgs.point_cloud2 as pcl2
BASE_PATH = "/home/mckros/kitti/RawData/2011_09_26/2011_09_26_drive_0005_sync/"
if __name__ == "__main__":
rospy.init_node("kitti_node",anonymous=True)
cam_color_left_pub = rospy.Publisher("/kitti/cam_color_left", Image, queue_size=10)
# cam_color_right_pub = rospy.Publisher("/kitti/cam_color_right", Image, queue_size=10)
# cam_gray_left_pub = rospy.Publisher("/kitti/cam_gray_left", Image, queue_size=10)
# cam_gray_lright_pub = rospy.Publisher("/kitti/cam_gray_right", Image, queue_size=10)
pcl_pub = rospy.Publisher("/kitti/pointcloud2", PointCloud2, queue_size=10)
bridge = CvBridge()
rate = rospy.Rate(10)
num = 1
while not rospy.is_shutdown():
img = cv2.imread(os.path.join(BASE_PATH, "image_02/data/%010d.png"%num))
# 使用numpy模块读取bin文件的数据
point_cloud =np.fromfile(os.path.join(BASE_PATH, "velodyne_points/data/%010d.bin"%num), dtype=np.float32).reshape(-1,4)
# 使用cvbridge模块将cv数据转换为msg数据格式
cam_color_left_pub.publish(bridge.cv2_to_imgmsg(img,"bgr8"))
header = Header()
header.stamp = rospy.Time.now()
header.frame_id = 'map'
pcl_pub.publish(pcl2.create_cloud_xyz32(header,point_cloud[:,:3]))
rospy.loginfo("kitti published")
rate.sleep()
num+=1
num%=154
3.运行测试
使用如下命令打开测试环境,每一行需要单独打开一个终端:
$ roscore
$ rosrun kitti_tutorials kitti_node.py
$ rviz
打开rviz
工具后选择Add->by topic
可以看到如下场景,分别添加框选出来的两个节点:
如果一切顺利,显示效果如下所示:
结语
本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~
为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接
✌Bye
评论(0)
您还未登录,请登录后发表或查看评论