这是一个很基本的问题。我正在使用VRep练习机器人编程。我在现场有2个K3机器人。一个机器人遵循预定路径。我希望第二个机器人与第一个机器人“平行”移动,以便它们始终保持相同的方向和相同的距离。转弯时,我希望跟随者放慢/加速一点以保持平行。

在我的实现中,我使用无线通信。第一个机器人将定期“讲述”第二个机器人的速度,方向。第二个将使用这些参数来计算其两个轮子的两个速度。但是当我运行它时,它不起作用。跟随者的方向是错误的。距离不会保持。我完全感到困惑。

我认为这是一项非常基本的任务。必须遵循一些实践。有人可以帮助提供一些想法和参考吗?这将不胜感激!

评论

您能告诉我们跟随机器人在做什么吗?它会转弯但还不够,转得太快/太慢吗?指令是否简单如“顺时针旋转x度,将速度更改为y m / s”或更复杂?

@MatthewGordon谢谢您对Matthew的帮助。消息跟随者机器人get是转弯半径和第一个机器人的平均速度。我使用此半径来计算比率,该比率将乘以速度,以获得从动机器人应对其两个车轮施加多大的推力。我不知道如何实现让K3旋转x度的例程。我要做的是希望推力成比例,这样它就可以像第一个一样旋转相同的角度。但是事实并非如此。你能指出我错了吗?非常感谢!

为什么第二个会减慢或加速以保持并行?它与固定的笛卡尔翻译平行吗?还是在某个极坐标中与固定的径向距离保持平行?

#1 楼

在机器人技术中,通常没有公认的编队控制方法(这就是您要实现的目标)。如本文简介中所述,目前大约使用三种基本方法:


基于行为,其中每个机器人根据一组本地规则移动,动力学来自相邻机器人之间的相互作用;

虚拟结构,其中机器人被认为是单个身体的一部分(例如多边形的顶点),并且计算出轨迹以保留该抽象的形状身体;

领导者跟随,其中指定的“领导者”机器人遵循规定的轨迹,而“跟随者”跟踪领导者当前姿势的变换版本。

给出您的对于预期情况的描述,我想说领导者跟随是最好的方法。可以通过以下方式轻松实现此目的(请参见本演示文稿,以获取有关术语和公式的参考信息):

在领导者的参考框中定义跟随机器人的预期姿势$ p_f $。 $ p_f = [0 \ quad 1 \ quad 0] ^ T $保持在左边,或者$ p_f = [0 \ quad -1 \ quad 0] ^ T $保持在右边;
每一次在一段时间内计算全局参考框架$ g_f = Tp_f $中的跟随者姿势,并将其中继给跟随者机器人;
让跟随者机器人调整其位置以符合接收到的姿势$ g_f $。

仅供参考,刚体转换矩阵T由下式给出:
$$
T =
\ begin {bmatrix}
cos(\ theta)&- sin(\ theta)&x \\
sin(\ theta)&cos(\ theta)&y \\
0&0&1
\ end {bmatrix}
$$
,其中$ [x \ quad y \ quad \ theta] ^ T $是领导者机器人的当前姿势。

评论


$ \ begingroup $
嘿@xperroni,谢谢你的回答!您共享的链接已断开。你能更新一下吗?谢谢 :)
$ \ endgroup $
– Pe Dro
20-10-9在15:23

$ \ begingroup $
当然,只需修复死链接。
$ \ endgroup $
–xperroni
20-10-9在19:49