开源的二维slam项目需要的是单线激光雷达,如果传感器只有深度相机或者多线激光雷达的情况下,可以通过pointcloud_to_laserscan包实现将PointCloud2转换为laserscan。
安装pointcloud_to_laserscan包
github地址:https://github.com/ros-perception/pointcloud_to_laserscan/tree/indigo-devel
需要注意的是必须要根据自己电脑上的ROS版本选择对应的Branches,默认的是ros2下的包。我的ROS版本是kinetic,使用的是indigo-devel。
注意避坑:不能用git clone来下载,即便是选择了相应版本,最终下载下来的也是默认版本。只能下载ZIP压缩包然后解压到工作空间!
开启传感器
不同传感器开启方式不同,最终目的是要有输出类型为PointCloud2的topic。
1.深度相机
安装openni用来开启传感器,可以将深度相机的点云转化为scan。
sudo apt-get install ros-kinetic-openni2-launch
其中kinetic换成自己的ros版本。
2.多线雷达
根据雷达的品牌和型号,安装对应的驱动。
修改launch文件
<?xml version="1.0"?>
<launch>
<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
<remap from=