Säkerhetskopia av Delspec kartmodul.wbk

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.