Управление руками робота через wholeBodyMotion

Я работаю над проектом, в котором робот NAO пытается сделать чертежи.

Весь проект выполнен на Python, однако документация Aldebaran по управлению роботом NAO с использованием Python на самом деле не настолько завершена.

То, что я использую, - это движение всего тела, в котором реализована обратная кинематика, поэтому мне не нужно заботиться об этом. Документация здесь, и здесь есть пример использования левой или правой руки.

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

Из документации, которую я связал, "LeftArm и RightArm управляются в положении (X, Y, Z) (метр)".

Вот небольшая часть кода для управления рукой (адаптирована к тому, что мне нужно):

targetCoordinateList = [
    [ +0.00, +0.00*coef, +0.00],  # starting point, "origin".
    [ +0.12, +0.00*coef, +0.00],  # targetting the arm to the whiteboard
    [ +0.10, -0.061*coef, +0.02], # targetting the arm in the horizontal direction
    [ +0.09, +0.00*coef, +0.043], # targetting the arm in the vertical direction
    [ +0.00, +0.00*coef, +0.00],  # back to "origin".
]

И возможные движения:

# X Axis LArm Position feasible movement = [ +0.00, +0.12] meter
# Y Axis LArm Position feasible movement = [ -0.05, +0.10] meter
# Y Axis RArm Position feasible movement = [ -0.10, +0.05] meter
# Z Axis LArm Position feasible movement = [ -0.10, +0.10] meter

К сожалению, вертикальное направление не делает вертикальное прямое движение, а скорее делает наклонное прямое движение, и я не понимаю почему.

Любая помощь приветствуется. Заранее спасибо.

1 ответ

Если вы хотите сделать IK, вы, возможно, должны смотреть на декартово управление вместо wbControl. Посмотрите на методы ALMotion.setPosition.

Другие вопросы по тегам