keskiviikko 28. huhtikuuta 2010

Propeller-mikrokontrolleri

Kuten olen jo kertonut ( lojban-blogi ) olen alkanut kehittää tutkimusympäristöä käsitteellisen ajattelun, "alisymbolisen ajattelun" ja aistihavaintojen välisen suhteen luonteen selvittämiseski. Tutkimusympäristö on pieni, itsekseen liikkuva ja ympäristöään aistiva robotti. Homma jakaantuu selvästi kahteen erilliseen kehityskohteeseen:
1. Robotti, sen mekaniikka, elektroniikka ja ohjelmisto.
2. Pieni ARM-pohjainen linux-kortti, jossa toimii varsinainen "ajatteleva ohjelmisto".

Koska en halua kovasti panostaa kohtaan 1., valitsin kehityksen lähtökohdaksi mielestäni parhaan valmiin perustan tarjoavan, kohtuuhintaisen robotti-rakennussarjan: Parallaxin Stingray.

Mutta koska laitteisto on kiinnostava ja Stingrayn P8X32A, Propeller, mikro-ohjain hyvin poikkeuksellinen ja jopa edistyksellinen, lienee parasta kertoa lähemmin mistä on kysymys ja mitä olen oppinut. Stingray-robotti on "keskikokoinen" harrastelijarobotti. Pienimmät ovat nyrkinkokoisia (viivanseurantakoneita) ja suurimmat lastenvaunujen kokoisia. Stingray on n. 28x37cm ja 15cm korkea. Siinä on kahden DC-moottorin differentiaalikäyttö (kuten esim pölyimuriroboteissa), ei siis kääntyviä pyöriä kuten RC-autoissa (joita myös harkitsin pohjaksi). Ohjainkortti sisältää jänniteregulaattorit, kaksois-H-siltamoottorinohjaimen, sarja-EEPROM-muistin, USB-liitäntäpiirin (IDE-liitäntä), rinnakkais-IO-puskurit ja tietysti P8X32A-mikro-ohjaimen. DC-moottoreille on siis suoraan liittimet ja 24 bittiä digitaalista IO:ta mahdollistaa erilaisten antureiden (esim ultraääni-sonarit) ja toimilaitteiden (esim servot) melko ongelmattoman sähköisen liittämisen. Tarvittava ohjelmisto on oma tarinansa.

P8X32A-Propeller-mikro-ohjain sisältää kahdeksan 32-bittistä suoritinta ja 36 ktavua RAM-muistia, johon ohjelma ladataan, joko suoraan ulkoiselta USB-väylältä (UART-välivaiheen kautta), tai EEPROM-muistista. Kahdeksan suoritinta toimivat eräänalisessa symmetrisessä SMP-arkkitehtuurissa. Niillä on pieni oma muisti ja yhteinen isompi muisti. Keskinäinen kommunikointi tapahtuu yhteisen muistin, IO:n kautta tapahtuvan synkronoinnin ja semaforilogikan avulla. Tämä ei ole ihan helppoa sille, joka ei ole rinnakkaisajatteluun tottunut. Mutta opettavaista on!

Erikoista suorittimissa on, että niillä ei ole perinteisiä keskeytyksiä: jokaisessa suorittimessa voi toimia vain yksi taski, ohjelmasäie. Mutta ohjelman ei tarvitse pollata mitään, vaan asettua odottamaan jotakin tapahtumaa, ajanhetkeä tai IO-muutosta. Konsepti on outo, mutta toimiva: reaaliaikavaste on todella nopea, ja kahdeksalla suorittimella pääsee niin pitkälle kuin pienehköllä muistillakin: kokoonpano on melko tasapainoinen.

P8X32A-mikro-ohjainta voi ohjelmoida (päävaihtoehto) SPIN-skriptikielellä, assemblyllä tai C:llä. C-ympäristöä en ole kokeillut. SPIN-tulkki syö aika paljon suorittimien tehosta, mutta säästää muistia ja se merkitsee minulle. SPIN on olioperustainen, ei oikea olio-orientoitunut kieli: siis esim periytymistä ei tueta, mutta luokkia ja niiden instansseja kyllä.

Stingray-robotti, P8X32A-mikro-ohjain ja SPIN-ohjelmointikieli olisivat erinomainen tapa päästä alkuun ohjelmointi- ja robottiharrastelussa, oppia ja sisäistää heti alkuun kaksi hyvin tärkeää asiaa: olioajattelu ja rinnakkaisajattelu. Multicore-toteutukset ovat lähitulevaisuuden keskeinen haaste). Siis myös oppilaitoksiin ympäristö sopisi loistavasti. Mutta nopeiden, rinnakkaisten ajoitusten ohjelmointi ei ole helppoa ja minä totesin pian tarvitsevani apua. Simulaattori olisi kova juttu, mutta kun sellaista ei ole tarjolla, ostin 16-bittisen Zeroplus-logiikka-analysaattorin. Se on edullinen USB-liitännäinen, PC:tä käyttöliitäntänään käyttävä laatikko. Siitä on ollut merkittävä apu esim. moottoreiden PWM-ohjauksen ja ultraääni-sonarin ohjauksen toteutuksessa.

Näyttää nyt siltä, että minulla on melko pian projektisuunnitelman mukainen robotin "aivorunko", matelijanaivot tavoitteen mukaisessa kunnossa ja voin vielä hieman leikkiä esim toteuttamalla jonkinlaisen yksinkertaisen SLAM-algoritmin SPIN-kielellä ja siten hankkia kokemusta todellisen "alisymbolisen mallin" myöhäisempää toteuttamista varten.

lauantai 17. huhtikuuta 2010

Avaruusteknologian mielekkyys

Amerikan Yhdysvaltojen hötkyilevä avaruustutkimus herättää monissa ihmisissä tunteita. 60-luvulla käytiin kiihkeä, kustannuksissa tinkimätön kylmänsodanhenkinen kuukilpa. 70-80-luvuilla saatiin tuskan, hien ja ihmisuhrien kautta toteutetuksi teknisesti ontuva sukkulajärjestelmä, joka on palvellut kohtuullisesti, mutta suurin kustannuksin, kahta pahaa onnettomuutta lukuunottamatta. Taustalla on monta aloitettua lupaavaa seuraavan sukupolven järjestelmän kehitystä, jotka kaikki on kuitenkin aina hyllytetty hallitusten vaihtuessa. Nyt kun 40v takaista teknologiaa ollaan museoimassa, ilman että korvaavaa olisi kehitetty ajoissa, etsitään syyllistä. Kun Obama hyllytti kummallisen Constellation-hankkeen, monet tuntuvat syyttävän tilanteesta häntä.
Vastapainoksi miehitettyjen avaruuslentojen pysähtyneisyyden aikakaudelle, miehittämättömien planettaluotainten tasaisesti jatkuva edistys on tuottanut upeita tuloksia, hienoa ymmärrystä aurinkokunnastamme ja maailmankaikkeudesta laajemminkin.
Sekä EU:n että Venäjän avaruustoiminta on ollut melko matalaprofiilista, mutta miehittämättömien luotainten teknologia on molemmilla hiljalleen parantunut.

Miksi?

Miksi avaruusteknologia on tärkeää, eikä rahan tuhlausta? Jos et ole elämänarvoiltasi kyyninen, itsekeskeinen kvarttaalikapitalisti tai vastaava, vaan arvostat tietoisuutta itseisarvoisena ilmiönä maailmankaikkeudessa, silloin tietoisen elämän säilyttäminen kauas ennakoimattomaan tulevaisuuteen on sinulle myös itseisarvoista. Avaruusteknologialla on minulle kaksi tavoitetta:

1. Hankkia tärkeää tietoa maailmakaikkeuden olemuksesta, olosuhteista, joissa biologinen elämämme joutuu jatkossakin toimimaan.
2. Mahdollistaa joskus kauempana tulevaisuudessa tietoisen elämän jatkuminen muuallakin kuin maapallon pinnalla. Tietoisuus on arvokas ilmiö maailmankaikkeudessa ja paremmassa turvassa, jos se on levinnyt laajalle kaikkeuteen, myös toisiin aurinkokuntiin.

Miten?

Hötkyileminen on turhaa. Avaruusteknologian kehityksen on oltava erittäin pitkäjänteistä. Tärkeämpää on teknologian kehitys, kuin lyhytnäköiset näyttävät tempaukset. Constellation-projekti edusti viimeksimainittuja, siksi sen lopettaminen tuhlauksena oli terve aloite Obamalta. Tärkeää on kehittää teknologiaa, jonka avulla avaruusmatkailusta tulee kohtuuhintaista rutiinia. Kertakäyttöteknologiasta on päästävä eroon. Miehitetyt avaruuslennot voidaan edelleen pitää minimissään, kunnes maasta päästään ylös kiertoradalle merkittävästi nykyistä halvemmalla. Obaman ajatus ohjata seuraavaksi tämä toiminta yksityisille yrityksille on järkevä liike.

Hieman pidemmällä aikavälillä rakettitekniikasta keinona nousta maasta kiertoradalle on kokonaan luovuttava. Tilalle on otettava käyttöön avaruushissit. Mutta niitä joudutaan odottamaan vielä useita vuosikymmeniä, toivottavasti ei paljon yli 30v ajan. Ratkaisevana välitavoitteena on laadukkaan hiilinanoputken teollinen massavalmistus. Jos se on mahdollista esim. v.2030, niin ensimmäinen avaruushissi voi olla käytössä 10v tämän jälkeen, siis v.2040.

Miten kauemmaksi?

Maan kiertoradalle noustaan tulevaisuudessa siis hissillä, mutta miten lennetään aurinkokunnan sisällä planeetalta toiselle? Matkat kestävät pitkään ja miehistö on mm. alttiina painovoimattomuuden rappeuttavalle vaikutukselle ja avaruussäteilylle. Ratkaisu molempiin näihin ja muihinkin ongelmiin on suuren, jatkuvaan käyttöön tarkoitetun planeettaristelijän valmistaminen. On koottavava maan kiertoradalle suuri, valtamerilaivan kokoinen ristelilijä, jossa on pyörimisliikkeellä luotu keinopainovoima ja riittän paksut säteilyltä suojaavat seinät. Myös magneettista suojausta varautuneilta hiukkasilta voidaan käyttää. Tällainen risteilijä ei koskaan laskeudu mihinkään, ehkä pieniä kuita ja asteroideja lukuunottamatta, vaan laskeutumiseen käytetään aina hissejä tai pieniä sukkuloita. Aluksen käyttöikä voisi olla satoja vuosia, teknologiaa aina välillä parantaen. Alkuvaiheessa propulsiomenetelminä voisi olla yhdistelmä kemiallisia raketteja, ionopropulsiota ja aurinkopurjeita.

Todennäköisesti Obama ei tällä: "By 2025, we expect new spacecraft designed for long journeys to allow us to begin the first-ever crewed missions beyond the Moon into deep space." tarkoittanut ihan sitä kuin minä edellä (2025 on hieman liian aikaisin), mutta ehkä jotakin sinnepäin, ehkä uudelleenkäytettävää avaruusristelijää, joka ei laskeudu minnekään, vaikkakaan ei vielä valtamerilaivan kokoista. Ainakin tästä voisi niin päätellä: "What we're looking for is not just to continue on the same path; we want to leap into the future. We want major breakthroughs, a transformative agenda for NASA."

Muihin aurinkokuntiin?

Minun visiossani yksittäinen fyysinen ihminen ei koskaan poistu aurinkokunnasta. Näihin ylipitkiin, ehkä vuosituhansia kestäviin matkoihin käytetään robotiikkaa ja biologisena rahtina voi olla kryonisesti säilöttyjä alkioita tai vain sähköisesti tallennettua DNA-materiaalia. Ihmisyksilö voi osallistua matkaan "uploadina", digitaalisesti taltiotuna ihmismielenä.
Tärkeintä on, että tietoinen elämä, biologinen ja keinotekoinen, saadaan siirrettyä turvaan maapallon vaaroilta, sitten kun tehtävä on mahdollinen.

torstai 15. huhtikuuta 2010

Androidi avaruuteen

NASA lähettää viimeisellä sukkulalennolla Kansainväliselle Avaruusasemalle androidirobottiproton R2-robonautin (ei siis R2D2). Tarkoituksena on testata roboa oikeissa työolosuhteissa, painottomuudessa ja kosmiselle säteilylle herkistettynä. Robotti käy läpi testiohjelmia ja saa uusia HW- ja SW-päivityksiä testjaksojen kuluessa.
NASA on pyytänyt kolme miljardia 2011 alkavalle viisivuotisjaksolle androidirobottien kehittämiseen. Androidit tulevat keskuuteemme, avaruuteen ja maan pinnalle. Sukkula-aikakauden loppu on robonauttien aikakauden alku.
Tässä toinen vanhempi uutinen R2:sta.
Ja aivan varmasti robonauttikehitys vauhdittaa myös maanpäällisten androidien ja yleensäkin tekoälyn kehitystä. Hyvä juttu. Keep listening.