我试图模拟一辆类似坦克/滑行的车辆,即两个轮子(两边各一个)有不同的速度,而转向是通过增加或降低一侧的速度来完成的。
例如,如果我把左轮的速度设为5,把右轮设为3,它就会向右转。我想知道的是,考虑到车轮Vl和Vr的速度,以及车轮D之间的距离,车辆的方向会在一个滴答中改变多少度?
我试着看过Formula for controlling the movement of a tank-like vehicle?,以及关于这个问题的链接,但是没有想出任何东西。我所有的猜测都失败了。
发布于 2015-12-08 20:28:40
第一:非常简单的边缘情况。如果V_l和V_r为零,请不要移动。如果他们是一样的,不要掉头。
第二,如果V_l和V_r中只有一个为零,则油箱围绕固定踏面旋转,移动的踏面以曲率D半径为长度V_big的弧。theta = Vbig/D,根据你的坐标加或减一些符号约定。(坦克基地也会翻译一些距离,但计算取决于坦克旋转中心的位置和你的坐标系,所以这些细节是留给读者的练习。)
第三,对称问题!显然,坦克的踏板转向是左右对称的。如果左胎面的速度是右胎面的两倍,油箱应该转动相同的量,就像右胎面的速度是左胎面的两倍,只是在一个不同的方向。向后退也是。
第四:肉和土豆!我猜两辆坦克都不会滑倒。速度更快的胎面在半径V_fast的圆圈上跟踪长度为theta的弧线,该圆圈由一个角theta标记。如果你还记得你的三角V_fast=(r+D)*theta。较慢的车轮在半径为V_slow的圆上画出一条长度为r的弧线,以相同的角度表示。(V_slow = theta*r)将一个方程除以另一个方程,接收V_fast/V_slow = (r+D)/r。应用代数提供r=D/((V_fast/V_slow)-1)注意,当V_slow为0或V_fast=V_slow时,这会适当地爆炸,当V_fast=2*V_slow回忆起theta=V_slow*r:theta=(V_fast-V_slow)/D时,适当地接收r=D
在弧度上,请注意这是一个关键的细节。
注意:如果你把“右转”定义为正θ,把左转定义为负θ,那么即使在负速度的情况下,它也是可行的和theta=(V_l-V_r)/D。坦克不会转过身来面对方向,它会继续朝着正确的方向前进。
https://stackoverflow.com/questions/34164518
复制相似问题