KITtyBot

From MakersLink
Jump to navigation Jump to search


Information
Namn KITtyBot
Syfte En liten gående fyrbent robot med Arduino och 9 g R/C-servon
Kontaktpersoner Staffan Ek
Önskas hjälp? Ja tack! Vore kul att utveckla roboten till att navigera autonomt med mera


Introduktion

Jag har gjort en liten gående robot med Arduino (i detta fall en Pro Mini) som styr tolv R/C-servon. De hinder jag med någorlunda framgång lyckats passera är att programmera inverterad kinematik (varje fot kan styras i tre dimensioner), få till en fungerande spänningsmatning och kunna styra roboten med en IR-kontroll. Jag har även kört den med en liten joystick för att ge analoga signaler. Den kan gå och svänga, med andra styras dit man vill om man har lite tålamod med att gående robot är långsam.

Projektmål

Målet från början är att få till en fungerande plattform till rimligt pris. I grundutförande går roboten att styra med en enkel fjärrkontroll men den skall givetvis vara möjlig att modifiera och bygga ut för att bli mer "kompetent". Även om roboten tas fram som rent hobby-projekt inom vårt Makerspace kan jag inte låta bli att lägga in ingenjörsmässiga aspekter som styckepris och att få fram en unik robot som med egenskaper som kanske inte finns på marknaden idag, vare sig som byggsatser eller projekt på olika Maker-sidor. Byggsatser på robotar med motsvarande teknisk nivå ligger någonstans runt $150 så att komma ned till under 1500 kronor är en målsättning. Det är även en målsättning att det jag använder som inte är specialkonstruerat skall kunna gå att få tag på i svensk detaljhandel eller postorder.

Genom att utnyttja en billig Arduino (Pro Mini) och det faktum att den utan några fler extrakort kan styra upp till tolv servon går elektronikpriset ned. Alla delar går att 3D-printa på vår Ultimaker men skulle man göra riktigt serietillverkning är det formsprutade plastdelar för några tior. Jag utvecklade ett eget mönsterkort som jag lät tillverka hos Fritzings Fab Lab i Tyskland (en juste gest tyckte jag då jag gjorde hela designen i deras programvara). Det kostar ungefär 250 kronor för tre kort. En större serie producerad längre österut skulle också få ned styckepriset för korten till några tior styck.

Det ligger dessutom några fler utmaningar i den konfiguration jag valde. Den går som ett däggdjur med benen nedåt i stället för insektslikt med benen utåt och kroppen låg som de flesta hobby-robotar ser ut. Det är större risk för instabilitet och kräver mer vad gäller utformning av olika gångarter men det har varit en del av projektet att övervinna dessa hinder. Billiga R/C-servon har sina begränsningar men även här låg det en utmaning i att få roboten att fungera med dessa. Med större servon eller rentav smarta servon hade det säkert på ett sätt varit enklare men med en helt annan budget.

En annan mer personlig målsättning ligger i min kompetensutveckling som ingenjör. Jag skaffar mig kunskaper inom områden som jag normalt inte jobbar med men ofta berörs av. Jag jobbar med systemteknik på hårdvarusidan (den riktigt hårda att dimensionera hydraulik- och andra fluidsystem). Jag har alltid haft ett tätt samarbete med de som tar fram elektronisk hårdvara och mjukvara och är övertygad om att detta projekt ger mig värdefulla kunskaper i att förstå olika delar av komplex systemutveckling.

Hårdvara

1 stArduino Pro Mini

12 st Servo SG-90

1 st 5V/3A spänningsmatning (UBEC)

1 st 7,4V/500 mAh (25C) LiPo-ackumulator

1 st Fjärrkontroll (Finns att köpa annars kan det vara en utmaning att använda en begagnad)

1 st IR-sensor TSOP38238

2 st motstånd, 1k och 2.2k (för batteriövervakning, 7,4 V spänningen måste delas för att kunna mätas av Arduino)


Så långt kostar hårdvara runt 1000 kronor (m.nu utom batteriet som kan köpas i en välsorterad R/C-hobbyaffär). Om man direktimporterar blir det ännu billigare.

Sedan tillkommer det man behöver göra själv:

1 st mönsterkort (de första versionerna byggdes på bread board men jag har konstruerat mönsterkort)

Plastdelar till kropp och ben (går 3D-skriva)

Diverse kopplingsmaterial som batterikontakter, koppligstråd, stift- och hylslister tillkommer. Man har det kanske hemma annars finns det att köpa (m.nu, Kjell &Co osv)

Hur långt har jag kommit och vad återstår?

Jag jobbar fortfarande med lite plastdetaljer. Jag lär mig sakta att "konstruera för tillverkning" när det gäller 3D-skrivare och ta hänsyn till PLA-plastens egenskaper. Jag är rätt nöjd med mina algoritmer för att kunna gå. Jag har även kunnat styra den analogt med en liten joystick. Denna är kopplad med kabel till Arduinon. Denna förbindelse går göra trådlös men just nu lägger jag ingen energi på detta.

Jag håller även på att konstruera ett eget styrkort. Genom att helt enkelt utnyttja ett Atmega-chip så kan jag göra min egen "Arduino" och på så vis spara både plats och pengar. En del funktioner som alltid finns kommer jag att ha (inbyggd diod för pinne 13, reset-knapp och FTDI-uttag som på Pro Mini). Det finns planer på ett mönsterkort och jag provar just nu ut själva idén på breadborard.

Nästa steg är att lägga ut både 3D-filer (eventuellt färdiga Cura-slajsningar), mönsterkortfiler och koden för den IR-styrda roboten men jag har liite saker jag vill göra först. :)

Man skulle kunna tänka sig lite utveckling av konceptet. Jag har lite ideer.

Hinderundvikande

Om en UL-sensor placeras fram får roboten "syn" (min femårige son är är bekymrad om att roboten inte har något huvud och har redan plockat upp en liggande sensor ur min låda och visat mig hur jag skall göra). Det är egentligen inte särskilt svårt, jag har själv fuskat i området med en liten hjulgående robot. Det blir dock inte riktigt lika häftigt eftersom denna robot knallar framåt i ganska maklig takt. Nästa steg är någon form av datorseende men den får nog komma som en liten egen rubrik längre ned.

Styra från mobil

Kan man köra Bluetooth över mobil? Klart man kan men just nu har jag ingen aning om hur. Det finns färdiga lösningar från till exempel Adafruit (kort till Arduino och app till Android/iPhone) men jag tror att jag förbrukat de flesta pinnar just nu till mina servon. Kanske finns det andra lösningar. Antingen frigör man I/O på min Arduino med ett dedikerat servo-kort eller så kanske man har en en liten till billig mikroprocessor som sköter Blåtandskommunikation och skickar kommandon med någon slags protokoll (det märks att mina egna kunskaper är grunda nu). Någon av flera lösningar borde vara billig men ändå förlita sig på komponenter som går handla relativt enkelt (svensk detaljhandel/postorder har lite varit min egen begränsning).

"Känsel"

UL-sensor ger roboten "syn" (i strikt mening "hörsel" med ultraljud används för att upptäcka hinder). Kan man tänka sig att den ges annan känsel? Kan man koppla accelerometrar och gyron så att den känner att den tippar (och kan förskjuta kroppen för att kompensera). Och använda kompassmodul för att roboten skall veta vart näsan pekar? Kan man dessutom förse fötterna med känsel så att man vet om de har kontakt med underlaget? Svaret är givetvis ja på alla frågorna, det är nog bara fråga om hur dyrt det blir att införa (finns det I/O:s, behöver man mer beräkningskraft och så vidare). Målet borde vara att få en robot som klara lite ojämnheter i underlaget och kan kliva över mindre hinder (centimeter-höga) och ändå hålla balansen.

Kraftfullare plattform

Med nuvarande Arduino-koncept, Atmega 328P oavsett om det är en Pro Mini eller eget kort, har jag nästan slut på I/O-pinnar. Tillgängligt minne börjar också bli en bristvara. Det går byta till ett Arduino Mega. Eller så går man hela vägen och använder sig av enkortsdator, till exempel Raspberry Pi. Med en sådan kan man troligtvis använda en kamera och koppla upp sig wi-fi. Andra av de utvecklingsförslagen som föreslås ovan blir lättare att implementera med mer datakraft. Frågan är hur detaljerna ser ut. Kan nuvarande kort styra servon och få sina order från en kraftfullare processor som sköter det andra (navigera, kommunicera)?

Länkar

Jag har lagt ut lite filmer på Youtube. Där kan man se lite olika varianter roboten som jag lagt ut under ett drygt års tid.

Jag publicerar lite om mina robotar på Let's Make Robots