Robotens syn
robotsyn
Stereoseende
Poängen med 2 ögon är ju som bekant att vi får ett djupseende, stereoseende. På så vis kan vi avgöra vilka föremål som är nära och vilka som är långt ifrån oss. Stereosynen och avståndsbedömningen är främst en finess som fungerar bra på korta avstånd, dvs ungefär lagom för att fungera utmärkt med våra händer. På längre avstånd avtar förmågan att bedöma djupet. Vi använder då istället vår kunskap om föremåls storlek - känslan - för att avgöra var föremål befinner sig djupledes.


Den rörelse vi människor gör med våra ögon för att fokusera på ett föremål kan man kalla konvergensrörelse. Denna mekanism hos människan är en optisk reflex som sker omedvetet. Ögonen justerar sig individuellt och tittar på samma objekt i samma punkt; det objekt vi vill fokusera på. I teorin behöver inte ögonen fokusera i samma punkt för att få nödvändig data för att se djup (se längre ner om att kalkylera djup med fixerade ögon). Men att ögonen fokuserar i samma punkt innebär att ögonen i princip ser samma bild vilket kraftigt förenklar bearbetningen av informationen.

ogonhallare En inte helt oviktig detalj här är att ögonen kan röra sig individuellt i sidled. Men i höjdled rör sig båda ögon, på en frisk människa, parallellt. Det är extremt svårt, för att inte säga omöjligt, att röra bara ett öga uppåt och låta det andra titta rakt fram. Men varför skulle ögonen kunna göra dessa rörelser? Det behövs inte till något. Vet vi detta kan man också skala bort en del matematik och mekanik, då båda ögon alltid rör sig parallellt upp eller ner.

Jag tänker mig att denna justering av ögonen (kameramodulerna) kan ske på 2 sätt. vektor exempel Exakt hur roboten ska få fram en vektor (1) för ett föremål den skall fokusera blir ett senare problem.

Man kan räkna på detta antingen med ren trigonometri eller linjär algebra som är mer begripbart och snyggare. Eller en kombination därutav.

Huvudet
Nu sitter ju som bekant ögonen på ett huvud med en nacke. Problemet är alltså lite mer komplicerat än att bara fokusera ögonen i en punkt.

Vad som är önskvärt är ett API i vilket man kan skicka in data om t.ex. vart roboten skall titta, matematisk modell av robotens huvuden koordinat i rummet (jag kallar detta fokusvektor, blå vektor i bilden till höger). Robotens leder skall sedan sköta sig själva på ett snyggt sätt. Dessutom, oberoende av detta, skall huvudet kunna uttrycka sig. Man skall alltså kunna ge direktiv av typen "titta i koordinat x,y,z", varpå det roboten ser där analyseras av högre funktioner. Om det finns skäl för roboten att bli förvånad skall den högre mjukvaran kunna instruera roboten att "kommunicera förvåning" på ett abstrakt sätt.

Med linjär algebra kan man enkelt skapa en trådmodell av huvudets leder. Man får då inte bara en mycket användbar modell av huvudet, det är också en barnlek att skapa grafik för att visa vad som händer i "maskinrummet". Matematiken bakom detta är rimligt kompakt och snabb och går lätt att stoppa in i de processorer som senare sitter i robotens huvud. Det är också enkelt att räkna ut vinklar mellan de olika vektorerna, vinklar som sedan blir indata i de servon som sitter i lederna på det riktiga bygget.

Jag har gjort lite expriment med detta, som man kan kalla för en social robot, som alltså kan uttrycka sig (till skillnad från t.ex. en industrirobot som har ett annat syfte).

Abstrakt kontroll
Om man lyckas skapa ovanstående API, en slags "robotens ryggmärg", så kan man sedan koncentrera sig på den roliga biten med detta robotprojekt; att komma underfund med hur man ska få denna maskin att intressera sig för vissa saker och hur dessa abstrakta signaler skall skapas. Hur man ska dra i trådarna för att skapa något mer fantastiskt än en skrothög med sladdar. Det blir dock ett senare problem.

Stereoseende med fixerade ögon
Lite kuriosa. Det är möjligt att skapa ett stereoseende utan ögon som konvergerar i samma punkt. Man kan tänka sig ett system med två helt fixerade ögon som tittar rakt fram. I en biologisk värld är det kanske svårt att fixera ögonen men på en robot är detta mycket enkelt. stereosyn

Stereosynen uppstår genom att det finns en visst avstånd mellan ögonen vilket ger två bilder från två olika positioner. Ett föremål kommer alltså synas på olika ställen i de två bilderna och genom att mäta avståndet i bilderna kan man räkna ut på vilket avstånd ett föremål befinner sig.