ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)

ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)

在前面的章节我们在ROS上测试了思岚RPLIDAR S1的功能以及雷达点云图:
ROS学习08-NVIDIA JETSON TX2安装配置激光雷达-思岚RPLIDAR S1(在Rviz上显示点位图)
但是我们如果要把渲染出来的地图保存出来的话就需要借助gmapping等其他工具了,由于gmapping构建的话相对来说有点复杂,我们这节使用一个简单点的hector_mapping来构建地图。
hector_mapping包安装

sudo apt-get install ros-melodic-hector-slam

创建launch文件
在rplidar_ros/launch/目录下添加hector_mapping_demo.launch文件

vim  hector_mapping_demo.launch
<launch>


  <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
    <!-- Frame names -->
    <param name="pub_map_odom_transform" value="true"/>
    <param name="map_frame" value="map" />
    <param name="base_frame" value="base_link" />
    <param name="odom_frame" value="base_link" />


    <!-- Tf use -->
    <param name="use_tf_scan_transformation" value="true"/>
    <param name="use_tf_pose_start_estimate" value="false"/>


    <!-- Map size / start point -->
    <param name="map_resolution" value="0.05"/>
    <param name="map_size" value="2048"/>
    <param name="map_start_x" value="0.5"/>
    <param name="map_start_y" value="0.5" />
    <param name="laser_z_min_value" value = "-1.0" />
    <param name="laser_z_max_value" value = "1.0" />
    <param name="map_multi_res_levels" value="2" />


    <param name="map_pub_period" value="2" />
    <param name="laser_min_dist" value="0.4" />
    <param name="laser_max_dist" value="5.5" />
    <param name="output_timing" value="false" />
    <param name="pub_map_scanmatch_transform" value="true" />
    <!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />-->
<!-- Map update parameters -->
    <param name="update_factor_free" value="0.4"/>
    <param name="update_factor_occupied" value="0.7" />
    <param name="map_update_distance_thresh" value="0.2"/>
    <param name="map_update_angle_thresh" value="0.06" />


    <!-- Advertising config -->
    <param name="advertise_map_service" value="true"/>
    <param name="scan_subscriber_queue_size" value="5"/>
    <param name="scan_topic" value="scan"/>
  </node>


  <node pkg="rplidar_ros" type="rplidarNode" name="rplidarNode" output="screen">
    <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>
    <param name="serial_baudrate"     type="int"    value="265000"/>
    <param name="frame_id"            type="string" value="laser"/>
    <param name="inverted"            type="bool"   value="false"/>
    <param name="angle_compensate"    type="bool"   value="true"/>
  </node>


  <node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/>
  <node pkg="rviz" type="rviz" name="rviz" args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>


</launch>

下图第一个便是
ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)_第1张图片
插上思岚RPLIDAR S1雷达要注意设备号以及权限,如果与我的不相符在上面的launch文件中要记得修改
在这里插入图片描述
启动roscore

roscore

注意之前要是启动过roscore运行过思岚RPLIDAR S1的其他launch文件的话要先关闭再重新打开roscore,因为roscore是一个参数服务器。rplidarNode可能会重复,导致以下错误
ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)_第2张图片
catkin_make编译完成后记得source

source devel/setup.bash

启动launch文件

roslaunch rplidar_ros hector_mapping_demo.launch

如果没反应的话试试再开一个终端运行一下rplidar_s1.launch文件

roslaunch rplidar_ros rplidar_s1.launch

如果顺利的话可以渲染出房间大概轮廓图
ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)_第3张图片
如果要保存地图的话
我们需要使用map_server软件包里的map_saver来保存当前的地图,首先需要保证已经安装了map_server软件包,安装命令如下:

sudo apt-get install ros-melodic-map-server

当安装好map_server后,接下来就可以使用如下命令来保存地图了,在stdr_gmapping的maps目录下执行命令如下:

rosrun map_server map_saver map:=/hector_map -f mymap

参考链接:
https://www.corvin.cn/875.html

你可能感兴趣的:(ROS,思岚RPLIDAR,S1,激光雷达,ROS,hector_mapping,SLAM)