Wpis z mikrobloga

#arduino #esp8266 #elektronika #robotyka #automatyka #python #programowanie
Witam wszystkich, pracuję nad projektem autonomicznej kosiarki i mam kilka pytań do was :)
Najpierw opiszę mniej więcej projekt:
Jako podstawę projektu chcę wykorzystać zwykłą kosiarkę spalinową z napędem tylnych kół realizowaną przez zwykły pasek z silnika, napęd załączany jest linką.
Część logiczna: kontroler arduino z ESP wifi lub samo ESP-12. Sercem obliczeniowym będzie komputer PC w sieci lokalnej.
Do arduino będą podłączone następujące elementy:
- 9DoF IMU (układ 3 osiowy akcelerometr + 3 osiowy żydoskop + 3 osiowy magnetometr).
- 2 serwomechanizmy: pierwszy o mniejszym momencie sterujący napędem (poprzez pociąganie linki od napędu), drugi do sterowania kołem skrętnym z przodu (w celu ograniczenia komplikacji z przodu planuję tylko jedno koło na środku)
- czytnik RFID
- czujnik halla do pomiaru orientacyjnej przejechanej odległości, magnesy na kole napędowym.
- czujniki odległości/ wykrywania przeszkód.

Dane z czujników będą wysyłane via WiFi do serwera (komputer PC). Tutaj będą wykonywane wszystkie obliczenia.
Algorytmy sensor fuse np. zastosowanie filtru kalmana, madgwick, AHRS lub inne. Póki co dopiero raczkuję w tym temacie, są to dla mnie rzeczy zupełnie nowe chociaż mam doświadczenie w C++/Pythonie i Javascripcie, nie wiem jak za bardzo to ugryźć i od czego zacząć. Polecacie jakies książki na ten temat?
Po przetworzeniu danych komendy zostaja wysłane do kosiarki.
Dlaczego nie zastosuję np. raspbery pi? Nie ma sensu, po pierwsze pecet ma większą moc obliczeniową, mogę monitorować i dokonywać zmian na bieżąco, a opóźnienia w sieci wifi są pomijalne.

No dobrze, ale jak dokładnie wyobrażam sobie precyzyjną nawigację w terenie? Tutaj wchodzi do gry właśnie 9DoF IMU i tagi RFID umieszczone na trawniku. Każdy tag będzie miał inny numer identyfikacyjny.
Po rozmieszczeniu dużej ilości tagów sporządzę dokładną mapę terenu z naniesionymi tagami i przeszkodami, wyznaczę trasę przejazdu. Czyli będzie to typowa nawigacja względna inercyjna oparta na IMU. W celu redukcji dryftu żyroskopu, kosiarka po przejechaniu nad danym tagiem będzie wiedziała dokładnie w którym miejscu się znajduje i będzie mogła wprowadzić poprawki do systemu inercyjnego. I teraz moje pytania:

1. Jaki serwomechanizm (z jakim momentem) wykorzystać do sterowania kołem przednim? Kosiarka waży ok. 20kg, dodakowo trawnik nie jest idealnie równy. Zakres obrotu wystarczy 90 stopni, czyli dzięki przekładni 1:2 mogę uzyskać 2x większy moment.
2. Jaki moduł 9DoF IMU wybrać? Rozważałem Pololu AltIMU-10 v5 ("Przy pomocy tych sensorów można stworzyć kompletny system AHRS (attitude and heading reference system), czyli wyznaczyć położenie obiektu w przestrzeni trójwymiarowej.")
Nie robię drona, także wysokość można pominąć. Tagi RFID byłby rozmieszczone co 10-15m
3. Jak ugryźć te wszystkie algorytmy "sensor fuse"? Jakie książki, algorytmy, biblioteki byłyby tutaj najbardziej odpowiednie? Potrzebuję znać położenie względne i nawigować pomiędzy kolejnymi tagami RFID dosyć precyzyjnie.

Dzięki za odpowiedzi i wskazówki, jeżeli macie jakieś pomysły, inne spojrzenie na ten temat to piszcie :)
  • 34
@UmCykCyk: właśnie przy danych z IMU i kalibracji z tagów RFID + sporządzona mapa wydaje mi się, że dadzą największą dokładność. Możnaby użyć modułów GPS z dokładnością do 5cm, ale to już koszt powyżej 1000zł.
Kamera + odpowiednie przetwarzanie AI już wymaga sporo mocy obliczeniowych i trzebaby korzystać z np. vision api nvidii albo jakiegoś AI, ale to generowałby spore opóźnienia i koszty
@LM317T: w kwestii innego spojrzenia - po co Ci w ogóle dokładna nawigacja? Do skoszenia trawnika wystarczy kilka ultradźwiękowych czujników odległości po parę złotych.

Czujnik 1 jest skierowany do przodu i jest po to, żeby jak dojedziesz do przeszkody - zawracać.

Czujniki 2,3,4,5 są skierowane w dół i mierzą wysokość trawy. Cel programu jest taki, żeby na czujnikach 2,4 była niska trawa, a na czujnikach 3,5 - wysoka - i wtedy
tellmemore - @LM317T: w kwestii innego spojrzenia - po co Ci w ogóle dokładna nawigac...

źródło: comment_GdQWWAmIMMA7BVV6H0RwChO3Knx7IYz3.jpg

Pobierz
@tell_me_more: dokładna nawigacja jest mi potrzebna z tego względu, że trawnik jest dosyć skomplikowany.
Z jednej strony jest np. kostka brukowa, z drugiej żywopłot z tui, są drzewka owocowe, które trzeba ominąć.
Jeśli kosiłbym co 3-5 dni nie ma szansy, żeby jakiś czujnik wychwycił różnicę w wysokości. Tak dopytam: jakie czujniki są w stanie zmierzyć odległość do czubka źdźbła trawy a nie do ziemi? Albo wykryć drzewko owocowe z pniem o
@LM317T: Ad 1: z racji gabarytów maszynki rozważ wykorzystanie silników krokowych zamiast serwomechanizmów do sterowania kołem skrętnym (bo jak rozumiem masz na myśli te modelarskie serwa RC), przykład: http://sklep.cncprofi.com/silnik-krokowy-2-0-nm-2-0a-56-56.html Sterowanie z arduino przez jakiś sterownik krokowca za 30 zł i masz porządne rozwiązanie, a nie serwomechanizm, o który się będziesz bał, że Ci się połamie jak kosiarka na kępkę wjedzie :)
@LM317T: ja (w innym projekcie) używałem ultradźwiękowych, coś w tym stylu, tylko inny model https://elty.pl/pl/p/Ultradzwiekowy-czujnik-odleglosci-US-015/2098?gclid=EAIaIQobChMIxd6ez_ev2wIVFsayCh2Hbgj0EAQYASABEgJxK_D_BwE

i wykrywały cokolwiek podstawiałem, z dokładnością poniżej 1 cm. Na trawie nie próbowałem, ale one nie działają w linii prostej, tylko zwracają najbliższy obiekt w stożku o kącie kilkunastu stopni, także powinno wykrywać sensownie. Z resztą zawsze można uśredniać wartości w jakimś oknie czasowym i skalibrować na podstawie danych które zbierzesz w realu.

Swoją drogą -
@LM317T: te serwa kuszą, bo są tanie i proste w sterowaniu, ale należy pamiętać, że to zabawki. Pomijając już fakt, że trudno do nich przykręcić coś na porządnie, te plastikowe przejściówki w kształcie śmigieł można dwoma palcami powyginać.
@LM317T: no ale problem z zastosowaniem krokowców (albo jakichkolwiek "normalnych" silników) to zasilanie, z tego co wymieniłeś to wszystko chyba na 5 V na pokładzie kosiarki by było, a moja propozycja wiąże się z dostarczeniem oprócz 5 V na obsługę logiki jeszcze 12/24 V na obsługę napędów.
@Witty: właśnie miałem serwo "mini" z momentem 1,2kg i chciałem go użyć do prototypu, ale nie daje rady totalnie. Nawet się już lekko rozkalibrowało, przy szybkich ruchach przestrzela pozycję i musi wracać :D
@Witty: zastosuję akumulator 12V lub jakiś battery pack. Musi być oddzielne zasilanie mikrokontrolera i oddzielne serw/silników. W prototypie zastosowałem 2 stabilizatory 1,5A 5v (z 12v) z radiatorami, bo przy jednym układ się resetował (serwo pobierało za duży prąd startowy)
Jeszcze kwestia silników krokowych i sterowników, muszę się zapoznać z dokumentacją ile Amper potrafią wyciągnąć.
Ale akumulator 'samochodowy' w wersji do głębokiego rozładowania ma wystarczający prąd rozruchu i da radę.
Kosiarka jest
@LM317T: pewnie uwaga trochę na wyrost przy tak wstępnym etapie, ale pamiętaj, że silniki krokowe pracują na prądzie nominalnym również wtedy, kiedy się nie obracają, to znaczy, że nawet nie kręcąc silnikiem, on będzie brał te swoje (na przykładzie zalinkowanego przeze mnie) 2 A cały czas.
@Witty: ew. mogę użyć przekładni samohamującej z dużym przełożeniem co pozwoli użyć silnika o mniejszym momencie, sterowanie będzie bardziej dokładne i będę mógł wyłączyć silnik po uzyskaniu zadanej pozycji (tak mi się wydaje)
@LM317T: dokładnie tak, jak mówisz, zasilanie silnika puścić przez jakiś przekaźnik żeby go rozłączyć jak nie ma się ruszać i przekładnia ślimakowa :) Hamowanie przekładnią to może nie jest podręcznikowe rozwiązanie (prędzej jakiś hamulec elektromagnetyczny), ale do takiej kosiarki będzie git :)
@Witty: jeszcze zastanawiam się nad zmianą napędu. Napęd mechaniczny w zasadzie nie ma regulacji prędkości ani biegu wstecznego. Mógłbym użyć silnika DC ze sterownikiem. Plusy: możliwość kontrolowania prędkości kosiarki i bieg wsteczny.
Znalazłem taki silniczek DC 12V, prawdopodobnie od dmuchawy/nagrzewnicy z jakiegoś samochodu. Próbowałem szukać po symbolach, ale google nic nie zwraca :D
Może wiecie co to za silniczek i czy się nada?
@tell_me_more:
L.....T - @Witty: jeszcze zastanawiam się nad zmianą napędu. Napęd mechaniczny w zasa...

źródło: comment_fuZz9z8UF04WHQZfQ7siDmHhZmBf8Ob1.jpg

Pobierz
@LM317T: Ale pytasz o napęd ostrza kosiarki teraz? Nie rozumiem po co tam zmiana kierunku obrotów. No i w sumie zmiana prędkości obrotowej też wg mnie jest nieuzasadniona, no kto ma regulowaną prędkość ostrza w kosiarce xD Jedynym plusem zastosowania silnika elektrycznego w miejsce spalinowego jaki widzę, jest możliwość prostego uwzględnienia go w sterowaniu, no ale to raczej na zasadzie "załącz/wyłącz", a nie regulacji kierunku i prędkości. Oczywiście że można, wszystko
@LM317T: O takie zielonki na tym portalu nic nie robiłem. Pisze konkretnie co chce, ma rozeznanie w tematach technicznych, a nie...

Cześć mirki! wczoraj oglondałem jeden film Mirka Kardasia o AVR i bym chciał zrobić własnom sonde kosmicznom i wysłać jom do kosmosu. Co bym poczebował żeby jom zrobić?


Co do fuzji danych z sensorów, to robiłem na studiach robota z układem MPU6050(accel+gyro) do wyznaczenia położenia w przestrzeni korzystałem z materiałów