Doporučená organizace projektu
Rozdělení do tříd (abecedně):
Comm
- Obsluha kompletní komunikaceConfiguration
- Konfigurace načtená z yaml souboruController
- Hlavní logika ovládání programuDrive
- Obsluha a řízení podvozkuNmea
- Implementace převodu NMEA zprávSensor
- Obsluha měření a identifikace čárymain.cpp
- Supersmyčka
Doporučen způsob práce kdy za funkcionalitu jedné třídy zodpovídá jedna osoba (ideálně se jménem napsaným v komentáři na začátku souboru). Nikdo jiný než vybraná osoba nesmí daný soubor commitovat.
Main je kolizní, můžou do něj všichni, ideálně v malých jednořádkových commitech. Main pokud možno modifikovat jen když jste všichni spolu a definujete API (rozdáváte práci)
main.cpp
Řeší:
- obsluha argumentů příkazové řádky
- instanciace ostatních tříd
- hlavní supersmyčka
Závisí na:
Comm
- instanciace a obsluha v supersmy4ceDrive
- instanciace a obsluhaSensor
- instanciace a obsluhaConfiguration
- instanciace, načteníController
- instanciace a volání v supersmyčce
POZOR KOLIZNÍ SOUBOR (commitovat vždy zvlášť, modifikovat pouze velmi malé změny kvůli častým konfliktům)
Nmea
Řeší:
- převod z frame na zprávu
- převod ze zprávy na frame
Závisí na:
- nic
Realizace:
- Implementace 4. týden
- Spolehlivost 6. týden
Comm
Řeší:
- obsluha příjmu a odesílání UDP zpráv
- Mediátor zpráv do ostatních objektů
Závisí na
Nmea
- převod protokoluConfiguration
VOLITELNE - port
Realizace:
- Implementace 6. týden
- Spolehlivost 8. týden
Drive
Řeší:
- Obsluha komunikace s podvozkem
- Výpočty nad podvozkem
- Odometrie
Závisí na
Nmea
- deklarace zprávConfiguration
VOLITELNE - poloměr kola, rozteč
Realizace:
- Implementace 6. týden
- Spolehlivost 8. týden
Sensor
Řeší:
- Obsluha komunikace se senzory
- Parametrizace /detekce pozice čáry
Závisí na
Nmea
- deklarace zprávConfiguration
VOLITELNE - pozice senzoru
Realizace:
- Implementace 7. týden
- Spolehlivost 8. týden
Configuration
- Načítání parametrů z yaml souboru
- Volitelná třída, lze implementovat za pomocí konstant v kódu
- výhodné použití
yaml-cpp
knihovny
Závisí na
nic
Realizace:
- Implementace 8. týden
- Spolehlivost 10. týden
Controller
Řeší:
- Logika jízdy robotu
- Stavový automat pro:
- inicializace / kalibrace senzorů
- jízda po čáře (regulátor)
- jízda po přerušené čáře
- jízda po křižovatce
Závisí na
Drive
- zápis rychlostí robotuSensor
- čtení čáryConfiguration
VOLITELNE - délka přerušení
Realizace:
- Implementace 8. týden
- Spolehlivost 10. týden