第一:真正容易的边缘情况。如果V_l
和V_r
为零,请勿移动。如果他们一样,不要转动。
其次,如果只有一个V_l
和V_r
都为零,围绕固定胎面槽枢转,并且移动胎面描绘出长度V_big
的圆弧的曲率D
半径。 theta = Vbig/D
,根据你的坐标加或减一些符号约定。 (坦克基地也转换一些距离,但计算是取决于坦克的旋转中心的定义是和你的坐标系统,所以细节留给读者作为练习)。
第三,对称性问题!很显然,油罐车轮的转向是左/右对称的。如果左踏板的速度是右踏板的两倍,那么坦克应该转动相同的量,就好像右踏板的速度是左侧的两倍一样,只是方向不同。同上倒退。
第四:肉和土豆!我假设没有任何坦克踏板可以滑倒。较快的胎面在角上以theta
的角度标出的圆弧长度为V_fast
。如果你回想起你的触发器V_fast=(r+D)*theta
。较慢的车轮在同一个角度标出的半径为r
的圆上标出长度为V_slow
的圆弧。(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
回想theta=V_slow*r
:theta=(V_fast-V_slow)/D
弧度,你要知道这是一个至关重要的细节。
注意:如果您将'右转'定义为正θ,并将其左转为负θ,则所有算法都会生效,即使对于负速度也是如此。坦克不会转身面对旅行的方向,它会继续面对正确的方式。
谢谢!正是我在找什么! –
一个mathjax如何?一个mathjax可以在SO上吗? –
我不这么认为。 –