Додавання виконавчого механізму або сили до (пір'яного каменю) моделі зчленованого твердого тіла


9

Я працюю над проектом, коли мені потрібно моделювати систему, яка по суті складається з серії кулькових з'єднань, прикріплених до основи, яка прикріплена в свою чергу до призматичного стику (рейки).

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

Мені знадобилося багато часу, щоб звикнути до використання його "просторового вектора" та "просторової матриці", але після відновлення всіх його позначень вручну як вправи це виходить просто приємним способом об'єднання 3x3 і 3x1 матриці та вектори на 6x6 та 6x1 матриці та вектори. Математику, яку він збирається виконувати операції, може бути трохи стомлювальною для читання, коли він викрадає деякі стандартні позначення, але в цілому все дуже компактно, дуже просто втілити в MATLAB.

Моя проблема полягає в наступному: Як додати виконавчі приводи до моделі? Він проходить чітке налаштування спільних визначень, визначень зв’язків тощо, але коли мова йде про виконавчі механізми чи застосовані сили, він каже щось на кшталт: "Просто додайте сюди а Боб - ваш дядько!" - це зовсім не обговорюється. У Посібнику з робототехніки він пропонує ввести помилкове прискорення до нерухомої бази, щоб додати термін гравітаційної сили, але не показує, як її додати в локальних координатах, а також не згадує, як додати привід приводу.τa

Будь-яка допомога буде дуже вдячна. Я розглядав, як почати з іншої книги, але це буде великим витратом мого часу, щоб переосмислитись на інший набір нотацій. Мені б хотілося рухатися вперед із цим, але я відчуваю, що я лише за кілька сантиметрів соромлюсь фінішної лінії.

Відповіді:


3

Виконавчі сили

Чи правильно я розумію: у вас є теоретична модель жорсткої багатоядерної системи і хотіли б виконати обчислення динаміки жорстких тіл. Ви реалізували модель і тепер хотіли б обчислити, як модель поводиться при русі приводу.

Однак що таке привід для вас? Це просто сила, яка діє на цей суглоб? Це модель двигуна постійного струму? Це PID-контролер?

Алгоритми динаміки в книзі описані в термінах узагальнених положень , узагальнених швидкостей , узагальнених швидкостей та узагальнених сил . Якщо у вас є призматичний суглоб, переклад якого описаний то лінійна сила в цьому стику описується . Якщо у вас є обертовий (шарнірний) шарнір, обертання якого описується то являє собою крутний момент у цьому суглобі.qq˙q¨τqiτiqjτj

Це залежить від вашого розуміння виконавчого механізму, як обчислюється . Якщо ви просто хочете застосувати сили або крутний момент, тоді введіть ці значення у відповідні значення . Після цього вони служать входом до алгоритмів динаміки вперед для обчислення реакції систем на прикладені сили.ττ

Примітка поруч: Featherstone використовує для позначення активних сил закриття петлі. З опису вашої моделі, схоже, немає ніяких кінематичних циклів, тому не застосовується.τaτa

Гравітаційне прискорення:

Пірстоун застосовує гравітаційне прискорення в основі і дозволяє йому поширюватися за алгоритмами по дереву. Це робиться в RNEA, таблиці 5.1 у рядку

a0=ag .

Замість цього ви можете також змінити лінію

fiB=Iiai+vi×Iivi

до

fiB=Ii(aiiX0ag)+vi×Iivi

застосовувати гравітаційні ефекти індивідуально на кожен організм. Це вводить додаткові обчислення, і я не бачу жодної користі в цьому.

Просторова алгебра проти об'єднання 3-D векторів

Просторова алгебра - це не просто об'єднання 3-D векторів. Перший виражає жорсткі рухи тіла за фіксованою координатною рамкою, тоді як другий виражається в точках, що рухаються тілом. В результаті просторові прискорення є похідними часу просторових швидкостей. У класичному позначенні, що використовує два тривимірні рівняння, це не так (Розділ 2.11 книги Фезерстона):

Якщо тіло має постійну кутову швидкість то всі точки на тілі, які не знаходяться на осі обертання, мають прискорення до осі обертання (центр обертання в площинному випадку). У просторовій алгебри це тіло має нульове просторове прискорення, незалежне від кадру, в якому прискорення виражається .ω

Просторова швидкість описує лінійну та кутову швидкість точки тіла, яка в даний час збігається з початком (нерухомого) опорного кадру. Якщо цей кадр виражений у центрі маси та орієнтований на глобальну систему відліку, то, здається, це просто конкатенація 3-D лінійної та кутової швидкості, однак це стосується лише конкретного вибору референтного кадру. Виражений в іншому кадрі, ви отримуєте різні значення, але він все ще представляє однакову просторову швидкість.

Просторове прискорення описує потік лінійної та кутової швидкості точки, що збігається з початком. "Потік" тут означає, як з часом змінюються величини вектора (лінійна та кутова швидкість).


Я наполегливо працював над впровадженням цього алгоритму, але намагався бути настільки ж методичним, наскільки це можливо, забезпечуючи, щоб навіть найосновніші аспекти працювали точно так, як очікували кожного разу. З цією метою я поставив ряд експериментів, де можу обчислити точне рішення, щоб порівняти модельоване рішення.
Чак

Останній аспект, над яким я працював, - це сферичний суглоб - отримання представлення кватерніона та прискорень. Для цього експерименту я намагаюся моделювати маятник Фуко, моделюючи землю та розміщуючи на поверхні маятник із сферичним суглобом. Роблячи це, моя нерухома основа - це центр землі, навколо якого обертається Земля. Потім від обертового центру Землі я можу обертатися вгору / вниз на будь-яку широту, переходити на поверхню, де розміщую маятник сферичного суглоба.
Чак

Мені потрібен спосіб додати гравітації, тому що я не міг просто поставити його на вісь 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, потрібно багато зусиль.
Чак

Ласкаво просимо в робототехніку Барретт Еймс, дякую за вашу відповідь, але ми вважаємо за краще відповіді бути самостійними, де це можливо. Посилання мають тенденцію до гниття, тому відповіді, які покладаються на посилання, можуть бути марними, якщо зв’язаний із вмістом гниє. Якщо ви додасте більше контексту за посиланням, швидше за все люди знайдуть вашу відповідь корисною.
Марк Бут
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.