Как осмыслить вектор непрерывного состояния? - PullRequest
1 голос
/ 16 апреля 2019

Фон

Я пытаюсь сбалансировать подвижный перевернутый маятник (т.е. сегвей).

Для моделирования я создал простого робота, который включает в себя полюс, прикрепленный к цилиндру (колесу) через поворотное соединение.

Вопрос

После строительства моего завода MIP plant.num_positions() возвращает 8, а plant.num_velocities() возвращает 7, то есть общий размер continuous_state составляет 15

  1. Как мне понять это большое количество состояний?
  2. Полагаю, один из них представляет угол, который полюс образует с вертикалью. Как мне это найти?
  3. Кроме того, почему num_positions() не равно num_velocities()?

1 Ответ

3 голосов
/ 16 апреля 2019

По умолчанию анализатор urdf / sdf добавляет систему с плавающей базой на основе кватернионов.Это плавающее базовое соединение имеет 7 позиционных переменных (x, y, z + кватернион) и 6 скоростей (xdot, ydot, zdot, + пространственная скорость).Вы должны использовать многотельный API, чтобы получить переменную в правильном порядке.

Вы можете добавить соединение между мировой ссылкой и вашей базой (либо в urdf / sdf, либо в вашем коде), чтобы заменить это подразумеваемое плавающеесоединение с, например, призматическим соединением у основания.

Есть много примеров того, как его смоделировать, в селезне, но также в http://underactuated.mit.edu

...