Как управлять роботом-киви? - PullRequest
       61

Как управлять роботом-киви?

8 голосов
/ 20 сентября 2010

Я работаю в команде по робототехнике FIRST в моей средней школе, и мы работаем над созданием робота для киви-драйва, в котором три колеса омни смонтированы в равностороннем треугольнике конфигурация, как это:

three numbered omni wheels in an equilateral triangle configuration

Проблема заключается в программировании робота таким образом, чтобы робот двигался в направлении заданного входа джойстика. Например, чтобы двигаться «вверх», двигатели 1 и 2 будут работать одинаково, а двигатель 3 будет отключен. Положение джойстика задается как вектор, и я подумал, что если бы двигатели были также выражены как векторы, векторная проекция могла бы быть тем, что мне нужно. Однако я не уверен, правильно ли это, и если да, то как бы я это применил. У меня также есть ощущение, что может быть несколько решений для одной позиции джойстика. Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

4 голосов
/ 29 сентября 2010

Во время учебы в школе я собрал 9 роботов (1 ПЕРВЫЙ, 8 RoboCup). Мы использовали тот же макет omnidrive, что и вы. Ответ беты выглядит правильным, но добавляет вращение ко всем колесам впоследствии:

W1 = -1/2 X - sqrt(3)/2 Y + R 
W2 = -1/2 X + sqrt(3)/2 Y + R
W3 = X + R

[Это формула Беты с добавлением вращения]

Вам нужно подумать о доступных диапазонах для ваших двигателей. Я предполагаю, что он может принять сигнал ШИМ +/- 255, поэтому либо вход, либо выход нужно немного отрегулировать. (Это не так сложно ...)

Хорошая бумага с деталями

Чтобы ответить на ваши конкретные вопросы: Векторная проекция по сути то, что вы здесь делаете. Вы применяете его, имея матрицу M , свой вход от джойстика I и свой выход для двигателей O . Таким образом O = M * I ;

M = [(-0.5 -sqrt(3)/2    +1)
     (-0.5 +sqrt(3)/2    +1)
     (1     0            +1)]
2 голосов
/ 20 апреля 2011

Хотя эта система может быть решена математически, в 2002 году FIRST Team 857 решила решить ее механически. В нашей системе управления использовались три джойстика, смонтированные с осями X, образующими равносторонний треугольник, а ручки были заменены шаровыми кронштейнами, соединенными Y-образным ярмом. Сопоставьте ось X каждой ручки непосредственно со скоростью двигателя, и система управления была решена. В качестве преимущества эта система очень интуитивно понятна для работы мирян: сдвиньте ярмо в нужном направлении, поверните его, чтобы повернуть.

2 голосов
/ 20 сентября 2010

Сначала давайте определимся с некоторыми терминами. В соответствии с обычным соглашением, ось X будет указывать вправо, а ось Y будет направлена ​​вверх (так, чтобы ось колеса 3 была вдоль оси X). Мы назовем движение колес W 1 , W 2 и W 3 , каждое из которых определено так, что W i > 0 означает, что колесо вращается по часовой стрелке. В вашем примере, если W 1 <0, W <sub>2 = W 1 и W 3 = 0, робот переместится в направление + Y.

Если все три колеса вращаются с одинаковой скоростью (Ш 1 = Ш 2 = Ш 3 ), робот будет вращаться на месте. Я предполагаю, что вы этого не хотите, поэтому сумма вращений должна быть равна нулю: W 1 + W 2 + W 3 = 0 .

Движению каждого колеса способствует движение робота; они добавляют как векторы:
Ш 1 = -1/2 Х - кв. (3) / 2 Г
W 2 = -1/2 X + sqrt (3) / 2 Y
Ш 3 = Х

Итак, если вы знаете требуемые X и Y из джойстика, у вас есть W 1 , W 2 и W 3 . Как мы уже видели, разница в между W 1 и W 2 является движущей силой Y-движения. Их сумма управляет движением в X.

1 голос
/ 20 сентября 2010

Как вы уже поняли, первой частью этого будет поиск подходящего уравнения для представления результирующего движения для любых настроек двигателя. В зависимости от уровня контроля и обратной связи по скорости вашего двигателя, я бы предложил, чтобы процесс, который вы проходите, должен начаться с написания векторного уравнения: (определите положительный X как прямой)

-M1Cos (30) + M2Cos (30) = X (отрицательный результат - 1 и 2 должны питаться одинаковой величины, но противоположных полярностей для движения вперед)

M1Sin (30) + M2Sin (30) -M3 = Y (поскольку движение против часовой стрелки на 1 и 2 приведет к движению робота влево по оси Y, а движение против часовой стрелки на 3 приведет к движению робота вправо)

Другим входом, который вам нужно добавить в это, является желаемое вращение робота, к счастью, M1 + M2 + M3 = W (Скорость вращения)

Ваш ввод с джойстика даст вам X, Y и W, поэтому у вас есть 3 уравнения с 3 неизвестными.

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

Примером этого является rec :: robotino :: com :: OmniDrive Class - также доступен исходный код для этого метода ...

...