Sterowniki¶
Wspierane sterowniki¶
amber-cpp-drivers jest to projekt sterowników, napisanych w C/C++, które pozwalają na komunikację z urządzeniami umieszczonymi na robocie. Wspierane są:
- Ninedof - odczytywanie informacji z sensora umieszczonego na robocie, dostarczającego informacji z przyspieszeniomierza, żyroskopu oraz magnetometru
- Roboclaw - sterowanie silnikami robota
- Stargazer - obsługa lokalizacji w oparciu o kamerę oraz markery
- Location - programowa obsługa lokalizacji z wykorzystaniem algorytmu cząstek i analizy trakcji
- Maestro - servo-mechanizmy wykorzystywane w ramieniu
amber-python-drivers jest to projekt sterowników, napisanych w python, które pozwalają na komunikację z urządzeniami umieszczonymi na robocie. Wspierane są:
- Hokuyo - odczytywanie informacji z sensora umieszczonego na robocie, dostarczającego informacji o odległościach innych przeszkód od robota
- DriveSupport - osbługa sterowania silnikami ze wsparciem skanera laserowego oraz czujnika ruchu
- DriveToPoint - obsługa poruszania się według listy punktów
- Roboclaw - obsługa sterowania silnikami
Konfiguracja z mediatorem¶
Sterownik posiada przypisany typ urządzenia oraz numer urządzenia. Wartości te ustawiane są w konfiguracji Amber. Konfiguracja powinna być zapisana jako apps/amber/priv/settings.config
.
Konfiguracja jednego z sterowników:
{supervised_driver,
{driver,
{nazwa_sterownika}
},
{numer_typu_sterownika, numer_sterownika},
[
{cdriver, "ścieżka/do/sterownika"},
{config_file, "ścieżka/do/konfiguracji/sterownika"},
{log_config_file, "ścieżka/do/konfiguracji/dziennika/sterownika"}
]
}.
Ścieżki konfiguracji nie są wymagane, ważne jest podanie ścieżki do pliku wykonywalnego, który uruchomi sterownik.
Cechy sterownika¶
Sterownik jest:
- aplikacją uruchamianą na robocie
- app. komunikującą się z urządzeniem podłączonym do robota
- app. komunikującą się z mediatorem przez potoki powłoki systemu linux
Sterownik odpowiada za:
- ustawienie parametrów urządzenia
- wsparcie obsługi współbieżnego dostęp do urządzenia przez wiele klientów
- obserwowanie obecności klientów
- wysyłanie wiadomości dla klientów, którzy zarejestrowali się jako nasłuchujący na dany typ wiadomości
- odbieranie komunikatów, ich obsługę i odsyłanie wiadomości, jeśli to konieczne
Działanie¶
Ostrzeżenie
Poniższe zalecenia wynikają z postaci wspólnej wszystkich wiadomości przesyłanych między klientami a sterownikami. Stosowanie DriverMsg nie jest konieczne. Możliwe jest ustanowienie własnej postaci wiadomości, przy czym obecna postać sterowników i klientów nie wspiera własnej postaci wiadomości.
Sterownik powinien realizować funkcjonalności takie jak:
obsługę odbierania wiadomość typów:
- DATA - dane do przetworzenia przez sterownik, odebrane od klienta
- PING - zapytanie o działanie, realizowane przez mediator, obecnie nie używane, odpowiedzią na zapytanie jest odesłanie wiadomości typu PONG
- SUBSCRIBE i UNSUBSCRIBE - do rejestracji klienta nasłuchującego
- CLIENT_DIED - zgłoszenie klienta o zakończeniu pracy, w przypadku, gdy dany klient był zarejestrowanych jako słuchacz, należy postąpić z nim podobnie, jak w przypadku UNSUBSCRIBE
Dodatkowo, co jest zalecane, sterownik powinien przy poprawnym zamykaniu się, wysłać do mediatora komunikat typu DRIVER_DIED.
Oprócz obsługi wiadomości, sterownik powinien realizować:
- inicjalizację pracy z urządzeniem
- ustawienie określonych parametrów pracy
- buforowanie danych z urządzenia
- współbieżny dostęp do urządzenia
Przykład¶
Przykładem sterownika, który realizuje powyższe funkcjonalności jest DummyDriver. Sterowniki korzystają z części wspólnej.