2016-06-29 3 views
0

Я работаю над системой передвижения для Aldebaran Nao. Я заметил, что движения моего робота очень несовместимы по сравнению с движками других роботов - проблема, которая, я уверен, связана с кодом.Непересекающееся движение суставов Aldebaran Nao

Я обновляю свои движения роботов, используя код, аналогичный быстродействующему DCM Aldebaran.

(http://doc.aldebaran.com/1-14/dev/cpp/examples/sensors/fastgetsetdcm/fastgetsetexample.html).

Я обновляю углы соединения каждые 10 мс (максимально возможная скорость обновления). Однако ясно, что двигатели очень быстро двигаются к вновь заданному углу и неподвижны в течение большей части 10 мс. Есть ли способ контролировать скорость двигателей в течение этого периода обновления 10 мс?

ответ

0

SO не позволит мне прокомментировать, поэтому я должен использовать «ответ».

Вы не можете напрямую контролировать текущий приток двигателей Nao.

По моему опыту 10 мс - это очень точный временной шаг уже - 100 кадров движения в секунду и не должны отображаться «непересекающимися» для невооруженных глаз, учитывая, что все ваше движение плавное. Не могли бы вы немного рассказать о том, чего вы пытаетесь достичь? Вы интерполировали/сглаживали положения привода по времени?

1

Существует много способов отправить заказ в суставы, используя DCM или ALMotion.

Самый простой способ использует ALMotion, с который вы можете использовать

  • angleInterpolationWithSpeed, где вы будете задавать соотношение скорости.
  • angleInterpolation, где вы укажете время. В этом примере 0,01 сек.

Используя DCM, вам просто нужно попросить, чтобы движение закончилось через 10 м.

Документация ALMotion и DCM хорошо изучена, вы должны посмотреть ...