# Artificial creatures
Deze challenge staat in het teken van artificial creatures. Dit zijn "wezens" die (doen alsof zij) handelen zoals een mens of ander levend wezen. Zoals de Turing-test voorschrijft kan een computer intelligent genoemd worden als een mens niet kan onderscheiden of het een mens of een computer is.
Voor deze challenge maak ik een wezen dat gebruik maakt van een vorm van intelligentie. Het wezen wordt dus niet direct bestuurd, maar krijgt wel een instructieset mee waarmee het zelf beslissingen kan maken.
# Research
Om inspiratie te krijgen heb ik gezocht naar interessante projecten die gebruik maken van artificial intelligence.
# Dino AI
De Australische YouTuber Evan, beter bekend als Code Bullet maakt sinds 2017 tutorials op het gebied van AI voor games. Projecten die hij publiceert zijn onder andere een AI voor Flappy Bird en Snake. Daarnaast heeft hij AI gebruikt om een 100x100 rubriks op te lossen.
Voor Chrome gebruikers kan de Dino game niet onbekend gebleven zijn. Ook voor die game heeft hij een AI gemaakt zoals in onderstaand filmpje. Ik vind het grappig om te zien dat het Processing script dat hij gebruikt niet heel veel input nodig heeft. Met redelijk weinig voorkennis weet het script een topscore te behalen van 20000.
# DeepMoji
Vanuit het MIT Media Lab is dit project / onderzoek opgezet om een model te ontwikkelen dat een emoji bij een bepaalde uitspraak kan vinden. De uitdaging is dat emoji's natuurlijk gebaseerd zijn op gevoel en digitaal ingewikkelde factoren zoals sarcasme.
Van dit project vind ik het cool om te zien dat de AI wel degelijk in staat is om onze (non-verbale) communicatie te begrijpen. Een emoji kan namelijk een zin in een complete context zetten en er is nogal wat mensen kennis nodig om dan de context te kunnen begrijpen.
Bekijk het project hier
# Amazon Echo Dot (waar Alexa woont)
Zelf ben ik in het bezit van een Echo Dot met daarin Alexa die de verschillende apparaten in mijn kamer bestuurt (van laptop tot lamp). Naast het herkennen van gesproken taal (NLP) en het spreken van gesproken taal (NLG) is het wezen "Alexa" in staat om intelligent te reageren op bepaalde situaties. Niet alleen geeft ze relevante informatie dat tijd- en locatie gebonden is. Zij is in staat om onderscheid te maken tussen praten en fluisteren. Wanneer een opdracht gefluisterd wordt zal het volume tijdelijk gehalveerd worden en fluistert zij terug.
Dat vond ik super cool toen ik dat voor het eerst uitprobeerde. Want naast dat dit heel erg praktisch is, is het een nieuwe ontwikkeling om de computer een gefluisterde tekst te laten herkennen. Voorheen werden spraakmodellen namelijk getraind met verschil in klank (toonhoogte), wat bij fluisteren natuurlijk mist. Dit laat wel zien tot wat digitale wezens in staat zijn.
# Tinkering
# Synology Chat
Als centrale plaats om digitaal foto's te bewaren hebben wij een NAS (Network Attached Storage). Dit apparaat zou eigenlijk een domme schil om twee gerepliceerde hardeschijven moeten zijn, maar de software die er op draait is in staat om kleine servertaken uit te voeren. Zo zijn applicaties zoals DS Photo, DS Video en veel meer beschikbaar. Ook is DS Chat ontwikkeld om een chatomgeving volledig in eigen beheer te kunnen aanbieden. Ik heb er nooit veel aandacht aan besteedt maar nu ik met dit vak een artificial creature moet maken dacht ik erover om een chat-bot te maken. Dat kan natuurlijk ook met Discord of Slack, maar de API van DS Chat leek wel heel erg simpel (wel wat beperkt daardoor).
In het onderstaande voorbeeld is een gesprek van mij met Jozef (de chatbot) te zien. Met een webhook werd mijn bericht naar de lokale NodeJS service gestuurd waarop Jozef antwoordde. Dit had ik kunnen uitwerken tot een ware assistent, maar daar zijn er al zoveel van.


# Stembedienbare infrarood-afstandsbediening
Een hele mond vol, maar wel iets dat ik hard nodig had. Mijn 24-jarige stereo was voor zijn tijd hyper-modern maar toch kijk ik steeds vaker jaloers naar Spotify-ready WiFi receivers (met bijbehorend prijskaartje). Het grootste nadeel op dit moment is dat wanneer ik muziek wil, ik eerst de afstandsbediening moet zoeken en óók nog moet richten om het ding aan te krijgen. Ik vroeg mijzelf af of Arduino en Co. hier iets in kon betekenen, aangezien het bordje immers net als de afstandsbediening in staat is om een ledje te laten knipperen.
Als kers op de taart heb ik dan in plaats van Arduino een ESP-8266 gebruikt dat over WiFi beschikt. Doormiddel van de library fauxmoESP is het in staat om te integreren met Alexa (als Philips Hue lamp die aan/uit te zetten is) Daarmee heb ik het bakbeest omgetoverd tot de eerste Alexa-enabled stereo uit 1996. Hieronder een korte demonstratie.
# Mierenkolonie
In het hoorcollege werd het Flocking principe uitgelegd. Het voorbeeld wat erbij hoorde in Processing fascineerde mij en het leek wel wat op een mierenkolonie. Daarom heb ik besloten om in de webversie van Processing (P5.js) een mier samen te stellen met lines en dots en dit geval rond te laten lopen.
Om ervoor te zorgen dat het niet van het canvas zou vallen keert hij om wanneer zijn positie buiten het canvas ligt. Een demo is hier te vinden

# Design & Build
Zoals gezegd heb ik de laatste demo uitgewerkt tot een ware mierenkolonie. Ze zijn in het bezit van een huis waar zij eten in kunnen bewaren. Het eten zijn gele stippen (honing) die ze eten wanneer ze deze aanraken. Wanneer de mier vol zit zal het zich omdraaien naar het huis en er recht op af gaan om zijn inhoud te legen. Het huis vult zich met eten en de mier vervolgt zijn weg. Behalve bij de randen van het canvas zal de mier ook zijn collega's proberen te ontwijken.
Veel waardes worden random bepaald wanneer het canvas wordt geladen, zoals de spawn locatie van eten en mier. Daarnaast is ook de richting die de mier oploopt afhankelijk van random factoren.
De volgende waardes zijn handmatig in te stellen:
- Aantal mieren
- Snelheid mier
- Opslagruimte mier
- Opslagruimte huis
- Aantal eten
- Grootte eten
# Showcase
# Reflect
# Vision
Ondanks dat Artificial Intelligence al lang en volop gebruikt wordt zullen de toepassingen blijven groeien. Ik denk ook dat er meer toepassingen zullen verschijnen in meer werkvelden. Omdat men het gedrag van de mens steeds beter kan projecteren op "machines" zullen ook menselijke beslissingen makkelijker gemaakt kunnen worden door machines. Uiteraard zal het aantal discussies daaromtrent niet afnemen maar uiteindelijk wordt het een kwestie van wennen aan die toekomstige situatie. Een revolutie als deze lijkt mij lastig te stoppen, simpelweg om dat het efficienter is om machines in te zetten waar mogelijk.
# Product
Ik ben blij met wat ik als eindproduct heb kunnen uitwerken. Hoewel ik nog veel meer ideeën had om het realistischer te lijken, zoals niet lopen in rechte lijnen en variabele loopsnelheid, is wat er als eerste in mij opkwam nu werkelijkheid. Daarnaast kan er meer onderzoek toegepast worden. Mieren laten bijvoorbeeld een geurspoor achter naar vaste wegen (naar eten bijvoorbeeld). Ook kan er nog aan samenwerking gewerkt worden, dat voedsel overgedragen kan worden e.d. Dat had de mieren weer wat slimmer gemaakt.
# Technology
Met Processing had ik nog nooit gewerkt maar het heeft mij wel nieuwe inzichten gebracht. Het is een fijne library om snel prototypes te kunnen ontwikkelen en de koppeling met Arduino werkt logisch en soepel. Ik was ook blij dat ik het web-framework tegenkwam want van C++ en Java ben ik niet zo'n fan als JavaScript. Met beeldherkenning heb ik bij VR/AR wat gespeeld door middel van Handtrack.js. In de toekomst zou ik graag meer van Tensorflow willen leren (waarmee het Handtrack model is getraind).