ROS机器人Diego制作11-ROS视觉系统之点云数据转换成激光数据
ROS机器人Diego制作11-ROS视觉系统之点云数据转换成激光数据
说明:
- 介绍如何让点云数据转换成激光数据
- 导航都是在2D的地图下导航的,而点云数据产生的是3D的数据,
- 所以在使用gmapping产生地图之前需要将点云数据转换成激光数据
- 用到pointcloud_to_laserscan软件包,访问github库。
安装:
- 把这个包的源代码克隆到~/catkin_ws/src目录下
cd ~/catkin_ws/src
git clone https://github.com/ros-perception/pointcloud_to_laserscan
- 编译源代码
cd ~/catkin_ws/
catkin_make
可能的报错,如果这时会提示缺少tf2_sensor_msgs的错误
解决方法:执行如下代码安装ros-kinetic-tf2-sensor-msgs包
sudo apt-get install ros-kinetic-tf2-sensor-msgs
- 再执行上面的编译命令就可以正常编译了
启动节点:
- 启动pointcloud_to_laserscan的sample节点
roslaunch pointcloud_to_laserscan sample_node.launch
可能的报错,图:
从错误提示来看,是找不到openni2,事实上我们使用的openni而openni2根本就没有安装,找不到也是正常的,接下来我们来看sample_node.launch这个文件,需要做一些修改。修改如下:
<?xml version="1.0"?>
<launch>
<arg name="camera" default="camera" />
<!-- start sensor--只需要把原文件中的openni2改成openni就可以了>
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="camera" default="$(arg camera)"/>
</include>
<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
<remap from="cloud_in" to="$(arg camera)/depth_registered/points"/>
<remap from="scan" to="$(arg camera)/scan"/>
<rosparam>
target_frame: camera_link # Leave disabled to output scan in pointcloud frame
transform_tolerance: 0.01
min_height: 0.0
max_height: 1.0
angle_min: -1.5708 # -M_PI/2
angle_max: 1.5708 # M_PI/2
angle_increment: 0.087 # M_PI/360.0
scan_time: 0.3333
range_min: 0.45
range_max: 4.0
use_inf: true
# 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 level
concurrency_level: 1
</rosparam>
</node>
</launch>
- 出现如下信息说明成功启动:
查看节点
- 使用rqt_graph来查看节点图,可以看到pointcloud_to_laserscan节点
rosrun rqt_graph rqt_graph
- 效果图:
查看激光数据
- 命令:
rostopic echo /camera/scan
- 效果图:这是可以不断的看到刷屏的激光数据
rviz查看激光数据
- 命令:
rosrun rviz rviz
效果图: 激光数据
效果图:点云数据
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号