首页 > 解决方案 > 如何根据两个电机的速度计算每帧新的 XY 坐标和旋转?

问题描述

我试图弄清楚如何根据两个电机的速度来模拟新的 XY 坐标和旋转的位置。例如,如果左轮的速度为 50%,右轮的速度为 80%,那么它将向前但稍微向左。

我正在使用 JavaScript 在画布上绘图。

function setMotors(left, right){
    var motorLoop = setTimeout(() =>{
        rotation = //new rotation
        x = //new x
        y = //new y
        clearCvs();
        drawRobot(x, y, rotation);
    }, 1000/60);
}

标签: javascriptmathgraphics2dphysics

解决方案


我是这样看的:

转动

其中l0,l1是车轮行驶的弧长, 是车轮d之间的距离,r是通向系统的第一个车轮的转弯半径:

omg * r    = v0
omg *(r+d) = v1

omg转弯速度在哪里[rad/s](除非我犯了数学错误):

r    = (v0*d)/(v1-v0) [units]
omg  = (v1-v0)/d      [rad/s]

使用您的价值观:

r    = (50*30)/(80-50) = 50.0 [pixels]
omg  = (80-50)/30      = 1.0  [rad/s] = ~57.3 [deg/s]

忽略所有可能的抓地力/漂移问题......结果的迹象决定了机器人转向哪一侧......


推荐阅读