Hej
Det verkar intressant med IR-fyrar, bord kunna användas för att fastställa position och korrigera för felen som uppstår under dödräkning, ska lägga till det till listan
Mina minst sagt bristfälliga C-skills sätts nu på prov. Har en kompis som är vass på C, som får titta på koden. Jag har iaf fått ihop grundstommen till koden(en fin soppa av IF-satser som säkert kommer kollidera

)
Detta är vad jag har fått ihop hittils. Kartan i en matris, och programdelen som ritar upp "vågfronten". Code-tagsen är lite missvisande. Men i korthet:
Den går igenom matrisen(kartan) varje kolumn för sig, uppifrån och ned. Om rutan är tom(0), så kollar den grannrutorna. Den rutan som kontrolleras får ett värde 1 högre än närmsta ruta har. Om någon grannruta har nummer 255(robotens possition), och rutan själv får ett nummer, så är kartan färdigritad. Bara för roboten att gå mot rutan med lägsta numret.
Finns säkert en massa fel, ska fortsätta att testa koden(den kompilerar dock utan errors!)
Kod: Markera allt
int map[6][6]= {{1,1,1,1,1,1}, //0 = unoccupied, 1 = wall, 2 = goal, 255 = robot start
{1,2,0,0,0,1},
{1,0,0,0,0,1},
{1,0,0,0,0,1},
{1,0,0,0,255,1},
{1,1,1,1,1,1}};
Kod: Markera allt
int proxim;
int x = 1; //Set start, upper left
int y = 1; //corner
while(quit!=1) //mapping starts
{
if(map[x][y] = 0) //if square doesnt have number since before
{
if(map[x-1][y] <= 254)
{ //check left if not wall or robot startingpos
if(map[x-1][y] >= 2)
value = map[x-1][y]; //save number on the one on the left
}
else if(map[x-1][y] = 255) //check if robot startpos is close
proxim = 1;
if(map[x+1][y] <= 254)
{ //check left if not wall or robot startingpos
if(map[x+1][y] >= 2)
value = map[x-1][y]; //save number on the one on the left
}
else if(map[x+1][y] = 255) //check if robot startpos is close
proxim = 1;
if(map[x][y-1] <= 254)
{ //check left if not wall or robot startingpos
if(map[x][y-1] >= 2)
value = map[x-1][y]; //save number on the one on the left
}
else if(map[x][y-1] = 255) //check if robot startpos is close
proxim = 1;
if(map[x-1][y] <= 254)
{ //check left if not wall or robot startingpos
if(map[x][y+1] >= 2)
value = map[x][y+1]; //save number on the one on the left
}
else if(map[x-1][y] = 255) //check if robot startpos is close
proxim = 1;
if(value >= 3) //check if map coordinate is set
{
if(proxim =1)
quit = 1; //and if robot start pos is next
} //path found.
map[x][y] = value + 1;
if(y>=5);
{
y = 0;
x++;
}
if(y>=4)
y++;