我试图模拟坦克式/滑行导向的车辆,即两个车轮(每侧一个)具有单独的速度,并且通过增加或减小其中一个车轮的速度来完成转向。侧上。
例如,如果我将左轮的速度设置为5,将右轮的速度设置为3,则它将向右转。我想知道的是,考虑到车轮Vl和Vr的速度以及车轮D之间的距离,车辆指向的方向将在一个刻度中改变多少度?
我已经尝试过查看Formula for controlling the movement of a tank-like vehicle?以及该问题的链接,但还没有提出任何建议。我所有最好的猜测都失败了。
答案 0 :(得分:0)
首先:非常简单的边缘案例。如果V_l
和V_r
为零,则不要移动。如果它们相同,则不要转动。
其次,如果V_l
和V_r
中只有一个为零,则坦克围绕静止胎面枢转,并且移动的胎面描绘出长度为V_big
的弧,其半径为曲率D
。 theta = Vbig/D
,根据您的坐标加上或减去一些符号约定。 (坦克底座也会翻译一段距离,但计算结果取决于坦克旋转中心的位置和坐标系统,因此细节留给读者练习。)
第三,对称性问题!显然,坦克踏板转动是左/右对称的。如果左侧胎面的速度是右侧的两倍,则油箱应该转动相同的量,就像右侧胎面的速度是左侧的两倍一样,只是在不同的方向上。同样倒退。
第四:肉和土豆!我假设坦克踏板都不会滑动。更快的胎面在由角度V_fast
标出的半径为r+D
的圆上跟踪一条长度为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
为零或V_fast=V_slow
时,这会适当地爆炸,并且在r=D
时适当地接收V_fast=2*V_slow
回想{{1} }:theta=V_slow*r
在RADIANS中,请注意,这是一个至关重要的细节。
注意:如果您定义“向右转”'作为正θ并向左转为负θ,即使对于负速度,它都可以解决theta=(V_fast-V_slow)/D
。坦克不会转身面对旅行的方向,它将继续面对正确的方式。