Robotick sudoku Stredn priemyseln kola v Poprade Anton
Robotické sudoku Stredná priemyselná škola v Poprade Anton Kornaj, Adrián Hradický, Lukáš Házy, Maroš Zvara Daniel Smižanský, Ing. Miroslav Tesař
Úvod Projekt „Robotické sudoku“ predstavuje široké spektrum odbornej problematiky od pochopenia hráčskej stratégie, jeho programového spracovania, ovládania a skĺbenia s mechanikou uchopenia a polohovania. Jedná sa o pôvodné riešenie bez plagiátorstva akejkoľvek jeho časti.
Ciele práce • Hlavné Ø Nájdenie programového riešenia hry sudoku akejkoľvek náročnosti pomocou platformy Arduino Mega 2560 Ø Realizácia náročného projektu tímovou spoluprácou • Vedľajšie Ø Pochopenie väzby človek-problém-program-stroj Ø Práca v kolektíve Ø Motto: „ každý nápad je treba si vypočuť, aj z hlúpej myšlienky môže vzísť dobrý nápad“
Základná koncepcia - mechanika • • • aké „hracie kamene“ aké polohovanie ako skenovať a uchopiť hracie kamene aké hráčske pole a zásobník aké sú možnosti výroby mechanických dielov
Herná plocha, hracie kamene Bukové drevo (100 x 64 x 4 cm)
Pohybový systém
Efektor
Základná koncepcia - elektronika • aká platforma (veľkosť programovej, dátovej a EEPROM pamäti, počet V/V pinov) • aká zobrazovacia jednotka • aký systém ovládania • aký systém napájania
Riadiaca jednotka Arduino Mega 2560
TFT Displej TFT LCD displej: Slúži na zobrazenie hráčskeho poľa a rôznych správ od programového podsystému.
zdroj napájania Rozdeľovač napájania Zdroje napájania: 24 V / 5 A - pohonná jednotka 5 V / 8 A - elektronika
Diaľkové ovládanie
Bloková schéma
Základná koncepcia tímovej práce • Relatívna nezávislosť riešiteľov • Prehľadnosť programových častí • Separátne odlaďovanie programových častí • Základný predpoklad tímovej práce pri programovaní: - deklarácia konštánt - deklarácia typov – štruktúrované dátové typy
Štruktúra adresára Štruktúra súboru hlavička /*************** * SUDOKU - DEFINICIA KONSTANT *=============== * Author : XXXXXX * Platform: Arduino Mega 2560 * Version : 1. 00 * Date : 11. 02. 2018 ***************/
Softvérové riešenie je realizované na platforme Arduino Mega 2560 pomocou programovacieho jazyka Wired. • Dátový základ hracieho poľa Ø štruktúrovaný dátový typ (4 bit premenná na uloženie čísla (dosadí sa pomocou herného plánu alebo vypočíta v priebehu hľadania riešenia) + 9 x 1 bit pre kandidátov • Dátový základ zásobníka Ø štruktúrovaný dátový typ (3 x 4 bit : premenná pre uloženie čísla kameňa, číslo riadku a číslo stĺpca)
Definícia konštánt - pinov #define pin_RS 38 // UTFT #define pin_WR 39 // UTFT #define pin_CS 40 // UTFT #define pin_RST 41 // UTFT #define pin_IR 21 // Riadenie IR #define pin_PW 20 // Napajanie pre FRID . . . . atď. . . . .
Definícia konštánt // KONSTANTY PRE IR OVLADAC #define _power 16753245 // Tlacidlo Power #define _menu 16769565 // Tlacidlo Menu #define _test 16720605 // Tlacidlo Test #define _plus 16712445 // Tlacidlo + #define _spat 16761405 // Tlacidlo navratu #define _zac 16769055 // Tlacidlo Uplne na zaciatok #define _play 16754775 // Tlacidlo Play #define _kon 16748655 // Tlacidlo Uplne na koniec. . . atď. . . . .
Dátové štruktúry HRACIE POLE union Matica_Struct { struct { bool Kandidat 1 : 1; bool Kandidat 2 : 1; bool Kandidat 3 : 1; bool Kandidat 4 : 1; bool Kandidat 5 : 1; bool Kandidat 6 : 1; bool Kandidat 7 : 1; bool Kandidat 8 : 1; bool Kandidat 9 : 1; byte Bunka : 4; }; unsigned int Fronta : 13; }; ZÁSOBNÍK typedef { byte Bunka : 4; byte R : 4; byte S : 4; } Zasobnik_Struct;
Stratégia výpočtu riešenia • ako priradiť k RFID číslo kameňa • ako načítať herný plán a zásobník • akým postupom vyriešiť zadanie - výpočet podľa pravidiel logiky - výpočet heuristikou - diabolské sudoku
Párovanie – identifikácia kameňov 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 K prečítanému RFID sa priradí číslo stĺpca - kameňa
Skenovanie • • Skenovanie herného plánu Kontrola počtu kameňov
Príprava dátovej štruktúry 2 Číslo dosadené pomocou herného plánu do bunky nemá možných kandidátov 1 2 3 4 5 6 7 8 9 Prázdna bunka má všetkých možných kandidátov
Stratégia hľadania riešenia Výpočet podľa logiky hry Áno Prišlo ku zmene Vyriešené Pre neriešiteľné sudoku (chybným zadaním) sa objaví nápis „Chybné zadanie“. Pre ľahké až stredne ťažké sudoku postačí výpočet logikou. Heuristika Áno Výpočet veľmi obťažného sudoku s podporou heuristiky trvá menej ako 1, 8 sekundy.
Vyradenie kandidátov v Riadku(Stĺpci, Bloku) 2 1 8 4 5 6 7 4 5 6 7 9 9 9 3 Číslo Kandidáti
1. krok - test jedinečnosti v R/S/B 2 4 4 5 6 7 9 9 4 1 8 4 5 6 7 9 9 3 Číslo Kandidáti Kandidát v dátovej štruktúre ostáva ako príznak, že sa má kameň do bunky fyzicky uložiť.
2. krok - test jediného možného v R/S/B 2 4 5 6 7 9 9 9 1 8 5 6 7 9 9 3 Číslo Kandidáti Kandidát v dátovej štruktúre ostáva ako príznak, že sa má kameň do bunky fyzicky uložiť.
Skladanie kameňov Pri skladaní je TX prenos zablokovaný
Heuristika 2 15678 15 157 56 5678 3 4 9 156 4578 458 2 57 356 578 3 2 9 6 1 3568 1 9 7 9 2 58 3458 6 3458 7 4 58 2358 3569 35689 2358 1 358 8 9 6 345 7 135 6 2 4 135 7 2 57 156 9 8 357 4 23458 356 34568 23458 1 35 7 345 13458 358 1359 13589 1 9 6 45 458 7 2 3458 -záloha hráčskeho poľa - priechodom S/R sa vyberie bunka s najmenším počtom kandidátov 4/1=57 - dosadí sa prvý kandidát (5) a uskutoční sa výpočet pomocou pravidiel sudoku R 1/S 4 5 7
Heuristika – 2. krok 2 1678 3 5 16 15 157 4 9 8 2 57 3 6 56 568 9 7 4 3 58 2 1 3568 1 4 356 568 2 9 7 9 2 58 1 35 7 3458 6 3458 7 4 58 2 358 1 358 8 9 6 3 7 1 45 135 135 6 8 145 4 7 2 9 6 16 3569 5689 2 45 1359 159 478 48 9 2 3458 7 345 458 R 1/S 4 5 7 R 1/S 5 1 6
Heuristika – 3. krok 2 7 5 8 3 4 9 1 9 8 7 4 6 2 3 4 7 5 8 3 2 9 6 1 15 6 3 6 1 4 5 8 2 9 7 9 2 5 1 3 7 8 6 4 7 4 8 2 6 9 3 1 5 8 9 6 3 7 45 1 45 2 15 3 9 6 45 15 6 8 145 4 7 2 8 3 2 9 15 7 R 1/S 4 5 7 R 2/S 1 1 5 R 1/S 5 1 6
Heuristika – 4. krok 2 7 3 5 1 6 4 8 9 1 6 3 9 5 8 6 2 4 9 1 5 9 7 4 1 8 4 5 3 2 3 8 7 7 5 2 8 3 2 9 6 6 1 7 4 8 2 6 9 3 1 5 8 5 4 9 3 1 6 7 2 3 6 8 7 2 9 4 1 5 1 9 6 5 4 7 2 8 3 R 1/S 4 5 7 R 2/S 1 1 5 R 1/S 5 1 6 koniec
Skladanie kameňov Pri skladaní je TX prenos zablokovaný
Späť – upratanie kameňov 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 Kamene sa uložia do zásobníka
- Slides: 37