ROS 加载kitti数据集的激光雷达点云数据,并用rivz显示出来

  用ROS加载kitti数据集的激光雷达点云数据,并用rviz显示出来,实现的效果如下:
在这里插入图片描述

1.准备数据

在这里插入图片描述

2.启动roscore

roscore

3.创建功能包

mkdir catkin_ws
cd catkin_ws
mkdir src
catkin_make

进入vscode后:

code .
创建功能包:kitti_tutorial
添加功能包的依赖:rospy roscpp
创建文件 scripts/kitti2pcl.py

4.发布点云话题

#!/usr/bin/env python



import rospy
import os
import numpy as np

from sensor_msgs.msg import PointCloud2
import sensor_msgs.point_cloud2 as pcl2
from std_msgs.msg import Header


DATA_PATH='/home/chen/Downloads/kittidata/2011_09_26/2011_09_26_drive_0005_sync/'

if __name__=='__main__':
    rospy.init_node('kitti_node',anonymous=True)

    pcl_pub=rospy.Publisher('kitti_pcl',PointCloud2,queue_size=10)


    rate=rospy.Rate(10)
    frame=0

    while not rospy.is_shutdown():

        pcl=np.fromfile(os.path.join(DATA_PATH,'velodyne_points/data/%010d.bin'%frame),dtype=np.float32).reshape(-1,4)

        header=Header()
        header.stamp=rospy.Time.now()
        header.frame_id='map'

        pcl_pub.publish(pcl2.create_cloud_xyz32(header,pcl[:,:3]))

        rospy.loginfo('published')
        rate.sleep()
        frame+=1
        frame%=154

注解:

  1. 节点名称为kitti_node;
  2. 发布的话题名称为kitti_pcl,数据类型为PointCloud2;
  3. fram最多为153,因为我采用的这组数据只有153张;
  4. frame前面进行了补零操作,可以参考这篇文章;
  5. bin文件的数据每一行有四个数字,分别代表xyz和反射强度信息,我们显示的话只显示xyz信息。

5.修改权限,运行节点

chmod +x kitti.py 
rosrun kitti_tutorial kitti2pcl.py

6.打开rviz,加载话题

在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值