1.下载RPLIDAR包到catkin_ws/src
$ git clone https://github.com/robopeak/rplidar_ros
$ cd ~/catkin_ws
$ catkin_make
2. 安装hector_slam
$ sudo apt-get install ros-indigo-hector-slam
3.安装map_server
$ sudoapt-get install ros-indigo-map-server
4.编辑linux 启动的rules ,使其他用户自动连接到 lplidar 的连接 /dev/ttyUSB0 口
$ sudo nano/etc/udev/rules.d/50-usb-seial.rules
添加:
SUBSYSTEMS=="usb",KERNEL=="ttyUSB0", MODE="0666"
5.在hector_slam_launch 包 launch 目录 ,增加三个launch文件 如下:
Slam.launch:
<launch>
<paramname="/use_sim_time" value="false"/>
<node pkg="rviz"type="rviz" name="rviz" args="-d $(findhector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>
<includefile="$(find hector_slam_launch)/launch/hector_mapping.launch"/>
<includefile="$(find hector_slam_launch)/launch/geotiff_mapper.launch">
<argname="trajectory_source_frame_name"value="scanmatcher_frame"/>
</include>
</launch>
Hector_mapping.launch:
<launch>
<nodepkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<paramname="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" />
<!-- Map size / start point -->
<param name="map_resolution"value="0.050"/>
<param name="map_size"value="1048"/>
<param name="map_start_x"value="0.5"/>
<param name="map_start_y"value="0.5" />
<paramname="map_multi_res_levels" value="2" />
<!-- Map update parameters -->
<paramname="update_factor_free" value="0.4"/>
<paramname="update_factor_occupied" value="0.9" />
<paramname="map_update_distance_thresh" value="0.4"/>
<paramname="map_update_angle_thresh" value="0.06" />
<paramname="laser_z_min_value" value = "-1.0" />
<paramname="laser_z_max_value" value = "1.0" />
</node>
<nodepkg="tf" type="static_transform_publisher"name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100" />
</launch>
Geotiff_mapper.launch:
<launch>
<argname="trajectory_source_frame_name"default="/base_link"/>
<argname="trajectory_update_rate" default="4"/>
<argname="trajectory_publish_rate" default="0.25"/>
<node pkg="hector_trajectory_server"type="hector_trajectory_server"name="hector_trajectory_server" output="screen">
<paramname="target_frame_name" type="string"value="/map" />
<paramname="source_frame_name" type="string" value="$(argtrajectory_source_frame_name)" />
<paramname="trajectory_update_rate" type="double"value="$(arg trajectory_update_rate)" />
<paramname="trajectory_publish_rate" type="double"value="$(arg trajectory_publish_rate)" />
</node>
<nodepkg="hector_geotiff" type="geotiff_node"name="hector_geotiff_node" output="screen"launch-prefix="nice -n 15">
<remapfrom="map" to="/dynamic_map" />
<paramname="map_file_path" type="string" value="$(findhector_geotiff)/maps" />
<paramname="map_file_base_name" type="string"value="uprobotics" />
<paramname="geotiff_save_period" type="double"value="0" />
<paramname="draw_background_checkerboard" type="bool"value="true" />
<paramname="draw_free_space_grid" type="bool"value="true" />
</node>
</launch>
6.启动Lidar节点
$ source ~/catkin_ws/devel/setup.bash
$ roslaunch rplidar_ros rplidar.launch
7.启动rviz 和 hector_mapping
$ roslaunch hector_slam_launch slam.launch
地图开始生成,如下图:
8.扫描完成后 保存地图
打开一新终端窗口输入:
Rosrun map_server map_saver –f /tmp/my_map
就会在 系统 /tmp/目录下生成 my_map的地图文件