ArduBot (6 / 8 steg)
Steg 6: fysik
Bots hela navigeringen sker genom PING sensorn. Denna information visas som en lång sträng av heltal. Det är på oss att använda vår kunskap om vår robot och mekanik som gör denna data relevanta.
En lätt ut skulle vara att bara skicka roboten fram förrän det närmade sig några minimalt säkert avstånd och sedan aktivera det tills avståndet framför den är större än minsafe och upprepa. Jag försökte att ha roligare med min arduino än detta :)
Om vi gör roboten snurra en cirkel och samla datapunkter från vår PING-funktion, kan vi använda dessa data för att representera planritningen av ett rum i Polära koordinater om vi kunde koppla en motsvarande vinkel.
Genom att mäta de vinkelformig hastigheten av en av de robotar center hjul, löser vi för det associerade meta multipliceras med omkrets och mängden tid hjulet snurra. Genom att relatera detta till båglängd kan vi lösa för förändring i vinkel (bild 1).
Ett enklare sätt, mer praktiskt sätt att göra detta vore för att mäta mängden gånger det tar roboten att göra en komplett sätt och insåg att dess vinkelformig hastighet (omega r) multiplicerat med förändring i tid är lika robotarna ändra i vinkel (bild 2).
Bara för skojs skull, kan vi konvertera dessa Polära koordinater till kartesiska koordinater (med användning av våra beräknade Thetavärden) av insåg som synd att den medföljande vinkeln är lika med x komponenten dividerat med avståndet från PING sensor (P1 och P2 på bild 3). Lös för x. Vi kan härleda ett värde för y samma med cosinus.
Att sätta allt ihop kan vi beräkna x- och y-koordinaterna för varje datapunkt fångas av PING sensor (bild 4). Kan börja med 120 poäng för en full avsöka.
Mitt problem är, när jag byta batterierna, roboten kommer att vända i olika takt. På samma sätt som batteriet dör kommer att roboten slå långsammare. Att göra den tid det tar för att göra en full 360 in i en global konstant gör det lättare att mäta och ange korrekt förseningen till programmet.
Är det möjligt för att övervaka nuvarande motorerna drar, men om du använder pulse bredd modulering på din motors, nuvarande kommer att gå i en våg.
Finns det något sätt att rita robotar var mer exakt genom att övervaka dessa data (ström, spänning etc)?