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.

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.

3. Algorytm nalewania
Gdy mamy już współrzędne, robot kolejno:
- sortuje kubki po odległości od bieżącej pozycji,
- przemieszcza się nad kubek,
- uruchamia pompę na 5.5 sekundy,
- potrząsa końcówką, by uniknąć kapania podczas przejazdu do kolejnego kubka,
- czeka 2 sekundy i przechodzi dalej,
- 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.

0 komentarzy