Kartmodul Övergripande Kartmodulen hanterar, som namnet antyder, information om kartan och närmsta väg till destinationen. Kartinfo består av tre olika färgkoder som har olika kostnader (grön, blå och röd). Närmsta väg till destination baseras på Dijkstras algoritm som för varje punkt (pixel) i en kartbild räknar ut totalkostnad och riktning till destinationen. Modulen skall vid förfrågan leverera information om vilken riktning i grader som roboten skall förflytta sig. Frågemeddelandet innehåller information om beräknad pixelposition (x-,y-koordinater). Modulen får in denna förfrågan via CAN-bussen. Utöver CAN-kommunikation kommer modulen att kommunicera med PC via UART (kabel eller via radiomodem). Kartuppdateringar kan hanteras via denna länk och styrning av Robot kanaliseras via denna länk. I detta fall vidarebefordras CANmeddelanden från datorn (PC). Prestanda Modulen är dimensionerad för att minnesmässigt hantera 16 delkartor (84*42 pixlar), där varje delkarta lagras i två versioner (en för varje färdriktning). Så länge man inte kör Dijkstra algoritmen lokalt i PIC-processorn har man inte några prestanda problem förutom ovan nämnda minnesbegränsning. Arbetsmässigt har processorn som mest att göra ism kartöverföring från dator/PC. Elektriskt interface Busspecifikation CAN-gränssnitt (enligt separat specifikation) används för kommunikation med övriga enheter. Insignaler för motordrivningsdelen, CAN meddelanden MOTORSTYRNING samt KROCK Samtliga signaler deklareras som unsigned då inga negativa koordinater eller vinklar är tillåtna. MOTORSTYRNING (2 Byte) MSB Dator LSB Hastighet Vänster IR HK L/R X Hastighet Höger X F/B-V F/B-H 2 Byte (2 char), första byten i meddelandet visas överst i meddelandetabellen. Meddelanden skickas inte med en fast frekvens utan skickas vid förändring, som ny riktning/hastighet. Drivkortet följer senaste ordern tills en ny ges. X = Don’t care Dator - biten indikerar att meddelandet kom från FM-modulen på kartkortet = ”Datorgränssnittet”. IR – biten indikerar att meddelandet kom ifrån sensorkortet. HK – biten indikerar att meddelandet kom ifrån huvudkortet. L/R – biten indikerar om meddelandet innebär en ”lock” respektive ”release” av modulen, se förklaring nedan. Beskrivning av de övre fyra bitarna av den andra byten i Motorstyrningsmeddelandet. Bitarna innebär en prioritetshantering enligt följande, (högst prio. = 1): 1. 1001 Datorn tar över motorstyrningen och låser kortet så att alla meddelanden med lägre prioritet ignoreras. 1000 Datorn låser upp modulen och öppnar den för meddelanden av lägre prioritet. 2. 0101 Sensorkortet tar över styrningen av roboten och försöker att docka den under IR-fyren. Kortet är låst för meddelanden av lägre prioritet. Meddelande från datorn kan dock fortfarande ta över modulen. 0100 Roboten har dockat och sensorkortet låser upp modulen för medelanden av lägre prioritet. 3. 001X Meddelanden från HK kan inte låsa modulen och de har lägst prioritet. Detta är ”normal” syntax för meddelanden vid gång mellan IR-fyrar. Vid kollision så skickas CAN-meddelandet KROCK som innehåller 0 Byte. Endast CAN ID avkodas. Meddelandet skickas från sensorkortet till alla moduler. Vid kollision så bromsas motorerna ner snabbt till stillastående. Drivkortet inväntar sen ny order. Signaler till och från positionsdelen, CAN meddelanden KARTBYTE (insignal) samt BERÄKNAD POSITION (utsignal) Samtliga signaler deklareras som unsigned då inga negativa koordinater eller vinklar är tillåtna. KARTBYTE (5 Byte) MSB D7-X D7-Y D15-V D7-V X D6-X D6-Y D14-V D6-V X D5-X D5-Y D13-V D5-V X D4-X D4-Y D12-V D4-V X D3-X D3-Y D11-V D3-V X D2-X D2-Y D10-V D2-V X D1-X D1-Y D9-V D1-V X LSB D0-X D0-Y D8-V D0-V X 5 Byte (2 char, 1 int samt 1 char), första byten i meddelandet visas överst i tabellen. Meddelandet skickas från HK till drivkortet samt kartmodulen. Uppdatering sker vid dockning i gateway. Den sista byten (char) i meddelandet anger kartbyte och ignoreras av drivkortet. X samt Y (char) anges i pixlar (30*30 cm), drivkortet omvandlar pixelns mittpunkt till cm precision för vidare beräkning. Vinkeln (int) anges i grader och är utläst med hjälp av kompass. BERÄKNAD POSITION (6 Byte) MSB D15-X D7-X D15-Y D7-Y D15-V D7-V D14-X D6-X D14-Y D6-Y D14-V D6-V D13-X D5-X D13-Y D5-Y D13-V D5-V D12-X D4-X D12-Y D4-Y D12-V D4-V D11-X D3-X D11-Y D3-Y D11-V D3-V D10-X D2-X D10-Y D2-Y D10-V D2-V D9-X D1-X D9-Y D1-Y D9-V D1-V LSB D8-X D0-X D8-Y D0-Y D8-V D0-V 6 Byte (3 int), första byten i meddelandet visas överst i tabellen. Meddelandet skickas till HK samt till Datorn via FM-modulen. Uppdatering sker var 500:e millisekund, detta säkerställer att roboten max. hinner förflytta sig en pixel. Beräkningar sker med cm precision och koordinater levereras i cm. Vinkeln levereras i grader.