控制坦克式车辆运动的公式?

时间:2008-09-24 02:36:45

标签: algorithm language-agnostic

任何人都知道用于控制简单坦克式车辆移动的公式吗?

要“操纵”它,你需要改变施加左右“轮子”的力。例如。两个车轮上的1个单位的力使其前进。两个车轮上的-1个单位的力使其向后移动。对一个轮子施加的力比另一个轮子更大,然后转动。

你如何计算两个轮子将水箱转向一定程度所需的力量?

或者我是以错误的方式思考这个问题?

编辑: 正如威廉凯勒所说,我错过了坦克的速度。假设两个车轮上的1个单位的力以每秒1个单位向前移动油箱。

对于任何有兴趣的人,我只是在gamedev.net上找到了这个帖子: http://66.102.9.104/search?q=cache:wSn5t58ACJwJ:www.gamedev.net/community/forums/topic.asp%3Ftopic_id%3D407491+tank+track+radius+velocity&hl=en&ct=clnk&cd=1&gl=za&client=firefox-a

另一个主题: http://www.physicsforums.com/showthread.php?t=220317

事实证明找到公式的关键只是知道正确的术语(“滑行转向”):P

10 个答案:

答案 0 :(得分:4)

你正在考虑错误的方式。问题是,轨道上不同的力量不会使坦克转动一定程度。相反,不同的力量会改变转弯的 RATE

力和转弯率之间的关系将根据油箱的机械结构而变化。坦克越宽,它变得越慢。坦克越快,它转得越快。

P.S。关于这一点的更多想法:我不认为基于物理的答案是可能的,而不是基于现实世界的坦克。有几个答案解决了转弯的物理过程,但是在所有这些问题中隐含的假设是系统具有无限的能量。坦克真的可以在1,-1运行吗?并且它可以立即达到该速度 - 加速也适用于转弯。

最后,胎面有长度和宽度。这意味着在任何转弯情况下,你都会得到一些横向滑移的踏板,转弯越快,所需的滑动就越多。即使发动机有能力进行1转-1转动,它也不会像摩擦损失那样快速转动。

答案 1 :(得分:3)

对于需要转弯半径的滑移导向车辆来说,' r'以给定的速度' Si'对于内轮/轨道,外轨道必须以速度驱动所以' :

So = Si * ((r+d)/r)

<强>详细信息:

在滑移转向系统中,外轮/履带的行驶距离内轮/履带的距离要远一些。

此外,行驶的额外距离与内部轨道同时完成,这意味着外轮/轨道必须运行得更快。

圆周围由&#34;内部&#34;轨道:

c1 = 2*PI*r
'r' is radius of circle origin to track/wheel

圈外围由&#34;外部&#34;轨道:

c2 = 2*PI*(r+d)
'r' is radius of circle origin to inner track/wheel
'd' is the distance between the Inner and Outer wheels/track.

此外,c2 = X * c1,表示c2比例大于c1

X = c2 / c1
X = 2*PI*(r+d) / 2*PI*r
X = (r+d)/r

因此,对于需要转弯半径的滑行转向车辆来说,在给定的速度下#39;对于内轮/轨道,外轨道必须在:

So = Si * ((r+d)/r)

其中:

'So' = Speed of outer track
'Si' = Speed of inner track
'r'  = turn radius from inner track
'd'  = distance between vehicle tracks.


               ********* <---------------- Outer Track
           ****    |    ****                     
        **         |<--------**----------- 'd' Distance between tracks
       *        *******<-------*---------- Inner Track
      *      ***   ^   ***      *  
     *      *      |<-----*------*-------- 'r' Radius of Turn
     *     *       |       *     * 
     *     *       O       *     * 
     *     *               *     * 
     *      *             *      * 
      *      ***       ***      *  
       *        *******        *   
        **                   **    
           ****         ****       
               *********           

答案 2 :(得分:2)

Change in angle (in radians/sec) = (l-r)/(radius between treads)
Velocity = l+r

对于dtheta,想象一下你的两只手之间有一根木杆,你想要计算它旋转的程度取决于你的手按压的方式和方式 - 你要弄明白:

每秒覆盖的杆上有多少表面距离 - &gt;是多少转/秒 - &gt;多少弧度/秒(即多2乘)

答案 3 :(得分:1)

好吧,请记住,你也在谈论持续时间。您需要找出承受油箱转速(1,-1)的力量。

I.E。,如果坦克需要一秒钟在(1,-1)处旋转360°,并且你想在一秒内旋转180°,(。5,-.5)就可以了。如果你想在半秒内旋转相同的量,那么(1,-1)就可以了。

如果你使用abs(lrate)!= abs(rrate),这就更复杂了,在这种情况下你可能需要打破一支铅笔!

答案 4 :(得分:1)

以下是我如何解决坦克问题。

坦克的中心可能会按照左右轨道的平均速度移动。同时,坦克将围绕它的中心顺时针旋转([左轨道速度] * - [右轨道速度])/ [宽度]。

这应该给你速度和方向向量。

免责声明:我没有测试过这个......

答案 5 :(得分:0)

我做了任何物理学已经有一段时间了,但我原本以为两条轨道的相反方向移动会产生一个围绕水箱质心的扭矩。

正是这个扭矩导致了油箱的角动量,这只是坦克开始旋转的另一种方式。

答案 6 :(得分:0)

这不是力的问题 - 它取决于两侧之间的速度差异,以及该差异保持多长时间(也就是坦克的宽度,但这只是一个恒定的参数)。

基本上,您应该按以下方式计算:

  • 两侧的速度比与半径比相同。
  • 坦克的宽度是两个rasiuses(sp?)之间的实际差异。
  • 使用这2个数字,找到半径的实际值。
  • 将其中一条边的速度乘以它移动的距离,以获得它行进的距离。
  • 计算整个圆圈的哪个部分,将其划分到该圆周边。

答案 7 :(得分:0)

我会说你以错误的方式思考它。

增加两个踏板之间的速度差异不会导致转弯 - 它们与时间(不同速度下的距离)相结合会导致转弯。

胎面速度差异越大,达到X度转弯所需的时间就越少。

所以,为了得出一个公式,你必须做出一些假设。以固定速率转动,并使用时间作为转动X度的变量,或设置固定的时间来完成转弯,并使用轨道速度差作为变量。

答案 8 :(得分:0)

你可以这样说:每个曲目描述一个圆圈。 如果一个轨道正在转弯(让我们说左边)而另一个轨道不转动,那么面板将取决于左轨道转动的时间和距离。

此距离将是曲目x时间的速度。

现在用这个距离绘制一个三角形,并将轴距标记,加上一些sin和cos方程式&amp;近似值,您可能得到一个近似的等式:

面临变化=轨道/轴距行驶的距离

然后你可以加入一些更加真实的东西:更多物理......

速度不是恒定的 - 它加速(和贬低)。

即在一段时间内,速度从0增加到0.1 ...... 0.2 ...... 0.3到极限。

当然,随着速度的变化,面部的变化率也会发生变化 - 比速度(面对面的变化率)更加真实。

换句话说,玩家不是控制速度,而是控制更改的速度。当玩家按下控制器时,这将使速度从0 ... 0.02 ... 0.06 ... 0.1等。同样地,为了减少,但可能更快一点。

希望这会有所帮助。

答案 9 :(得分:0)

我想每个人都应该注意坦克可以打开零半径圆的事实:通过在每个轨道上但在相反的方向上应用相同的速度,坦克可以打开一角钱