目录:

  • Turbot3-Multi多机协同教程-目录
  • Turbot3-Multi多机协同教程-硬件
  • Turbot3-Multi多机协同教程-软件
  • Turbot3-Multi多机协同教程-设备测试
  • Turbot3-Multi多机协同教程-单机遥控建图
  • Turbot3-Multi多机协同教程-单机定点导航
  • Turbot3-Multi多机协同教程-多机遥控建图
  • Turbot3-Multi多机协同教程-多机定点导航
  • Turbot3-Multi多机协同教程-多机行为树导航
  • Turbot3-Multi多机协同教程-多机Frontier自主探索建图
  • Turbot3-Multi多机协同教程-多机RRT自主探索建图

说明:

  • 介绍如何确定机器人的初始化位置

相关设备:

  • Turbot3-Multi套件,采购地址

初始化位姿方法介绍

  1. 确定机器人的摆放位置及方向
  • 通常情况下,所有机器人的方向设置成一致,这样会方便计算位姿
  • 第一台和第二台机器人应放在同一水平的位置
  1. 机器人位姿的计算
  • 地图合并后的坐标系是以第一台机器人与第二台机器人水平距离的中点作为其坐标原点
  • 机器人位姿计算首先需要确定其在地图合并后的坐标系的位置
  • 比如在下图中机器人tb3_0与机器人tb3_1实际相距两米,那么以两者距离中点作为其坐标原点得出其坐标应为(0,-1)(0,1)
  • 根据multirobot_map_merge包的设定,机器人xy位姿应为其在地图合并后坐标系的坐标值的20倍,即机器人tb3_0与机器人tb3_1应设置为(0,-20)(0,20)
  • 以此可推出其他机器人的xy位姿
  • 同一水平放置

Turbot3-Multi多机协同教程-初始化多机位姿_初始化

  • 不规则放置

Turbot3-Multi多机协同教程-初始化多机位姿_初始化_02

  • 在上面两图中,机器人的实际的x方向时与地图合并后坐标系的x方向相反

初始化位姿实例展示

  1. 实际机器人布局
  • 机器人tb3_0与机器人tb3_1处于同一水平线上且两者相隔两米,机器人tb2_0与机器人tb3_2处于同一垂直线上且两者相隔两米
  • 三台机器人的朝向均一致

Turbot3-Multi多机协同教程-初始化多机位姿_初始化_03

  • 可视化图

Turbot3-Multi多机协同教程-初始化多机位姿_ROS2_04

  1. 机器人位姿的计算
  • 根据文章上半部的初始化位姿方法以及上面的可视化图,可以得出三台机器人在地图合并后的坐标系的坐标依次为(0,-1)(0,1)(-2,1)
  • 由于机器人位姿应为其在地图合并后坐标系的坐标值的20倍,所以三台机器人的xy位姿依次为(0,-20)(0,20)(-40,20)
  1. 修改对应的初始化位姿
  • 用vim打开对应的脚本且修改每台机器人对应的xy位姿
vim ~/multi_scripts/multi_init_pose.sh
  • 内容如下:
#ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map
#!/bin/bash
nohup roslaunch turbot3_multi init_pose.launch robot_name:=tb3_0 robot_x_pos:=0 robot_y_pos:=-20.0 robot_yaw:=0.0   > /dev/null 2>&1 &
nohup roslaunch turbot3_multi init_pose.launch robot_name:=tb3_1 robot_x_pos:=0  robot_y_pos:=20.0  robot_yaw:=0.0 > /dev/null 2>&1 &
nohup roslaunch turbot3_multi init_pose.launch robot_name:=tb3_2 robot_x_pos:=-40 robot_y_pos:=20.0 robot_yaw:=0.0  > /dev/null 2>&1 &

注意:由于所有机器人的朝向都一致且都与地图合并后坐标系的x方向相反,故robot_yaw值都应一致为0

  • 经过初始定位效果图:

Turbot3-Multi多机协同教程-初始化多机位姿_turbot3-multi_05