01 前言
上一节通过配置小车的里程计,用gmapping算法建了房间的二维栅格地图;这一节通过配置AMCL定位以及move_base实现小车在房间中的自主导航。在mini小车仿真的章节讲到导航主要分为机器人定位和路径规划两大部分。ROS分别提供了功能包
1、move_base:实现机器人导航中的最优路径规划。
2、amcl:实现二维地图中的机器人定位。
首先安装导航的功能包:
sudo apt-get install ros-melodic-navigation
02 配置AMCL
在racebot_gazebo中创建amcl.launch文件,与里程计定位不同的是,amcl定位可以估算机器人在地图坐标系/map下的位姿信息,提供/base_footprint、/odom、/map之间的TF变换,因此关于上述话题的名称要与launch文件中对应。代码如下:
<launch>
<arg name="scan_topic" default="scan"/>
<arg name="initial_pose_x" default="0.0"/>
<arg name="initial_pose_y" default="0.0"/>
<arg name="initial_pose_a" default="0.0"/>
<node pkg="amcl" type="amcl" name="amcl" clear_params="true">
<param name="min_particles" value="500"/>
<param name="max_particles" value="3000"/>
<param name="kld_err" value="0.02"/>
<param name="update_min_d" value="0.20"/>
<param name="update_min_a" value="0.20"/>
<param name="resample_interval" value="1"/>
<param name="transform_tolerance" value="0.5"/>
<param name="recovery_alpha_slow" value="0.00"/>
<param name="recovery_alpha_fast" value="0.00"/>
<param name="initial_pose_x" value="$(arg initial_pose_x)"/>
<param name="initial_pose_y" value="$(arg initial_pose_y)"/>
<param name="initial_pose_a" value="$(arg initial_pose_a)"/>
<param name="gui_publish_rate" value="50.0"/>
<remap from="scan" to="$(arg scan_topic)"/>
<param name="laser_max_range" value="3.5"/>
<param name="laser_max_beams" value="180"/>
<param name="laser_z_hit" value="0.5"/>
<param name="laser_z_short" value="0.05"/>
<param name="laser_z_max" value="0.05"/>
<param name="laser_z_rand" value="0.5"/>
<param name="laser_sigma_hit" value="0.2"/>
<param name="laser_lambda_short" value&