通过上一节:http://blog.csdn.net/zhu751191958/article/details/78970567 我们已经完成在树莓派3B上对EAI X4激光雷达进行了驱动,现在我们使用点云数据通过hector_slam构建地图
进入src文件目录下:
cd ~/eaix4_ws/src
下载hector_slam包:
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
cd ~/eaix4_ws
重新编译:
catkin_make
######################################
cd ~/eaix4_ws/src/hector_slam/hector_slam_launch/launch/
sudo vim All_nodes.launch
往里面添加以下代码:
<launch>
<include file="$(find ydlidar)/launch/x4.launch" />
<node pkg="tf" type="static_transform_publisher"
name="map_to_odom" args="0.0 0.0 0.0 0 0 0.0 /odom /base_link 40"
/>
<node pkg="tf" type="static_transform_publisher"
name="base_frame_laser" args="0 0 0 0 0 0 /base_link /laser_frame
40" />
<!--<node pkg="rviz" type="rviz" name="rviz"
args="-d $(find
hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>-->
<include file="$(find
hector_mapping)/launch/mapping_default.launch" />
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find
ydlidar)/launch/lidar.rviz" />
<include file="$(find
hector_geotiff)/launch/geotiff_mapper.launch" />
</launch>
######################################
进入hector_mapping/launch文件夹下
cd ~/eaix4_ws/src/hector_slam/hector_mapping/launch
######################################
备份原文件为mapping_default_backups.launch
cp mapping_default.launch ~/eaix4_ws/src/hector_slam/hector_mapping/launch/mapping_default_backups.launch
######################################
打开mapping_default.launch
sudo vim mapping_default.launch
修改以下代码:
<?xml version="1.0"?>
<launch>
<arg name="tf_map_scanmatch_transform_frame_name" default="/scanmatcher_frame" />
<arg name="base_frame" default="base_link" />
<arg name="odom_frame" default="base_link" />
<arg name="pub_map_odom_transform" default="true" />
<arg name="scan_subscriber_queue_size" default="5" />
<arg name="scan_topic" default="scan" />
<arg name="map_size" default="2048" />
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<!-- Frame names -->
<param name="map_frame" value="map" />
<param name="base_frame" value="$(arg base_frame)" />
<param name="odom_frame" value="$(arg base_frame)" />
<!-- Tf use -->
<param name="use_tf_scan_transformation" value="true" />
<param name="use_tf_pose_start_estimate" value="false" />
<param name="pub_map_odom_transform" value="$(arg pub_map_odom_transform)" />
<!-- Map size / start point -->
<param name="map_resolution" value="0.050" />
<param name="map_size" value="$(arg map_size)" />
<param name="map_start_x" value="0.5" />
<param name="map_start_y" value="0.5" />
<param name="map_multi_res_levels" value="2" />
<!-- 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.9" />
<param name="laser_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />
<!-- Advertising config -->
<param name="advertise_map_service" value="true" />
<param name="scan_subscriber_queue_size" value="$(arg scan_subscriber_queue_size)" />
<param name="scan_topic" value="$(arg scan_topic)" />
<!-- Debug parameters -->
<!--
<param name="output_timing" value="false" />
<param name="pub_drawings" value="true" />
<param name="pub_debug_output" value="true" />
-->
<param name="tf_map_scanmatch_transform_frame_name" value="$(arg tf_map_scanmatch_transform_frame_name)" />
</node>
<!--<node pkg="tf" type="static_transform_publisher" name="map_nav_broadcaster" args="0 0 0 0 0 0 map nav 100" />-->
</launch>
######################################
重新编译
cd ~/eaix4_ws
catkin_make
######################################
添加环境配置
source ~/eaix4_ws/devel/setup.bash
启动launch文件
roslaunch hector_slam_launch All_nodes.launch
hector_slam不依赖里程计,所以launch起来以后,我们可以手持radar水平移动,就可以建造出一幅地图出来
(其次要注意一下,就是EAI X4给出的驱动文件选x4.launch里已经包含了base_link -> base_laser的TF变换在这里我们不需要官方给我们的TF,我们按照自己的机器人底盘来修改TF就可以了)