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.
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ą.
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.
źródło
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 funkcjaapply
? Cóż, muszę przejść do pliku nagłówka dla dowolnej klasybase_to_body
, ale czy jest to staw czy ciało? Również rzeczy takiemodel.base[j].inverse().apply(model.S[j])
nie są szczególnie jasne.