本文主要是介绍VLP16:使用pointcloud_to_laserscan将三维点云转化为二维LaserScan,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、安装pointcloud_to_laserscan包
GitHub地址:GitHub - ros-perception/pointcloud_to_laserscan at lunar-develhttps://github.com/ros-perception/pointcloud_to_laserscan/tree/lunar-devel
注意避坑:不能用git clone来下载,即便是选择了相应版本,最终下载下来的也是默认版本。只能下载ZIP压缩包然后解压到工作空间! 我的ros版本是noetic,下载的版本是lunar-devel。
二、创建launch文件
在工作空间的目录下:xxx_ws/src/pointcloud_to_laserscan-lunar-devel/launch
新建my_node.launch,复制包里sample_node.launch里的内容,并修改
<?xml version="1.0"?><launch><!--copy from sample_node.launch--><!-- run pointcloud_to_laserscan node --><node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan"><remap from="cloud_in" to="/velodyne_points"/><rosparam>target_frame: velodyne # Leave disabled to output scan in pointcloud frametransform_tolerance: 0.01min_height: 0.0max_height: 1.0angle_min: -3.1415926 # -M_PIangle_max: 3.1415926 # M_PIangle_increment: 0.003 # 0.17degreescan_time: 0.1range_min: 0.2range_max: 100use_inf: trueinf_epsilon: 1.0# Concurrency level, affects number of pointclouds queued for processing and number of threads used# 0 : Detect number of cores# 1 : Single threaded# 2->inf : Parallelism levelconcurrency_level: 1</rosparam></node></launch>
修改内容:
1、删除开头部分的camera的内容
2、<remap from="cloud_in" to="/velodyne_points"/>
将原先的to="$(arg camera)/depth_registered/points_processed" 改为to="/velodyne_points"
3、 修改target_frame:
将原来的camera_link 改为velodyne(自己雷达话题的frame_id,可以使用命令:rostopic echo /velodyne_points | grep frame_id 查看)
4、 angle_min、angle_max、angle_increment的设置
github上下载的launch文件是针对深度相机的,所以角度范围是 [ − π / 2 , π / 2 ] ,也就是只有相机前方有点。由于多线激光雷达是360 ° 均可探测的,所以角度范围设置为[ − π , π ]
三、启动仿真
1、启动小车或雷达的仿真
roslaunch simulation.launch
2、启动第二步创建的launch文件
roslaunch my_node.launch
rviz添加laserscan,topic选择/scan (这就是pointcloud_to_laserscan转出来的),图中白线就是scan的图像。
使用rqt_graph可以查看话题节点,可以发现pointcloud_to_laserscan订阅了/velodyne_points,发布了/scan
问题:如果rviz里的 laserscan的topic没有订阅/scan,pointcloud_to_laserscan无法订阅了/velodyne_points,而是订阅了/tf,不知道是什么原因,使用时记得订阅/scan就好。
这篇关于VLP16:使用pointcloud_to_laserscan将三维点云转化为二维LaserScan的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!