ROS消息sensor_msgs::LaserScan数据格式

介绍:

sensor_msgs::LaserScan是ROS定义的激光数据格式,按一圈激光扫描的顺序和参数定义点云数据,而不是直接给出每个激光点的xyz值.

消息定义在sensor_msgs/LaserScan.msg文件中,路径为:/opt/ros/indigo/share/sensor_msgs/msg

格式:

Header header            # Header也是一个结构体,包含了seq,stamp,frame_id,其中seq指的是扫描顺序增加的id,stamp包含了开始扫描的时间和与开始扫描的时间差,frame_id是扫描的参考系名称.注意扫描是逆时针从正前方开始扫描的.
 
float32 angle_min        # 开始扫描的角度(角度)
float32 angle_max        # 结束扫描的角度(角度)
float32 angle_increment  # 每一次扫描增加的角度(角度)
 
float32 time_increment   # 测量的时间间隔(s)
float32 scan_time        # 扫描的时间间隔(s)
 
float32 range_min        # 距离最小值(m)
float32 range_max        # 距离最大值(m)
 
float32[] ranges         # 距离数组(长度360)(注意: 值 < range_min 或 > range_max 应当被丢弃)
float32[] intensities    # 与设备有关,强度数组(长度360)

例子:

header: 
  seq: 101732
  stamp: 
    secs: 1487324446
    nsecs: 379890600
  frame_id: laser
angle_min: -3.12413907051
angle_max: 3.14159274101
angle_increment: 0.0174532923847
time_increment: 1.55012827463e-07
scan_time: 5.56496015633e-05
range_min: 0.15000000596
range_max: 8.0
ranges: [inf, inf, 5.64900016784668, 2.875999927520752, inf, 5.743000030517578, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 5.946000099182129, inf, inf, inf, 5.938000202178955, 5.849999904632568, inf, 5.8470001220703125, inf, inf, inf, inf, inf, inf, 6.646999835968018, inf, inf, inf, inf, inf, inf, 0.2150000035762787, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 5.465000152587891, inf, 3.8970000743865967, inf, 0.16300000250339508, inf, inf, inf, inf, inf, inf, inf, inf, 0.8199999928474426, inf, 0.7910000085830688, 0.7450000047683716, inf, 0.7210000157356262, 0.7120000123977661, inf, 0.7160000205039978, inf, 0.7260000109672546, 0.7480000257492065, inf, 0.7749999761581421, inf, 0.7950000166893005, inf, 0.8240000009536743, 0.8500000238418579, inf, 0.8830000162124634, inf, 0.8759999871253967, 0.8539999723434448, inf, 0.8349999785423279, 0.8199999928474426, inf, 0.8059999942779541, inf, 0.7940000295639038, 0.781000018119812, inf, 0.7699999809265137, 0.7599999904632568, inf, 0.7519999742507935, inf, 0.7419999837875366, 0.7360000014305115, inf, 0.7300000190734863, 0.7239999771118164, inf, 0.7179999947547913, inf, 0.7149999737739563, 0.7120000123977661, inf, 0.7099999785423279, inf, 0.7110000252723694, 0.7120000123977661, inf, 0.7120000123977661, 0.7149999737739563, inf, inf, 0.9509999752044678, 0.9440000057220459, inf, 0.9459999799728394, 0.9459999799728394, inf, 0.9490000009536743, inf, 0.953000009059906, 0.9589999914169312, inf, 0.9639999866485596, inf, 0.968999981880188, 0.9769999980926514, inf, 0.9850000143051147, inf, 0.9940000176429749, 1.0049999952316284, inf, 1.0149999856948853, inf, 1.0269999504089355, 1.0410000085830688, inf, 1.4049999713897705, inf, 1.3600000143051147, inf, 1.468000054359436, 1.402999997138977, inf, 1.343999981880188, 1.2929999828338623, inf, 1.246000051498413, inf, 1.2039999961853027, 1.1670000553131104, inf, 1.1299999952316284, 1.100000023841858, inf, 1.0720000267028809, 1.0429999828338623, inf, 1.0190000534057617, inf, 0.996999979019165, 0.9729999899864197, inf, 0.9520000219345093, inf, 0.9340000152587891, 0.9240000247955322, inf, 0.9160000085830688, inf, inf, 0.859000027179718, inf, 0.8600000143051147, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 0.7789999842643738, inf, 0.7879999876022339, inf, inf, inf, inf, 0.17100000381469727, inf, 0.17100000381469727, 0.1720000058412552, inf, 0.17299999296665192, inf, 0.17399999499320984, inf, inf, inf, inf, inf, inf, 0.8230000138282776, inf, 0.8320000171661377, inf, 0.8410000205039978, 0.8519999980926514, inf, inf, inf, inf, inf, inf, 0.9110000133514404, inf, 0.9240000247955322, 0.9419999718666077, inf, 0.9620000123977661, 0.9810000061988831, inf, 1.0069999694824219, inf, 1.0299999713897705, inf, 1.0579999685287476, 1.0850000381469727, inf, 1.1180000305175781, inf, 1.149999976158142, 1.187999963760376, inf, 1.225000023841858, inf, 1.2710000276565552, 1.3279999494552612, inf, 0.6050000190734863, inf, 0.5920000076293945, 0.5960000157356262, inf, inf, inf, 0.6000000238418579, 0.5929999947547913, inf, 0.5910000205039978, inf, 0.597000002861023, inf, 1.2589999437332153, inf, 1.2430000305175781, inf, 1.25, inf, inf, 1.184000015258789, inf, 1.2059999704360962, 0.1679999977350235, inf, 0.16599999368190765, inf, 1.597000002861023, inf, inf, inf, inf, inf, inf, inf, inf, inf, 0.5709999799728394, inf, inf, 0.21699999272823334, inf, inf, inf, inf, inf, inf, inf, 1.777999997138977, inf, inf, inf, 5.8379998207092285, inf, 5.841000080108643, 5.8470001220703125, inf, 6.051000118255615, inf, 6.051000118255615, 6.1570000648498535, inf, inf, inf, 7.072000026702881, 6.934999942779541, inf, inf, 7.072000026702881, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 2.7119998931884766, inf]
intensities: [0.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 0.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 47.0, 0.0, 47.0, 47.0, 0.0, 0.0, 0.0, 47.0, 47.0, 0.0, 0.0, 47.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 47.0, 0.0]

ROS2(Robot Operating System version 2)是一个开源的机器人操作系统框架,它使用 DDS(Data Distribution Service)作为其底层通信机制。要在ROS2中订阅`sensor_msgs::msg::LaserScan`数据,并将其转换为`pcl::PointCloud`(Point Cloud Library),你需要编写一个节点(node)并使用相关的消息解析库如`rclcpp`和`pcl_ros`。 首先,确保已安装必要的依赖项: ```bash sudo apt-<your_robot_description_here>-ros-pcl ``` 然后,创建一个新的`src`目录,例如`my_laser_scan_node`, 在这里创建`laser_to_pcl_node.cpp`文件,添加以下内容: ```cpp #include <rclcpp/rclcpp.hpp> #include <sensor_msgs/msg/laser_scan.hpp> #include <pcl_conversions/pcl_conversions.h> #include <pcl/point_cloud.h> #include <pcl_ros/point_cloud.h> class LaserToPCLNode : public rclcpp::Node { public: explicit LaserToPCLNode(rclcpp::NodeOptions options) : Node("laser_to_pcl_node", options) { laser_sub_ = this->create_subscription<sensor_msgs::msg::LaserScan>( "scan", // 激光雷达扫描的主题名 rclcpp::QoS(rclcpp::的历史QoSPolicy(10)), // 储存最近10条消息 [this](const sensor_msgs::msg::LaserScan::SharedPtr msg) -> void { convert_and_publish(msg); }); } private: void convert_and_publish(const sensor_msgs::msg::LaserScan::SharedPtr msg) { pcl::PointCloud<pcl::PointXYZ> cloud; pcl::fromROSMsg(*msg, cloud); pcl_ros::publishPointCloud(cloud, "cloud", this->get_logger()); } private: rclcpp::Subscription<sensor_msgs::msg::LaserScan>::SharedPtr laser_sub_; }; int main(int argc, char ** argv) { rclcpp::init(argc, argv); LaserToPCLNode node; rclcpp::spin(node); rclcpp::shutdown(); return 0; } ``` 在这个例子中,我们创建了一个节点,订阅了名为"scan"的激光雷达扫描主题,然后在接收到新消息时将`sensor_msgs::msg::LaserScan`转换为`pcl::PointCloud<pcl::PointXYZ>`。最后,通过`pcl_ros`发布这个点云到新的主题"cloud"。 运行此程序前,请确保已在ROS2工作空间中配置了所有必需的包和服务,并启动相应的传感器节点以提供`sensor_msgs::msg::LaserScan`数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

和道一文字_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值