Добавление привода или силы к модели сочлененного твердого тела (Featherstone)

9

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

Я прочитал « Алгоритмы динамики твердого тела» Роя Фезерстоуна , а также прочитал раздел « Динамика » в « Руководстве по робототехнике Спрингера» (также написанном Фезерстоуном).

Мне потребовалось много времени, чтобы привыкнуть к использованию его нотации «пространственный вектор» и «пространственная матрица», но после воссоздания всей его нотации вручную в качестве упражнения это просто хороший способ объединения 3х3 и Матрицы и векторы 3x1 на матрицы и векторы 6x6 и 6x1. Математика, которую он изобретает для выполнения операций, может быть немного утомительной для чтения, поскольку он перехватывает некоторые стандартные обозначения, но в целом все очень компактно, и его очень легко реализовать в MATLAB.

Моя проблема заключается в следующем: как добавить приводы в модель? Он проходит через явную настройку определений соединений, определений связей и т. Д., Но когда дело доходит до приводов или прикладываемых сил, он говорит что-то вроде: «Просто добавьте здесь и Боб станет вашим дядей!» - это вообще не обсуждается. В « Руководстве по робототехнике» он предлагает ввести ложное ускорение в неподвижное основание, чтобы добавить член силы гравитации, но не показывает, как добавить его в локальные координаты, и при этом он не упоминает, как добавить вход привода.τa

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

Чак
источник

Ответы:

3

Приводы Сил

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

Но что для вас является приводом? Это просто сила, действующая на это соединение? Это модель двигателя постоянного тока? Это ПИД-регулятор?

Алгоритмы динамики в книге описаны в терминах обобщенных положений , обобщенных скоростей , обобщенных скоростей и обобщенных сил . Если у вас есть призматическое соединение, перевод которого описывается с помощью то линейная сила в этом соединении описывается как . Если у вас есть вращающееся (шарнирное) соединение, вращение которого описывается с помощью то представляет крутящий момент в этом соединении.QQ˙Q¨τQяτяQJτJ

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

Примечание рядом: Featherstone использует для обозначения активных сил замыкания петли. Из описания вашей модели, похоже, нет никаких кинематических петель, и поэтому не применяется.τaτa

Гравитационное ускорение:

Featherstone применяет гравитационное ускорение в основании и позволяет ему распространяться алгоритмами через дерево. Это сделано в RNEA, Таблица 5.1 в строке

a0знак равно-aг

Вместо этого вы также можете изменить строку

еяВзнак равнояяaя+vя×*яяvя

в

еяВзнак равнояя(aя-яИкс0aг)+vя×*яяvя

применять гравитационные эффекты индивидуально на каждом теле. Это вводит дополнительные вычисления, и я не вижу никаких преимуществ в этом.

Пространственная алгебра против конкатенации трехмерных векторов

Пространственная алгебра - это не просто конкатенация трехмерных векторов. Первая выражает движения твердого тела в фиксированной системе координат, тогда как вторая выражается в точках, которые движутся вместе с телом. В результате пространственные ускорения являются производными по времени от пространственных скоростей. В классической записи с использованием двух трехмерных уравнений это не так (раздел 2.11 книги Фезерстоуна):

ω

Пространственная скорость описывает линейную и угловую скорость точки тела, которая в настоящее время совпадает с началом (фиксированной) системы отсчета. Если этот кадр выражен в центре масс и ориентирован с глобальной системой отсчета, то это, по-видимому, простое объединение трехмерной линейной и угловой скорости, однако это только в случае этого конкретного выбора системы отсчета. Выражаясь в другом кадре, вы получаете разные значения, но они все равно представляют одну и ту же пространственную скорость.

Пространственное ускорение описывает поток линейной и угловой скорости точки, совпадающей с началом координат. «Поток» здесь означает, как векторные величины (линейная и угловая скорость) изменяются со временем.

Мартин Фелис
источник
Я усердно работал над реализацией этого алгоритма, но я старался быть настолько методичным, насколько смог, обеспечивая, чтобы даже самые базовые аспекты работали точно так, как ожидалось каждый раз. С этой целью я организовал ряд экспериментов, в которых я могу рассчитать точное решение, чтобы я мог сравнить смоделированное решение.
Чак
Последним аспектом, над которым я работал, было сферическое соединение - получение кватернионного представления и ускорений. В этом эксперименте я пытаюсь смоделировать маятник Фуко, моделируя землю и помещая маятник со сферическим соединением на поверхность. При этом моя фиксированная база - это центр Земли, вокруг которого вращается Земля. Затем из вращающегося центра Земли я могу поворачиваться вверх / вниз на любую широту, перемещаться на поверхность, где я размещаю свой маятник сферического сустава.
Чак
Мне нужен был способ добавить гравитацию, потому что я не мог просто поместить ее на ось z на моей фиксированной базе; это будет работать правильно гравитация только на Северном полюсе. По сути, меня не волнуют силы под поверхностью земли, я просто забочусь о прецессии маятника.
Чак
Я задал связанный вопрос о том, как я должен обращаться с неподвижными суставами.
Чак
2

Если вы еще не сталкивались с библиотекой динамики твердого тела (RBDL), вы можете посмотреть, как они ее реализуют, и / или связаться с автором Мартином Фелисом.

Барретт Эймс
источник
Барретт, я нашел RBDL несколько недель назад, и хотя я время от времени ходил туда-сюда, пытаясь собрать информацию, он написан на C ++ с методами, которые затрудняют выполнение кода. Например, есть строка в коде кинематики , который читает G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. Итак, что делает функция apply? Ну, я должен пойти в файл заголовка для любого класса base_to_body, но это соединение или тело? Кроме того, такие вещи model.base[j].inverse().apply(model.S[j])не особенно понятны.
Чак
Что не означает, что это иногда было бесполезно, но для меня, чтобы получить понимание от RBDL, нужно много усилий.
Чак
Добро пожаловать в робототехнику Барретт Эймс, спасибо за ваш ответ, но мы предпочитаем, чтобы ответы были самодостаточными, где это возможно. Ссылки имеют тенденцию гнить, поэтому ответы, основанные на ссылке, могут оказаться бесполезными, если ссылка на контент гниет. Если вы добавите больше контекста по ссылке, более вероятно, что люди найдут ваш ответ полезным.
Марк Бут