Как рассчитать новые координаты XY и вращения каждого кадра на основе скорости двух двигателей? - PullRequest
2 голосов
/ 20 апреля 2019

Я пытаюсь выяснить, как имитировать, где новые координаты 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);
}

1 Ответ

1 голос
/ 23 апреля 2019

Я вижу это следующим образом:

turn

, где 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]

Игнорирование всех возможных проблем с захватом / дрейфом ... Признаки результатов определяют, с какой стороны робот поворачивается ...

...