Sida 1 av 4

Gående robot

Postat: 19 januari 2009, 00:19:32
av strombom
Exprimenterar lite med att simulera en gående robot.

Jag har börjat på det här innan men då krånglade jag till det och började med 3D och alla finesser så jag blev aldrig klar. Nu gjorde jag en lite enklare approach så blev jag "klar" med grunderna på en helg :)

Första försöket:

Råkade ge honom lite för starka ben:

Fortfarande lite konstig men kom längre:

Nu hinner jag inte leka mer idag, men det här var skoj :)

Edit:
All kod ligger här: http://code.google.com/p/bipedwalker/

Re: Gående robot

Postat: 19 januari 2009, 00:49:58
av Andax
Shakin' Stevens? :D

Vad har du gjort simuleringen i?

Re: Gående robot

Postat: 19 januari 2009, 01:00:40
av Stolleman
En steppande humanoid är inte helt fel heller :wink:

Re: Gående robot

Postat: 19 januari 2009, 01:04:21
av Walle
Hmm, du måste ha kodat lite fel..det måste ha råkat smugit sig in ett C2H5OH där nånstans ;)

Hur gör man såna simuleringar? Det där ser ju riktigt roligt ut ju! :)

Re: Gående robot

Postat: 19 januari 2009, 07:57:01
av strombom
Hehe, ja han är lite skakis, han är väl lite nervös, första gången han är ute och går ju.

Jag använder box2d för fysiksimuleringen och cairo för att rita ut resultatet. Sedan använder jag ett neuralt nätverk med noder som innehåller tidskonstanter (CTRNN) som evolveras med NEAT: http://en.wikipedia.org/wiki/NeuroEvolu ... Topologies

Jag ska nog dela upp roboten i olika delar och träna dem var för sig. En kontroller för ett ben som instansieras två gånger och en kontroller för varje gång-läge, typ en för gång, stående, språng osv. Det är bara något jag ska testa, får se vad som händer, om jag kan få den att gå lite mer naturligt. Sedan ska den tränas i flera olika miljöer som lutningar och trappor, någon gång i framtiden :)

Slutmålet är att kunna göra styrning till den här:
http://iloapp.altronix.se/data/_gallery ... esized.png
men det lär väl ta några år :)

Re: Gående robot

Postat: 19 januari 2009, 10:18:35
av gunne
Borde du inte låsa knäna så att de inte kan böjas bakåt?

Re: Gående robot

Postat: 19 januari 2009, 10:19:17
av kifkroker
Intressant, jag använder flashporten av box2d till spel. Antar att det är revolute joints där du sätter motorspeed, men ger du input till varje "led" för sig, eller är dom beroende av varandra på något vis? Berätta gärna upplägget!

Re: Gående robot

Postat: 19 januari 2009, 11:24:11
av laban12
Test två är en bra simulering av hur jag ser ut på dansgolvet!! :D

Re: Gående robot

Postat: 19 januari 2009, 12:27:40
av strombom
gunne: jo, det går absolut. kanske ska låta den få armar också...

kifkroker: ja precis, revolute joints. just nu har jag satt en fast "torque" och använder endast "speed" som parameter, så jag har 4 parametrar, två knän och två höftleder. input till styrsystemet är "magens" position och vinkel samt vinkeln på alla leder. roboten "dör" om den kommer utanför de två kryssen, och den får mer poäng ju längre tid den överlever (eller om den skulle lyckas gå 4 meter, då avslutas körningen och den roboten vinner).

till de filmerna jag visade har jag kört 100 generationer och det är 100 robotar i populationen. så 9999 robotar har dött i varje experiment och 1 har överlevt. så jag kan tyvärr inte säga att inga robotar har kommit till skada under dessa experiment ;)

mycket ska ändras...

Re: Gående robot

Postat: 19 januari 2009, 13:00:12
av Andax
Vad är det som du har som ingångsvariabler? Typ en flagga "gå åt vänster" eller "gå åt höger" och sedan evolvera fram ett nät som gör detta?

Kan man tänka sig att man gör ett programmerat rörelsemönster där man använder neurala nätverket som en fintuning? På så vis kommer man ju snabbare fram i början av upplärningsprocessen.

Re: Gående robot

Postat: 19 januari 2009, 19:00:56
av strombom
den har faktiskt ingen sådan ingångsvariabel ;)
hamnar den utanför de två kryssen dör den helt enkelt...

när/om jag får den att gå bättre kan jag givetvis lägga till avancerade ingångsvariabler som kan styra den att gå fram/tillbaka, klättra, hoppa och vad man nu kan tänka sig, men ett steg i taget :)

jag ska nog inte lägga in några fördefinerade rörelsemönster, däremot funderar jag på en modulbasserad approach... jag tänkte göra en separat kontroller för att styra ett ben, som då kan styras av "huvudkontrollern". sedan kanske jag tränar sådana kontroller för flera olika scenarion, till exempel stå/gå/springa/sparka, sedan kan "huvudkontrollern" i framtidien själv välja vilken som är lämpligt med någon form av betéendebaserad kod.

jag tycker inte det känns rimligt att kunna evolvera hela roboten på en gång. det vore bra om man kunde separera så mycket som möjligt så att man kan träna upp de saker som behövs en i taget.

Re: Gående robot

Postat: 19 januari 2009, 19:37:36
av strombom
:doh:


Re: Gående robot

Postat: 19 januari 2009, 19:42:53
av laban12
Ser ut som att han måste ta av sig Michael Jackson dojjorna så han får lite bättre friktion mot golvet... ;)

Re: Gående robot

Postat: 19 januari 2009, 19:47:13
av MadModder
bambi? :lol:

Re: Gående robot

Postat: 19 januari 2009, 22:46:23
av Andax
Den verkar ju anpassa sig efter de fysikaliska egenskaperna uppsatta. Att den gör en power-slide istället för att gå innebär ju faktiskt att den är smart och utnyttjar faktumet att marken är hal! :)
Kanske lite högre friktion är mer realistisk ?!
Kan man inte ha någon typ av straffmetrik där man räknar fram någon typ av snitt-avvikelse (varians eller standardavvikelse) som en robot haft mot ett börvärde och sedan behålla de som har bäst (lägst) värden.

Hur gör du skapandet av nya kandidater?

Tycker det är hyperintressant med genetiska algoritmer och neurala nätverk. Kommer ihåg att vi gjorde ett försök att göra en othello-spelare baserad på gen-baserade neurala nätverk i en projektkurs när jag pluggade för länge sedan.
Det roliga var att en i projektet förlorade mot vår datorspelare när vi bara körde med de slumpmässiga startvärdena innan vi ens hade gjort någon upplärning alls!! :D Säger kanske mer om hans förmåga att spela othello!!