Kort verslag van de bijeenkomst op 5 december 2015
De volgende onderwerpen kwamen aan bod:
- Theo had wat mededelingen:
- HCC!programmeren gaat op zijn bijeenkomsten ook een plenaire sessie invoeren. Zie voor verdere informatie de website van HCC!programmeren.
- Daarnaast zijn er plannen voor een samengaan van HCC!basic met HCC!programmeren (dat zelf al ontstaan is uit een fusie van HCC!pascal en HCC!c). Dit is weer een belangrijke stap in de richting van één interessegroep voor HCC'ers die geïnteresseerd zijn in het zelf schrijven van software. Hopelijk komt er hiermee een interessante uitwisseling van ideeën tussen de gebruikers van de verschillende talen op gang. Om toch de nodige structuur aan te brengen worden er mogelijk verschillende werkgroepen in het leven geroepen. Daarbij wordt momenteel gedacht aan taalgeoriënteerde werkgroepen, om het eigen karakter van de diverse programmeertalen tot uiting te laten komen; maar waarom zouden er in de toekomst ook geen toepassingsgeoriënteerde werkgroepen kunnen ontstaan, zoals computer graphics of misschien zelfs artificial intelligence?
- Er is nu een "uitgeklede versie" van de Raspberry Pi, zonder netwerkmogelijkheden: de Raspberry Pi Zero. Het goede nieuws is dat de verkoopprijs slechts 5 dollar is. Het slechte nieuws is dat hij momenteel moeilijk te krijgen is, bijna overal is hij al uitverkocht.
- Tenslotte maakte Theo ons attent op twee lezingen die onlangs door Hans Verbeek (van HCC!opensource en hobbynet) zijn gehouden: een lezing voor de regiobijeenkomst in Amersfoort over het inrichten van de Raspberry Pi als media center; en een lezing op HCC!opensource bijeenkomst over het gebruik van een (Android) smartphone als barcodescanner, waarbij een Arduino microcontrollerbordje de communicatie met de computer mogelijk maakt.
- Abraham vertelde dat hij weer een belangrijke stap heeft gezet bij zijn poging om de Intel 4004 nieuw leven in te blazen. Dit was in 1971 de allereerste (4-bit!) microprocessor op één chip. In april had hij al gerapporteerd dat hij een minimaal programmaatje had kunnen draaien; maar om iets echt interessants te kunnen doen moet de 4004-chip van inputkanalen worden voorzien. Nu is het zo, dat elke ROM-chip (Read-Only Memory) uit die tijd 4 i/o-pinnetjes had, die bij het branden van de chip elk afzonderlijk hard (d.w.z., definitief) werden geconfigureerd als hetzij input, hetzij output. Abraham had een lieve som geïnvesteerd in een tiental van die ROM-chips, en zowaar: er zat er één bij waar alle vier pinnetjes als ingang waren geconfigureerd. Abraham liet zien dat het systeem werkte: door handmatig op elk van die vier pinnetjes achtereenvolgens een draadje te zetten, werd in een rijtje van 4 LEDjes telkens een andere LED uitgeschakeld. Abraham hoopt, op deze manier voortgaand, uiteindelijk met die 4004-chip een rijdend robotje te kunnen besturen. Wij zijn dan ook zeer benieuwd naar de verdere ontwikkelingen.
- Jan kwam met een interessante en goed voorbereide uitleg van het robotkarretje MOOF ("Moving Object On Floor"), waarmee hij vorige maand aan de Roboramawedstrijden had deelgenomen.
- Eerst kwam de hardware aan de orde; gedeeltelijk een recapitulatie van de informatie die Jan op eerdere plenaire sessies (6 december 2014 en 7 maart 2015) verstrekte. MOOF is gemaakt van LEGO Technics®, dat in Jans eigen woorden "mooier dan het Meccano uit zijn jeugd" is. Het betreft een schroefloos systeem, met structurele onderdelen (balken en tussenstukken), motoren met ingebouwde vertraging, en een besturingskastje. Dit laatste bevat een ARM-processor voor het rekenwerk en een Admel microcontroller voor de in- en uitvoer. Met dit "robotbrein" kunnen drie motoren worden aangestuurd en 4 transduceringangen (sensoren) worden uitgelezen.
Een schroefloos systeem heeft het voordeel dat je makkelijk prototypes in elkaar kunt knutselen en aanpassingen maken, maar erg robuust is het natuurlijk niet. Daarom heeft Jan diverse aanpassingen aangebracht: grotere wielen, stalen assen in de motoren, en extra steunlagers. Bovendien is het geheel met schroeven verstevigd. Hierdoor is alles strak tegen elkaar gemonteerd; een mogelijk nadeel daarvan is natuurlijk dat de maatvoering niet meer klopt.
Vanzelfsprekend vormen ook de sensoren een onmisbaar onderdeel van de hardware. Jan maakt gebruik van twee afstandssensoren; hij heeft deze heel slim gemonteerd op de grijparmen die MOOF nodig heeft om blikjes te verplaatsen. Hierdoor zijn ook de afstandssensoren beperkt "richtbaar" — beperkt, omdat de grijparmen niet onafhankelijk van elkaar, en bovendien slechts over een beperkte hoek kunnen bewegen. Behalve "afstandsgevoel" heeft MOOF ook richtinggevoel, door een "geweldige goede" kompas-chip van een externe fabrikant, die volgens Jan superieur is aan de door LEGO zelf geleverde richtingssensor.
- Daarna gaf Jan ons een inkijkje in de software van MOOF. Hij programmeert MOOF in LabView, een grafische programmeeromgeving waarmee het schrijven van programma's eerder een visuele dan een tekstuele creatieve aktiviteit is. LabView wordt in de industrie en wetenschap vooral voor procesbesturing gebruikt; Gerard vertelde dat hij er tijdens zijn natuurkundestudie in Utrecht mee had kennisgemaakt. Door ons stukken van zijn eigen programmering van MOOF te laten zien, gaf Jan ook een goed beeld van de mogelijkheden (en beperkingen) van LabView.
Zowel de software om LEGO-robots te programmeren als het leerzame instructieboek The Art of LEGO MINDSTORMS NXT-G Programming zijn gewoon vanaf het Internet te downloaden; maar wie daadwerkelijk met dit speelgoed aan de gang wil zal toch moeten investeren in een doos met LEGO® hardware …
- Gerard vestigde de aandacht op een artikel in de NRC van 30 juli over het Figurative Tour Problem. In dit probleem moet een plaatje met grijswaarden zo goed mogelijk benaderd worden door een doorgaande lijn te tekenen langs een bepaald aantal roosterpunten. (Roosterpunten zijn de punten waar de lijnen van een vel ruitjespapier elkaar snijden; d.w.z. de hoekpunten van de vierkantjes.) Elk volgend roosterpunt dat door de lijn wordt bezocht moet hetzij een koningszet, hetzij een paardesprong verwijderd zijn van het vorige. Verdere voorwaarden zijn dat elk roosterpunt precies eenmaal moet worden bezocht, en dat de lijn uiteindelijk weer op zijn beginpunt moet uitkomen. Door deze laatste constraints doet het Figurative Tour Problem natuurlijk sterk denken aan het Traveling Salesman Problem, zodat Gerard zich afvroeg of ook het Figurative Tour Problem misschien een goede toepassing zou kunnen zijn voor een genetisch algoritme.
- Verder vertelde Gerard bezig te zijn met de programmeertechniek backtracking. Om zijn programma's te testen en te vergelijken gebruikte hij o.a. de volgende twee relatief simpele problemen:
- Een tromino-puzzeltje. Op onze bijeenkomsten is al vaak aandacht besteed aan problemen waarbij tetromino's (stukjes van 4 aan elkaar grenzende vierkantjes) of pentomino's (hetzelfde idee, maar dan met 5 vierkantjes) in een rechthoek moeten worden gelegd. Daarbij moet de rechthoek natuurlijk precies worden gevuld, d.w.z. de stukjes mogen elkaar niet overlappen en ze mogen niet buiten de rechthoek uitsteken. Deze puzzels zijn nog vrij complex: de pentominopuzzel bevat 12 stukjes, en de tetrominopuzzel 10 (elk van de 5 verschillende tetromino's tweemaal). De tromino (3 aan elkaar grenzende vierkantjes) kent slechts twee verschillende vormen; we gebruiken twee exemplaren van elk, dus vier stukjes, om een 3×4-rechthoek te vullen. Dit geval is goed met de hand uit te werken, maar toch nog complex genoeg om interessant te blijven: er zijn 5 unieke oplossingen; als je draaiingen en spiegelingen van een oplossing ook meetelt zijn het er 16; en wie vindt dat een verwisseling van twee identieke stukjes ook als een aparte oplossing geldt, zou er 64 moeten vinden.
- Het waterkruikenprobleem, een van de problemen die in het boek Artificial Intelligence (2nd ed.) van Elaine Rich en Kevin Knight worden gebruikt om de AI-aanpak te illustreren. Het luidt als volgt: je hebt twee kruiken, één met een inhoud van 4 liter en één van 3 liter. Verder is er een waterkraan en een putje om de kruiken in te legen. De kruiken hebben geen maatstreepjes. Hoe kun je precies twee liter water in de 4-literkruik krijgen?
Gerard liet twee oplossingen zien, en meldde dat zijn programma er twaalf vond. Dit grote aantal verbaasde hem aanvankelijk, totdat hij er achter kwam dat de andere tien oplossingen "inefficiënte" versies waren van de twee die hij zelf had gevonden. Ook vermeldde hij nog zonder bewijs dat dit soort problemen in het algemeen een oplossing had als de volumes van de kruiken relatief priem zijn, dus als hun grootste gemene deler 1 is.
Wegens het verwachte "heerlijk avondje" werd er wat vroeger begonnen met opruimen dan normaal.
(GV 16 december 2015)
Kort verslag van de bijeenkomst op 7 november 2015
Gelijktijdig met onze bijeenkomst in De Dissel waren in een andere zaal van het gebouw de Roborama-wedstrijden van de HCC Robotica interessegroep aan de gang. Natuurlijk moesten wij daar regelmatig een kijkje nemen, onder andere om te zien hoe Jan Blok het met zijn Lego®-karretje MOOF er van af bracht. Jan heeft zijn ervaringen, met de wijze lessen die er uit te leren zijn, op schrift gesteld; zijn verslag vindt u hieronder. In de tijd die overschoot voor onze eigen bijeenkomst kwamen nog de volgende onderwerpen aan bod:
- Peter houdt zich tussen de bijeenkomsten regelmatig bezig met het enthousiast naspeuren van interessante nieuwe informatie op AI- en roboticagebied op het Internet. Ditmaal maakte hij ons attent op een applet die de mogelijkheden van deep learning illustreert. Het gaat daarbij om een soort verre verwant van onze java-muis: een cirkelvormig beestje, dat zich rondbeweegt in een tweedimensionale rechthoekige ruimte met zowel voedsel als vergif — ook allebei voorgesteld door cirkeltjes. Maar "de evolutie" heeft duidelijk niet stilgestaan, er zijn vele belangrijke verschillen:
- De deep learning applet is geschreven in de scripttaal JavaScript, die nog voluit door de hedendaagse browsers wordt ondersteund; terwijl de programmeertaal Java algemeen wordt beschouwd als onveilig, zodat je ergens diep in je browser-instellingen moet duiken om permissie te geven voor het draaien van onze muis-applet.
- Onze muis had slechts twee (cirkelvormige) planten om uit te kiezen, terwijl het deep-learning beestje (dat op de betreffende webpagina met de neutrale, maar ook weinig tot de verbeelding sprekende naam agent wordt aangeduid) meerdere voedsel- en vergifbronnen in zijn omgeving heeft.
- Een mogelijk verwarrend verschil is de kleurcodering: voor onze muis betekent groen veilig (dus voedsel) en rood gevaar (dus vergif); voor de deep-learning agent is het voedsel (appeltjes) juist rood, en het vergif – inderdaad – gifgroen.
- De deep-learning agent eet zijn voedsel en vergif daadwerkelijk op (ze verdwijnen van het scherm), terwijl de planten van onze muis feitelijk onaangetast blijven — je zou kunnen zeggen dat hij er slechts aan knabbelt (of likt). De leefruimte van de deep-learning agent wordt dan ook regelmatig aangevuld met nieuwe voedsel- en vergifbronnen. Zijn omgeving is dus veel dynamischer.
- Onze muis heeft twee ogen, waarvan de blikvelden van 60° elkaar slechts gedeeltelijk overlappen. Dit geeft het visuele systeem zijn richtingsgevoeligheid. De deep-learning agent heeft negen ogen, die elk precies één zeer bepaalde richting uitkijken (d.w.z., elk oog heeft een infinitesimaal blikveld). Het totale blikveld van alle ogen samen beslaat zo'n 120°.
- Onze muis kan in principe oneindig ver kijken; de afstandsgevoeligheid van zijn visuele systeem ontstaat doordat een verre plant kleiner lijkt en dus minder groen of rood licht het oog in kaatst. De deep-learning agent heeft slechts een zeer beperkt gezichtsbereik: voorbij een bepaalde afstand wordt simpelweg niets waargenomen.
- Onze muis ziet alleen de planten, en stuitert dus ook lustig tegen de muren van zijn "wereld" aan. De deep-learning agent neemt alles waar dat zich binnen gezichtsafstand bevindt, ook de muren. Behalve voedsel zoeken en vergif vermijden, leert hij dus ook steeds beter om niet telkens zijn hoofd te stoten. Dit gedrag is duidelijk zichtbaar (en wordt ook sneller aangeleerd) doordat de muren niet alleen aanwezig zijn om zijn leefwereld af te bakenen; ook binnen die leefwereld bevinden zich obstakelmuren.
- En natuurlijk is het zenuwstelsel van de deep-learning agent een stuk complexer dan dat van onze javamuis. Het blijft echter reinforcement learning met behulp van een neuraal netwerk.
- Ben vroeg onze aandacht voor het Atmel ATmega328P Xplained Mini microcontrollerbordje, dat voor een zeer schappelijke prijs te koop is. Ben vond het voor €15,37; voor dat geld heb je programmer, debugger, board en chip, alles bij elkaar! De handleiding staat gewoon online; en er is ook een reeks van 28 instructiefilmpjes op YouTube te vinden. Mogelijke nadelen voor de absolute beginner zijn dat kennis van de programmeertaal C en microcontrollers wel een beetje aanwezig moet zijn. En alles gaat in het Engels. Als dat problemen geeft is het misschien nuttig om het boek Microcontrollers en de taal C in PDF-vorm te downloaden. In dit zeer helder geschreven boek, dat niet meer in de handel is, wordt alles vanaf het begin uitgelegd en opgebouwd. Het boek gaat wel over een iets andere microcontroller (de atmega32), en de leercurve is behoorlijk steil, maar Ben beveelt het van harte aan: "Pure klasse, dit boek!"
- Henk liet zien dat hij, door zijn Sudoku-programma te wijzigen, een programma had gemaakt waarmee hij Tectonic-puzzels (uit de gratis treinkrant "Metro") kan oplossen. Bij deze demonstratie bleek dat het programma niet alle eenduidig in te vullen vakjes vond voordat het aan het backtracken sloeg: Gerard wees op een redenering die blijkbaar niet in het programma verwerkt zit. Gelukkig is de backtrack-aanpak voldoende algemeen om (mits goed geïmplementeerd) alle mogelijke oplossingen te vinden — en zijn de Tectonic-puzzels klein genoeg om niet alle efficiency-winst uit de kast te hoeven trekken.
- Tot slot informeerde Ben nog bij Jan naar een formele definitie van de "transputer-taal" Occam, waarin hij hoopt terug te vinden hoe transputers precies samenwerken. Hij vermoedt namelijk dat deze principes misschien ook kunnen worden toegepast op microcontrollers.
De onderstaande foto is gemaakt op de Roborama-wedstrijd: op de grond in het midden de "arena", begrensd door lage schotjes; daaromheen het publiek en de deelnemers. Helemaal vooraan een werktafel waarop de deelnemers hun robots kunnen stallen, en eventueel nog last-minute wijzigingen aanbrengen. De scheidsrechter staat enthousiast te gebaren; helemaal links is nog net de beamer te zien die allerlei relevante informatie op een scherm projecteerde.
(GV/BH 3 december 2015)
Verslag Robot Rijden, door een deelnemer van deze groep.
In het algemeen wordt autorijden als een intelligente bezigheid ervaren. Dit betekent dat, als een computer de besturing overneemt, dit ook als intelligent wordt ervaren. Meer dan dat zelfs; want wat kan men nu immers van een computer in dit geval verwachten? Nou, redelijk veel, want er zijn inmiddels nogal wat bedrijven die computergestuurde auto's op de weg hebben rijden. En voorzover ik heb kunnen vinden is er nog geen enkel ongeluk, zelfs in de stad, veroorzaakt. Dit mogen we dus wel kunstmatige intelligentie noemen.
We houden ons in deze groep ook bezig met kunstmatige intelligentie en zelfs ook met zelfsturende rijdende constructies. Sommigen noemen dit robots. En hoe is de status hiervan? Worden al die fabrikanten al een beetje jaloers? Daar is helaas nog weinig reden voor. Dit is te begrijpen want die bedrijven beschikken over veel kennis, mensen en niet te vergeten, geld. Dit in tegenstelling tot het Artificiele Intelligentie groepje van de HCC.
Nu is er recent een wedstrijd in het autonoom laten rijden van constructies geweest, uitgaande van de HCC Robotica interessegroep; en daar hebben we ook aan meegedaan. Dat wil zeggen, met een robot. En hoe ging dat?
Kijk, je kunt alle schuld aan van alles geven maar de werkelijkheid is hard: alles is eigen schuld. Er is veel te weinig rekening gehouden met drie hoofdwetten van Murphy te weten:
- Alles wat fout kan gaan zal dat zeker doen;
- Alles is moeilijker dan je denkt;
- Alles duurt langer dan je denkt.
Er is gereden met een robot die gebouwd is met LEGO Technics®. Wel flink aangepast hier en daar met stalen assen en boutjes en zelfs een strip lood. En nog wat dingetjes die de ware Lego fan doen gruwen. Aan de robot lag het niet dat er het een en ander fout ging. Aan andere dingen des te meer. Laten we de opgaven eens doorlopen.
In de eerste plaats was er lijnvolgen. Dat doet het ding uitstekend maar er waren juist voor de rit nieuwe batterijen ingezet. Dan reageert de kar aanzienlijk feller dan wanneer de stroom uit reeds gebruikte maar zeker niet lege batterijen komt. Het resultaat was dat op de kruising de kar stopte. En nog iets, de scheidsrechter plaatste het blik waar de kar omheen moest, op de terugweg. Nog juist op tijd realiseerde ik me dat het programma gemaakt was voor obstakel op de heenweg. Snel het programma aangepast voor geen obstakel maar ja, de kar faalde al eerder, dus geen punten gehaald.
Volgende was T rijden. Wat dit betekent, zie de reglementen. Dat dit mislukte was de schuld van de scheidsrechter. Ik kreeg niet de gelegenheid behoorlijk te meten waar de doorgang tussen de blikken zat. Resultaat: blik omvergereden. Weer mislukking dus. Maar wel een paar schamele punten gekregen. Volgende: Heen en weer. Gedaan in de op een na eenvoudigste moeilijkheidsgraad. En jawel, ging goed!
En dan de grote uitdaging. Blikken vangen. Tijdens de voorbereiding bleek al snel dat de software niet kon doen wat ik wilde en een nieuwe strategie bedenken lukte niet. Dus er maar van afgezien hieraan mee te doen. Al met al dus weinig om trots op te zijn maar het was leerzaam en best leuk, ook om te zien hoe de andere deelnemers het eraf brachten. Denk niet dat het daar allemaal vlekkeloos ging.
Wat nu: wel eerst zorgen voor meer tijd dus nu al beginnen voor de wedstrijd van volgend jaar. En hard werken want de wetten van Murphy zijn natuurwetten dus ook de komende tijd geldig. Erger nog, de wellicht belangrijkste wet is niet gememoreerd: "Als je denkt dat alles goed gaat heb je iets over het hoofd gezien wat helemaal fout ging". Dat is niet zo erg als je tegen de jaarwisseling dit ontdekt want dan is er nog gelegenheid genoeg om nog eens flink aan de slag te gaan. Volgend jaar weer een wedstrijd waarvoor geldt: "Meedoen is belangrijker dan winnen". Hoewel . . . . Jan Blok.
(JB 3 december 2015)
Kort verslag van de bijeenkomst op 3 oktober 2015
Zoals gewoonlijk was de bijeenkomst weer goed gevuld met activiteiten, verslagen en discussies:
- Jan was druk doende zijn Lego®-karretje MOOF klaar te stomen voor de Roborama-wedstrijden van volgende maand. Aansluitend op de afgelopen CompUfair had hij echter zijn Transputer-systeem klaargezet voor Gerard om er voorafgaand aan de plenaire bijeenkomst mee te spelen. Gerard heeft hiervan dankbaar gebruik gemaakt, en er nog wat verder mee geëxperimenteerd — voor zover zijn andere activiteiten hiervoor tijd overlieten. Gerard liet doorschemeren dat hij voldoende geboeid was door de Transputers om er voorlopig aandacht aan te blijven besteden; we zullen vanzelf merken of dit interessante resultaten gaat opleveren.
- Eveneens voorafgaand aan het plenaire gedeelte heeft Theo op verzoek van Gerard curses voor Python op de oude (Windows®98) Laptop geïnstalleerd. En ook al bleek dat nog niet feilloos te werken (met name het uitlezen van het toetsenbord leverde problemen op), toch ziet het er naar uit dat Gerard in de toekomst bij zijn presentaties hier veel plezier van zal gaan hebben.
- In het komend voorjaar (april tot juli 2016) zullen Robotica en AI het seizoensthema van de HCC gaan vormen. Peter kwam met een pertinente vraag: hoe gaat onze interessegroep daaraan bijdragen? We waren het er wel over eens dat onze invalshoek vooral is: "Hoe werkt het?", en dat we ons niet al te veel moeten laten meeslepen in discussies over de filosofische implicaties. Ben merkte op dat de ontwikkelingen al ver gevorderd zijn, bijv. in auto's en domotica ("huisautomatisering"). Interessante vragen zijn dan ook wat er op dit gebied momenteel allemaal gebeurt, en waar dat toe kan leiden. Peter noemde in dit verband de toepassing van gezichtsherkenning (op camerabeelden), en Ben voegde daaraan Internet-zoekmachines (zoals Google) toe, en vroeg zich af wat die allemaal terugkoppelen van ons zoekgedrag.
Terug naar het seizoensthema: dit krijgt voor een belangrijk deel gestalte d.m.v. artikelen in PC-Active en lezingen op de regiobijeenkomsten. Gerard vermoedde dat onze mogelijkheid om (informatie voor) artikelen bij te dragen aan PC-Active waarschijnlijk beperkt is, omdat het redactiebeleid voor dit blad bepaalt hoeveel ruimte er beschikbaar is en wat de onderwerpen moeten zijn. Op de lezingen kunnen wij misschien wat meer invloed uitoefenen. Het seizoensthema en onze activiteiten daarvoor zullen op de komende bijeenkomsten een vast agendapunt worden; suggesties en opmerkingen over dit onderwerp zijn natuurlijk altijd welkom bij het bestuur van de AI interessegroep.
- Gerard deelde mee dat hij nu ook een exemplaar van het boek "Wij zijn ons brein" van Dick Swaab had weten te bemachtigen. Peter merkte op dat Swaab klaarblijkelijk onbekend was met het begrip embodied intelligence: het idee dat een brein, om een geest (mind) te kunnen "huisvesten", verbonden moet zijn met een lichaam.
- Henk liet zien dat zijn BASIC-programma de oplossingen van de tetrominopuzzel nu ook in de vorm van een "lijntekening" (wit op zwart) kon laten zien. Voorheen deed hij dat met kleuren: elk stuk kreeg een afzondelijke kleur, en de kleurovergangen markeerden de grenzen van de puzzelstukjes. De nieuwe weergave lijkt sterk op wat Gerard met ASCII-karakters deed (en Abraham op het LED-displaybord), maar ziet er nog wat gelikter uit. Henk stipte aan dat deze "lijntekening" natuurlijk ook weer in te kleuren was.
- Ook wilde Henk nog weer eens aandacht vestigen op het idee van de "opgebouwde wereld". Dat deed hij aan de hand van de omslagillustratie van Andrew Tanenbaums boek Gestructureerde computerarchitectuur (5e editie), waarin de computer wordt beschreven als "een hiërarchie van niveaus met duidelijk afgebakende functies". Het plaatje op de kaft beeldt dat idee op een toegankelijke en humoristische manier af, door een computer te vergelijken met een gebouw van 5 verdiepingen. Henk stelde dat er twee dingen aan konden worden toegevoegd: een penthouse dat recursie verbeeldt (in de speciale betekenis van een interpreter die zichzelf aanroept), met daarbovenop een vlag die de "vrije wil" symboliseert. Dit in overeenstemming met de gedachten die in Henks artikel over de vrije wil worden uiteengezet. Henk deelde tevens maar weer eens mee dat hij reacties op dit artikel nog steeds zeer op prijs zou stellen.
- Ben deelde mee dat hij erin geslaagd is zijn robotkarretje Madeleine via een seriële (RS-232) verbinding met een PC te laten communiceren. De communicatie blijkt goed genoeg om een LED-lichtje op de robot aan te zetten. Voor zo'n verbinding zijn twee programma's nodig, één op het besturingsbordje van Madeleine, en één op de PC. Die laatste bleek hij nog op de plank te hebben liggen: een terminalprogramma geschreven in Visual Prolog, met drivers die hij indertijd had geschreven voor het "balancerende bezemsteelproject" waar hij samen met Abraham aan gewerkt heeft. Deze software heeft enkele voordelen: de Windows-buffer kan worden geïnspecteerd, en het werkt met een sign-on: de robot moet zijn naam doorgeven. Dit laatste maakt het mogelijk meerdere robots tegelijk aan te sturen: het programma is object-georiënteerd, en elke ingelogde robot wordt dus een object. De volgende stap die Ben wil zetten is de communicatie draadloos te laten verlopen, via bluetooth. Verder meldde Ben dat hij nog bezig is met het maken van een webpagina over deze onderwerpen.
- Het laatste gedeelte van de bijeenkomst werd gevuld door Gerard. Hij vertelde dat hij onder Linux gebruik maakt van curses, een (in theorie) hardware-onafhankelijke reeks functies om een terminal(venster) aan te sturen. Dit biedt de mogelijkheid tot een karakterscherm-gebruikersinterface, die het midden houdt tussen een spartaanse command-line-interface en een bewerkelijke grafische user interface (GUI). Henk maakt in zijn QBasic-programma's ook gebruik van zo'n interface.
Vervolgens vertelde Gerard dat hij er met behulp van curses in geslaagd is om diverse BASIC-programma's uit het boek "Kunstmatige Intelligentie op uw computer" van John Krutch redelijk getrouw naar Python te vertalen. Eén daarvan is het programma TF, dat zoekt naar een patroon in een reeks van ingetoetste T's en F's, en tracht daaruit de volgende ingave te voorspellen. Daarna probeerde Gerard duidelijk te maken dat er verbanden bestaan tussen TF en Steen-Schaar-Papier. Door het voorlezen van een stukje van E.A.Poe (geciteerd in een boekje over speltheorie) liet hij zien dat dit soort spelletjes, wanneer beide spelers mensen zijn, aardig wat dubbele bodems kan herbergen. En tenslotte legde hij uit dat wanneer we een TF-programma tegen zichzelf laten spelen, dit veel weg zal hebben van het taalexperiment, waar hij vroeger samen met Patrick aan begonnen was, maar dat nooit was afgemaakt. Met behulp van dit experiment wou hij onderzoeken of er een grammatica kan ontstaan in communicatie die nergens over gaat.
Gerard stelde dat het voor deze activiteiten (en vele andere) handig zou zijn om te beschikken over een serverprogramma, dat computers in staat stelt om in contact te treden met elkaar en met mensen. Hij was er nog niet uit of het beter is om zoiets zelf te schrijven, of dat hij toch beter op het Internet op zoek kan gaan naar iets dat zijn behoeften zo dicht mogelijk benadert.
Er is dus genoeg activiteit gaande om de volgende bijeenkomst weer met verwachting tegemoet te zien.
(GV 11 oktober 2015)
HCC!AI op de MegaCompuFair van 26 september 2015
Ook in 2015 waren we weer aanwezig om ons te presenteren aan de leden van HCC CompUsers en andere geïnteresseerden. Daarnaast hebben we ook onze contacten met "verwante" interessegroepen, zoals HCC Programmeren, HCC Forth, HCC Robotica en HCC Retro onderhouden en verstevigd. Op de onderstaande foto, gemaakt door Abraham, staat Gerard links aan een bezoeker te demonstreren dat de tetromino-puzzel ook met de hand kan worden opgelost, terwijl rechts Jan met een andere bezoeker verdiept is in de hard- en software van zijn transputer-systeem.
Ook Gerard heeft (met Jans hulp) wat zitten experimenteren met de bij het transputer-systeem meegeleverde standaardprogrammaatjes. Omdat Linux een communicatieprobleem had met de beamer, hebben we het spel "Steen-Schaar-Papier" helaas niet kunnen demonstreren. Bovendien was ook de speciale door Abraham vervaardigde gebruikersinterface voor dit spel niet aanwezig, zodat het twijfelachtig is of een demonstratie veel belangstelling zou hebben getrokken. Ondanks dit dompertje was het weer een goed bestede dag, waarop we zoals gewoonlijk het nuttige met het aangename hebben weten te verenigen. We willen dan ook de mensen van HCC CompUsers wederom van harte bedanken voor de genoten gastvrijheid, en complimenteren met de voortreffelijke organisatie!
(GV 5 oktober 2015)
Kort verslag van de bijeenkomst op 5 september 2015
Ook in de zomervakantie hebben de bezigheden niet stil gelegen:
- Ben vertelde de laatste maanden te hebben gewerkt aan een rijdend robotje; hij had het meegenomen. Een mooi stukje werk, vooral omdat hij aan het karwei was begonnen zonder enige kennis van mechanica, elektronica, en de programmeertaal C. Op de volgende foto toont hij de onderzijde van de robot (die hij Madeleine heeft gedoopt), met twee wielen, elk aangedreven door een eigen motor, en een draaibare kogel als derde steunpunt. Ben bekende dat deze kogel wat stroef liep door de wrijving die het gewicht van het karretje veroorzaakte.
Op de onderstaande foto is de rest van de robot te zien, met op de "tussenverdieping" de elektrische voeding. Deze bestaat uit twee gedeelten: de motoren krijgen ongeveer 4.5 volt, en het Olimex besturingsbordje, dat zich helemaal bovenaan bevindt, 9.6 volt.
Ben heeft veel tijd besteed om het bordje via een RS-232-poort met een computer te laten communiceren; naar het bleek een vooralsnog nutteloze bezigheid, want de microprocessor had weinig te vertellen zolang hij nog niet geprogrammeerd was... Er staat nu een C-programmaatje op dat de robot eerst een stukje vooruit laat rijden, en dan weer achteruit. Ben beraadt zich over de volgende stap. Hij dacht zelf aan de invoering van PWM (Pulse Width Modulation) om de motoren met verschillende snelheden te kunnen laten draaien. Abraham suggereerde een alternatief: als de robot via ZigBee met een laptop kan communiceren, zou Ben kunnen gaan programmeren in Visual Prolog, een taal die hij uitstekend beheerst.
- Jan meldde dat hij zijn webpagina over transputers geheel had herzien en inhoudelijk bijgewerkt. Daarbij was de informatie over zijn Lego®-karretje MOOF gesneuveld; Gerard merkte op dat daardoor een aantal links naar Jans website in oudere bijeenkomstverslagen betekenisloos waren geworden, en vroeg Jan om op zijn website toch weer plaats voor dat karretje in te ruimen.
- Titus was aan het werk geweest met OpenGL, een library voor 3D-Graphics, die hij aanroept vanuit FreeBasic. Op Theo's computer liet hij zien dat je met textures, een soort "behang" dat je op afgebeelde 3-dimensionale vormen kunt plakken, mooie en interessante effecten kunt bereiken.
- Het laatste onderdeel van de bijeenkomst was een uitgebreide discussie. Jan had in de krant een bespreking gelezen van het boek "Superintelligentie" van Nick Bostrom. Hierin bekijkt de schrijver waartoe de ontwikkelingen in Artificiële Intelligentie en robotica kunnen leiden; met name besteedt hij aandacht aan de vraag of en wanneer dit zou kunnen resulteren in een bovenmenselijke intelligentie, en of een zo ontstane intelligentie de mensheid kan overvleugelen, overheersen, of uitroeien.
Jan vroeg zich af hoe de mens ooit overheerst zou kunnen worden door computers. Dat hoeven we toch niet toe te laten? We kunnen altijd de stekker er uit trekken. Ed merkte op dat "nee" zeggen op individueel niveau niet werkt: het zijn de bedrijven en de organisaties die de beslissingen nemen. Gerard zag de suprematie van computers wel als een reële mogelijkheid: eerst via mensen (denk aan het leger en de "veiligheids"-diensten), die computers en robots gebruiken om andere mensen te controleren, te beheersen, of te doden; waarna die mensen zelf ook de controle over deze hulpmiddelen verliezen.
Deze discussie kwam natuurlijk niet tot een eensluidende slotsom; Jan gaf te kennen dat hij het boek van Bostrom in ieder geval zou kopen en lezen. We verwachten dus nog wel een vervolg van deze discussie.
Door deze discussie kwam er één onderwerp niet aan bod: een voortgangsrapportage van het steen-schaar-papierproject van Gerard. Hij dacht op de MegaCompUfair wel met iets simpels te kunnen komen; en verdere ontwikkelingen komen ongetwijfeld op toekomstige AI-bijeenkomsten aan bod.
(GV 19 maart 2015)
Kort verslag van de bijeenkomst op 4 juli 2015
Op deze laatste bijeenkomst voor de vakantie passeerden nog enkele interessante onderwerpen de revue:
- In het kader van het begrip "de opgebouwde wereld", dat een belangrijke rol speelt in zijn artikel over de vrije wil, had Henk een belangwekkend boek meegebracht. Het betreft een mooie uitgave van "De Rerum Natura" ("Over de natuur van de dingen"), waarin telkens op de linkerbladzijde de oorspronkelijke Latijnse tekst, en op de rechterbladzijde de Nederlandse vertaling is afgedrukt. "De Rerum Natura" is een zgn. leerdicht van de Romein Lucretius, waarin in dichtvorm de filosofie van de Griek Epicurus wordt uiteengezet, die op zijn beurt voor zijn fysische onderbouwing weer teruggrijpt op de atoomtheorie van Democritos — vandaar het verband met "de opgebouwde wereld".
- Peter vestigde de aandacht op twee artikelen in het tijdschrift Scientific American Mind van april/mei 2015. In een van deze artikelen, geschreven door Nicholas Humphrey, wordt getracht om de bittere pil dat het bewustzijn een illusie zou kunnen zijn, te verzachten door het bewustzijn te vergelijken met kunst. En in het andere artikel, de vaste column van Christof Koch met de titel Consciousness Redux, wordt beschreven dat recent onderzoek m.b.v. hersenscans aan het licht heeft gebracht dat de intuïtie van experts, verkregen door jarenlange training, vermoedelijk gelegen is in een hersengebiedje dat de nucleus caudatus wordt genoemd.
- Verder gaf Peter een korte samenvatting van de bespreking die voorafgaand aan de plenaire sessie in de kantine had plaatsgevonden. Er is namelijk besloten dat in de maanden april t/m juli 2016 Robotica en AI het "seizoensthema" van de HCC zullen zijn. Dat betekent dat er in het aprilnummer van PC-Active een aantal artikelen over dit onderwerp zullen verschijnen, en dat er een presentatie zal worden samengesteld, die in die periode op bijeenkomsten in het hele land door vrijwilligers zal worden gegeven. In het overleg, waarbij naast bestuursleden van AI en Robotica ook Guido Hulscher van het HCC verenigingsbureau aanwezig was, werd bekeken hoe e.e.a. vorm gegeven kan worden, wat onze interessegroepen hieraan kunnen bijdragen, en wat we anderzijds kunnen doen om van "ons kwartiertje in het spotlicht" te profiteren (b.v. in de vorm van ledenaanwas).
- Evenals 4 jaar geleden (wat vliegt de tijd!) heeft Kees aandacht besteed aan de verkiezingen van de Eerste Kamer door de leden van de Provinciale Staten. Omdat er sinds 2011 geen lijstverbindingen meer mogelijk zijn, moest er meer aandacht worden besteed aan onderhandelingen. Kees heeft met zijn programma op basis van een genetisch algoritme de mogelijkheden voor de diverse partijen om door uitruil van stemmen restzetels te bemachtigen onderzocht. Daaruit kwam dat er geen kansen lagen voor Kees' eigen partij, maar dat met name de combinatie CU/SGP een zetel had kunnen winnen. In de feitelijke onderhandelingen bleek de uitruil die plaatsvond tussen deze partijen echter niet groot genoeg om die winst daadwerkelijk binnen te slepen.
- Gerard had voor het computergestuurde orgeltje van de Forth interessegroep een korte compositie (ca. 1'15") geschreven, die zich geheel afspeelt binnen de slechts 16 tonen die het orgeltje kan voortbrengen, maar elk van die tonen ook minstens éénmaal gebruikt. Omdat hij het stukje met enige moeite met één hand op de piano kan spelen, heeft hij het The One-armed Bandit genoemd. Daarnaast had hij een presentatie gemaakt om de ontstaansgeschiedenis en de opbouw van het stukje vóór de première (op 13 juni j.l.) uiteen te zetten. Deze presentatie heeft hij nu ook "voor eigen publiek" laten zien. Daarbij besteedde hij ook nog enige aandacht aan de vormgeving van de presentatie, in de programmeertaal Scratch.
- Daarna liet Gerard nog een tweede presentatie zien, waarin hij aan de hand van een simulatie (weer in Scratch!) een mier over het scherm liet bewegen. Hij liet eerst zien hoe alle bewegingen expliciet door commando's kunnen worden bestuurd — een methode die in de robotica veelvuldig wordt toegepast om specifieke taken te volvoeren. Deze aanpak contrasteerde hij met een methode waarin de bewegingen van de mier een random (willekeurige) component bevatten. Gerard betoogde dat de mier door de tweede werkwijze een veel natuurlijker overkomend gedrag vertoonde. De mier liep zich niet permanent vast in een hoek, scheen wat te twijfelen over zijn acties, en leek soms actief op zoek naar een uitweg uit het rechthoekige scherm waarin hij opgesloten zat. Gerard wees er op dat deze doelbewustheid (of zelfs intelligentie?) uitsluitend in de interpretatie van de toeschouwers was gelegen (het Eliza-effect); maar dat zou evengoed ook voor het gedrag van echte mieren kunnen gelden...
Ook deze (korte) lezing was eerder voor de Forth i.g. gehouden.
(GV 13 juli 2015)
Kort verslag van de bijeenkomst op 6 juni 2015
Er werd op deze bijeenkomst veel tijd besteed aan discussie, en weinig aan het laten zien van de vorderingen die de aanwezigen met hun werkzaamheden hadden geboekt.
- Het eerste gespreksonderwerp was weer de poging om tot een verdergaande samenwerking met de Robotica interessegroep te komen. Peter had op het Internet flink wat researchwerk verricht, en aan diverse mensen een groot ZIP-bestand toegemaild, met daarin o.m.:
- Informatie over kant-en-klare Raspberry-Pi-robots met camera die momenteel te koop zijn.
- Een inter-aktief Python tutorial.
- Een artikel over computer vision geprogrammeerd in Python.
- Informatie over het programmeren van Lego® Mindstorms® in Python.
Helaas konden niet alle ontvangers de ZIP-file lezen. Peter beloofde een nieuwe poging te wagen door er enkele grote bestanden uit te halen en te vervangen door www-links. Naar aanleiding van Peters input merkte Ed op dat een programmeertaal (in dit geval Python) voor hem slechts een "vehikel" was, geen doel op zich.
Het vervolg van de discussie bracht nogmaals aan het licht dat we nog geen overeenstemming hebben over wat we nu eigenlijk willen. Ed benadrukte dat er geen specifieke vraag (naar een of meer onderwerpen) vanuit de leden van de Robotica-groep is; het is aan ons om met een idee te komen en dat in de vorm van een concreet aanbod te gieten. Op dit moment doet nog niemand binnen Robotica iets met AI, het is alles conventionele regeltechniek wat de klok slaat; terwijl juist in de robotica mogelijkheden moeten liggen voor het toepassen van AI-technieken. Een voorstel van Gerard om aan een humanoïde robot te gaan werken werd als te ambitieus van de hand gewezen. Uiteindelijk begon het idee om iets te gaan doen met de lerende muis enige vaste vorm aan te nemen. Ed had deze nog niet in werking gezien, maar het idee leek hem wel aan te spreken. Een poging om de muis nog even op het scherm te laten zien, strandde op dit moment, omdat de recente browser-versies Java-applets als een veiligheidsrisico zien, en het tonen daarvan dus zeer bemoeilijken. De Windows98®-laptop, waarop de applet nog wel zonder bijzondere ingrepen kan worden gedraaid, was helaas niet aanwezig. Gerard verklaarde zich wel bereid om de werking van het neurale netwerk van de muis aan de roboticagroep uit te leggen.
- Henk deed kort verslag van zijn vorderingen met schaakeindspelen. Hij demonstreerde daarbij de situatie waarin een koning en een toren het moeten opnemen tegen een koning zonder "manschappen". Deze (relatief eenvoudige) matvoering werkt nog niet goed. Henks uiteindelijke doel is het (notoir lastige) eindspel van een koning alleen tegen een koning met loper en paard. Daarbij kwam de vraag op, of in dit eindspel een "strategie" (systematische aanpak) kan worden gebruikt. Naar aanleiding hiervan ontspon zich een discussie over het verschil tussen de manieren waarop mensen en computers schaken. Leon vertelde ons dat de kracht van goede menselijke schakers niet zozeer ligt in heel diep (= veel zetten) vooruitdenken, maar vooral in het afkappen (= niet nader beschouwen) van slechte zetten, ten gunste van de veelbelovende voortzettingen.
- Jan vertelde dat hij zich tijdens zijn vakantie o.a. bezig had gehouden met het boek De ijzeren wil van Bas Haring. Hij vond het een leuk boek om te lezen; de schrijver bekijkt diverse aspekten van kunstmatige intelligentie vaak van een kant waar Jan zelf nog niet op gekomen was.
- Ook op transputergebied had Jan niet stil gezeten: hij had een artikel gelezen over het maken van netwerken met transputers, waarbij het er vooral om gaat om de signaalwegen kort te maken. Daarnaast is Jan op zoek naar een geschikt (AI?-)probleem om op een transputernetwerk te laten lopen. Verder is hij zijn website aan het reviseren.
- Intussen had Peter uitgevogeld hoe hij zijn browser kon overreden om toch een applet te laten zien; helaas was Ed al vertrokken. Omdat ook enkele andere aanwezigen de muis en het mierendoolhof nog niet kenden, heeft Gerard een korte uitleg van deze "gouwe ouwe" projecten gegeven.
Daarmee was de tijd al weer vol. De oplettende lezer van het vorige verslag zal in het bovenstaande lijstje een tweetal onderwerpen missen. Het programmeren van het Lego®karretje MOOF in LabView is verschoven naar een volgende keer; Jan had nog niets voorbereid. En Gerard had wel een steen-schaar-papierprogrammaatje in Python geschreven, maar omdat dat gebruik maakt van curses, werkt het vooralsnog alleen onder Linux. Dus ook dat is vooruitgeschoven naar een latere bijeenkomst.
(GV 9 juni 2015)
Kort verslag van de bijeenkomst op 2 mei 2015
Er zijn op deze bijeenkomst weer verscheidene onderwerpen besproken:
- Er werd geruime tijd besteed aan het brainstormen over een verdergaande samenwerking tussen de interessegroepen Robotica, Artificiële Intelligentie, en eventueel groepen die zich speciaal met programmeren bezig houden. Daarbij kwamen enige concrete ideeën naar voren. Eén daarvan was beeldherkenning: er zijn bij de Robotica i.g. steeds meer leden die goedkope webcammetjes hebben en daar iets mee zouden willen doen. Een ander idee (van Gerard) was om een "moederrobot" een geluidssignaal te laten uitzenden, op basis waarvan diverse "kind-robots" haar kunnen opzoeken en haar blijven volgen. Dit idee sprak Jan wel aan, vanwege de mogelijkheden om robotjes "zwermgedrag" te laten vertonen. Een derde idee was een workshop waarin de deelnemers leren om zelf (in bijv. Python) diverse AI-technieken te programmeren — waaronder enkele typen neurale netwerken.
Daarbij werd duidelijk dat de uitgangspunten van de deelnemers aan het gesprek soms nogal verschillen, en ook hierover werd gepraat: gaan we "shoppen" in de ongelooflijke hoeveelheid leuke apparaten en onderdelen die tegenwoordig (vaak tegen schappelijke prijzen) verkrijgbaar zijn, en kijken we wat voor leuke dingen we daarmee kunnen doen? (Deze aanpak werd door Gerard – niet heel origineel – gekarakteriseerd als "oplossingen op zoek naar een probleem".) Of stellen we ons eerst een doel, en kijken we dan hoe we dat gaan bereiken? En moet dit doel nieuw en origineel zijn (wat volgens Ed bijna onmogelijk is), of stellen we ons tevreden met het (na)maken van iets dat door anderen al eerder is gemaakt?
Terloops werd ook nog even de aandacht gevestigd op het nogal genante feit dat het werk aan TetraBot al maandenlang stil ligt. Het werd duidelijk dat we er in één gespreksronde niet uit zouden komen. Er werd dus besloten om de besproken punten als stof tot nadenken mee naar huis te nemen, en de discussie een volgende bijeenkomst voort te zetten.
- Abraham had een exemplaar van zijn Internet-kerkradio meegenomen, en gaf een korte toelichting en demonstratie. Het apparaat is, opengeschroefd, op de onderstaande foto te zien.
De omhullende kast is de oorspronkelijke behuizing van de kerkradio, waar de mensen aan gewend waren. Hieruit heeft Abraham zonder aarzelen alle elektronica weggeslepen (behalve het stukje dat de schakelaars aan de linkerkant uitleest) en vervangen door nieuwe onderdelen. Direct achter de LCD-display zit de Raspberry Pi computer. Hierop draait het Raspbian besturingssysteem, met daar bovenop de Music Player Daemon (MPD) en de bijhorende command-line interface MPC (music player command), aangestuurd door een Python-script. Het witte onderdeel rechts achter de Raspberry is de voeding. Het langwerpige bruingrijze geval links achter de Raspberry is een Huaweii-E173 3-G Dongel, die met behulp van een externe antenne via het GSM-netwerk de internetverbinding verzorgt. In de uiteindelijke uitvoering staat de zenderkeuze vast op de kerkradio, maar die zond op dit moment niet uit. Echter, voor testdoeleinden had Abraham de zender ViceFM ingesteld (zoals te zien op de LCD-display), zodat wij even konden genieten van Procul Harums A Whiter Shade of Pale.
Maar succes heeft zijn prijs: nu bewezen is dat het werkt staat Abraham voor de schone maar tijdrovende taak om nóg zo'n 35 à 40 van die kastjes om te bouwen…
- Henk kondigde aan te gaan onderzoeken, of de methode die hij voor het oplossen van de schuifpuzzel heeft gebruikt, ook toepasbaar is voor de analyse van eindpelen in het schaakspel. Hopelijk horen we hier in de toekomst meer over.
- Ook wilde Henk graag de aandacht vestigen op de box Alles voor één meisje, waarop de sterrenkundige Vincent Icke in 12 hoorcolleges (op 8 DVD's) uiteenzet "hoe het heelal de mens voortbracht". Volgens Henk illustreert dit het begrip "de opgebouwde wereld", waar hij van uitgaat in zijn artikel De computer en de vrije wil.
- Jan vertelde de afgelopen maand op het Internet een en ander over kunstmatige intelligentie te hebben gelezen. Hij kreeg daarin bevestigd dat robotica en automatisering ook vormen van AI zijn. Omdat hij al lang in deze onderwerpen geïnteresseerd is, heeft hij zich voorgenomen om "besturing" (voorlopig) tot zijn kern-aktiviteit op AI-gebied te maken.
- Over het onderwerp transputers kon Jan melden dat zijn systeem, bestaande uit een computer en een daarmee via de ISA-bus verbonden transputerkaart, nu vlekkeloos lijkt te werken. Hij heeft dit getest door het onvermijdelijke "Hello World" in Occam te compileren en te laten draaien. De deur staat nu dus wagenwijd open om serieus met zijn ConApp aan de slag te gaan...
- Ook wat betreft het Legokarretje "MOOF" had Jan weer vorderingen gemaakt. Het karretje draaide door zijn massatraagheid verder door dan de bedoeling was; dit is natuurlijk erg lastig wanneer je nauwkeurig een aantal haakse bochten achter elkaar moet maken, zoals bij de Roborama-wedstrijden waar o.a. een slalom tussen een aantal blikjes door moet worden volbracht. Jan heeft dit opgelost door het karretje op maximaal vermogen te laten draaien totdat het bijna de gewenste richting heeft bereikt; de besturing wordt daarvan op de hoogte gebracht door de in het voertuig aanwezige kompassensor. Het laatste stukje wordt dan langzaam gedraaid, waardoor de gewenste stand met voldoende nauwkeurigheid wordt bereikt. Jan heeft toegezegd om de volgende bijeenkomst wat te laten zien van de programmering (in LabView).
- Tot slot heeft Gerard nog even gesproken over het spel Steen-Papier-Schaar. Bij dit spel moeten de beide spelers tegelijkertijd één van deze drie voorwerpen kiezen. Het aardige is dat geen van deze keuzes in alle gevallen de winnende is — dat hangt namelijk ook van de keuze van de tegenstander af. Gerard illustreerde dit door de spelmatrix op te stellen, en vertelde dat bij herhaald spelen de beste strategie is om telkens willekeurig je keuze te bepalen. Maar het is een bekend feit dat menselijke wezens niet zo goed zijn in willekeurig kiezen: er zit bijna altijd wel een of ander patroon in. Met een goed patroonherkennings-algoritme (en een voldoende grote dataset) kan de computer hier in theorie gebruik van maken om de meeste spelletjes te winnen. Gerard wil proberen om volgende keer met een dergelijk programma te komen. Abraham neemt dan zijn "gebruikers-interface" voor dit spel mee.
(GV 7 mei 2015)
Kort verslag van de bijeenkomst op 4 april 2015
Door de jaarlijkse Algemene Ledenvergadering (ALV) was er wat minder tijd om ons inhoudelijk met kunstmatige intelligentie bezig te houden; maar er kwamen toch weer genoeg interessante onderwerpen aan bod:
- Tijdens de A.L.V. kwam Ed Buzzi, kernlid van Robotica belast met "externe contacten", met het voorstel om de samenwerking nog wat te intensieveren. Gedacht werd o.a. aan een workshop. Er is besloten om op de mei-bijeenkomst met een groepje (dat niet uitsluitend uit bestuurs- en kernleden hoeft te bestaan) over dit voorstel te gaan brainstormen.
- Peter vestigde de aandacht op een tweetal krantenartikelen:
- Een artikel in de NRC van 2 maart 2015 over Guido van Rossum, de ontwerper van de programmeertaal Python. Peter merkte op dat je die programmeertaal steeds vaker in de media tegenkomt. Python heeft een aantal kenmerken die ook in LISP (de traditionele AI-taal in Amerika) voorkomen, wat het tot een geschikte taal voor AI-projecten zou kunnen maken. Een mogelijk nadeel daarbij is dat de taal niet heel snel is, doordat de opdrachten niet gecompileerd maar geïnterpreteerd worden.
- Ook in de NRC, ditmaal van 26 februari 2015, stond een artikel over een computerprogramma dat zelf leert om spelletjes te spelen. Dit algoritme, ontwikkeld door het bedrijfje Google DeepMind, leert zonder voor-ingeprogrammeerde kennis van enig spel, met behulp van o.a. een neuraal netwerk.
- Henk kon melden dat hij, geprikkeld door de paaspuzzel in de krant, op zijn systeem toch nog een programma gevonden heeft om 16×16 sudoku's (ook wel "hexadoku's" genoemd) op te lossen. Het stond hem bij voorgaande gesprekken over dit onderwerp niet niet meer bij dat hij deze variant ooit had geschreven.
- Ook vertelde Henk te hebben ontdekt dat op Wikipedia diverse varianten staan van de schuifpuzzel waarvoor hij een programma heeft geschreven.
- Abraham vertelde dat hij bezig was om met behulp van een Raspberry Pi een simpel te bedienen Internet-radio te bouwen, zodat mensen zonder Internet-ervaring naar de kerkradio kunnen blijven luisteren ook wanneer de kabelmaatschappij stopt met het doorgeven van die zender.
- Vervolgens lichtte hij ons in over zijn vorderingen met de "vintage" Intel 4004 microprocessor. Hij is er in geslaagd om een assemblerprogrammaatje te laten uitvoeren vanaf een SD-kaartje dat dienst doet als "ROM". Weliswaar doet het programma niets — het bestaat uit enkele instructies "NOP" ("No OPeration", oftewel letterlijk "Doe niets"), gevolgd door een sprong terug naar het begin van het programma — Maar het werkt!, dus de belangrijke en moeilijkste eerste stap is gezet. Op de onderstaande foto is de microprocessor het witte "torretje" op het hoge groene voetstuk.
- Tenslotte gaf Abraham een mooie "diavertoning" van een reisje naar Engeland dat hij met zijn dochter had ondernomen. Daarbij bracht hij o.a. een bezoek aan Bletchley Park, het Engelse landhuis waar tijdens de tweede wereldoorlog door Alan Turing en diverse anderen werd gewerkt aan het breken van de Duitse geheimschrift-codes. Daarbij werd ook de Colossus gebouwd, een van de eerste elektronische computers.
Een ander hoogtepunt van zijn trip was het London Science Museum, waar o.a. aandacht wordt besteed aan de allereerste mobiele robots, gebouwd door W. Grey Walter, en aan Charles Babbage. Babbage ontwierp in de 19e eeuw mechanische computers: de Difference Engine en de Analytical Engine. Hij is er tijdens zijn leven nooit in geslaagd om zijn ontwerpen gebouwd te krijgen, maar later is aangetoond dat ze (ook met 19e-eeuwse technieken!) wel degelijk zouden hebben gewerkt.
- Jan meldde dat zijn LEGO®-karretje MOOF te ver doordraaide. Daarnaast bleek het bewegen van de armen met de sensors niet nodig voor het precies lokaliseren van een opening in een barrière van (frisdrank)blikjes: de ultrasone sensoren zijn goed genoeg en de doorgang is breed genoeg om het zonder die truc te kunnen stellen. Verder stelde Jan voor om MOOF bij de eerstvolgende Roborama-wedstrijd onder de vlag van onze AI interessegroep te laten deelnemen; een aanbod dat natuurlijk dankbaar werd aanvaard!
- Ook had Jan enkele transputerkaarten meegenomen, alsmede een computer met ISA-bus waarin die kaarten kunnen worden gestoken. Aan het schrijven van een interessant programma voor de transputer was hij echter nog niet toegekomen. Wel kwam ter sprake dat er op het Internet een goede (engelstalige) inleiding in Occam, de programmeertaal voor transputers, te vinden is. In dit kader kwamen ook de termen concurrency en parallellisme naar voren; voor het onderscheid tussen deze twee verwante begrippen werd ook naar het Internet verwezen: gebruik deze woorden als zoekterm, en je vindt een overvloed aan informatie. Naar verwachting zal hierover op toekomstige bijeenkomsten nog meermalen verder gepraat worden.
Al met al weer een leuke en leerzame bijeenkomst, waarop we (vooral in het laatste uur) ook een aantal mensen van de Robotica interessegroep mochten verwelkomen.
(GV 25 april 2015)
Kort verslag van de bijeenkomst op 7 maart 2015
We werden, met en van elkaar, ook deze keer weer wat wijzer:
- Vóór de plenaire sessie vertelde Henk dat hij eigenlijk geen hele byte nodig had voor elke configuratie van de 2×2 Rubik's kubus; met twee bits zou het ook kunnen. Hij zag echter geen dringende reden om deze efficiëntieverbetering door te voeren. Gerard vroeg zich af of dat niet zou helpen ook de 3×3 kubus binnen het bereik van de computer te brengen, waarop Henk voorrekende dat daar nog wel wat meer voor nodig was dan een reductie van het benodigde geheugen met slechts een factor 4.
- Jan had zijn rijdende robotkarretje MOOF meegenomen. Het is te zien op nevenstaande, zelfs na uitbundig fotoshoppen niet al te scherpe foto. Zoals eerder door Jan uiteengezet is het een "gewoon" LEGO®-karretje, dat is verstevigd met metalen assen, bouten, enz. om hem stabieler te maken. De beide "vangarmen" met ultrasone sensoren, om t.z.t. frisdrankblikjes te kunnen verplaatsen, zitten er nog niet aan. Bovenop zit het nxt besturingskastje met ARM-processor. Het kastje kan 4 sensoren aan, maar Jan hoopt dat hij er door in het kastje "in te breken" misschien meer mee kan uitlezen. De besturing wordt geprogrammeerd in een gemodificeerde vorm van LABVIEW, waarvan nog vaag iets te zien is op de laptop op de achtergrond; dit besturingsprogramma wordt dan naar het karretje ge-upload.
Jan gaf ook een demonstratie: met eigen ogen konden we zien, dat wanneer er eenmaal een richting in de sensor was vastgelegd, deze goed genoeg werd onthouden om het karretje een stuk netjes rechtuit te laten rijden en daarna een haakse bocht naar links te laten maken. Dit experiment werd enkele malen herhaald, waarbij het karretje telkens zo nauwkeurig mogelijk in zijn, met enkele tijdelijke plakbandjes op de vloer aangegeven, uitgangspositie werd teruggezet. Daarbij bleef de afwijking in eindpositie, gemarkeerd met een derde plakbandje, steeds binnen de 5 centimeter. We kunnen dus spreken van mooi stabiel gedrag!
- Kees had zijn Arduino-bord meegenomen, maar had er nog niet veel meer mee gedaan dan het standaard blink-programmaatje uitproberen, dat een LEDje op het bord laat knipperen. Op verzoek van Gerard wist hij echter het programmaatje zo te wijzigen, dat het LEDje in een onregelmatig tempo aan- en uitging.
- Henk wou weten of Gerard al geprobeerd had om sudoku's op te lossen met de programmeertaal Scratch. Gerard zei dat hij er wel even naar gekeken had, en dat hij nog steeds dacht dat het wel kon. Helaas had hij geen mogelijkheid kunnen vinden om te werken met arrays of geneste lijsten, zodat hij voor bijna alles een aparte variabele in het leven zou moeten roepen. Het maken van een sudoku-programma wordt op die manier dan wel heel erg bewerkelijk. Gerard overwoog om een simpele versie te bouwen voor 4×4 sudoku's.
Verder wou Henk nog benadrukken dat het feit dat zijn eigen programma geen 16×16 sudoku's aan kan, niet aan het algoritme ligt: dat is algemeen genoeg om sudoku's van elk formaat, alsmede varianten zoals diagonaalsudoku's, op te lossen.
Ook vroeg Henk zich af of, en hoe, een Turingmachine zou kunnen worden geconstrueerd die sudoku's oplost. Half schertsend merkte Gerard op, dat hij dan alleen maar een BASIC-interpreter voor een Turingmachine hoefde te schrijven, om daarna zijn eigen in BASIC geschreven sudokuprogramma te draaien.
- Gerard liet zien dat hij op de Forth-bijeenkomst een boek over Transputers had buitgemaakt, alsmede enkele 5.25" floppies met software. Jan zag er geen informatie bij waar hij niet al over beschikte, maar hoopte wel dat de bij Gerard in aanleg gewekte belangstelling zodanig zou gedijen dat ze ooit samen iets met Transputers zouden kunnen gaan doen.
- Aan het eind van de bijeenkomst vertelde Gerard, n.a.v. de vraag van Jan wat hij nu eigenlijk onder A.I. moest verstaan, iets over zijn eigen opvatting van wat intelligentie eigenlijk is — in mensen, dieren, machines, en zelfs (hypothetische) buitenaardse wezens.
(GV 19 maart 2015)
Kort verslag van de bijeenkomst op 7 februari 2015
De plenaire sessie begon wat eerder en was wat korter dan normaal; maar er kwamen toch weer interessante onderwerpen ter sprake:
- Peter deelde mee geïnteresseerd te zijn in elasticsearch, open source software om analyses op big data (grote hoeveelheden gegevens) te verrichten. Hij had de software gedownload, maar er nog niet naar kunnen kijken. Hij was vooral benieuwd welke algoritmen er aan ten grondslag liggen, en of dat iets met constraint satisfaction te maken had.
- Ook wist Peter te melden dat de nieuwe Scratch-versie (2.0), met meer blokfuncties, niet langer alleen via de Scratch-website, maar nu ook met een stand-alone editor te gebruiken is.
- Henk had voor de aanwezigen een opiniestukje uit de Volkskrant gekopieerd, waarin betoogd wordt dat "zingeving" bij mensen een motief voor hun daden kan vormen. Henk legde een verband met De computer en 'de vrije wil' door de interessante vraag of zoiets ook bij computers een rol zou kunnen (gaan) spelen.
- Daarnaast gooide Henk de vraag in de groep of de programmeertaal "Scratch" wel krachtig genoeg is om een Sudoku-oplosser in te schrijven. Peter dacht van wel, en Gerard zag zich uitgedaagd. Henk vond sudoku's "simpel"; Gerard bekende dat hij bezig was met een 16x16 sudoku die hem wel de nodige hoofdbrekens kostte. Helaas zijn sudoku's van deze grootte niet (of: nog niet) met Henks programma op te lossen, omdat dit niet berekend is op getallen van 2 cijfers.
- Leon gaf een korte beschrijving van Marvin Minsky's The society of Mind, dat hij uit de bibliotheek van onze interessegroep had geleend. Minsky beschrijft de menselijke geest als opgebouwd uit kleine bouwsteentjes; hetgeen natuurlijk snel associaties oproept met de methode van object-georiënteerd programmeren. Gerard lanceerde het idee om in de toekomst met een studiegroepje wat dieper in dit boek te duiken.
- Jan vertelde dat Abraham er in geslaagd is een werkend ontwikkelsysteem te bouwen met industriële besturingscomputer en één transputerbord. Helaas kon Abraham vandaag niet aanwezig zijn, zodat een demonstratie werd uitgesteld tot een volgende bijeenkomst. Wel vertelde Jan wat meer over de transputer-architectuur, aan de hand van een tweetal borden die hij had meegenomen. Hij kan nu serieus aan de slag met het leren van de programmeertaal Occam. Zijn eerste doel is het maken van een programma voor de Tetromino-puzzel; daarna hoopt hij met 5 transputers zijn ConApp-karretje te gaan besturen.
- Ook had Jan de afgelopen maand een ingeving gehad om een robotica-probleempje op te lossen: bij het onderdeel "T-rijden" van de jaarlijkse Roborama-wedstrijd van de HCC robotica interessegroep moeten de robots door een opening in een barrière van colablikjes manoeuvreren. Jans legokarretje (dat hij MOOF noemt, voor Moving Object On Floor), heeft twee armen uitgerust met ultrasone sensoren. De armen zijn beweegbaar (om bij een ander onderdeel ook blikjes te kunnen hanteren). Het idee is nu om het karretje de barrière met gespreide armen te laten naderen, en dan dichterbij de armen recht vooruit te houden om de locatie van de opening nauwkeurig te bepalen.
- Tot slot heeft Gerard nog kort uiteengezet hoe hij aan de hand van het boek Bouw zelf een expertsysteem in BASIC een simpel programmaatje heeft geschreven dat aan de hand van een eenvoudige tabel met voorwaardelijke kansen bepaalt of het gaat regenen.
(GV 13 februari 2015)
Kort verslag van de bijeenkomst op 3 januari 2015
Ondanks de voorbije feestdagen was er toch nog wel het één en ander te melden:
- Titus zou voor zijn Lego® EV3-robot graag de programmeeromgeving RobotC gebruiken, maar hikt een beetje aan tegen de kosten daarvan; dit mede, omdat hij diverse projecten waaraan hij ooit begonnen is (nog) niet tot een bevredigend einde heeft gebracht. Er ontspon zich een discussie, waarbij onder andere geopperd werd om er een project van te maken waar we met ons allen aan zouden kunnen werken. Wegens de wijd uiteenlopende belangstelling (en inzichten) van de groepsleden werd hiervan afgezien. Jan merkte wel op dat het leuk zou zijn als de AI-interessegroep de eerstvolgende Roboramawedstrijden met enkele robots zou meedoen — en dan hopelijk ook hoog eindigen!
- Bij de Roborama-competitie van de Robotica-interessegroep kregen àlle deelnemers een prijs, ook degenen die onderaan eindigden; een soort "aanmoedigingsprijs" dus. Zo had Titus een elektronicaprintje ontvangen, waar hij echter niet goed raad mee wist. Dus nam Abraham het vorige maand mee om er eens mee te stoeien. Het blijkt een RTC (een real-time clock): een schakeling die de tijd bijhoudt, ook (mits voorzien van een batterijtje) als de voedingsstroom is uitgeschakeld. Daarnaast zit er een EPROM van 32K op: een geheugen dat eveneens zijn inhoud niet kwijt raakt als de voedingsstroom wegvalt.
Zo'n tijd-chip kan bijvoorbeeld worden gebruikt bij het zelf bouwen van een klokthermostaat of voor andere domotica-toepassingen. Gerard opperde dat een meer AI-gerichte toepassing gevonden zou kunnen worden in oriëntatie (van een robot of een drone) op een bewolkte dag aan de hand van de polarisatie van het (zon)licht, zoals dat bij sommige diersoorten schijnt te gebeuren; de richting van die polarisatie hangt namelijk af van het tijdstip op de dag.
Abraham liet zien hoe hij het printje (op de onderstaande foto links) via een I2C-bus verbonden had met een Arduino nano-bord (op de foto rechts), en dat hij via een BASIC-programma de tijd kon instellen en uitlezen, en strings naar het EPROM kon wegschrijven en weer teruglezen.
- Ook vertelde Abraham kort dat hij in het kader van de "instandhouding van computer-historisch erfgoed" bezig is om een exemplaar van de allereerste microprocessor, de Intel 4004, aan de praat te krijgen. Hij benadert de chip vanuit een Propeller-bord, en volgt de datacommunicatie via een Logic Analyser; maar hij ziet daarbij vreemde, onverklaarbare dingen voorbij komen. Hij wil nu via Internet een Duitse expert benaderen, om te zien of die enige opheldering kan verschaffen.
- Henk was vanuit zijn interesse in "de vrije wil" en de "opgebouwde wereld" gestuit op de ideeën van de Romeinse dichter en filosoof Lucretius. Een discussie hierover werd verschoven naar een toekomstige bijeenkomst.
- Verder had Henk nog wat gesleuteld aan zijn programma voor de schuifpuzzel. Het programma stopt nu zodra het grote vierkante blok (dat in zijn programma groen is) de positie midden-boven inneemt; de eindstand hoeft dus niet meer symmetrisch te zijn. Daarnaast kan het programma nu ook vanuit een willekeurige (random) beginstand uitgaan. Henk merkte op dat van de 65880 denkbare beginstanden er 11926 niet oplosbaar zijn. Daarbij zijn verwisselingen van identieke blokken niet als aparte standen geteld. Enkele aanwezigen vonden het percentage (ongeveer 1 op 6 onoplosbaar) verrassend hoog.
- Tenslotte liet Henk op het whiteboard aan de hand van een voorbeeld zien hoe het algoritme werkt waarmee hij de permutaties van de blokjes van de 2×2 Rubik-kubus naar een geheel getal codeert. (Wiskundig is hier sprake van enumeratie, waarbij aan de permutaties een totale ordening wordt opgelegd.) Dit ingenieuze algoritme, dat een beetje doet denken aan de positionele notatie van gehele getallen, is helaas iets te ingewikkeld om hier in detail uiteen te zetten.
- Gerard had wat zitten nadenken over (Engels) solitaire: de puzzel met pennetjes in een kruisvormig bord, die elkaar "slaan" door over elkaar heen te springen, en waarvan er aan het eind één in het midden moet overblijven. Ook deze puzzel zou kunnen worden aangepakt met de methode die Henk al voor de schuifpuzzel en de 2×2 Rubik-kubus heeft gebruikt. Daarnaast had hij een opmerkelijke symmetrie ontdekt: de regels van het spel en de mogelijke zetten lijken hetzelfde te blijven als je het spel achterwaarts afspeelt in de tijd, mits je tegelijkertijd ook pennetjes vervangt door lege posities en vice versa.
- Daarnaast had Gerard nog wat tijd gevonden voor de "Brain Teaser"-puzzel. Hij had m.b.v. een Python-scriptje uitgezocht hoeveel zetten er nodig waren om vanuit elke beginpositie naar elke eindstand te komen. Daarnaast had hij een functie geschreven om de speler bij het spelen van hints te voorzien; maar een demonstratie hiervan viel helaas in het water. Dus dit onderwerp zal in de toekomst ook zeker weer aan bod komen; temeer daar Henk aangaf zich eveneens met deze puzzel bezig te zijn gaan houden.
Jan is nog steeds bezig met transputers, maar is er nog altijd niet in geslaagd om de Occam-compiler aan de praat te krijgen. Hij verklaarde zich bereid om nog iets meer te vertellen van de voordelen van het werken met transputers; maar omdat hij daarbij daadwerkelijk iets wil kunnen laten zien, zal ook dat op een van de volgende bijeenkomsten gaan plaatsvinden. We hebben dus in 2015 wel het een en ander om naar uit te kijken!
(GV 22 januari 2015)