Dodawanie siłownika lub siły do ​​przegubowego sztywnego modelu nadwozia (Featherstone)


9

Pracuję nad projektem, w którym muszę modelować system, który zasadniczo składa się z szeregu przegubów kulowych przymocowanych do podstawy, która jest z kolei przymocowana do przegubu pryzmatycznego (szyny).

Przeczytałem Sztywne algorytmy dynamiki ciała Roy Featherstone od początku do końca , a także przeczytałem sekcję Dynamika w Springer Handbook of Robotics (również napisanym przez Featherstone).

Dużo czasu zajęło mi przyzwyczajenie się do używania jego „wektora przestrzennego” i „matrycy przestrzennej”, ale po ponownym ręcznym utworzeniu całego jego zapisu jako ćwiczenia, okazuje się, że jest to dobry sposób na połączenie 3x3 i Matryce i wektory 3x1 w matryce i wektory 6x6 i 6x1. Matematyka, którą wymyśla, aby wykonywać operacje, może być nieco żmudna do odczytania, ponieważ przechwytuje standardową notację, ale ogólnie wszystko jest bardzo kompaktowe, bardzo łatwe do zaimplementowania w MATLAB.

Mój problem jest następujący: jak dodać siłowniki do modelu? Przechodzi przez jawną konfigurację definicji połączeń, definicji łączy itp., Ale jeśli chodzi o siłowniki lub siły przyłożone, mówi coś w stylu: „Po prostu dodaj tutaj , a Bob jest twoim wujem!” - to wcale nie jest omawiane. W Handbook of Robotics sugeruje wprowadzenie fałszywego przyspieszenia do stałej podstawy, aby dodać składnik siły grawitacji, ale nie pokazuje, jak dodać go do lokalnych współrzędnych, ani nie wspomina o tym, jak dodać dane wejściowe siłownika.τa

Każda pomoc byłaby bardzo mile widziana. Zastanawiałem się nad zaczęciem od innej książki, ale poświęcenie czasu na ponowne zaaklimatyzowanie się w innym zestawie notowań będzie wielkim wydatkiem. Chciałbym z tym iść naprzód, ale czuję, że jestem zaledwie kilka cali przed metą.

Odpowiedzi:


3

Siły siłowników

Czy mam rację: masz teoretyczny model sztywnego układu wieloobiektowego i chciałbyś wykonywać sztywne obliczenia dynamiki ciała. Wdrożyłeś model i teraz chcesz obliczyć, jak zachowuje się model, gdy jest napędzany przez siłownik.

Ale czym jest dla ciebie siłownik? Czy to po prostu siła działająca na to połączenie? Czy to model z silnikiem prądu stałego? Czy to kontroler PID?

Algorytmy dynamiki w książce opisano w kategoriach uogólnionych pozycji , uogólnionych prędkości , uogólnionych prędkości i uogólnionych sił . Jeśli masz połączenie pryzmatyczne, którego przesunięcie jest opisane przez wówczas siła liniowa w tym złączu jest opisana przezqq˙q¨τqiτi . Jeśli masz złącze obrotowe (zawiasowe), którego obrót jest opisany przez to reprezentuje moment obrotowy na tym złączu.qjτj

To do swojego rozumienia siłownika jakτ obliczane jest . Jeśli chcesz po prostu zastosować siły lub momenty, wprowadź wartości do odpowiednich wartości . Gdy już to zrobisz, służą one jako dane wejściowe do algorytmów dynamiki ruchu do przodu w celu obliczenia reakcji systemu na przyłożone siły.τ

Uwaga obok: Featherstone używa do oznaczenia aktywnych sił zamknięcia pętli. Z opisu twojego modelu nie ma żadnych pętli kinematycznych i dlategoτaτa nie dotyczy.

Przyspieszenie grawitacyjne:

Featherstone stosuje przyspieszenie grawitacyjne u podstawy i pozwala na propagację przez algorytmy przez drzewo. Odbywa się to w RNEA, tabela 5.1 w wierszu

a0=ag.

Zamiast tego możesz również zmodyfikować linię

fiB=Iiai+vi×Iivi

do

fiB=Ii(aiiX0ag)+vi×Iivi

aby zastosować efekty grawitacyjne indywidualnie na każdym ciele. Wprowadza to dodatkowe obliczenia i nie widzę w tym żadnych korzyści.

Algebra przestrzenna a konkatenacja wektorów 3-D

Algebra przestrzenna to nie tylko łączenie wektorów 3-D. Pierwszy z nich wyraża sztywne ruchy ciała w ustalonej ramie współrzędnych, podczas gdy drugi wyraża się w punktach, które poruszają się z ciałem. W rezultacie przyspieszenia przestrzenne są pochodnymi czasowymi prędkości przestrzennych. W klasycznej notacji wykorzystującej dwa równania 3-D tak nie jest (rozdział 2.11 książki Featherstone):

Jeśli ciało ma stałą prędkość kątową ωwówczas wszystkie punkty na tym ciele, które nie znajdują się na osi obrotu, mają przyspieszenie w kierunku osi obrotu (środek obrotu w przypadku planarnym). W Algebrze przestrzennej ciało to ma zerowe przyspieszenie przestrzenne niezależnie od klatki, w której wyraża się przyspieszenie .

Prędkość przestrzenna opisuje prędkość liniową i kątową punktu ciała, który obecnie pokrywa się z początkiem (stałej) ramy odniesienia. Jeśli ta ramka jest wyrażona w środku masy i zorientowana względem globalnej ramki odniesienia, wydaje się, że jest to proste połączenie prędkości liniowej i kątowej 3-D, jednak dzieje się tak tylko w przypadku tego konkretnego wyboru ramki odniesienia. Wyrażone w innej ramce mają różne wartości, ale nadal reprezentują tę samą prędkość przestrzenną.

Przyspieszenie przestrzenne opisuje przepływ prędkości liniowej i kątowej punktu, który pokrywa się z początkiem. „Przepływ” oznacza tutaj, w jaki sposób wielkości wektorowe (prędkość liniowa i kątowa) zmieniają się w czasie.


Ciężko pracowałem nad wdrożeniem tego algorytmu, ale po drodze starałem się być tak metodyczny, jak to tylko możliwe, zapewniając, aby nawet najbardziej podstawowe aspekty działały dokładnie tak, jak oczekiwano za każdym razem. W tym celu przeprowadziłem szereg eksperymentów, w których mogę obliczyć dokładne rozwiązanie, dzięki czemu mogę porównać symulowane rozwiązanie.
Chuck

Ostatnim aspektem, nad którym pracowałem, było połączenie kuliste - uzyskanie reprezentacji i przyspieszeń czwartorzędu. W tym eksperymencie próbuję symulować wahadło Foucaulta, modelując ziemię i kładąc na powierzchni wahadło ze sferycznym złączem. Czyniąc to, moją stałą podstawą jest środek ziemi, wokół którego obraca się Ziemia. Następnie z obracającego się środka Ziemi mogę obracać się w górę / w dół na dowolną szerokość geograficzną, przemieszczać się na powierzchnię, na której umieszczam wahadło przegubu kulistego.
Chuck

Potrzebowałem sposobu na dodanie grawitacji, ponieważ nie mogłem po prostu umieścić jej na osi Z na mojej stałej podstawie; to działałoby grawitacyjnie poprawnie tylko na biegunie północnym. Zasadniczo nie dbam o siły pod powierzchnią ziemi, po prostu dbam o precesję wahadła.
Chuck

Ja zapytałem powiązane pytanie o tym, jak należy sobie radzić stałych stawów.
Chuck

2

Jeśli nie natrafiłeś na bibliotekę sztywnej bryły dynamiki ciała (RBDL), możesz chcieć sprawdzić, jak ją implementują i / lub skontaktować się z autorem Martinem Felisem.


Barrett, znalazłem RBDL kilka tygodni temu i chociaż czasami próbowałem zebrać informacje, jest napisany w C ++ metodami, które utrudniają przestrzeganie kodu. Na przykład w kodzie kinematyki jest linia, która czyta G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. Czym więc jest ta funkcja apply? Cóż, muszę przejść do pliku nagłówka dla dowolnej klasy base_to_body, ale czy jest to staw czy ciało? Również rzeczy takie model.base[j].inverse().apply(model.S[j])nie są szczególnie jasne.
Chuck

Co nie znaczy, że czasami nie było to przydatne, ale dla mnie zrozumienie RBDL wymaga dużego wysiłku.
Chuck

Witamy w robotyce Barrett Ames, dziękuję za odpowiedź, ale w miarę możliwości wolimy, aby odpowiedzi były samodzielne. Linki mają tendencję do gnicia, więc odpowiedzi, które opierają się na linku, mogą stać się bezużyteczne, jeśli link do treści gnije. Jeśli dodasz więcej kontekstu z linku, bardziej prawdopodobne jest, że inni uznają twoją odpowiedź za przydatną.
Mark Booth
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.