Så här ser den ut:


Jag har gjort den av material jag hade hemma. Hjulen är av 12 mm plyfa, ca 140 mm i diameter. Dessa är inte riktigt klara ännu då jag ska (hand)fräsa ut så att det blir ekrar på den (ritningen på ena hjulet ger en hint hur det kommer se ut) för att minska vikten samt limma någon typ av fönstertätningen så att det blir högre friktion mot golvet. Motorerna är på 120 rpm och körs på 12 V från ett 1500 mAh batteripack. Motorerna sitter i sin tur fast i 4 mm plexiglas och plexiglaset sitter fast med hjälp av L-aluminiumprofiler i 5 mm björkplywood. Styrsystemet är en Orangutan X2.
En video där jag provkör den finns här. Den kan nog avslöja varför jag kallar den för freespinner men jäklar vilken fart den får upp när den väl sätter igång och bestämmer sig för att åka framåt och inte bara spinna

Nästa steg är att ta mottagaren från min radiostyrda bil så att jag kan styra den. Sedan får jag nog jobba lite på ett antispinn-system. Ett gyro borde bara lämpligt att ha någonstans för att minska effekten till motorerna om roboten börjar spinna.

PS. Hunden klarade sig utan några skador!
2009-11-22
I teorin är det ganska lätt att läsa av en RC mottagaren. Mottagarens servoutgångar kopplar man in till Orangutanen, i mitt fall PD0 och PD1. En timer startas i bakgrunden med lagom hög upplösning (jag kör 315 kHz eller 3.2 us per tick). Ett interrupt känner av när PD0 eller PD1 går hög och markerar vad timer har för värde. När pinnen går låg igen görs en ny läsning av timern och skillnaden mellan de två timervärderna ger pulsbredden. Lätt som en pannkaka!

Inte!
Jag slet i ett par dagar för att få detta att fungera. Värden blev helskumma och ibland fick jag pulsbredd på 50 ms vilket naturligtvis är helt åt skogen (normal pulsbredd ska vara mellan 0.5 ms och 2 ms). Ett tag trodde jag att min sändare/mottagare var trasig men när jag kopplat in ett vanligt RC servo till mottagaren så funkade det alldeles utmärkt. En annan orsak trodde jag kunde vara dålig mottagning eftersom antennen går över motorchipsen men en flytt av antenn hjälpe inte. Jag använder en LCD för att få ut debugdata så jag trodde att den kunde kanske påverka läsningen och försökte med lite disable interrupts när jag skrev ut på LCD:en eller gjorde stora delayer men icke! Det ville sig inte alls!
Oerhört frustrerande då jag tyckte att koden såg rätt ut!

Till slut kom jag på det efter att läst databladet för 100:de gången! Jag hade använt fel interrupt! Istället för interrupt för PortD så använde jag portC. Saken är att LCD:n är kopplat till PortC och eftersom jag regelbundet skrev ut debugdata så ändrades pinnarna och det vara detta som jag mätte. Inte mottagaren. Efter att snabbt rättat till mitt misstag fungerade det! Ibland blir man väldigt trött på alla dessa detaljer

Här är en video där jag leker med den. Gyrot har jag ännu inte tagit tag i eftersom all tid gått till att lsösa problemet med mottagaren.
Hjulen som ni ser är klara (jag skippade min första idé med handfräsning utan borrade istället stora och små hål) och hela roboten är målad. Målningen av hjulen blir odck inte speciellt bra så jag funderar på att köpa lite hobbyfärg och måla med pensel istället för att spraya.
Vulktejp på hjulen var en bra idé så det kommer jag använda så fort jag hittar rullen.
2010-06-18
Så här blev den till slut (mottagaren är dock inte med i bild). Som jag skrivit nedan så blev det inget av gyrot. Jag hittade ingen lämplig algoritm. Kanske återkommer jag så småningom till den men tills vidare befinner sig projektet i högen avslutade.


Jag får ändå säga att jag är nöjd med resultatet trots missen med gyro. Fast det är klart, det har inte blivit så mycket åka av i praktiken.