Skip to content

建图和导航

注意

本页仅对带有 MS200 激光雷达的 TOM06S 平台有效

建图

无需启动底盘,直接运行建图命令即可

我们提供三种方式进行建图,分别是 GmappingCartographerHectorSLAM

在小车终端输入下面的任何一条命令:

  • Gmapping
shell
roslaunch tianbot_slam tianbot_gmapping.launch
  • cartographer
shell
roslaunch tianbot_slam tianbot_cartographer.launch
  • Hector SLAM
shell
roslaunch tianbot_slam tianbot_hector.launch

查看地图

建图过程中,可以使用 rviz 查看建图效果

shell
roslaunch tianbot_rviz view_mapping.launch

保存地图

建图完成后,保存地图,以便后续使用,地图默认保存在 tianbot_slam/maps/目录下,名称为 tianbot_office

shell
roslaunch tianbot_slam map_save.launch

提示

可以通过 map_file 参数指定保存的地图名称,例如

shell
roslaunch tianbot_slam map_save.launch map_file:=my_name

提示

可以通过 map_file 参数指定使用的地图名称,例如: roslaunch tianbot_navigation tianbot_nav.launch map_file:=my_name local_planner:=teb

在不设定 map_file 时,保存地图后,下列程序会使用默认地图TianbotOffice进行导航。

TEB

  • teb_local_planner 全局规划器生成的初始轨迹在运行时进行优化,以最小化轨迹执行时间(时间最优目标)、远离障碍物并遵守运动动力学约束,例如满足最大速度和加速度。当前的实现符合非完整机器人(差动驱动和类汽车机器人)的运动学。从 Kinetic 开始,就包含了对完整机器人的支持。通过求解稀疏标量化多目标优化问题,可以有效地获得最优轨迹。用户可以为优化问题提供权重,以便指定目标冲突时的行为。
shell
roslaunch tianbot_navigation tianbot_nav.launch local_planner:=teb

在 rviz 中,可以测试导航效果

shell
roslaunch tianbot_rviz view_teb_planner.launch    # 使用teb planner

DWA

  • dwa_planner vs. base_local_planner:dwa_local_planner 支持 x、y 和 theta 中指定的速度约束,而 base_local_planner 仅支持 x 和 theta 中指定的约束。对 y 速度有一些支持,但用户仅限于预先指定的有效 y 速度命令列表。这使得 dwa_local_planner 成为完整或伪完整机器人的更好选择,因为它可以更好地对速度空间进行采样。dwa_local_planner 实际上是 base_local_planner 的 DWA(动态窗口方法)选项的重写。

保存地图后,下列程序会使用默认地图TianbotOffice进行导航。

shell
roslaunch tianbot_navigation tianbot_nav.launch local_planner:=dwa  # 使用dwa planner
bash
roslaunch tianbot_rviz view_nav_amcl.launch

EBAND

  • eband_local_planner,一种将路径规划与控制相结合的方法,以解决机器人路径平滑和实时避障问题。传统方案是先将路径转化为轨迹再进行跟踪,但可能因方向突变或接近障碍物导致速度降低。Elastic Bands 通过实时变形路径并使用 Bubble 概念确保路径无障碍,并允许控制器偏离路径时仍有全局目标导向。该方法包括路径规划、弹性带优化和常规控制三部分,它在 SE2 流形上实现了弹性带方法。其中弹性带通过收缩力优化路径,避免碰撞。
  • 如遇 Could not find library corresponding to plugin eband_local_planner/ EBandPlannerROS,可以下载源码 后自行放入工作空间编译后再运行。
shell
roslaunch tianbot_navigation tianbot_nav.launch local_planner:=eband # 使用eband planner
bash
roslaunch tianbot_rviz view_eband_planner.launch

在 rviz 中,可以使用 2D Pose Estimate 手动设置机器人初始位姿,以激活AMCL

然后使用 2D Nav Goal 给定目标位置,小车会自动导航到目标位置

  • teb

  • dwa

  • eband