Laserowo kierowany detektor psich... spraw

Laserowo kierowany detektor psich... spraw

Typowe problemy czasami wymagają niestandardowych rozwiązań. Może być tak, że prostego zadania nie da się zrealizować bez użycia lasera i sztucznej inteligencji... nawet, jeżeli tym typowym problemem są psie kupy rozrzucone po trawniku. Oczywiście właściciele psów powinni sprzątać od razu po swoich czworonogach, gdy je wyprowadzają na spacer. Gdyby praktyka była dokładnie taka, jak teoria, to nie powstałoby to szalenie ciekawe urządzenie.

Wielu z nas trzyma w domach psy. Jeżeli biegają one po ogródku, to zupełnie naturalnym jest, że czasami zdarza im się załatwić w ogrodzie, szczególnie, jeżeli np. trzymamy zwierzaka w ogrodzie w nocy. W takiej sytuacji jest właśnie autor poniższego projektu, Caleb Olson. Samodzielnie sprzątał on ogródek, zbierając codziennie psie kupy z całego ogródka. Jednak nierzadko zdarzało się, że jakieś przeoczył, szczególnie w śniegu czy wyższej trawie. Dlatego też sięgnął po nowoczesną technologię, aby rozwiązać swój problem.

Aby uniknąć konieczności zbierania odchodów od razu po wypuszczeniu psa na noc i aby upewnić się, że podczas przyszłego sprzątania nie przegapi niczego, Caleb Olson opracował inteligentny system, który nie tylko śledzi, gdzie jego szczeniak robi kupy, ale także używa lasera by doprowadzić sprzątającą osobę do każdej z nich. Pomysł na zrobotyzowany laserowy system wspomagający zbierane kupek narodził się w rzeczywistości z innego, wcześniejszego projektu opracowanego przez Olsena. Używał on systemu ze sztuczną inteligencją do wykrywania, kiedy jego zwierzak zrobił kupę na podwórku. W dalszej części artykułu przyjrzymy się obu składowym systemom i ich zasadzie działania.

Zasada działania

Działanie urządzenia można podzielić na dwie części – działający w czasie rzeczywistym monitoring, który na podstawie obrazu z kamery, znajdującej się w ogródku, wykrywa miejsca, w którym piesek zrobił kupę oraz laserowy wskaźnik tych miejsc, który aktywowany jest podczas zbierania. Oba korzystają z AI i podobnych frameworków, ale oczywiście w zupełnie różnym celu.

Do wykrywania miejsc, gdzie pies zrobił kupę, zastosowano pakiet DeepLabCut (DLC). Jest to zestaw narzędzi do bezmarkerowego szacowania pozycji zwierząt wykonujących różne zadania, wykorzystujący wiele zaawansowanych narzędzi współczesnych systemów AI (rysunek 1). Brak markerów oznacza w tym przypadku brak konieczności umieszczania na zwierzęciu znaczników, jak to realizowane było np. w filmowych systemach motion capture. System bazuje tylko na obrazach i naniesionych wcześniej na zwierzęta oznaczeniach.

Rysunek 1. Pakiet DeepLabCut korzysta z nowoczesnych narzędzi do analizy obrazów, widzenia maszynowego, testowania i aplikacji

DLC wyposażone jest w interfejs graficzny, służący do oznaczania poszczególnych ruchów zwierząt itp. w celu nauki rozpoznawania przez system jego ruchów. Biblioteka DLC działa w Pythonie, można ją zainstalować za pomocą standardowego menedżera pakietów Pythona – pip, wpisując polecenie:

pip install "deeplabcut[gui]"

lub

pip install deeplabcut

W zależności od tego, czy chcemy zainstalować wersję, odpowiednio, z GUI oraz bez GUI. Oprogramowanie można zainstalować również, jako bibliotekę conda (niezależny menedżer pakietów i środowiska dla dystrybucji Pythona znanej, jako Anaconda) lub jako kontener dla Dockera.

W omawianym projekcie DLC zostało zastosowane do ekstrakcji pozycji obserwowanego pieska. Autor zauważył, ze podczas wypróżniania się, pies ustawia się w charakterystyczny sposób – przykuca i pręży ogon. Pozostaje w tej pozie nieruchomo przez jakiś czas, więc wykrycie miejsca, gdzie pies załatwiał się powinno być możliwe.

Do nauki sieci neuronowej w DLC posłużyły obrazki zebrane za pomocą kamery obserwującej ogród, na które naniesiono następnie punkty identyfikujące poszczególne elementy pieska (kolorowe kropki nanoszone na zdjęciu na rysunku 2). Dzięki tym anotacjom algorytm wie, czego ma szukać w obrazach – uczy się. Po dostarczeniu odpowiedniej ilości i opisanych obrazów – danych uczących – system potrafi poprawnie wykrywać ruchy pieska, w tym także, oczywiście, interesujące nas zachowanie – robienie kupy.

Rysunek 2. Obrazek psa robiącego kupę w programie do anotacji

Na bazie danych dostarczanych przez DLC, wykrywających pozycję zwierzaka, autor opracował detektor wypróżniania się, tj. momentu, gdy piesek będzie znajdował się w określonej pozycji. Model wykrywa pozycję trzech punktów wzdłuż grzbietu psa i trzy punkty na jego ogonie. Wystarczy to do wykrycia zachowania psa – gdy grzbiet jest wygięty, ogon prosty, a pies się nie porusza, to znaczy, że właśnie się załatwia.

Oprogramowanie zapamiętuje lokalizację pieska, podczas gdy detektor wykrył robienie kupy. Można bezpiecznie założyć, że zrobiona kupa znajduje się mniej więcej pomiędzy grzbietem, a ogonem (których to pozycja jest znana). Komputer zapamiętuje te pozycje na obrazie. Dodatkowo, nanosi na zdjęciu z ogródka czerwone okręgi (rysunek 3). Zdjęcie to jest udostępniane w sieci wewnętrznej, więc dowolne urządzenie dołączone do Wi-Fi w domu ma dostęp do tej specyficznej mapy.

Rysunek 3. Zdjęcie ogrodu z oznaczonymi miejscami, gdzie znajdują się psie odchody

Wskaźnik laserowy

Sprzątanie z telefonem w ręki nie należy do najwygodniejszych, dlatego autor zdecydował się uzupełnić system laserowym wskaźnikiem, który pokazuje gdzie znajdują się kupy. Jako że system ten również wymaga pewnej interakcji z użytkownikiem, jest on także wyposażony w system rozpoznawania gestów (również zrealizowany za pomocą DLC). Aby laser mógł wskazywać lokalizacje odchodów należało nauczyć system wskazywania tam, gdzie chcemy. To nie jest takie trywialne, gdyż laser porusza się w zupełnie innym układzie odniesienia niż algorytm analizy obrazu z kamery przemysłowej. Istnieją zasadniczo dwa sposoby na rozwiązanie tego problemu – sprzęgnięcie ze sobą „na sztywno” obu układów współrzędnych za pomocą funkcji i przekształceń lub wykorzystanie analizy obrazu, aby system wiedział, gdzie skierowany jest laser. Autor konstrukcji wybrał tę drugą ścieżkę, dzięki czemu system jest bardziej uniwersalny i możliwe jest jego łatwe przeniesienie w dowolne miejsce.

Za pomocą narzędzi do segmentacji, zawartych w bibliotece Pythona OpenCV, oprogramowanie lokalizuje współrzędne, gdzie pada laser. Pozwala to na wyuczenie systemu poruszaniem lasera w taki sposób, aby trafiał on tam, gdzie znajduje się punkt z odchodami. Powodować może to pewne niepokojące zachowania lasera – potrafi on delikatnie myszkować i drżeć na obrazie, jednak docelowy system działa sprawnie i powtarzalnie, niezależnie od warunków otoczenia itp. Można też przenieść laser w inne miejsce i nie ma konieczności mozolnej rekalibracji układu.

Rysunek 4. Sygnał rozpoczęcia zbierania odchodów. Algorytm rozpoznaje postać człowieka i wykrywa, gdy skrzyżuje on przed sobą ręce

Laser wskazuje po kolei poszczególne kupy. Ale co to znaczy „po kolei”? Oprogramowanie stara się zoptymalizować trajektorię sprzątania. W momencie, gdy program wykryje sygnał do rozpoczęcia (rysunek 4) wyznacza optymalną trasę do zebrania wszystkich odchodów, względem pozycji, w której wykryto człowieka, dającego sygnał do rozpoczęcia sprzątania. Algorytm po wyznaczeniu optymalnej trajektorii zaczyna od razu wskazywać pierwsze miejsce, w którym należy sprzątnąć. W jaki sposób realizowane jest przejście do kolejnego punktu sprzątania? Są na to dwie opcje. Możemy albo po prostu sprzątnąć dane miejsce, albo wskazać programowi, że nie ma tam, co sprzątać. Jedna i druga operacja realizowana jest z pomocą DLC, które monitoruje cały czas scenę. Algorytm wykrywa – na podstawie jego pozycji – czynność zbierania odchodów przez człowieka (rysunek 5) lub też gest anulowania, który po prostu kasuje dany punkt.

Rysunek 5. Autor projektu kucający, zbierający psią kupę. Algorytm rozpoznaje jego pozycję i interpretuje ją, jako sprzątanie

Oprogramowanie analizuje pozycję człowieka. Jeśli sprzątający nachyla się nad miejscem, gdzie spoczywa psia kupa, system interpretuje to – całkiem sensownie – jako sprzątanie. Jeśli nie znajdziemy tam odchodów, co może się zdarzyć – system wykrywania może się pomylić i zinterpretować ruchy pieska, jako wypróżnianie się. Wtedy możemy poinformować system, że nie ma nic w tym miejscu, pokazując skrzyżowane ręce do kamery. Wtedy system skasuje ten punkt z listy i przeniesie wskaźnik laserowy na następny zapamiętany punkt. I cykl powtarza się, aż wszystkie kupy zostaną posprzątane.

Budowa

System składa się z dwóch zasadniczych elementów: kamery i zrobotyzowanego wskaźnika laserowego. Kamera to dowolne źródło obrazu, które może być odczytywane przez komputer, na którym pracują algorytmy rozpoznawania obrazu (np. Raspberry Pi). Autor zastosował zwykłą kamerę IP, jaką często montuje się w domach, celem ochrony przed włamywaczami itp. Przetwarzanie realizowane jest na zwykłym komputerze PC, ale może być realizowane na Raspberry Pi lub innym komputerze jednopłytkowym.

Drugim elementem składowym systemu jest laser, który podświetla punkty, w których znajdują się kupy – jeden po drugim. Aby było to możliwe został on zamontowany na robotycznym ramieniu z czterema osiami swobody. Moduł poruszany jest przez cztery serwosilniki, podłączone do płytki na Raspberry Pi. SBC odpowiedzialny jest za sterowanie ramieniem robota na podstawie komend, otrzymywanych z głównego serwera, który realizuje obliczenia.

Podsumowanie

Jedno z praw Murphy’ego brzmi: „Jeśli coś jest głupie, ale działa, to nie jest głupie”. Stanowczo da się powiedzieć to o opisanym systemie – działa, tj. spełnia swoją rolę. Można zastanawiać się, czy tak skomplikowany system jest konieczny, aby uprzątnąć ogródek z psich kup… raczej na pewno nie. Ale należy na to spojrzeć od zupełnie odwrotnej strony – rozwiązanie tego problemu z użyciem AI jest doskonałą okazją, aby nauczyć się algorytmów sztucznej inteligencji. I tak należy patrzeć na tego rodzaju projekty.

Z uwagi na rozmiar i poziom skomplikowania kodu, w ogóle nie jest prezentowany w tym artykule. Co więcej zasadniczo jest nieistotny, gdyż wynik działania oprogramowania jest zależny od danych uczących, jakie dostarczymy do systemu. Zatem, zamiast próbować skopiować ten projekt w swoim własnym ogródku (jeśli macie psa i podobny problem), warto sięgnąć po opisane w tekście narzędzia – takie jak DeepLabCut czy OpenCV i spróbować je zastosować, do rozwiązania rozmaitych problemów. Pośród propozycji, jakie znajdują się w komentarzach w Internecie, gdzie opublikowano ten projekt, przewijają się systemy np. do tresowania kotów – automatyczny pistolet na wodę spryskuje zwierzę, gdy to np. wchodzi na stół, system do identyfikacji gryzoni i innych szkodników i inne. A to dopiero początek narzędzi zawierających algorytmy uczenia maszynowego, jakie są obecnie dostępne!

Nikodem Czechowski, EP

Źródło:

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2022

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów