Autonomiczny Nalewak do Napojów powstał z myślą o stworzeniu przyciągającego uwagę
projektu opartego o system wizyjny. Jak się jednak okazało świetnie sprawdza się nie
tylko na eventach i warsztatach, ale także… na imprezach integracyjnych Koła Naukowego
SNS Automatyk ;).
Nalewak to robot-dystrybutor, który sam rozpoznaje kubki na stole, podjeżdża w
odpowiednie miejsce i nalewa do nich precyzyjnie odmierzony napój. Projekt łączy
sterowanie mechaniką przez Arduino (z firmwarem Klipper3D) i system wizyjny działający
na Raspberry Pi. Efekty naszej pracy można obejrzeć tutaj: film z działania nalewaka
Kod źródłowy projektu znajdziesz na GitHubie.

Rysunek 1 Autonomiczny nalewak w obecnej konfiguracji

Z czego to zbudowaliśmy?
Sprzętowo projekt prezentuje się następująco:
• Raspberry Pi 4B + kamera szerokokątna OV5647 (5 Mpx),
• Arduino sterujące 3 silnikami krokowymi NEMA17 przez TB6600,
• Pompa membranowa R385 (6–12V) z przekaźnikiem 5V/10A,
• Trzy krańcówki (endstopy),
• Oddzielne zasilanie dla mikrokontrolerów i pompy.
To wszystko osadzone na lekkiej ramie, z fizycznym przyciskiem startu i automatyczną
kalibracją osi przy starcie

Jak to działa od kuchni?
1. Jeden przycisk- prosty interfejs użytkownika
Proces uruchamiania uprościliśmy do naciśnięcia jednego przycisku. W tle czuwa usługa
(daemon Linuxowy) gpio_button.service (uruchamiana automatycznie przez systemd
na Raspberry Pi), która nasłuchuje sygnału wciśnięcia przycisku. Po jego wykryciu
odpalany jest główny skrypt move_pour.py.

2. System wizyjny
System wizyjny wykonuje zdjęcie kamerą szerokokątną, a następnie w module correct
usuwa zniekształcenia soczewki (fisheye) i kadruje obszar roboczy.
Następnie skrypt detect_mug.py uruchamia sieć neuronową opartą o framework TensorFlow Lite, by wykryć pozycje kubków. Koordynaty trafiają do plan_view, który przelicza je na rzeczywiste współrzędne w przestrzeni roboczej.

Rysunek 2 Wyniki detekcji kubków przez sieć neuronową

3. Algorytm nalewania
Gdy mamy już współrzędne, robot kolejno:

  1. sortuje kubki po odległości od bieżącej pozycji,
  2. przemieszcza się nad kubek,
  3. uruchamia pompę na 5.5 sekundy,
  4. potrząsa końcówką, by uniknąć kapania podczas przejazdu do kolejnego kubka,
  5. czeka 2 sekundy i przechodzi dalej,
  6. po wszystkim wraca do pozycji startowej, tzw. „home”

Co ważne: robot działa na podstawie zdjęcia zrobionego w momencie naciśnięcia
przycisku. Przesunięcie kubka po tym czasie oznacza, że nalewanie skończy się fiaskiem

4. Bezpieczeństwo na imprezie
Na obudowie znajduje się fizyczny wyłącznik awaryjny, który natychmiast odcina zasilanie pompy i silników (ale zostawia Raspberry Pi i Arduino aktywne). Po jego zwolnieniu, system kontynuuje od miejsca, gdzie przerwał. Jeśli coś pójdzie nie tak– można podejrzeć logi przez journalctl albo uruchomić restart firmware’u poprzez komendę FIRMWARE_RESTART w Klipperze.

5. Co planujemy dalej?

  • Przebudowa okablowania i jedno wejście 230V do całości,
  • Dokumentacja z pełnym schematem elektrycznym,
  • Większa sieć neuronowa do obsługi różnych typów naczyń,
  • Modułowa końcówka (np. wymienny chwytak)- być może robot do gry w szachy?
  • Eksperymentalne sterowanie padem od PlayStation.
Rysunek 3 Modułowa głowica robota- plan rozwojowy
Kategorie: Projekty

0 komentarzy

Dodaj komentarz

Symbol zastępczy awatara

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *