Spisu treści:
- Krok 1: Budowanie struktury
- Krok 2: Poznaj swoje wartości sprzętowe
- Krok 3: Kinematyka do przodu
- Krok 4: Kinematyka odwrotna
Wideo: Robot do rysowania dotykowego: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W ramach moich studiów magisterskich na dep. Wzornictwo przemysłowe na Uniwersytecie w Eindhoven stworzyłem urządzenie do rysowania dotykowego, które może służyć do poruszania się półautonomicznym samochodem w ruchu ulicznym. Interfejs nazywa się scribble i pozwala użytkownikowi doświadczyć uchwytów dotykowych w przestrzeni 2D za pomocą zmiennej siły i lokalizacji. Chociaż koncepcja nie jest tym, o czym jest ta instrukcja, możesz przeczytać więcej o Scribble tutaj:
Scribble wykorzystuje konfigurację łącznika 5 bar, która pozwala mu poruszać się o dwa boczne stopnie swobody (DoF). Ta konfiguracja jest dość popularna wśród prototypistów do tworzenia robotów rysujących, oto kilka przykładów:
www.projehocam.com/arduino-saati-yazan-kol-…
blogs.sap.com/2015/09/17/zegar-działania-pogoda…
www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html
Mechanicznie roboty te są łatwe do wykonania. Potrzebują tylko podstawowych połączeń i mają dwa siłowniki, które mogą wytwarzać dość płynne ruchy. Ta struktura jest idealna dla projektantów, którzy są zainteresowani tworzeniem ruchomych struktur. Chociaż nie jestem inżynierem mechanikiem, uważam, że kinematyka jest dość trudna do przełożenia na kod. Dlatego dostarczę podstawowy kod Arduino, który określa kinematykę przednią i odwrotną, dzięki czemu możesz łatwo użyć tego w przyszłych projektach!;-)
Proszę pobrać poniższy kod!
* EDIT: dla podobnego projektu zajrzyj na https://haply.co *
Krok 1: Budowanie struktury
W zależności od celu, jaki masz na myśli, powinieneś najpierw zaprojektować strukturę z 5 łącznikami. Zastanów się nad wymiarami, siłownikami, których chcesz użyć i jak zamocować złącza, aby uzyskać płynne ruchy.
W przypadku mojego prototypu uruchamiam swój kod na Arduino DUE, który jest kontrolowany przez port szeregowy przez program na moim Macu, który został stworzony w Open Frameworks. Program wykorzystuje połączenie UDP do komunikacji z symulatorem jazdy opartym na Unity 3D.
Prototyp Scribble wykorzystuje łożyska 5 mm i jest wykonany z 5 mm akrylu wycinanego laserowo. Siłownikami są silniki dotykowe Franka van Valeknhoefa, które umożliwiają uruchamianie, odczytywanie położenia i wysyłanie zmiennej siły. To czyniło je idealnymi dla pożądanych właściwości dotykowych Scribble. Więcej o jego siłownikach można znaleźć tutaj:
Krok 2: Poznaj swoje wartości sprzętowe
Kinematyka do przodu oparta jest na stacji pogodowej Plot clock firmy SAP:
Jak pokazano w ich konfiguracji, jest przedłużone, aby ramię trzymało marker do rysowania. Zostało to usunięte, ponieważ nie służyło prototypowi bazgrołów. Sprawdź ich kod, jeśli chcesz ponownie dodać ten komponent. Nazwy na zdjęciu są takie same w mojej konfiguracji.
W zależności od sprzętu algorytm musi znać właściwości sprzętu:
int lewySiłownik, prawySiłownik; //kąt zapisu do siłownika w stopniach, zmień na pływaki, jeśli chcesz uzyskać większą dokładność
int poz X, poz Y; //współrzędne położenia wskaźnika
Ustaw rozdzielczość swoich wartości wejściowych
int posStepsX = 2000;
int posStepsY = 1000;
Wymiary twojej konfiguracji, wartości w mm (patrz zdjęcie SAP)
#define L1 73 // długość ramienia silnika, patrz rysunek SAP (lewy i prawy są takie same)
#define L2 95 // ramię przedłużające długość, patrz obraz SAP (lewy i prawy są takie same)
#define rangeX 250 // maksymalny zasięg w kierunku X dla punktu do przemieszczenia (od lewej do prawej, 0 - maxVal)
#define rangeY 165 // maksymalny zasięg w kierunku Y dla punktu do przemieszczenia (od 0 do maksymalnego zasięgu podczas pozostawania w środku)
#define originL 90 //odległość przesunięcia od największej minimalnej wartości X do pozycji środkowej siłownika
#define originR 145 //odległość przesunięcia od największej minimalnej wartości X do pozycji środkowej siłownika, w tym przypadku odległość między dwoma silnikami
Krok 3: Kinematyka do przodu
Jak wspomniano w poprzednim kroku, kinematyka do przodu oparta jest na algorytmie SAP.
Pustka aktualizuje zdefiniowane wcześniej pożądane wartości kąta lewego i prawego siłownika. Na podstawie podłączonych wartości X i Y obliczy kąty proste, aby uzyskać wskaźnik do tej pozycji.
void set_XY(double Tx, double Ty) //podaj swoją wartość X i Y{ // niektóre wartości, których potrzebujemy, ale nie chcemy oszczędzać na długo double dx, dy, c, a1, a2, Hx, Hy; //mapowanie rozdzielczości wejściowej do zakresu konfiguracji w świecie rzeczywistym int realX = map(Tx, 0, posStepsX, 0, rangeX); //swap if mapping if inverse int realY = map(Ty, posStepsX, 0, 0, rangeY); //swap if mapping if inverse // oblicz kąt dla lewego siłownika // kartezjański dx/dy dx = realX - originL; //uwzględnij przesunięcie dy = realY; // biegunowa długość (c) i kąt (a1) c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = kąt_powrotu(L1, L2, c); leftActuator = piętro(((M_PI - (a2 + a1)) * 4068) / 71); //kąt końcowy i przelicz z rad na deg // oblicz kąt dla prawego siłownika dx = realX - originR; //uwzględnij przesunięcie dy = realY; c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = kąt_powrotu(L1, L2, c); rightActuator = floor(((a1 - a2) * 4068) / 71); //końcowy kąt i przelicz z rad na deg }
Dodatkowa pustka do obliczenia kąta:
double return_angle(double a, double b, double c) { // reguła cosinusa dla kąta między c a return acos((a * a + c * c - b * b) / (2 * a * c)); }
Krok 4: Kinematyka odwrotna
Kinematyka odwrotna działa na odwrót. Podłączasz obrót siłowników w stopniach, a pustka zaktualizuje wcześniej zdefiniowaną pozycję.
Należy pamiętać, że potrzebne będą siłowniki lub osobny czujnik, który odczyta kąt ramienia. W moim przypadku zastosowałem siłowniki, które potrafią jednocześnie odczytywać i zapisywać swoją pozycję. Możesz poeksperymentować z tym i rozważyć dodanie jakiejś kalibracji, aby mieć pewność, że twój kąt jest poprawnie odczytany.
Zalecana:
Trzy obwody czujnika dotykowego + obwód zegara dotykowego: 4 kroki
Trzy obwody czujnika dotykowego + obwód zegara dotykowego: Czujnik dotykowy to obwód, który włącza się po wykryciu dotknięcia styków dotykowych. Działa na zasadzie nieustalonej tzn. obciążenie będzie WŁĄCZONE tylko na czas dotknięcia pinów.Tutaj pokażę Ci trzy różne sposoby na dotyk
Robot do rysowania dla Arduino: 18 kroków (ze zdjęciami)
Robot rysujący dla Arduino: Uwaga: Mam nową wersję tego robota, który wykorzystuje płytkę drukowaną, jest łatwiejszy do zbudowania i ma wykrywanie przeszkód IR! Sprawdź to na http://bit.ly/OSTurtleZaprojektowałem ten projekt na 10-godzinne warsztaty dla ChickTech.org, którego celem jest
Niedrogi robot do rysowania kompatybilny z Arduino: 15 kroków (ze zdjęciami)
Niedrogi, kompatybilny z Arduino robot do rysowania: Uwaga: Mam nową wersję tego robota, który wykorzystuje płytkę drukowaną, jest łatwiejszy do zbudowania i ma wykrywanie przeszkód IR! Sprawdź to na http://bit.ly/OSTurtleZaprojektowałem ten projekt na 10-godzinne warsztaty dla ChickTech.org, którego celem jest
Robot do rysowania awatarów za pomocą MESH: 6 kroków (ze zdjęciami)
Robot rysujący awatar używający MESH: Czy słyszałeś, że aktywność fizyczna może zwiększyć twoją kreatywność? Bycie aktywnym pomaga ci rozwinąć myślenie i generować kreatywne pomysły. Jeśli nie ćwiczysz często, ale chcesz zwiększyć swoją kreatywność, nie martw się - oto coś dla Ciebie! Ten „
Długopisy LED do rysowania: Narzędzia do rysowania lekkich gryzmołów: 6 kroków (ze zdjęciami)
Długopisy LED do rysowania: Narzędzia do rysowania lekkich gryzmołów: Moja żona Lori jest nieustannym doodlerem i od lat bawię się fotografią z długim czasem ekspozycji. Zainspirowani grupą artyzmu świetlnego PikaPika i łatwością cyfrowych aparatów fotograficznych przyjęliśmy formę sztuki rysowania światłem, aby zobaczyć, co możemy zrobić.Mamy duży