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

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

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

说明:

  • 介绍如何确定机器人的初始化位置
  • 在multirobot_map_merge包有两种模式进行合并,一种提供初始位置,一种不提供初始位置。
  • 优先采用提供初始化位置,但是如何确认这个位置,没有说明,这里暂时提供一种确认方法
  • 各个机器人的位置都是基于合并后地图的坐标相对位置而定。

无初始定位下:

  • 启动多机建图,机器人都是原点,导致合并后的地图是重合的
  • 效果如图:

请输入图片描述

初始定位步骤:

  1. 操作方法:
  • 各个机器人的位置都是基于合并后地图的坐标相对位置而定。
  • 合并后地图的坐标轴不与任意机器人的坐标轴相同
  • 在三个机器人中间取点,以此为原点(0,0),原点尽可能跟各个机器人的距离相当
  • 假设一个跟所有机器人都不同的坐标系,然后分别确认其他机器人中心之间的坐标点
  • 以此类推,确认其他的机器人的坐标点
  1. 机器人放置:
  • 实际机器人布局图:

请输入图片描述

  • 标识大致坐标的布局图:

请输入图片描述

  • 如图所示,分别标识了,能合并了后能显示比较好的坐标点。
  • 实际上上面的坐标点数据要经过多次的测试才能找到比较适合的值。
  1. 提供机器人参数设置
  • 实际测量client0中心到client1中心直线距离是1.35米
  • 实际测量client1中心到client2中心直线距离是1.57米
  • 实际测量client0中心到client3中心直线距离是2.10米
  • 取跟三个机器人相差大致距离一致的的点为原点。
  • 测试相对的位置距离,乘于倍数20,我们实际测试,如果按实际米来填写数据是不太对,需要有一个倍数。
  • tb3_0机器人的位置参数为:
robot_x_pos:= "15" , robot_y_pos:= "-11.0", robot_yaw:= "0.0"
  • tb3_1机器人的位置参数为:
robot_x_pos:= "15" , robot_y_pos:= "-15.0", robot_yaw:= "0.0"
  • tb3_2机器人的位置参数为:
robot_x_pos:= "-15" , robot_y_pos:= "15.0", robot_yaw:= "0.0"
  • 根据上述位置,先测试建图,看看实际效果是否相符,或差异多少在进行微调,直到找到最合适的参数值。
  1. 指定初始位置命令:
  • 每次获取一个合适的参数值之后,修改初始化脚本文件来执行
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:=15.0 robot_y_pos:=-11.0 robot_yaw:=0.0   > /dev/null 2>&1 &
nohup roslaunch turbot3_multi init_pose.launch robot_name:=tb3_1 robot_x_pos:=15.0  robot_y_pos:=15.0  robot_yaw:=0.0 > /dev/null 2>&1 &
nohup roslaunch turbot3_multi init_pose.launch robot_name:=tb3_2 robot_x_pos:=-15.0 robot_y_pos:=15.0 robot_yaw:=0.0  > /dev/null 2>&1 &
  • 经过初始定位效果图:

请输入图片描述

演示视频

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: turbot3-multi多机协同教程