velodyne_msgs/VelodyneScan数据流消息转化为sensor_msgs/PointCloud2点云帧消息

目的

在查看一个开源数据集时,点云信息格式为velodyne_msgs/VelodyneScan,无法在rviz中显示,需要转换为sensor_msgs/PointCloud2。

软件版本

Ubuntu20.04 + Noetic

激光雷达型号

32线激光雷达velodyne 32E

参考方法

ROS Noetic velodyne_msgs/VelodyneScan类型topic /velodyne_packets转换为sensor_msgs/PointCloud2_wk930523的博客-CSDN博客

操作流程

主要的使用过程都在参考博客里写的很清楚,这里针对遇到的问题进行说明:

1、不能使用VLP16_points.launch文件,根据激光雷达型号,从velodyne驱动包里找到相应的启动文件32e_points.launch

2、rviz里左侧状态栏显示接收到了激光点云,但是没有显示点云,提示:Failed to transform from frame [/velodyne] to frame [velodyne],问题在于ROS版本。解决方法:在rviz中把"velodyne", 改为"//velodyne", 注意输入的是"//velodyne", 它会显示"/velodyne"。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
将雷达数据集发送到ROS中的特定topic,您需要使用ROS中的雷达数据包解析库,例如pcl_ros或velodyne_pointcloud。这里以velodyne点云数据为例,下面是一个C++代码示例: ```c++ #include <ros/ros.h> #include <velodyne_msgs/VelodyneScan.h> #include <sensor_msgs/PointCloud2.h> #include <velodyne_pointcloud/pointcloudXYZIR.h> #include <pcl_conversions/pcl_conversions.h> ros::Publisher pub; void velodyne_callback(const velodyne_msgs::VelodyneScan::ConstPtr& scan_msg) { velodyne_pointcloud::PointXYZIR point; sensor_msgs::PointCloud2 output; for (int i = 0; i < scan_msg->packets.size(); ++i) { velodyne_rawdata::VPointCloud v_points; velodyne_pointcloud::PointXYZIR point; v_points.clear(); // unpack the data data_->unpack(scan_msg->packets[i], v_points); // Convert the VPointCloud to PointCloud2 pcl::toROSMsg(v_points, output); // Publish the data pub.publish(output); } } int main(int argc, char **argv) { ros::init(argc, argv, "velodyne_publisher"); ros::NodeHandle nh; pub = nh.advertise<sensor_msgs::PointCloud2>("/velodyne_points", 10); ros::Subscriber sub = nh.subscribe("/velodyne_packets", 10, velodyne_callback); ros::spin(); return 0; } ``` 在这个例子中,我们使用了Velodyne雷达的ROS驱动程序来获取VelodyneScan数据。在velodyne_callback()回调函数中,我们使用velodyne_pointcloud库将VelodyneScan数据转换为PointCloud2数据,然后使用ros::Publisher的publish()函数将其发布到“/velodyne_points”topic中。 希望这可以帮助您。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可见一班

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

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

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

打赏作者

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

抵扣说明:

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

余额充值