Управление руками робота через 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.