Sida 1 av 1

Positionering i rum

Postat: 13 november 2008, 00:19:49
av declint
Jag ska bygga mig en lite halvintelligent dammsugarrobot. För att inte missa områden och effektivisera dammsugandet vill jag kunna bestämma min position i rummet. Hur göra?

Jag har tidigare tänkt på ett system med iR-fyrar samt att man håller reda på hjulrotationer. Att mha vektoraddition räkna på hjulrörelserna kommer antagligen leda till ganska stora fel efter en stund. Att triangulera mha iR-fyrar är lite besvärligt eftersom man måste montera upp en massa fyrar med tillhörande kablar för ström.

Vad finns det för smidiga sätt att positionera sig inomhus?

Postat: 13 november 2008, 01:45:52
av psynoise
Mäta avstånd från vägg genom att roboten mäter körd sträcka, t.ex genom att räkna antal varv på hjulen. Man kan då definera en väg som ett hinder som inte går att köra runt med en viss marginal.

Postat: 13 november 2008, 08:28:51
av PeterH
Våra automattruckar på jobbet kör med roterande laser som reflekteras mot reflexer monterade på utvalda positioner i rummen, då behövs inte någon matning till "fyrarna"...

edit: förtydligande av laseranvändandet...

/PeterH

Postat: 13 november 2008, 08:36:17
av Earendil
Hehe, jag har funderat på precis samma projekt faktiskt 8) Kommer säkert aldrig att bli av att jag gör något med det, men håll oss uppdaterade! Jag tror att positionering skulle kunna ske med ultraljud. Triangulering med t.ex. 3 stycken ultraljudssändare, som alla skickar ut ett klockslag och en identitet. Med hjälp av detta kan dammsugaren räkna ut sin position om den själv vet vad klockan är och var sändarna är. Klockan kan skickas ut med t.ex. 433 MHz RF-länk eller kanske med IR så att sändare och dammsugare hålls uppdaterade.

http://www.hexamite.com/hx5b.htm har ett intressant system med bra beskrivning av problematiken, men de har nog inte löst det på exakt samma sätt. Noggrannheten och räckvidden verkar dock riktigt bra. Ett problem man måste hantera är reflektioner mot hårda material. Sådana reflektioner kan ju störa blippet som håller på att sändas. Dvs reflektionerna från ett visst blipp stör samma blipp innan det hunnit sändas färdigt. Den första databiten bör komma fram ostörd "fågelvägen" mellan sändare och mottagare, men reflektioner av den (som går en längre väg via t.ex. en betongvägg) kan störa senare databitar.

Intressant område!

Postat: 13 november 2008, 12:58:00
av Gimbal
En (resurskrävande) metod vore att ha en nedåtriktad kamera som fotar av golvet och jämför med en lagrad bild av hela golvet. Det kräver förstås att golvet inte är allt för enformigt, samt rejält med processorkraft och minne. En liten PC vore nog lämpligt. Det är nog också en hyffsad utmaning att fixa ihop programmet.

Postat: 13 november 2008, 13:05:35
av Micke_s
Gimbal: och städat. Varför inte göra som anoto och ha små prickar över hela golvet... använd UV färg t.ex.

Postat: 13 november 2008, 13:18:35
av Gimbal
Har lurat lite på en variant av ultraljudsfyrtekniken (till en gräsklippar-robot), mest för att komma runt ekoproblemet.

Jag tänkte mig att roboten tutar till en kort puls, samtliga fyrar detekterar pulsen och startar en timer. Alla fyrar har olika långa timertider, tex 0.2s för fyr ett, 0.4s för fyr två osv. Medans timern tickar dör ekona ut och roboten slår dövörat till.

Sedan tutar fyr ett tillbaka, roboten plockar upp ljudet och har givetvis mätt tiden från sin startsignal samt drar ifrån fyr etts timertid (dvs 0.2s). Ekona dör ut, fyr två tutar till. osv.

På så vis behöver inga komplicerade pulståg föras över, man behöver bara detektera ett ljud, efterföljande ekon struntar man i.

Postat: 13 november 2008, 14:19:52
av blueint
Radiofyrar med detektion via fasförskjutning.

Postat: 13 november 2008, 14:34:51
av Earendil
Det kan nog fungera. Det finns ett trick man kan använda för att kalibrera för ljudhastigheten också; först räknar roboten ut ett värde på avståndet till varje ljudfyr. Avståndet kommer ju inte stämma perfekt eftersom ljudhastigheten varierar med lufttryck, temperatur etc. Sedan beräknar roboten en sfär runt varje ljudfyr. Dessa tre sfärer ska ju skära varandra perfekt i en punkt, annars har man fel värde på ljudhastigheten. På så vis kan man räkna om sfärerna iterativt med nya ljudhastigheter ända tills de skär varandra perfekt. Då har man exakt rätt position och ljudhastighet.

Detta kräver ju lite matematik förstås, men det ska inte vara något problem i en modern mikrokontroller. Denna teknik används om jag förstått det rätt i GPS.

Postat: 14 november 2008, 08:34:02
av Nerre
Men så behöver man väl inte krångla om man triangulerar? Det är ju samma ljudhastighet för alla fyrarna, så om man räknar relativt istället för absolut så blir det väl rätt ändå?

Fast å andra sidan blir väl en relativ beräkning ungefär samma sak (fast det låter mindre krångligt än att räkna ut en sfär:-).

Postat: 14 november 2008, 10:07:23
av Earendil
Men triangulering ger ju bara ett förhållande mellan avstånden. Då kan du inte räkna ut höjden! För övrigt tror jag det krävs att de tre sändarna bildar ett plan som är parallellt med golvet för att det ska fungera.

Postat: 14 november 2008, 10:36:29
av Nerre
Höjden brukar inte vara så intressant för en dammsugare, den brukar hålla sig i ett plan, även kallat "golv".

Men det är klart, ska den klarar av att dammsuga i trappor också kan det ju behövas:-)

Postat: 14 november 2008, 12:41:35
av v-g
Enklast är väl randomkörning vilket de flesta kör med. Sen har man ett "kantkörningsprogram" för att ta runt väggarna. Det är väldigt invecklat att få till positionering.

Smartast isf är att göra ett kordinatsystem som är kanske 10x10 där man sätter X där man varit på ett ungefär. Men vad det ska hjälpa vet jag inte då randomkörning ändå är bättre.

Vi har en (värdelös) robotsugare som man kan hindra att åka nerför trappor mha en IR-fyr. Tyvärr har vi mattor, kablar trösklar osv så att dammsuga är helt enkelt omöjligt för en robot som inte är väldigt intelligent.

Postat: 15 november 2008, 16:16:11
av Glycol
Kolla på leksaksroboten Rovio.

Rovio.se

Den navigerar med hjälp av en stjärnhimmel om man nu kan kalla det så.
Det är iallafall en IR projektor som producerar ett mönster i taket som roboten navigerar efter. Funkar bra så länge den kan se taket. Altså inte under möbler osv. Men så fort den kan se taket igen kan den orientera sig igen. Tekniken heter Northstar. Den är utvecklad av evolution robotics. Evolutionrobotics.com

En idé är ju att ha något liknande. Och programvara i roboten som gör att så länge den inte kan se taket kör den bara random och undviker hinder. På detta sätt kan man programmera en rutt den skall följa. Jag meckade med detta för många år sedan. Det var dock på en större robot. Bestyckad med laptop.

Du kan även kolla på lite olika dammsugarrobotar på youtube så får man lite idér om hur man skall göra för att inte fasta i sladdar och mattfransar osv.