ROS实现最基础的slam,其中主要涉及3个基本包:
move_base包:用于让机器人在制定框架内移动到目标位置;
gmapping包:用于从激光扫描仪、深度摄像机来绘制地图;
amcl包:用于在现有的地图中定位。
ros的运动可以参考下图http://wiki.ros.org/navigation/Tutorials/RobotSetup:
这里写图片描述
move_base包:
作用:制定一个导航目标,提供一个相对特定参考坐标的机器人的目标姿态(位置和方向);move_base包使用MoveBaseActionGoal消息类型来指定目标。其中MoveBaseActionGoal消息类型可以看出目标由标准ROS header、goal_id和goal本身组成。goal里的PoseStamped消息类型依次由header和pose组成,其中pose包括了position和orientation。
节点运行前需要四个配置文件。定义了越过障碍物所需要的代价、机器人半径、移动速度以及路径规划时要考虑路长等等。
分别是:base_local_planner_params.yaml、costmap_common_params.yaml、global_costmap_params.yaml、local_costmap_params.yaml其路径一般在config中。
base_local_planner_params.yaml中的参数如下:
controller_frequency: 3.0 每3秒一次重新规划路径;注:更新规划的频率,建议3~5
min_vel_x: 0.05机器人的最小线速度;
max_vel_y,min_vel_y:只有x方向的一个线速度。而像麦克纳姆轮多个轮,可以有y方向的线速度;
max_rotation_vel: 1.0最大旋转速度;注:这个值不要设置太高。默认1.0rad/s;
min_vel_theta:最小角速度,单位rad/s。默认-1.0rad/s;
min_in_place_vel_theta: 原地旋转角速度的最小值,单位rad/s,默认0.5rad/s;
escape_vel: 机器人逃时速度。必须为负数,这样才能反向移动,这个速度是反转;
acc_