KNR Bionik

Projekty

ThrowBot 2015

Gra z robotami mobilnymi


Termin rozpoczęcia i zakończenia

Rozpoczęcie: 1 lipca
Prezentacja projektu: 12 grudnia

Motywacja

Celem projektu było stworzenie wciągającej zabawy wykorzystującej roboty mobilne. Wyjątkowość gry polega na sposobie sterowania urządzeniami. Uczestnik otrzymuje woreczki o określonym kolorze, które po wrzuceniu na planszę zaczynają “generować pole odpychające robota” i ten zaczyna podążać w kierunku wypadkowym. Efekt jest taki, jakby robot uciekał przed woreczkami. Zabawa zawiera element rywalizacji pomiędzy uczestnikami. Każdy z uczestników ma woreczki o kolorze, na który reaguje tylko jego robot oraz woreczki o kolorze, na który reagują oba roboty. W ten sposób można wpływać na zachowanie się drugiego robota. Poza tym urządzenia są przystosowane do zderzania się - jest to kolejny element interakcji między uczestnikami zabawy.

Opis funkcjonalności

Jednym z elementów projektu jest oprogramowanie rozpoznające układ elementów gry na planszy. Poza oprogramowaniem odpowiedzialnym za logikę gry implementowana jest także bezprzewodowa komunikacja pomiędzy jednostką centralną a pojazdami. W celu zapewnienia najlepszych wrażeń z gry wynikła potrzeba stworzenia specjalnie dostosowanej do potrzeb konstrukcji robota.

Opis technik programowania

Wszystkie elementy oprogramowania są oprogramowane z wykorzystaniem języka C++. Projekt zakłada wykorzystanie systemu kontroli wersji Git. Ponieważ oprogramowanie składa się z wielu komponentów (pracujących w wątkach, a także na różnych urządzeniach), wykorzystywane są następujące sposoby komunikacji: sygnały i sloty biblioteki Qt, protokół JSON-RPC wykorzystywany do komunikacji komputera centralnego z robotami (Raspberry), protokół I2C wykorzystany pomiędzy Raspberry a~Arduino.

Opis urządzeń

W skład systemu wchodzi:

  • komputer z systemem operacyjnym Linux,
  • kamerka internetowa z~łączem USB,
  • router WiFi,
  • gamepad Logitech F710 z odbiornikami bezprzewodowymi.

Roboty wykorzystane w projekcie zostały opisane w dziale roboty: TriOmiX I, TriOmiX II.

Komputer centralny

Przetwarzanie obrazu jest realizowane przy pomocy biblioteki OpenCV. Klatka odebrana z kamery jest zamieniana na obraz binarny poprzez sprawdzenie czy wartości każdego z kanałów piksela zawierają się w zadanych przedziałach. Następnie funkcje biblioteki wykrywają zgromadzenia zgodnych pikseli. Procedura jest powtarzana dla trzech kolorów. Wykrywanie kolorów korzysta z przestrzeni barw HSV, a nie RGB. Dzięki temu program jest odporny na cienie rzucane przez graczy i zmienność oświetlenia. W trakcie działania programu możliwa jest kalibracja wykrywanych kolorów poprzez klikanie kursorem w obiekty znajdujące się w polu widzenia kamery. Roboty mają naklejone znaczniki AR. Korzystając z biblioteki ArUco, zgodnej z OpenCV, program odczytuje aktualną pozycję i orientację robota względem kamery. Następnie ze względnej pozycji robota i kolorowych woreczków są wyliczane wektory odpychające. Ich superpozycja jest wektorem wypadkowym ruchu robota. Wektor następnie jest obracany o kąt przeciwny do orientacji robota. Dzięki temu robot dostaje komendę zgodną z własnym układem współrzędnych, a nie kamery. Program pozwala także na uniemożliwienie wyjazdu robota poza planszę. Jeśli robot znajduje się zbyt blisko krawędzi planszy program wycina z jego wektora ruchu składową w kierunku krawędzi. W takiej postaci komenda zostaje przesłana poprzez sieć od robota.

Abstract

The aim of the project is to develop a game which is based on mobile robots and competition. Our basic idea is to use small bags that “generate fields pushing robot away” when they are thrown near the device. The architecture of the project compose of cetral computer that recognizes game state and is responsible for a game logic and rules. Apart from that we disign and construct omni wheel robots that fulfill all the requirements that result from our idea.

Koordynator

Rafał Jagielski

Autorzy

Izabela Dusza
Michał Kowalewski
Piotr Sykulski
Tomasz Ferens
Wojciech Węgierek

Wsparcie

Bartosz Kaczor
Bartosz Świstak
Konrad Banachowicz
Maciej Stefańczyk
Jacek Wesołowski - Wonderland Engineering