==== Myšlenky automatického hodnocení v předmětu Robotika ==== * Snažíme se co nejvíce přiblížit reálné práci inženýra v praxi. * Robotika a koneckonců mnoho dalších oborů je velmi náročná na spolehlivost, a to včetně programového vybavení. Robot, obráběcí stroj, automatický jeřáb a další stroje mohou v případě selhání (a to i programového vybavení) způsobit nejen značné škody, ale i ublížení na zdraví. Proto je velmi důležité, aby fungovaly bezchybně i za extrémních situací. Proto klademe na "správnost programů" značnou váhu. * Inženýr v praxi vyvíjí nějaké zařízení nebo programový produkt a měl by si být schopen ověřit funkčnost svého výtvoru. Na velkých projektech to bývá samozřejmě práce celého týmu a často testování spotřebuje velké prostředky, někdy i větší než samotný vývoj. Ze základní školy to známe z věty: "Proveďte zkoušku". V případě malých projektů je vývojář programového vybavení a tester ta samá osoba. Koneckonců než vývojář předá svoje dílo testerovi, musí si být alespoň v základních obrysech jist, že produkt dělá co má. Testování je tedy v samé podstatě inženýrské práce. * Návrh testovacích dat, případně návrh testů, kterými má zařízení projít, tak aby se vyzkoušely všechny situace, které mohou v praxi nastat, je pak nejednoduchá, ale nezbytná součást práce inženýra. Připomeňme si, že jedna z definic práce inženýra je "vyvíjet věci, které fungují". * Standardní situace inženýra je, že má zadání, co má dělat, a nemá žádné jiné prostředky pro testování než ty, které sám vytvoří. V tomto předmětu nabízíme tři nástroje, které mají studentovi pomoci: - Vetšina (prakticky všechny) úloh je tvořena dvěma komplementárními úlohami, které transformují data tam i zpět. Pro ladění je tedy možné použít v podstatě jakákoliv náhodná data (ale lépe i data speciálně určená k otestování nestandardních situací) a otestovat, zda po transformaci tam i zpět dostanu původní data. Jeden ze směrů transformace je typicky mnohem lehčí a lze tak snadno získat jeden směr prakticky bez chyb. V praxi toto nebývá pravidlem a často musí být vyvinut speciální program pouze pro testování vyvíjeného programu. - V úlohách na přímou a inverzní kinematickou úlohu (4, 5, 6) je k dispozici samostatný nástroj (checker), který simuluje práci automatického hodnocení na serveru. Je tak možné nejen testovat programy offline s mnohem vyšší efektivitou, ale dozvědět se i výsledky pro každou testovanou polohu zvlášť. Takovou situaci by si v praxi každý vývojář přál. Studentovi zbývá jen vymyslet testovací data. - Třetím stupněm je pak automatická kontrola na serveru, kde jsme se pokoušeli vymyslet všechny možné situace, které mohou nastat. Takovýto komfort nemá vývojář v praktickém životě téměř nikdy. * Naším cílem je dobře Vás připravit pro praxi. Stejně jako v jiných profesích, inženýr je často nejvyšší instance, která je schopna problémy řešit, dělník může přivolat k problému mistra, ten může přivolat technologa a ten může přivolat dodavatele. Na místě se tak může ocitnout autor (Vy) a ten už nemá koho přivolat.