Skocz do zawartości

Problem z odtwarzaniem ruchu manipulatora


Pomocna odpowiedź

Napisano

Witam

Jestem w trakcie budowy manipulatora o pięciu stopniach swobody. Wszystkie części robota są już gotowe i czekają na złożenie, 5x serwa mg995 i hd1250 dla chwytaka, osobny układ zasilania dla serw, moduł hc-06 do komunikacji z urządzeniami na androidzie. Sterowanie przez bluetooth lub zwykłe potencjometry. Program zarówno dla jednego jak i dla drugiego sposobu jest gotowy. Dwa problemy, których nie umiem rozwiązać to kinematyka odwrotna i odtwarzanie wcześniej wykonanego ruchu. Jest na forum osoba, która potrafiłaby mnie nakierować, dać wskazówki? Nie chcę się nikim wysługiwać potrzebowałbym zwykłych wskazówek, bo sam już nie mam pomysłów. Robot jest na pracę magisterską także po obronie pojawi się na pewno w dziale z manipulatorami. Za wszelką pomoc będę mega wdzięczny.

Ale nie zadałeś pytania. Może napisz z czym dokładnie masz problem? Czego próbowałeś i w jaki sposób to nie działa? Trudno dawać wskazówki nie wiedząc na czym polega dokładnie problem.

Ale nie zadałeś pytania. Może napisz z czym dokładnie masz problem? Czego próbowałeś i w jaki sposób to nie działa? Trudno dawać wskazówki nie wiedząc na czym polega dokładnie problem.

Chodzi mi o odtworzenie ruchu, który wcześniej wykonam, przykładowo za pomocą ramienia przenoszę klocek z jednego miejsca w drugie, a następnie chciałbym, aby ramię wykonało to samo bez sterowania ręcznego. Moje pytanie brzmi jak ten problem można rozwiązać?

Czy temat załatwi jakaś funkcja, która zapisywałaby pozycję manipulatora po wciśnięciu przycisku? Czy jest możliwość żeby leonardo zapamiętało całą, przykładową kilkunastosekundową trasę? Czy potrzebne są do tego enkodery czy potencjometry w serwach wystarczą?

To odtwarzanie ruchów operatora widzę na kilku projektach niestety nie ma nigdzie opisanego w jaki sposób można to robić.

Można to zrobić na wiele sposobów, w zależności od tego do czego to ma służyć i co ma być potrzebne. Możesz zapisywać pozycje w punktach kluczowych, albo nagrywać je w jakichś odstępach. Możesz też zapisywać prędkość i lub przyśpieszenie albo nawet i dalsze pochodne — w zależności co jest potrzebne. Możesz użyć potencjometrów w serwach jako prymitywnych enkoderów, ale możesz też zamontować jakieś inne enkodery, albo nawet kamerę, która będzie śledzić pozycje markerów. Pozycję możesz mieć wtedy bezwzględną albo na przykład względem markera na przedmiocie, którym chcesz manipulować. Możliwości są nieskończone. Wszystko zależy od tego do czego to ma służyć i co umiesz, a tego niestety nie wiemy.

Można to zrobić na wiele sposobów, w zależności od tego do czego to ma służyć i co ma być potrzebne. Możesz zapisywać pozycje w punktach kluczowych, albo nagrywać je w jakichś odstępach. Możesz też zapisywać prędkość i lub przyśpieszenie albo nawet i dalsze pochodne — w zależności co jest potrzebne. Możesz użyć potencjometrów w serwach jako prymitywnych enkoderów, ale możesz też zamontować jakieś inne enkodery, albo nawet kamerę, która będzie śledzić pozycje markerów. Pozycję możesz mieć wtedy bezwzględną albo na przykład względem markera na przedmiocie, którym chcesz manipulować. Możliwości są nieskończone. Wszystko zależy od tego do czego to ma służyć i co umiesz, a tego niestety nie wiemy.

Opcje z dokupieniem enkoderów czy kamery wolę odrzucić chociaż domyślam się, że odpadną mi wtedy opcje z najdokładniejszym odwzorowaniem ruchu. Tak jak pisałem wszystko albo jedyne co potrzebuję to zapisywanie kilkunastosekundowych sekwencji ruchów polegających na przeniesieniu jednego elementu z miejsca na miejsce. Zdaję sobie sprawę, że powtarzanie nie musi być idealnie dokładnie i to akceptuję. Twoim zdaniem w takiej sytuacji lepsze jest zapisanie kluczowych pozycji czy proponowałbyś do tego konkretnego przypadku coś innego?

Na tym etapie rozważań najważniejsze jest jedno: musisz mieć możliwość odczytu (a nie tylko zadawania) położenia wszystkich węzłów. Już choćby z tego, że będziesz samodzielnie próbował nastawiać ramię i zmuszać go do jakichś ruchów wynika, że nie możesz użyć zwykłych serw. Nawet niezasilane serwo ma wciąż przekładnię, która w tę stronę próbuje bardzo szybko kręcić silnikiem. Jego niewielki opór mechaniczny przekłada się na ogromne opory na wejściu i będziesz się musiał namęczyć by przesunąć ramię. Serwom nie wolno tego robić, stawiają wtedy tak duży opór, że próby ręcznego obracania wałów kończą się ścinaniem zębów i uszkodzeniami mechanicznymi.

Musisz mieć napędy wyposażone w sprzęgła odpinające moment napędowy w trybie uczenia, "zluzowane" silniki krokowe (powinno się dać) lub.. zupełnie inne podejście.

Gdy chcesz maszynę nauczyć, do końcówki manipulatora przyczepiasz czujnik siły 3D. Z resztą może być zamontowany tam na stałe. Łapiąc za niego ręką zmuszasz komputer sterujący do aktywnego przesunięcia końcówki w stronę, którą wskazujesz kierunkiem tej siły. Wtedy możesz używać serw i one zawsze będą pracować "normalnie", nie potrzebujesz żadnych potencjometrów czy enkoderów. Oprogramowanie za to musi generować naturalne ruchy ramienia tak by jak najpłynniej podążać za Twoimi palcami. Możesz wtedy ustawiać końcówkę tylko w pewnych istotnych położeniach i naciśnięciem przycisku zapamiętywać te pozycje (ale odgrywający soft musi potem samodzielnie wyliczać pozycje pośrednie) albo włączyć tryb nagrywania "ciągłego" i nagrywać pozycje tak często jak to możliwe - to głupie ale proste.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...