Ustatnia modyfikacja 8 lipca 2025 przez Olek

Od jakiegoś czasu chodzi mi po głowie pomysł stworzenie przy ogrodowego łazika. Taka większą taczkę z własnym napędem i pompą hydrauliczna do podłączania różnych narzędzi hydraulicznych. Ogólnie coś większego i skomplikowanego, ale to tema na przyszłość. Zanim jedna przystąpię do jego realizacji, muszę się nauczyć i poćwiczyć zagadnień związanych z ogólnie pojętą robotyką. Chodzi mi o kontrolę nad mechanizmami wykonawczymi, jak również o metody autonomicznego poruszania się i synchronizowania tego wszystkiego do kupy. Są już gotowe systemy do tego celu jak ROS (Robot Operating System). Trzeba tylko zbudować fizyczną, platformę do jego testowania. Jest wiele „zabawek” do kupienia które działają pod tym systemem. Nie lubię jednak tworzyć rzeczy tylko do zabawy i nawet jeśli są mocno edukacyjne. Jak już mam coś budować to przynajmniej ma czemuś, praktycznemu służyć.
I tak wpadłem na projekt Open Mower, czyli stworzeni własnego systemu dla robota koszącego. Ten pomysł idealnie wpisuje się w moje potrzeby i założenie. Czyli mam ROS-a na pokładzie i skoszony trawnik. Przy okazji testuje sprzęt w warunkach docelowych, czyli na zewnętrznych i mogę już uwzględniać pewne aspekty z tym związane, czyli m.i. opady, wilgoć, temperatura czy wstrząsy.

Funkcjonalność podstawowa robota ma być przynajmniej taka jak komercyjnych urządzeniach z najwyższej półki. W naszym przypadku wariant minimum.

Wariant minimum.

  • Autonomiczne koszenie w zaprogramowanych rejonach, bez granicznego drutu.
    • moduł lokalizacji RTL GPS
    • kamera do analizy otoczenie i wykrywania przeszkód
  • Mobilny monitoring domu z zewnątrz
    • na rozkaz przejście do odpowiednich punktów i dokonanie oględzin domu (okien, drzwi i.t.p.)
  • Zdalne sterowanie i monitoring urządzeniem z mobilnego sprzętu. n.p. przez aplikację webową

Wariant rozszerzony.

  • Detekcja przedmiotów i ich rozpoznawania. Piłka, łopatka, wąż ogrodowy czy kupa psa.
  • W zależności od przedmiotu odpowiednia reakcja.

Ekstra funkcję.

  • Rozpoznawanie i klasyfikacja rośli. Tutaj sytuacja wygląda dość ciekawie, bo robo sam może zbierać materiały do nauki, operator w fazie uczenia może je klasyfikować. Tak może powstać dość poważna baza treningowa. Co ważne stworzona z ujęć z perspektywy robota. Jest jeszcze jedna fajna funkcjonalność, którą można wykorzystać. Robot będzie wiedział, gdzie dana roślina się znajduje (RTL GPS pozwala pozycjonować do kilku centymetrów) i może śledzić jej wzrost i tym samy uwzględniać ten aspekt w nauce.
  • Zwalczanie niepożądanych roślin. To są prowadzone testy w ogródku, jakim sposobem je usuwać. Skłaniam się do precyzyjnego dozowania herbicydu glifosatu, który skutecznie eliminuje roślinę nie tylko cześć naziemną zieloną, ale i podziemną, czyli korzeń. Dosłownie jednak kropla skondensowanego preparatu podana na stożek wzrostu powinna załatwić sprawę. Tutaj trzeba wykonać cały element precyzyjnego pozycjonowania aplikatora i precyzyjnego dozowania. Zrobiło się drukarkę 3D i inne maszyny CNC to i to da się wykonać. To by był dodatkowy moduł podczepiany do tyłu kosiarki z dodatkową kamerą. Coś na kształt podczepianych urządzeń do ciągnika rolnego. Tematy bardzo pokrewne, ale w trochę innej skali.

Można powiedzieć, że to są plany dość futurystyczne, ale obecnie nie widzę poważniejszych problemów technicznych, aby je zrealizować. Limitem jest czas, który niestety będę musiał na to poświęcić.

Cześć mechaniczna, czyli podwozie

Zakupiłem już „body” do mojego projektu, czyli chiński automat koszący YardForce Classic 500. Jest bardzo popularny i wygodny do modyfikacji i rozpracowany przez innych hobbistów. Wygodna i dużą konstrukcją pozwala na umieszczenie wewnątrz dodatkowej elektroniki. Prosty menaż pokrywy też bardzo ułatwia prace.
Ten konkretny model, już nie produkują, ale udało mi się zdobyć egzemplarz ze zwrotów. Po odpowiednio niższej cenie. Oczywiście miał być w 100% sprawny, ale się okazało, że trochę sprzedawca miną się z prawdą. Fakt jest, że wizualnie był jak nowy, nieśmigany. Jeden problem to klawisz „play/run” na pulpicie który nie działa, z czym sobie szybko poradziłem. Drugi problem był poważniejszy, czyli silnik noża, nie działał. Kosiarka lata po ogrodzie, ale nie kosi. Silnik jak umiałem, przetestowałem (głównie uzwojenia) i wydawał się dobry wiec coś z płytą i sterowaniem. Korzystając z innego serwisu tematycznego Mowgli poznałem głębiej elektronikę tej kosiarki. Okazał się, że działa na moich ulubionych STM32-jkach. Znalazłem tam przykładowe kody programów, które uruchamiał poszczególne silniki. W tym również nas problematyczny silnik kosy. Wszystkie silniki są silnikami BLDC czyli na prąd stały bezszczotkowe. Można nimi zakręcić tylko za pomocą odpowiedniego sterownika. Po wgraniu programu i włączenia programowo silnika nadal milczał, silniki napędowe bez problemu dało się sterować. Po ponownej głębszej analizie schematu udało mi się wykryć, że oprócz sterowania silnikiem przez mikrokontroler (programowo) jest dodatkowa linia zabezpieczająca (safety) ten konkretny jeden silnik, która w pewnych przypadkach unieruchamia niezależnie silnik w celu bezpieczeństwa. Tak, aby komuś coś się przez przypadek nie przycięło. Złączyłem tę linię na krótko i silnik wreszcie ożył. Wiedziałem już, gdzie jest problem. Okazało się, że taśma łącząca dwa moduły miała jedną żyłę źle zarobioną. Wgrałem oryginalny program i kosiarka kosi, co prawda musiałem rozłożyć kabel graniczny, ale było żal nie skorzystać z jej usług.

Za dużej logiki w tym, co teraz robi niema. Po prostu chyba losowo zmienia kąt odbicia od granicy i tym sposobem z większym lub mniejszym prawdopodobieństwem skosi cały zadany drutem obszar.

Cześć logiczna, czyli jednostka centralna.

Teraz nadszedł czas skupić się nad jednostką centralną, jaką jest Raspberry pi 5 kupiłem wrsje 8GB, dysk SSD M2 512GB NVMe. Do tego moduł
do tego dysku o szybkim złączu PCIE, a nie po zwykłym USB. To zapewni maksymalną przepustowość do danych malinki. Dodatkowo jeszcze aktywne chłodzenie.

ROS 2 najlepiej działa na dystrybucji Ubuntu (ver 24.04 LTS) i takową wgrałem na RPI 5. Miałem problemy z uruchomieniem malinki i jej stabilnością. Po pierwsze malinka nie wspiera zasilania PD na USB, na co liczyłem. Musiałem dokupić oryginalny zasilacz, który daje 3A po 5V. Następnym poważniejszy problem okazało się chłodzenie dysku SSD M2 w trybie NVMe. Na tyle się grzeje, że dochodzi do różnych dziwnych zachowań malinki w tym zawieszania się całego systemu. Nie miałem przy sobie profesjonalnego miernik temperatury, ale na dotyk temperatura nie była za wysoka coś w okolicach 50C więc nie przypuszczałem, że w tym jest problem. Dopiero po założeniu (przyklejeniu) prostych małych radiatorów do kości pamięci i sterownika problemy minęły. Wykonywałem stres testy i było ok. Na razie chodzi bez przerwy kilka dni i działa. Raz system padł, ale malinkę przekładałem, wiec tu mógł być problem.

Doinstalowana ssh, samba zdalny pulpit VNC i późniejszych potrzebnych narzędzi. System ROS 2 w najnowszej dystrybucji KILTED. Pierwsze próby łączności pomiędzy nodami poszły. Turtlesim też chodzi.
C.D.N.

Jeden komentarz

  1. Cześć! Jak idzie przeróbka? Sam kompletuję właśnie sprzęty pod Mowgli, ale pozostałem przy standardowym RPi4 ze względu na prądożerność i ciepło właśnie. Może kiedyś zmienie na RPi6, kiedy wyjdzie i będę chciał się pobawić w rozpoznawanie obiektów przez AI.

    Myślałeś nad doborem anteny pod RTK? Sam mam raczej mocniej zadrzewiony ogród, dlatego rozważam Tallysman HC871.

    neph

Dodaj komentarz