Moduleboekje HA TM HF

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 103

Keuzehoofdstukken A - F

NLTC-H301 Leven met Robots v 1.0 61


Leerlingenhandleiding

Deze handleiding is het vervolg van de Leerlingenhandleiding Leven met Robots, hoofdstukken 1-4.
Colofon en bijlagen zijn in de andere bundel afgedrukt.

NLTC-H301 Leven met Robots v 1.0 62


Keuzehoofdstukken A - F

A. Mechanica

Uitleg hoofdstuk

In hoofdstuk 3 over actuatoren heb je de basis gelegd voor de mechanische kant van de robotica.
Hoewel je alleen al op dit onderwerp een speciale studie zou kunnen volgen, willen je misschien toch
iets dieper gaan omdat je geïnteresseerd bent in de mechanica (en wellicht na de HAVO of het VWO
bijv. Werktuigbouw wil gaan studeren).

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je hebt meer grip op vrijheidsgraden
- je kent het hoe en wat van coördinaten
- je kent de principes van overbrenging
- je kent de achtergronden van slippen en glijden.

Presentatie
In de presentatie die je docent je geeft of die je zelf door moet werken, begin je met een verdieping
m.b.t. vrijheidsgraden: "een onafhankelijke parameter waarmee getalsmatig wordt vastgelegd in
hoeverre de bewegingen van een lichaam worden beperkt door de interactie met andere lichamen."
Elke richting waarin een robot of actuator onafhankelijk kan bewegen, noemen je een vrijheidsgraad.
NLTC-H301 Leven met Robots v 1.0 63
Leerlingenhandleiding

Je gebruikt de afkorting DOF om het aantal Degrees Of Freedom ( vrijheidgraden) aan te geven. Bij een
6 DOF platform heb je te maken met 6 lineaire actuatoren. Deze 6 actuatoren zijn dus onafhankelijk
van elkaar aan te sturen, want anders gaf ze het platform geen 6 vrijheidsgraden. Voorbeelden waarbij
een 6 DOF platform gebruikt worden, zijn in raceauto’s en in vliegtuigsimulatoren.

NLTC-H301 Leven met Robots v 1.0 64


Keuzehoofdstukken A - F

A1 Actuatoren en vrijheidsgraden
De aandrijving van een robot

Twee Nederlandse bedrijven die simulatoren


ontwikkelen (of ontwikkeld hebben) zijn VESC in Annen
(Groningen) en het NLR in Amsterdam (/ Marknesse).

Wat is een actuator


Zoals je in hoofdstuk 3 hebt gezien, zijn er een aantal
onduidelijke definities voor actuatoren:

 Een actuator is een toestel dat invloed kan


uitoefenen op zijn omgeving.
 Een toestel dat de omgeving kan beïnvloeden,
meetbaar in een fysische grootheid (zoals
snelheid en afstand).
 Een mechanisme dat de samenstelling van
energie in een systeem kan veranderen.

Eenvoudig gezegd is een actuator een apparaat dat


energie omzet in beweging. De meest gangbare
actuatoren zijn motoren die een draaiende beweging
maken. Pneumatische en hydraulische actuatoren
werken meestal lineair. Maar er bestaan ook
mechanische lineaire actuatoren.

De LEGO versie van een lineaire


actuator wordt aangedreven door
een elektromotor. De actuator zet
de draaiende beweging om in een
lineaire.
Boven: de racesimulator met 6
vrijheidsgraden zodat elke bocht en elke
Er maar weinig machines zijn die
hobbel gevoeld wordt tijdens de rit.
zoals de term hydrauliek doet
vermoeden (Hydro -> water), echt Onder: de vluchtsimulator van het Nationaal
op water werken. Bijna altijd Lucht en Ruimtevaart Laboratorium (locatie
wordt speciale hydraulische olie Amsterdam). Deze simulator wordt vooral
toegepast. gebruikt voor vlieg(tuig) onderzoek.

Links Figuur A1: 6 DOF platforms van


►URL42. Een lelijke site, die wel Nederlandse bodem.
meer laat zien van pneumatische
toepassingen.

Figuur A2: LEGO ►URL43 , de wikipagina over hydrauliek.


lineaire actuator
NLTC-H301 Leven met Robots v 1.0 65
Leerlingenhandleiding

Vrijheidsgraden
Een robot mag pas een robot genoemd worden indien hij
minimaal 5 vrijheidsgraden heeft. Dit zijn bewegingen in de
X, Y en Z richting en 2 rotatiemogelijkheden in de pols. Er
zijn maximaal 6 vrijheidsgraden (3e rotatie in de pols).
Indien een machine geen 5 vrijheidsgraden heeft, valt hij
gewoon onder de groep van numeriek bestuurde machines
(NC-machines).

Toch is dit aantal vrijheidsgraden soms niet genoeg.


Meerdere robotarmen worden in groepen ingezet in
productiestraten.

Elke seconde die een robotarm eerder klaar is met een


object op een bepaalde plaats, is van groot belang. Per dag,
week en maand, worden dan veel meer onderdelen door
de robot verwerkt en het levert dus op de langere termijn
wel degelijk een flink voordeel op als de robot sneller is.

Actuatoren
Over het algemeen wordt een productiestraat opgebouwd
Er is een groot verschil tussen de
uit verschillende groepen robots, de robotcellen, die
actuatoren van industriële robots en
samen de taak volbrengen waarvoor ze zijn toegerust. Om
androïde robots. Verreweg de meest
sneller met de taak klaar te zijn, worden gebruikte industriële robots zijn
robotwerkplaatsen steeds vaker zo ingericht dat ook het robotarmen zoals links te zien is.
werkstuk kan bewegen. Zo heeft de robotcel dus meer
vrijheidsgraden dan een enkele robot en kunnen de robots Een robotarm met 6 vrijheidsgraden
sneller klaar zijn met het werkstuk. (6 DOF) is in staat om vrijwel elke
denkbare beweging te maken.
Instellen van de robot
De robots van een robotcel worden op de computer
ontworpen in een simulatieprogramma (RoboCAD). Figuur A3: Actuatoren
Voordat een robotcel gebouwd wordt, kan zo al bepaald
worden hoe een robotcel er uit moet komen te zien, welke aanpassingen er gemaakt moeten worden
en welke robots in de cel ingebouwd moeten worden. De simulator kan ook de programmacode
genereren voor de robots. Elk merk robot heeft zijn eigen manier van aansturen, het is daarom
belangrijk dat het simulatieprogramma verstand heeft van de verschillende merken en typen robots.
De robotcel wordt zo beveiligd dat er geen ongelukken kunnen gebeuren.

Als het robotprogramma gegenereerd is en de robotcel gebouwd is, wordt de robotcel gecontroleerd
en geoptimaliseerd. Robotprogrammeurs werken daarvoor samen met experts (bijvoorbeeld
Robotlassers) op het gebied van wat de robot moet gaan doen.

NLTC-H301 Leven met Robots v 1.0 66


Keuzehoofdstukken A - F

Figuur A4: Robotcellen in actie


Hiervoor ging het over wat een robotcel is en hoe deze gemaakt wordt.

Tijdens het werk is de robotcel afgesloten en kan er geen mens bij de robot. Op het moment dat de cel
opgemaakt wordt, stop de robot. Er zijn dus speciale voorzieningen in de robotaansturing die moeten
voldoen aan allerlei veiligheidstandaarden om te verzekeren dat de robot stopt zodra mensen in
gevaar kunnen komen.

Dhr. Weertman van AWL-Techniek in Harderwijk geeft aan dat je eigenlijk alleen letsel op kunt lopen
door de robot als je dat moedwillig zou doen. Het plaatsen van het werkstuk in de robotcel, is het
gevaarlijkste moment. Bij een aantal typen robotcellen gebeurt dit
ook automatisch (zie de Volkswagen filmpjes op de DVD).

ASIMO heeft een 'rugzak' waarin zich het robotbrein bevindt.


Voor de rest ziet ASIMO er heel menselijk uit, hoewel het uiterlijk
wel enigszins aan dat van een astronaut doet denken.

Coördinatenstelsels
Figuur A5: ASIMO
Om te bepalen wat het bereik van een robot is en om te kunnen
bepalen of een robot in staat zal zijn om een bewerkingen uit te voeren werkstuk te bewerken, maken
we gebruik van coördinatenstelsels. Zo kun je nauwkeurig berekenen (en met elkaar bespreken) of een
bepaalde oplossing al dan niet toereikend zal zijn.

In de presentatie van hoofdstuk 3 over basis actuatoren, kom je verschillende coördinaten stelsels
tegen:
- Cartesische coördinaten
- Poolcoördinaten
- Cilindrische coördinaten
- SCARA coördinaten
- Gewricht-arm (omwenteling) coördinaten
- Parallelle robot coördinaten

Cartesische coördinaten
Een coördinatensysteem met drie onderling loodrechte assen. Een cartesiaanse robot kan in drie
onderling loodrechte richtingen (X, Y en Z) bewegen. Als je het cartesische coördinatenstelsel gebruikt,

NLTC-H301 Leven met Robots v 1.0 67


Leerlingenhandleiding

reken je de punten in het stelsel terug naar een x, y en een z.-as. Een CNC frees is een typisch
voorbeeld van een toepassing waarbij het cartesische coördinatenstelsel gebruikt wordt.

Poolcoördinaten
De poolcoördinaten van een punt M in een cartesisch coördinatenstelsel in een plat vlak worden
gevormd door het tweetal [r,θ], waarin r de afstand is van M tot de oorsprong O (de poolstraal) en θ
de hoek (de poolhoek) -gemeten tegen de klok in - die de lijn OM maakt met de positieve x-as.
Gebruikelijk is het om voor de hoek θ de "gewone" hoek te nemen, dus met een waarde in het bereik
0..2π radialen.

Er zijn enkele typen robots die werken op basis van poolcoördinaten. Daarnaast vormen de
poolcoördinaten de basis voor cilindrische coördinaten. Je kunt poolcoördinaten omrekenen naar
cartesische coördinaten (en andersom).

Ook in Nederland kom je tegenwoordig Coca


Cola robots tegen. Misschien heeft jouw school
er ook wel eentje. De rechter robot ziet er meer
uit als een robot, maar is dat toch minder dan de
linker. De linker machine heeft een robotarm die
naar de gewenste plaats gaat, het blikje of flesje
er uit pakt en in het gat stopt zodat je deze er uit
kunt pakken.

De oudere machines waren veel onveiliger (je


kon met je arm vast komen te zitten), minder
precies (soms bleef wat je gekocht had steken)
en meer gevoelig voor diefstal (het is bij deze
machines soms met veel moeite mogelijk om bij
de artikelen te komen, zeker als je er bijv. een
NXT / EV robot in los zou laten).

Figuur A6: Coca Cola robots

Het verband tussen de Cartesische coördinaten (x,y) en de poolcoördinaten (r, θ) wordt gegeven door:
Omgekeerd geldt:

Hierin is gebruikt gemaakt van de uitgebreidere


definitie van de arctangens:

Cilindrische coördinaten
Voor het cilindrische coördinatenstelsel gebruik je θ (theta), R, en Z-coördinaten.

NLTC-H301 Leven met Robots v 1.0 68


Keuzehoofdstukken A - F

Cilindercoördinaten vormen een driedimensionaal coördinatenstelsel, dat lijkt op het


tweedimensionale stelsel van poolcoördinaten. Net als bij poolcoördinaten vormen r en θ de eerste
twee coördinaten, de derde coördinaat wordt gegeven door z. Hierbij is:

r: de afstand van het punt tot de z-as.

θ: de hoek tussen de verbindingslijn van de oorsprong met de projectie van het punt op
het xy-vlak en de positieve x-as.

z: de afstand van het punt tot aan het xy-vlak.

Het verband met de cartesische coördinaten x en y wordt gegeven door:

De z-coördinaat is dezelfde in beide stelsels.

Een robot waarbij de vrijheidsgraden van de manipulator arm grotendeels beschreven kunnen worden
met behulp van cilindrische coördinaten, noem je een cilindrische coördinaten robot. Een cilindrische
robot kan naar boven en beneden bewegen, rond een kolom draaien en daarnaast kan de arm
uitschuiven.

SCARA coördinaten
Een bijzondere robotconfiguratie, is de SCARA configuratie. De SCARA is een configuratie waarbij de
beide rotatie-assen van de robot verticaal gericht zijn. SCARA betekent: Selective Compliance Assembly
Robot Arm (compliance is vering). De arm beweegt in het horizontale vlak. Hierdoor wordt hetzelfde
robotbereik gecreëerd als bij een robotconfiguratie: een holle cilinder.

Gewricht-arm coördinaten
Dit type robot wordt beschreven met behulp van θ (theta), α (alpha), en β (beta)-coördinaten. Twee
rechte armen (deze lijken op boven en onderarm van ons mensen). De β (beta) geeft het gewricht aan
tussen beide armen. de α beschrijft het gewricht van de onderste arm. De θ beschrijft de rotatie van de
basis.

Parallelle robot coördinaten


Een robotplatform met lineaire actuatoren is te complex om hier te beschrijven. Het geheel is
daarnaast afhankelijk van de hoeveelheid actuatoren. Daarom laat je deze coördinaten buiten
beschouwing in deze module.

Er is op internet meer informatie beschikbaar over dit onderwerp.

NLTC-H301 Leven met Robots v 1.0 69


Leerlingenhandleiding

Figuur A7: laswerk door robots

A2 Coördinatenstelsels en robots
Een overzicht van mogelijkheden

Voorbeeld Toelichting
Cartesische coördinatenstelsels
Voorbeeld:
Een CNC frees machine. Deze maakt gebruik van een
cartesische coördinatenstelsel. Als je de machine wil
gebruiken, laat je deze dus vanuit een (x, y, z)
coördinaat beginnen en vervolgens een lijst van (x, y,
z) coördinaten afwerken.

Poolcoördinaten of sferische robot


Een robot van dit type heeft een telescooparm die
naar boven of beneden gedaan kan worden en welke
op een roterende basis bevestigd is.

NLTC-H301 Leven met Robots v 1.0 70


Keuzehoofdstukken A - F

Cilindrische coördinaten
Voorbeeld:
Een robot graafmachine. Deze maakt gebruik van een
cilindrische coördinatenstelsel. De robot heeft een
uiterst bereik welke een cirkel beschrijft .

SCARA coördinaten
Een "pick and place" robot is vaak een scara robot.
Ook het vullen van pallets wordt vaak gedaan met
behulp van deze soort robots.

Gewricht arm coördinaten met rotatie


Tegenwoordig zijn de meeste robots in de industrie
van dit type. Deze hebben 6 vrijheidsgraden met
roterende delen. Je noemt dit een gearticuleerde
robot.

Tabel A1

A3 Het Ackermann principe


Sturen met een auto

Stuurgeometrie volgens het principe van Ackermann,


is een goede manier om een robotauto aan te
kunnen sturen. LEGO gebruikt een vereenvoudiging
van dit principe ook vaak bij technische modellen.

Hoewel deze robotauto nadelen heeft (relatief grote


draaicirkel), zijn er ook voordelen aan (o.a. relatief
veel laadvermogen etc.).

Zoals te zien is in de figuur hiernaast moeten wielen


die de binnenbocht nemen een andere draaicirkel
beschrijven dan de wielen die de buitenbocht
nemen. Voor de gefixeerde wielen heb je daarom
een differentieel. Als je de sturende wielen zo
bevestigt dat deze in een iets andere hoek kunnen

NLTC-H301 Leven met Robots v 1.0 71

Figuur A8: Schematische weergave van het


Leerlingenhandleiding

draaien, dan krijg je een betere draaicirkel voor beide wielen: ze staan dan loodrecht ten opzichte van
het middelpunt van de draaicirkel.

In de bouwbeschrijving van de Technic - Off Roader (zie de CD) zie je in handleiding twee in stap 60 een
verbeterde versie van de Ackerman sturing. Het LEGO model maakt net als gangbare auto's gebruik
van zogenaamde fuseekogels. Deze zorgen ervoor dat de wielen op een solide manier bevestigd zijn en
goed kunnen sturen waarmee gezorgd wordt dat de sturende wielen altijd in een goede positie ten
opzichte van elkaar staan.

Figuur A9: Een LEGO truck met Ackermann sturing,


aangestuurd met een NXT / EV (Jildert en Patrick de
Wachter, RobotMC club)

NLTC-H301 Leven met Robots v 1.0 72


Keuzehoofdstukken A - F

A4 De werking van een differentieel


Tegengaan van torderen van de as

In de werktuigbouwkunde is een differentieel een stelsel van tandwielen waarmee met één
aandrijvende as meerdere rotaties met verschillende snelheden afgetakt kunnen worden. Een
toepassing is in auto's en tractors waar een differentieel tussen de aangedreven wielen zit. Bij het
maken van een bocht zal het 'binnenste' wiel minder snel draaien maar toch aangedreven worden.

In modderig terrein en op een gladde weg is dit een nadeel, doordat het ene wiel kan gaan slippen en
het andere wiel stil kan blijven staan. Om dit te voorkomen is er een 'gelimiteerd slipdifferentieel' die
met behulp van een koppeling de krachten weer over beide wielen verdeelt.

Een andere mogelijkheid die veel terreinwagens hebben is een differentieel dat tijdelijk geblokkeerd
kan worden (het kleine wiel wordt vastgezet). Dit
heet dan een 'sperdifferentieel'.

Als je je LEGO NXT / EV robot als een auto maakt,


kan het maar zo gebeuren dat je ook een
differentieel nodig hebt. De LEGO NXT / EV
aanvullingsset heeft een differentieel, maar deze
kun je ook uit veel andere sets halen.

Op de website ►URL11 (Peeron) kun je door te


zoeken op "differential", zien welke sets er zijn met
differentieel.

Je ziet in figuur A10 een toepassing van een


Figuur A10: Differentieel met LEGO onderdelen
differentieel met LEGO onderdelen.

Een groot nadeel van zo'n constructie is dat bij een bocht een situatie kan ontstaan dat het buitenste
wiel meer grip krijgt dan het binnenste. Daardoor gaat de meeste kracht opeens op het binnenste wiel
komen en loopt het voertuig als het ware weg. En dat wil je niet bij een robot: deze moet een
voorspelbare rechte lijn volgen. Een alternatief is daarom om gebruik te maken van twee differentiëlen
("Dual Differential Drive").

Er zijn ook voorbeelden van versies voor de NXT / EV op internet te vinden. In 2008 introduceerde
LEGO zogenaamde 'lineaire actuatoren'. Voor die tijd kende LEGO al wel pneumatische lineaire
actuatoren (LA's), maar met de recente Power Functions productlijn, zijn deze (vooralsnog) vervangen
door de nieuwe LA's. Het is voor ons interessant om te onderzoeken hoe deze nu precies werken.

NLTC-H301 Leven met Robots v 1.0 73


Leerlingenhandleiding

Figuur A11: Twee systemen met een differentieel.

Links een tweevoudige differentieel van LEGO, rechts een differentieel in een
‘real world’ voertuig.

A5 'Workshop' Lineaire Actuator


Stap 1.
Zorg dat je LA's krijgt (►URL10 of via een set met de LA er in (zie de
website ►URL11 ) en zoek op onderdeel x1918cx1).

Stap 2.
Probeer het onderdeel uit. Zie ►URL12.
Probeer te begrijpen hoe de LA werkt.

Stap 3.
Maak een schematische tekening waarin je aangeeft hoe je zelf (met
bijv. losse andere LEGO onderdelen) een LA zou kunnen maken.
Gebruik o.a. de NXT / EV set en/of de aanvullingsset voor de NXT / EV.

Stap 4.
Lees onderstaande tekst en bekijk of je conclusies juist waren. Zie:
►URL13. Figuur A12: LA’s

Leuke toepassingen
Er zijn op Internet leuke toepassingen te vinden van de Lineaire Actuatoren. Sommige ideeën kun je
vast toepassen op bijvoorbeeld de robot die je als eindopdracht bouwt. Zie: ►URL14.

NLTC-H301 Leven met Robots v 1.0 74


Keuzehoofdstukken A - F

A6 Meer doen met je motoren


Een mechanische 'motor multiplexer'

Een van de grootste nadelen van de NXT is dat er maar 3 motoren mee aangestuurd kunnen worden.
De EV3 heeft 4 motoraansluitingen. In hoofdstuk B. Sensoren en elektronica wordt behandeld hoe je
de NXT / EV met behulp van extra elektronica meer motoren kunt geven, maar ook daarmee heb je
soms nog te weinig mogelijkheden voor een multifunctionele robot. Zeker als je de NXT / EV
beschouwt als prototype platform voor realistische robots (bijv. van het type iRobot Packbot), wil je
gewoon de NXT / EV unit tot het uiterste kunnen benutten.

Jonathan Daudelin kwam met het idee om met behulp van twee motoren 4 (of meer, er is zelfs een
versie met 12 aandrijvingen) verschillende functies te kunnen aansturen. Het principe is simpel: de ene
motor zet de andere motor in de juiste positie om een aandrijving te kunnen verzorgen. Als je twee
motoren voor de voortbeweging van de robot gebruikt heb je nog een probleem met het aansturen
van deze motor maar met behulp de informatie van hoofdstuk B kun je een extra motor op de NXT /
EV aansluiten. Met vier motoren kun je dan al heel veel functies voor elkaar krijgen. Een alternatief is
om wel gewoon 3 motors te gebruiken en een aandrijving van de motor multiplexer ook te gebruiken
voor het aandrijven van de robot zelf.

Guy Ziv heeft ook nog een andere aardige toepassing gemaakt met behulp van een wormwiel. Als je de
motor linksom laat draaien wordt as A aangestuurd, als je de motor andersom laat draaien wordt as B
aangestuurd. (►URL2, Document: Worm_Gear.pdf)

Het idee van Jonathan Daudelin om te komen


tot een manier om verschillende functies van
een NXT / EV te kunnen aandrijven. Voor
robotwedstrijden als de FIRST LEGO League en
de FIRST Tech Challenge kan dit heel nuttig (en
nodig) zijn, maar ook voor prototypes is het
ook erg handig.

Figuur A14: Het idee van Jonathan Daudelin

NLTC-H301 Leven met Robots v 1.0 75


Leerlingenhandleiding

A7 Spoelen of Solenoïden: handige actuatoren


Magnetisme voor een lineaire beweging

Als elektromechanische component wordt de spoel ook wel aangeduid als solenoïde, een letterlijke
vertaling van het Engelse solenoid (spoel). De spoel is dan een actuator, een constructie die een
meesstal lineaire beweging opwekt bij het aanbrengen of wegnemen van een elektrische stroom door
de spoel. De beweging wordt veroorzaakt doordat de opgewekte magnetische krachten in de delen
van de kern elkaar aantrekken of loslaten.

De eenvoudigste actuator is een relais, waarbij deze beweging elektrische contacten, een ventiel of
klep bedient. Een relais zit bijvoorbeeld in tijdschakelaars.

Een solenoïde werkt als volgt:


- Je zet er spanning op, pin trekt naar binnen, klepje of wat dan ook beweegt de ene kant op.
- Spanning eraf, de veer laat de pin naar buiten gaan en je klepje staat de andere kant op.

Het kenmerk van een solenoïde is de staafvormige spoel . In de mechanica wordt de term solenoïde
breed gebruikt. Een solenoïde is in de mechanica een transducer welke de energie (in welke vorm dan
ook) omzet in een lineaire beweging. Volgens deze definitie zou je elke lineaire actuator een solenoïde
kunnen noemen.

Dhr. Sivan Toledo van de Universiteit van Tel Aviv (Israël), heeft een artikel geschreven over de manier
waarop een solenoïde aan te sturen is met de NXT / EV (Artikel staat op de CD). Met de PCF8574A is
het volgens Sivan een beetje tricky om de solenoïde aan de praat te krijgen, maar er worden in het
artikel ook aanbevelingen gedaan voor alternatieven. Zie ►URL15. Zoek eventueel ook op ‘’alternative
actuators’, ‘stepper motors’, ‘solenoids’.

Zoals te zien is in de afbeelding, is het


mogelijk om de kern door de spanning
om te polen verschillende richtingen
uit te laten gaan. Meestal wordt er
echter een veer gebruikt.

Figuur A15: De werking van een solenoïde spoel.

NLTC-H301 Leven met Robots v 1.0 76


Keuzehoofdstukken A - F

Figuur A16: Een geautomatiseerd melksysteem


(“melkrobot”) Lely Astronaut A3, is ontworpen
om efficienter en tegen lagere kosten te
kunnen werken. Prettig voor de koe dat ze snel
haar melkdracht kwijt kan en prettig voor de
boer dat de werkdruk afneemt.

A8 Opdrachten bij A. Mechanica

Opdracht A.1: Dubbele Differentieel


a. Noem 3 voor- en nadelen van een dubbel differentieel ten opzichte van een enkelvoudig
differentieel.
b. Gegeven deze voor- en nadelen, welk advies zou jij geven aan robotbouwers die een
voertuigrobot op > 4 wielen willen maken.

Opdracht A.2: Solenoïdes


a. Leg in je eigen woorden duidelijk uit wat een solenoïde actuator is.
b. Sivan Toledo geeft een toepassingsmogelijkheid om een 'kanon' af te schieten (zie ►URL17).
Geef zelf nog een voorbeeld van een toepassing voor een mogelijke robot.

Opdracht A.3: Differentieel bouwen


Maak een enkel of dubbel differentieel met behulp van de LEGO NXT / EV set(s).

Opdracht A.4: Ackermann robot


Maak op basis van de robot uit A.3 een robot welke werkt met behulp van het Ackermann principe.

Opdracht A.5: Ontwerp een robot


Ontwerp met behulp van de methodes uit de programmeer hoofdstukken een robot en programmeer
deze. Zorg ervoor dat je duidelijke mechanische uitdagingen in je robot verwerkt.

B. Sensoren en Elektronica

NLTC-H301 Leven met Robots v 1.0 77


Leerlingenhandleiding

B1 Sensoren en elektronica: draadjes, soldeer en componenten


Uitleg hoofdstuk
In hoofdstuk 2 heb je al geleerd wat sensoren zijn, welke sensoren de LEGO robot heeft en hoe je
sensoren kunt gebruiken. Dit hoofdstuk stelt je in staat om nog meer te leren over sensoren. Behalve
een stukje basis elektrotechniek, zul je een aantal praktijkopdrachten uitvoeren waarbij je ook zelf
sensoren leert maken.

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je hebt de basiskennis van elektronica
- je leert waaruit een sensor opgebouwd is
- je leert hoe je zelf sensoren maakt en programmeert
- je leert hoe sensoren met de microcontroller communiceren (I2C)

Presentatie
Dit hoofdstuk is bedoeld als verdieping. Er wordt van je verwacht dat je het hoofdstuk zelfstandig
doorwerkt.

Je begint met een basis van de elektrotechniek. Een goed boek dat ook op de Hogeschool gebruikt
wordt maar ook geschikt is voor op de HAVO of het VWO, is "Elektronica voor Dummies". Er is ook
aardig boek over de basis van robots uit dezelfde serie: "Robot Building For Dummies".

Een microcontroller
We beginnen met de microcontroller. De
microcontroller is de basis van de NXT / EV
zelf en zorgt ervoor dat je sensoren en
actuatoren kunnen gebruiken. In andere
hoofdstukken (hoofdstuk D: Kunstmatige
Intelligentie) heb je het ook over de interne
microcontrollers van de NXT / EV. In het
kader van dit hoofdstuk heb je echter een
ander doel: de basis functies van de
microcontroller begrijpen om zo eigen
sensoren en actuatoren met de NXT / EV aan
te kunnen sturen. Je zult niet al te diep
ingaan op de werking van de microcontroller.
Dit is bijvoorbeeld bij de opleiding
Technische Informatica stof voor in het Figuur B2: Basisfunties microcontroller
tweede jaar en dat geeft uiteraard wel wat
aan over de complexiteit.

Een microcontroller bestaat uit een processor (deze voert de berekeningen uit, net als bijvoorbeeld de
Pentium processor in een computer), 'permanent' geheugen om je programma in op te slaan, tijdelijk

NLTC-H301 Leven met Robots v 1.0 78


Keuzehoofdstukken A - F

geheugen voor berekeningen en wat extra functies zoals een analoog-naar-digitaal omzetter, timers,
in- en uitvoer mogelijkheden, etc..

Al met al is de microcontroller eigenlijk een kleine computer in een chip. De NXT / EV heeft twee
microcontrollers voor zichzelf en nog één extra voor Bluetooth aansturing (GSR BlueCore™ 4). De
"Main Processor" (ARM7) is de controller die alles aanstuurt.

Zoals in figuur B2 te zien is, zorgt deze eigenlijk voor alle andere functies. De coprocessor (AVR) ontlast
de hoofdprocessor door bijvoorbeeld het aansturen van actuatoren zoals de LEGO Mindstorms servo's.
De AVR zorgt daarnaast ervoor dat de NXT / EV brick de juiste spanning heeft. De ARM7 processor
wordt ook door de AVR aan- en uitgezet. Dat is één van de redenen dat de knoppen op de NXT / EV
dus ook niet direct aan de ARM7 maar aan de AVR gekoppeld zijn.

I2C (I kwadraat C)
I2C is een manier om twee chips met elkaar te laten communiceren. Zoals je ziet in figuur B2, gebruikt
LEGO I2C om de AVR en ARM7 microprocessoren met elkaar te laten communiceren. Die
communicatielijnen noem je de I2C-bus.

De I2C-bus (spreek uit als: I kwadraat C bus), is een synchrone, seriële bus, ontwikkeld door Philips
(reeds in 1979) voor datacommunicatie tussen microprocessoren en andere IC's (‘chips’), meestal op
één enkele printplaat.

Omdat de NXT / EV I2C ondersteunt, kun je daar goed gebruik van maken. Hoofdstuk 13 van het
"Extreme NXT / EV"-boek gaat over PC.

Figuur B3: een ‘wafer’ van electronische microchips en microscoop in de stofvrije fabriek

B2 I2C en de PCF8574 IC
Communiceren met chips

Met behulp van I2C kun je eigen sensoren en actuatoren aansluiten op de NXT / EV en deze er mee
laten communiceren door middel van het programma wat je op de NXT / EV zet (bijv. in NXT / EV-G,
RobotC, NXC).

NLTC-H301 Leven met Robots v 1.0 79


Leerlingenhandleiding

Een I2C -bus heeft één master (in ons geval meestal de NXT / EV) en een maximum van 127 slaves. In
de praktijk is er een volgens het boek van Gasperi en Hurbain een praktische limiet van ongeveer acht
slave apparaten voor de NXT / EV.

Het I2C apparaat heeft een 7-bits adres. Als de NXT / EV wil communiceren met het op de I2C
aangesloten apparaat, zendt de NXT / EV het adres van het apparaat en een enkele bit waarin wordt
aangegeven of de NXT / EV wil lezen of schrijven (0 = schrijven, 1 = lezen).

Het apparaat reageert vervolgens met een reactie van 1 bit. Als er om lezen gevraagd is (8e bitje dus
op één is gezet [=hoog]), volgt onmiddellijk daarna de data (zie fig. 13-1 uit het extreme NXT / EV
boek). De NXT / EV stekkers hebben I2C op pin 5 en pin 6 zitten.

De PCF8574 chip
In de extreme NXT / EV Mindstorm kit zit een IC (chip) van het type PCF8574, waarmee je in- en
uitvoer kunt vergroten. Een voorbeeld daarvan is het aansluiten van bijvoorbeeld 8 LED's (lichtgevende
diode's) of 4 LED's en 4 schakelaars.

In figuur B.2 en B.3 staat voor beide schakelingen het schema afgebeeld. Beide schakelingen kunnen
gebouwd worden met de Mindstorm -kit onderdelen. Let goed op dat je de juiste waarden neemt
voor de weerstanden en de LED's in goede richting aansluit.

De minpool is de korte poot en de platte kant van de LED, in het schema de kant waar de pijl van de
LED heen wijst en het balkje dus weergegeven wordt. R1 en R2 zijn 82kΩ en R3-R6/R10 moeten
minimaal 150Ω zijn.

Je gebruikt een tabel met weerstand codes om te kijken welke weerstand welke waarde heeft
(natuurkundeboek, Elektronica voor Dummies, internet).

Behalve communicatie tussen


chips (links) kun je ook via de
poorten van de NXT met een
chip zoals de PCF8574(AP) chip
uit de Mindstorms kit eigen
actuatoren en sensoren
aansluiten.

Voor nog meer mogelijkheden


kun je met l2C een andere
microcontroller op de NXT / EV
aansluiten.

Figuur B4: I2C Communicatie

N.b. de schakelingen wijken iets af van het "Extreme NXT"-boek.

NLTC-H301 Leven met Robots v 1.0 80


Keuzehoofdstukken A - F

B3 Elektronica onderdelen: symbolen en functies

Naam Eenheid Uiterlijk + Symbool Functie

Weerstand Ohm / Ω Een weerstand bepaalt de hoeveelheid stroom


die door (een deel van) de schakeling kan
lopen. Zorgt ervoor dat je LED of IC-chip niet
doorbrandt. Je gebruikt een LDR, ( een licht
gevoelige weerstand) om lichtintensiteit te
meten.

Licht Voltage (V) en Een LED is een speciaal soort diode. Als de
uitstralende maximale stroom er in de juiste richting doorgaat geeft de
diode (LED) spanning LED licht. LED is dan ook de afkorting voor Light
Emitting Diode. Een LED is oriëntatie gevoelig.
(mA) De lange poot is de anode (+) en de korte de
Kathode (-). De korte poot is de kathode en
heeft een kenmerk (=afvlakking op huis).

Diode Fahrad (uF) Diodes worden gebruikt om de stroom in één


richting door te laten (in de richting van de pijl)
als een soort van terugslagklep, zoals in een
waterleiding. Net als zo’n terugslag klep zijn
diodes oriëntatie gevoelig. Let op het streepje
op de diode zelf en het streepje in het symbool.
De kant van het pijltje (links in de tekening)
heet de anode en de andere kant (rechts in
tekening) heet de kathode.

Condensator De condensator wordt gebruikt om stroom op


te slaan. Het symbool staat voor een
condensator met een hogere capaciteit en deze
soort is stroom richting gevoelig. Er is een
anode en kathode kant. (ompolen is explosief!).

Condensatoren worden ook wel Elco's


genoemd, wat staat voor Elektrolytische
Condensator.

In de elektrotechniek maak je gebruik van speciale schema’s en symbolen om in een elektronisch


circuit de verschillende componenten weer te geven.

NLTC-H301 Leven met Robots v 1.0 81


Leerlingenhandleiding

Tabel B2

Er zijn nog veel meer elektronica componenten en elektrotechniek is een complex vakgebied. Je hoeft
niet alle details te weten bij de opdrachten die wij doen.

De NXT / EV onderdelenkit bevat een spiekbrief die aangeeft wat welk onderdeel is en waar je op moet
letten.

NLTC-H301 Leven met Robots v 1.0 82


Keuzehoofdstukken A - F

B5 Actuatoren en sensoren : 8 LED’s en 4 LED’s + 4 schakelaars

NLTC-H301 Leven met Robots v 1.0 83


Leerlingenhandleiding

B6 Sensoren: Een echte kleurensensor

Figuur B5: Schakeling PVF8374 met 8 LED’s

Figuur B7: Schakeling PCF8574 met 3 LED’s en een lihtgevoelige weerstand

Het is goed om te weten dat de LEGO kleurensensor 'kleurenblind’' is. De sensor meet eigenlijk alleen
de intensiteit van de lichtreflectie in een vast frequentiegebied.

Je kunt een kleurensensor maken die wel verschillende kleuren kan


detecteren.

Behalve de PCF8574 heb je R1 en R2 weer nodig met een waarde van


82k Ω. Je gebruikt behalve een rode led, nu een groene en blauwe LED.
R3 voor de blauwe LED moet 390 Ω worden, R4 voor de rode LED
nemen we op 100Q en de groene LED heeft een weerstand van
minimaal 820 Ω nodig. Je sluit de LDR (lichtgevoelige weerstand) aan
FiguurB8:
Figuur B6:lichtgevoelige tussen
Schakeling PVF8574 met pinnen
4 LED’s en 42/3 en pin 1. De reden dat we voor R4 nu een iets lagere
schakelaars
weerstand weerstand kiezen, is dat je de felheid van de LED's ongeveer gelijk wil
hebben.

Berekenen van weerstandwaardes

NLTC-H301 Leven met Robots v 1.0 84


Keuzehoofdstukken A - F

De waarde van een weerstand voor een LED is belangrijk. Zonder een weerstand zal een LED snel
doorbranden. Je gebruikt de wet van Ohm om de voorschakel weerstand voor een bepaalde LED te
berekenen. Voeding 5V.

Een gemiddelde rode LED gebruikt 2,25V en mag


maximaal 20mA (I) hebben.

We vullen R = U / I in:

R = (5 - 2,25) / 0,02

R = 137 Ohm. Je rondt naar boven af en komt dan Figuur B9: Formules
op de dichtstbijzijnde standaard weerstandwaarde
van 150Ω uit.

NLTC-H301 Leven met Robots v 1.0 85


Leerlingenhandleiding

B7 Programmeren van I2C met RobotC: communiceren met chips

Programmeren met I2C


Eén van de dingen waar je rekening mee moeten houden als je de aansturing voor de schakeling gaan
programmeren is dat de verschillende I2C chips verschillende basisadressen hebben. Een basisadres is
de ‘startplek’ voor een bepaalde opdracht in het geheugen (register). Het adres van een 8574 ligt
tussen 0x40 en 0x4F (hexadecimaal). De 8574A heeft een range tussen 0x70 en 0x7F. Je kunt maximaal
8 chips van een bepaald type (8574 of 8574A) op de bus (lees: NXT / EV sensor poort draden 5 en 6)
aansluiten. Door beide types te combineren, zou je dus 16 van zulke chips aan kunnen sluiten.

Adres 0x40 en 0x41 hebben betrekking op dezelfde eerste chip, 0x42 en 0x43 gaan over dezelfde
tweede chip, etc..

Met je rekenmachine kun je omrekenen dat 40 in hexadecimaal gelijk is aan 01000000 en 41 is dan
01000001. De 8574A begint bij 70, dat is dus 01110000 en 71 is binair 01110001. Het minst significante
bit (vet gedrukte 0 of 1) van het adres geeft aan of je respectievelijk een lees- of schrijfoperatie naar de
chip wilt doen.

De driver (bestand driver_i2c.c) van Scott Briscoe zorgt ervoor dat je de basis operaties voor het i2c
gebeuren eenvoudiger kunt uitvoeren. Let er op dat je het basisadres in regel 5 instelt voor jouw
situatie (op het juiste I2C adres), deze staat standaard op 0x76.

Op de leerling CD staat de voorbeeldcode voor een RobotC programma met I2C. In de map datasheets
staan ook de PDF’s voor de IC's die je gebruikt (PCF8574.pdf).

De datasheet geeft voor de verschillende uitvoeringen van een bepaalde IC exact aan hoe het ding
werkt en wat de interne opbouw ervan is.

Een I2C Scanner


Het bestand I2C_Scanner.c is te vinden in de materialen map. Als je dit programma in RobotC opent,
compileert (F5) en op de NXT / EV runt, dan laat de NXT / EV zien op welke poorten er I2C apparaten
(clients) zitten. De Ultrasoon sensor (Sonar) is zo'n apparaat.

De programmeurs kunnen met dit bestand de mogelijkheden van de NXT / EV met RobotC verder
onderzoeken. Er zitten een paar opties in zoals het maken van een "Try Me" programma. Je
programma komt dan op de NXT / EV bij "Try Me" (het LEGO poppetje) te staan.

Referentie:
►URL16 (Sivan Toledo)
►URL44 Mindsensors, “Sensor Building Kit for NXT / EV with PCF8574 IC”.

NLTC-H301 Leven met Robots v 1.0 86


Keuzehoofdstukken A - F

B8 Programmeren van I2C met RobotC


Een I2C Binaire teller programma

Figuur B10: Code

In dit programmabestand staat ook nog een code waardoor je op je NXT / EV scherm kunt zien welk
ledje aan zou moeten staan!

Tip! Denk erom dat in het bestand PCF8574A_Drv.c het adres van je I2C chip is ingesteld, dit staat
standaard op 0x70. Als het niet werkt, controleer je met de I2C scanner code (I2C_Scanner.c) of je
printje inderdaad op adres 0x70 zit.

NLTC-H301 Leven met Robots v 1.0 87


Leerlingenhandleiding

B9 Programmeren van I2C met RobotC


Verkeerslicht voetgangersoversteek

Door schema B.3 een beetje aan te passen, kun je een verkeerslicht en voetgangers oversteeklicht
maken.

Hoe gaat dat in zijn werk?


In figuur B11 zie je links 3 LED's van het verkeerslicht, rechts de twee
LED's van het voetgangers oversteeklicht en het bijbehorende knopje.

Figuur B11: Verkeerslicht en


voetgangerslicht

Tussen de momenten dat de lichten aan zijn, zitten wachtmomenten, lichten springen immers niet
direct van rood op groen. Bij de knipperstand heb je een aan/uit lusje nodig. Laat het voetgangerslicht
ongeveer 5 keer knipperen, zie figuur B12.

Figuur B12: knipperstand voetgangerslicht

NLTC-H301 Leven met Robots v 1.0 88


Keuzehoofdstukken A - F

Het deelactiviteiten diagram daarvan zie je in


figuur B13, dat is stap "Voetgangerslicht groen
knipperen". Meestal is het lampje langer aan dan
uit, maar dat kun je instellen.

Om het intikken in RobotC wat eenvoudiger te


maken is er een bestand beschikbaar dat
"I2C_VerkeerslichtBasic.c" heet. Dit bestand
bestaat uit basis code waarin je de rest van de
code zelf kunt intypen.

NLTC-H301 Leven met Robots v 1.0 89


Leerlingenhandleiding

B10 Meerdere Actuatoren op de I2C aansluiten


DC motoren op de sensorpoort

Voor een echte robot heb je meer dan 3 actuatoren nodig. Eén robot arm heeft standaard al 6
actuatoren.

Via de I2C bus kun je motoren als actuator aansturen.


Omdat de sensorpoorten waarmee je de motoren
aanstuurt niet voldoende spanning leveren voor een
gemiddelde motor, heb je ook een extra voeding nodig.
Deze voeding zit als batterijbox in de Power Functions
(PF) set 8293. Deze set omvat tevens een extra motor,
een schakelaar en verschillende LED's aan een LEGO
Figuur B14: Aansluitingen voedingskabel PF
kabeltje.

In figuur B14 een overzicht van de pinnetjes van het Power Functions (PF) systeem. Met hulp van een
printplaat adapter kun je een eenvoudige verbinding maken met de PF actuatoren. Bedenk dat je de
motoren ook nog moet aansturen.

In een schakeling hebben motoren hebben een paar problemen. Je hebt al gezien dat ze veel
vermogen vragen. Daarnaast zorgen ze voor snel voor storing/ruis. Tenslotte: een digitale schakeling
met IC's heeft ±5V nodig, een PF motor heeft ±9V nodig.

Als je meer dan 3 motoren wilt gebruiken met de NXT, zijn alle
motoruitgangen (A, B en C) in gebruik. Je hebt dan nog een extra
voedingsbron nodig (bijvoorbeeld de batterijbox uit de PF set 8293 van
figuur B15). Naast het probleem van de voeding moet je de motoren
ook kunnen aansturen.

Dhr. Sivan Toledo van de Universiteit van Tel Aviv (Israël), heeft
Figuur B15: Batterijbox
daarvoor een goede schakeling voor de NXT ontworpen, zie ►URL17.

Je gaat zijn ontwerp gebruiken om de extra motor(en) aan te sturen en je past het ontwerp aan om het
nog wat eenvoudiger te maken. In figuur B16 zie je de basisonderdelen van de schakeling waar je het
aansturen van extra motoren mee voor elkaar zou moeten krijgen.

Figuur B16: Een overzicht van de onderdelen die het circuit moet
hebben.

NLTC-H301 Leven met Robots v 1.0 90


Keuzehoofdstukken A - F

Motoren aansturen

Je begint bij het meest lastige deel van het circuit (zie figuur B16): de motor aansturing. Als je een
(gelijkspanning) motor analoog aanstuurt, gaat dat vrij eenvoudig:

stap 1: plus- en minpolen aansluiten


stap 2: evt. schakelaar omzetten
stap 3: motor draait

Wil je de motor andersom laten draaien, dan verwissel je gewoon de plus en min van de voeding.

Als je de motor met digitaal en/of met pulsbreedtemodulatie aanstuurt, is dit niet zo eenvoudig.
Pulsbreedtemodulatie (in het Engels Pulse-width Modulation, afgekort tot PWM) is een
modulatietechniek welke wordt gebruikt als een manier van digitale informatieoverdracht. Je hebt dan
een speciaal circuit van elektronica onderdelen nodig die samen een zogenaamde H-brug vormt (naar
de vorm van het circuit; zie figuur B17).

Met een H-brug kun je de motor starten en


stoppen, maar ook links- dan wel rechtsom laten
draaien. De H-brug zorgt er ook voor dat je geen
spanningspieken en storingen vanuit de motor op
de elektronica krijgt (wat mogelijk elektronische
onderdelen kapot maakt).

Een extra voordeel van een H-brug schakeling is


dat je de externe voeding voor de motor op de H-
brug aan kunt sluiten. Deze wens had je al eerder
uitgesproken. Een H-brug bestaat namelijk uit
een aantal extra elektronica componenten die
ervoor zorgen dat de motor aan te sturen is.

Als je de voeding op de plus en minpool aansluit,


Figuur B17: H-brug dan kun je de motor met de volgende
combinaties regelen:

Opmerking: het is slecht voor de motor


A B C D Motor
en het circuit om A en C en/of B en D
tegelijk aan te zetten (kortsluiting Aan Uit Uit Aan Rechtsom
doordat + en - direct verbonden zijn) Uit Aan Aan Uit Linksom

Chip L293D uit de kit, heeft twee van de Aan Aan Uit Uit Remmen
H-brug schakelingen. Je kunt er dus twee Uit Uit Aan Aan Remmen
motoren mee aansluiten.

Als je de datasheet van deze IC (in de kit) bekijkt zie je dat:

NLTC-H301 Leven met Robots v 1.0 91


Leerlingenhandleiding

- er maximaal 36 volt op die motor mag staan (maar LEGO motors zijn vaak gemaakt voor
maximaal 9V)
- je maximaal een motor/last van 1,2 Ampère mag aansluiten
- de aansturing maximaal 7V mag zijn (maar de NXT / EV zal, als alles goed is, ongeveer 5V op de
aansturing zetten)
- De maximale last van 1.2 A is te weinig voor een grote PF motor, maar prima voor de motor uit
set 8293 (zie link naar ►URL18).
- Voor grotere lasten kun je i.p.v. IC L293D
beter gebruik maken van SN754410 (Max. 2.0
A).
In figuur B18 zie je de chip informatie vanuit de L293D
datasheet. Alle GND pinnen moet je verbinden met de
- pool van de voedingsbron (batterij?!). De Vs en Vss
pinnen moet je verbinden met de + van de
voedingsbron.

De input pinnen (pin 1-4) krijgen de invoer vanuit de


I2C chip. Pin 2 en 7 horen bij motor aansturing 1 en
pin 10 en 15 bij aansturing 2.

De output pinnen 3 en 6 verbind je met motor 1.


Eventueel sluit je op pin 11 en 14 motor 2 aan. Figuur B18: chipinformatie L2293D

Nu het schakelen van de motoren


Input 1 Input 2 Motor op output 1 + 2
De mogelijkheden zie je in de tabel hiernaast. Let
op, deze wijkt af van die in de eerdere tabel!): Laag Laag Remmen / Stop
Laag Hoog Rechtsom
Voeding voor de motoren
Hoog Laag Linksom
Als je IC L293D of een vergelijkbare IC externe
voeding geeft, moet je er op letten dat je de polen Hoog Hoog Remmen / Stop
juist aansluit, anders kun je de IC onherstelbaar beschadigen. Een aardige manier daarvoor is een
bruggelijkrichter. Een bruggelijkrichter bestaat uit 4 diodes die een deel van de stroomkring een
eenrichtingsweg maken.

Je ziet in figuur B19 dat het niet uitmaakt of je de ingangspolen


omwisselt, de uitgangspolen blijven altijd gelijk. Het enige nadeel van
een bruggelijkrichter is dat een diode ±1 volt opsnoept. Als je dus een
9V stroombron aansluit houd je 8V over. Voor de gemiddelde LEGO
motor is dat voldoende.

Met vier diodes kun je deze schakeling eenvoudig maken, je kunt ook
een bruggelijkrichter kopen die deze 4 diodes ingebouwd heeft.

NLTC-H301 Leven met Robots v 1.0 92


Figuur B19: Bruggelijkrichter
Keuzehoofdstukken A - F

Je gebruikt een eenvoudigere uitvoering met 2 diodes zoals je in het schema in figuur B20 ziet. Deze
schakeling gaat alleen het ompolen (verwisselen + en -) tegen, als je + en – dus verwisselt, gebeurt er
niets.

De schakeling voor de motoren


Je sluit de L293D nu aan op de I2C
chip zoals je kunt zien in de
schakeling in figuur B201 (Naar
L293D / SN754410). Hou er
rekening mee dat je alleen de kleine
Power Functions motor zoals die
van setje 8293 kunt gebruiken voor
een L293D i.v.m. de 1.2 A die deze
maximaal kan trekken.

Nb. met de SN754410 kunnen ook


solenoïdes aangestuurd worden.

Je sluit de motor aan op Y (1Y en 2Y


en/of 3Y en 4Y). De voeding vanaf
de NXT / EV, via de PCF8574P komt
dan op 1-2EN en 3-4N. Je sluit er
twee pull-up weerstanden tussen Figuur B20: Schakeling. Het L293 schema
aan zodat het correct werkt (R1, R2
> 82kQ R3 en R4 ~ 4k7Q). In figuur B20 en B21 zie je de schakeling.

GND (Ground) in figuur B20 komt aan de Rood/Zwart van figuur B21 de 5V komt van de groene ader
van de NXT / EV. De 9V haal je vanaf de PF connector (zit in de onderdelen kit). De 0 daarvan verbind je
met de GND (Let er op dat je de kabel niet verkeerd aansluit, de 9V is gemarkeerd!).

Laat je docent de schakeling controleren en zet dan spanning op de motor.

NLTC-H301 Leven met Robots v 1.0 93


Leerlingenhandleiding

Figuur B21: Schakeling. PCF8574 om een H-brug aan te sluiten

Links
►URL19 Mindsensors, controle over motoren met PCF8574
►URL20 H brug, wikipedia
►URL21 Philohome, motoren
►URL22 Bruggelijkrichter, wikipedia

NLTC-H301 Leven met Robots v 1.0 94


Keuzehoofdstukken A - F

B11 Sensor: een 'sobere' lijnvolger


Je eigen lichtsensoren

Een simpele lijn-volg-robot kan een ononderbroken witte lijn volgen. Je ziet nogal eens lijn-volg-robots
die instabiel zijn. Ze volgen de lijn maar zwabberen van links naar rechts.

Je gaat een lijnvolger maken met 3 lichtsensoren. Voor een stabiele lijnvolger heb je in ieder geval 2 of
3 lichtsensoren nodig. Je gebruikt daarvoor een reflectieve optische sensor met transistor uitvoer: de
cny70.

In figuur B22 zie je hoe de sensor is opgebouwd (staat in de


datasheet, in de infomap of dvd).

Aansluitingen
Als je de CNY70 van onderen af
bekijkt (figuur B23) en zorgt dat
het opschrift rechts (pijl) staat, zie
je de aansluitingen (bovenop zie
Figuur B22: Opbouw sensor met Led je dat het ene gaatje lichter is, dit
(links) en fototransistor (rechts) is de LED).
Figuur B23: CNY70

De logica van de NXT / EV werkt op een spanning van rond de 5V. Om deze spanning te bereiken moet
je een paar componenten aansluiten rond de CNY70. Hierdoor wordt er een goed signaal naar de NXT /
EV gestuurd.

De meest elegante oplossing is gebruik te maken van een versterker zoals de LM358 en een variabele
weerstand. Hiermee kunnen de CNY70 sensoren hardwarematig ingesteld worden. Dat doe je nu nog
niet. Om het hier wat eenvoudiger te houden.

In figuur B24 zie je de schakeling in


Eagle (let op, deze schakeling komt NIET
overeen met de kitversie, pin C en E zijn
er in later aangemaakt via een
draadbord).

R1 is de voorschakelweerstand voor de
LED (> 75 Ohm [bijv. 100Ω]).

R2 is de pull-up weerstand die de


transistor naar 0 of 5V trekt (10k Ohm
[kleurcode: br zw or]).
Figuur B24: Schakeling in Eagle

NLTC-H301 Leven met Robots v 1.0 95


Leerlingenhandleiding

Deze schakeling maak je voor alle drie de CNY70's. Er is een klein probleempje als je de sensoren op
een draadbordje aan wil sluiten. Dat lukt eigenlijk niet. Je soldeert daarom eerst een paar draadjes aan
de sensor. Je kunt stukjes extra draad gebruiken of in overleg met je docent een paar van de
draadbord draadjes hiervoor opofferen

Tip!
In de schakeling uiterst rechts kun je ook een variabele weerstand gebruiken (potmeter) i.p.v. R2 zodat
je het moment waarop de fototransistor triggert kunt instellen. Neem dan een waarde van bijv. 10kΩ
(103).

Zorg ervoor dat de soldeerbout op ongeveer 300-350 graden staat. Als je het soldeerdraad tegen de
punt houdt en ziet dat dit snel mooi vloeibaar wordt, weet je dat de bout heet genoeg is.

Zet de sensor voorzichtig op zijn plaats met een krokodillenbek. Je kunt de draadjes het beste met z'n
tweeën vast solderen. De ene houdt het draadje
tegen het pootje van de sensor aan. De ander
brengt voorzichtig de soldeerbout en het
soldeerdraad naar het pootje toe en laat kort
pennetje, draadje, soldeerboutpunt en soldeertin
tegen elkaar komen. Als je de bout te lang tegen de
sensorpoot houdt (langer dan een paar seconden)
gaat de sensor onherroepelijk kapot!

Om het resultaat te testen begin je eenvoudig:


Je sluit een LED aan op pin 2 van de I2C interface
PCF8574A. De min (kathode, dus korte poot) van de

Figuur B26: Code listing: Stap 2 voor de


Figuur B25: ede listing: Stap 1 voor de lijnvolger
NLTC-H301 Leven met Robots v 1.0 96
lijnvolger
Keuzehoofdstukken A - F

LED aansluiten op pin 2, dan de weerstand (~150Q) aansluiten tussen de lange poot (anode) en de
plus.

Code listing in figuur B25 geeft een 'quick and dirty' programma weer van de sensor test.

De volgende stap is nog twee van deze sensoren aansluiten. Je sluit deze aan op pin 2 en 3 van de
PCF8574A.

Je sluit op de pinnen 4, 5 en 6 LED's aan, zodat je kunt zien wanneer het sensor 'oog' een
lichtgekleurde ondergrond ziet op een bepaalde sensor.

Als de hele wirwar van draadjes is aangesloten, kun je gaan testen.

In Code Listing in figuur B26 zie je de programmacode die voor het testen gebruikt wordt.

Behalve LED's gebruiken je ook bliep geluid gebruiken om te zien of de sensor wit detecteert.

De sensor programmeren
De volgende stap is het maken van het computerprogramma waarbij de sensoren continue uitgelezen
worden en er afhankelijk van de terugkomende waarde (feedback) bijgestuurd wordt.

De oplossing voor de problemen bij het ontwerpen van een robot die een lijn op een strakke manier
volgt, noem je "PID control". De letters PID staan hier voor Proportioneel, Integrerend en
Differentiërend. De PID control theorie is niet gemakkelijk, daarom beperk je je tot wat nodig is om het
'probleem' op te lossen.

1. Set Point: onze gewenste positie boven de lijn


2. Current position: onze huidige positie boven de lijn
3. Error: het verschil tussen de huidige positie en het
gewenste punt (Set Point).
4. Proportional: voorziet in een linaire reactie op de
afwijking.
5. Integral: houdt de opgetelde fout over de tijd bij. Hoe
langer de robot uit koers is, hoe groter deze waarde
wordt (dus hoe meer deze mee gaat tellen)
6. Derivative: geeft een reactie welke in verhouding is
met de veranderingsratio. Hoe sneller de robot van de
lijn afwijkt, hoe groter dit deel wordt.

De significatie van de eerder genoemde PID factoren wordt


bestuurd door de drie constanten: kP, Ki and Kd. Deze
constanten worden gebruikt om de factoren waarmee het
systeem als totaal reageert te vergroten of verkleinen.

Sensor# detecteert een lijn: 8 Waarde: 80


NLTC-H301 Leven met Robots v 1.0 Figuur B27: Lijn-volg-sensor met 8 97
sensoren
Leerlingenhandleiding

Als de lijn precies in het midden zou zijn, krijg je gemiddelde een waarde 45 (zie figuur 27). Dat is dus
de Set Point.

Nu is de opgave om een programma te maken dat bijstuurt op basis van deze waarden. Op zich heb je
met 3 sensoren nog geen stabiele volger, maar je zou deze lijn-volg-sensor eenvoudig uit kunnen
breiden tot 8 sensoren. (Zie figuur B27)

Links

►URL23 PID controller voor Lego Mindstorms


►URL24 wikipedia, PID_controller
►URL25 letsmakerobots.com – PID
Of: zoeken in Google op "PID Control Theory".

Links naar projecten om de NXT / EV uit te breiden


RobotC drivers voor uitbreidingen, leuke tips en nuttige informatie over sensor en actuator
toepassingen met de NXT / EV: ►URL26 RobotC drivers
Ideesite van LEGO waar NXT / EV projecten te vinden zijn: ►URL27
Linux project engineer, ook op ►URL26
Over sensoren en motoren voor/van LEGO: ►URL18

NLTC-H301 Leven met Robots v 1.0 98


Keuzehoofdstukken A - F

Weerstanden, IC's, condensatoren, diodes

Kleur Getal
Zwart 0

Bruin 1

Rood 2

Oranje 3

Geel 4

Groen 5

Blauw 6

Paars 7

Grijs 8

Wit 9

Tabel met weerstand


waardes en kleurcodes.

NLTC-H301 Leven met Robots v 1.0 99


Leerlingenhandleiding

C. Ethiek van Robotica

Figuur C1: Operatierobot

C1 de impact van robots


Als er één ding is waar men het over eens is, is dat robots het leven voor goed veranderd hebben en
jouw leven in de toekomst nog veel verder zullen veranderen. Vaak denk je niet zo goed na over de
consequenties van techniek, in dit hoofdstuk is dat juist waar het om draait. Je hebt te maken met
verschillende dilemma's op ethisch gebied op het gebied van Robotica. Je kunt dan aan zaken denken
als verantwoordelijkheid, inzetbaarheid en veiligheid.

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je kent de wet van de Robots
- je kent algemene ethiek

Presentatie
Je begint met een inleiding op ethiek. Sommige leerlingen hebben ethiek al gehad, voor hen is dit een
opfriscursus, andere leerlingen zien het voor het eerst. Je begin bij de zogenaamde 'moraal'
wetenschap. Hierbij gaat het erom hoe we weten of iets 'goed' is of 'fout'. Mensen zoals Betrand
Russell, hebben gesteld dat er niet zoiets bestaat zoals "goed" en "kwaad". Over het algemeen blijkt

NLTC-H301 Leven met Robots v 1.0 100


Keuzehoofdstukken A - F

het in de praktijk moeilijk om die overtuiging consequent vol te houden. Meestal koppel je normen en
waarden aan bepaald wereldbeeld.

Het denken wordt beïnvloed door de maatschappij (cultuur), je opvoeding en je eigen voorkeuren.
Politieke voorkeuren, levensovertuigingen en dergelijke, vormen de basis voor je denken en handelen.

Sommige mensen denken dat vrijheid iets onbeperkts is, maar dat is blijkbaar in de praktijk toch niet
het geval. Voorbeeld: de vrijheid van meningsuiting wordt in de maatschappij gezien als een groot
goed, toch worden mensen aangeklaagd en/of vervolgd als ze discriminerende uitspraken doen
richting anderen. Dit laat zien dat de vrijheid van meningsuiting blijkbaar niet onbeperkt is. Vrijheden
zijn dus nogal eens controversieel.

De dingen die je belangrijk vindt om na te streven, noem je waarden. Waarden zijn persoonlijk. Soms
streven mensen gezamenlijk, dezelfde waarden na, maar de beleving van die waarden kan verschillend
zijn. Waarden zijn opvattingen. Normen zijn concrete regels om waarden na te streven en in stand te
houden. Ze schrijven voor wat je en wel doen moet. Jouw waarden en normen zijn gebaseerd op jouw
wereldbeeld en worden beïnvloed door mensen om je heen (familie, vrienden, woonwijk, land,
werelddeel, etc.).

Als je in een oosterse cultuur zou leven, heb je waarschijnlijk andere waarden en normen dan je nu
hebt. Wij kijken er vreemd van op dat Amerikanen het recht om wapens te dragen een belangrijk recht
vinden. Terwijl we toch dezelfde waarden gemeenschappelijk hebben, zijn de normen verschillend.

Er zijn ook waarden die niet gebonden zijn aan wat mensen ervan vinden, de ethische waarden.
Voorbeelden van ethische waarden zijn gerechtigheid, liefde, vrijheid en gelijkheid. Het is goed om te
bedenken wat ethisch handelen inhoudt en wat de consequenties ervan zijn voor de dingen die je
doet.

Nu je een klein beetje een idee hebt wat waarden en normen zijn, passen je deze kennis toe op de
Robotica. Jouw visie op het ontstaan en ontwikkeling van het leven, heeft gevolgen voor de kijk die je
hebt op de sociale robotica. Wil je wel een robot in plaats van een mens als verpleegkundige als je in
een ziekenhuisbed ligt?

De Japanse robotwetenschapper
Hiroshi Ishiguro (rechts) zegt zelf:
“Toen mijn dochtertje haar voor het
eerst zag, werd ze een beetje
verlegen en bang", vertelt Hiroshi
Ishiguro.

En wat nu als de robot Ishuguro een


bank overvalt? Krijgt de echte
Hiroshi dan niet de schuld?

Figuur C2: Robot Hiroshi Ishiguro


NLTC-H301 Leven met Robots v 1.0 101
Leerlingenhandleiding

Een citaat van een website: “Japanese are more accepting of robots because the native Shinto religion
often blurs boundaries between the animate and inanimate, experts say." (“Japanners staan meer
open voor robots omdat, volgens de experts, in hun Shinto geloof er geen duidelijke grens is tussen
levende en levenloze natuur”) ►URL28

Als je je afvraagt of een robot 'zelfbewust' kan zijn, heb je daarvoor eigenlijk geen harde
wetenschappelijke beschrijvingen en definities van wat zelfbewustzijn eigenlijk is. De monnik
Augustinus zei lang geleden: "ik twijfel, dus ik ben", maar of een robot dat ooit gaat denken weet je
niet.

Vanuit een optimistisch toekomstperspectief, zou het mogelijk kunnen worden om zelfbewuste robots
te maken. De vraag komt dan kunnen robots gelijk gesteld worden aan mensen?

Dat heeft gevolgen voor je antwoord op vragen als:


- Heeft een robot recht op wettelijke bescherming?
- Denk je met robots op dezelfde manier kunt omgaan als met mensen?
- Zouden mensen die robot-dier mishandelen, ook sneller een echte hond mishandelen?

Verschillende psychologen veronderstellen dat als kinderen geweld zien tegen een robotdier als AIBO,
ze gestoord gedrag laten zien in de omgang met een echte hond. Kijk ook eens naar het filmpje van
"Aiko" (zie ook opdrachten).

Dhr. Levy, schaakgrootmeester en kenner op het gebied van kunstmatig intelligente robots, is in 2007
aan de Universiteit van Maastricht gepromoveerd op het gebied van relaties tussen mensen en robots.
Hij zegt het volgende: "Mijn voorspelling is dat in 2050, Massachusetts de eerste staat zal zijn die
huwelijken met robots goed zal keuren."

AIBO kent emoties zoals


"boosheid", "blijdschap" en
"verdriet". Deze zijn echter
keurig voorgeprogrammeerd
door de robotontwerpers
van Sony. Maar wat als AIBO
nu echt leert denken? Wat
als Repliee R1 nu echt
verdrietig wordt?

Figuur C3: AIBO en Repliee R1

Levy verwacht dat tegen 2050 robots in staat zullen zijn om voldoende 'emotioneel' te kunnen zijn (of
dat in ieder geval kunnen simuleren) om relaties te kunnen aangegaan met mensen.
NLTC-H301 Leven met Robots v 1.0 102
Keuzehoofdstukken A - F

Levy heeft ook het boek "LOVE +SEX_WITH_ROBOTS" geschreven, met als ondertitel: "de evolutie van
mens/robot relaties".

Als je het hebt over relaties tussen robots, moeten je je afvragen wat liefde betekent. Kun je een
machine echt lief hebben omdat deze er menselijk uitziet en menselijk gedrag probeert te benaderen?
Zit er inderdaad weinig verschil tussen emoties van mensen, dieren en robots?

PARO maakt kinderen blij?!


Paro kan kinderen in een ziekenhuis blij maken. Wat is er nou
leuker om een zeehondje te mogen knuffelen. Maar wat doet het
knuffelen van een zeehondje eigenlijk met kinderen? Is dat altijd
positief of zijn er ook nadelen als je AIBO in aanraking brengt met
bijvoorbeeld zieke kinderen?

De bekende evolutiebioloog Richard Dawkins schrijft in zijn werk


"the Selfish Gene": "Mensen zijn overlevingsmachines, als robot
voertuigen, blind geprogrammeerd om de zelfzuchtige moleculen,
de eigen genen, te laten overleven". En in het “River out of Eden”
schrijft hij: "DNA weet niets en geeft nergens om. DNA is gewoon.
En wij dansen op de muziek ervan." In feite zegt Dawkins dat
Figuur C4: PARO mensen ook robots zijn. Met een programma in het DNA.

Heb je een ethisch beeld van hoe jij robots in kunt zetten? Wat te denken van "robot slavernij"?

Verantwoordelijkheid
Een ander ethisch vraagstuk, is de verantwoordelijkheid van robots. Als een operatierobot een fout
maakt, wie is dan verantwoordelijk:
- de ontwerper?
- de bouwer?
- de programmeur?
- de operator?
- de arts die de operatie leidt?

Dit zijn vragen waarop je eerst een antwoord moeten geven voordat we beslissingen nemen over de
verdere ontwikkeling en toepassing van robotica.

In Japan en (Zuid-)Korea zijn er wetten aangenomen ten aanzien van autonome sociale robots die
bepalen dat:
a. Een robot moet verbonden zijn met een centraal systeem waarmee de robot direct beïnvloed
kan worden.
b. In geval van een incident waarbij een robot betrokken is, dit direct automatisch doorgegeven
wordt aan een centrale database.

NLTC-H301 Leven met Robots v 1.0 103


Leerlingenhandleiding

Wakamaru, een sociale robot

Figuur C5: Wakamaru

Wat zijn de ethische consequenties van inzet van sociale zorgrobots?

Vraag:

"Mag zo’n robot mijn oma verzorgen?".

Veiligheid en industriële robotica


Een ander punt bij de ethiek van Robotica is de menselijke veiligheid bij het werken met robots in een
productieomgeving. Er zijn verschillende veiligheidseisen die gelden voor bewegende machines. Per
toepassing en/of machine wordt bepaald in welke categorie de machine valt en de maatregelen die
genomen moeten worden om de machine zo veilig mogelijk te maken.

NLTC-H301 Leven met Robots v 1.0 104


Keuzehoofdstukken A - F

C2 Vingerafdrukken van bommen...

Deze robot verzamelt vingerafdrukken


Als politie functionarissen verdachte pakketjes vinden op een vliegveld of treinstation, worden deze uit
veiligheidsoverwegingen onmiddellijk vernietigd. Met het pakketje verdwijnen dan ook aanwijzingen
over de daders zoals vingerafdrukken en dergelijke.

Onderzoekers van de Universiteit van Toronto en de Universiteit van Calgary (Canada), hebben een
nieuwe detectierobot met de naam RAFFE (afkorting voorr "Robot Accessory for Fuming Fingerprint
Evidence) ontwikkeld, die een oplossing biedt voor dit probleem. Het apparaat, ontwikkeld door
wetenschappers van eerder genoemde universiteiten, biedt een veilige manier om vingerafdrukken te
verzamelen van een pakje wat voor mensen veel te gevaarlijk zou kunnen zijn om bij in de buurt te
komen.

"Met recente bedreigingen van terroristische aanvallen is de politie er op gebrand om zo veel mogelijk
aanwijzingen als mogelijk te kunnen verzamelen," zegt schrijver Kristian Dixon. Hij is 3e jaars student
Science en Engineering aan de Universiteit van Toronto. "Maar als een bom af zou gaan terwijl een
agent handmatig bezig is om vingerafdrukken van het pakketje te halen, kan hij zijn handen of zelfs zijn
leven verliezen."

De werking van RAFFE


RAFFE zelf bestaat uit een kleine doos met verwarmingselementen, een patroon met een soort
superlijm en een korte sproeipijp. De rijdende robot waarop de RAFFE gemonteerd is, wordt met een
afstandsbediening naar het verdachte pakketje gestuurd. In de RAFFE verwarmt men intussen de
patroon met superlijm. Het lijmpatroon produceert dampen die via het sproeipijpje op het pakketje
worden gespoten. De dampen bevatten cyano-acrylaat dat reageert met de olie en vocht in de
vingerafdrukken. Deze worden hierdoor zichtbaar gemaakt. De vingerafdrukken kunnen nu
gefotografeerd worden met de hoge resolutie camera van de robot. Daarna kan de rijdende robot het
pakketje verplaatsen en op een veilige manier tot ontploffing brengen.

NLTC-H301 Leven met Robots v 1.0 105


Leerlingenhandleiding

RAFFE in de
praktijk
In figuur C7 zie
je op het
middelste
plaatje een foto
van RAFFE,
vastgemaakt op
een Pedsco
RMI-9WT robot
welke in gebruik
is bij de politie
van Calgary
(Foto: Kristian
Figuur C6: RAFFE Dixon,). Het
onderzoeksverslag over RAFFE verscheen in Maart 2004 in het Journal of Forensic Sciences (Blad voor
Forensische Wetenschappen). In de korte samenvatting van dit artikel staat te lezen:

“ In dit paper wordt de ontwikkeling beschreven van een apparaat om vingerafdrukken met behulp van
gasvormige superlijm (cyano-acrylaat) zichtbaar te maken, zodat tactische politie eenheden in staat
gesteld worden om vingerafdruk bewijzen te verzamelen van verdacht materiaal door gebruik te
maken van een op afstand bestuurde robot.
Op grond van een reeks van experimenten, wordt aangetoond dat voldoende warmte, vocht en
luchtstroom nodig is om het toepassen van gasvormig cyano-acrylaat effectief te laten zijn. Dit werk
heeft uiteindelijk geleid tot een werkend prototype van een robot accessoire vingerafdruk bewijs mee
aan te tonen (RAFFE).”

Bron: ►URL29 (vingerafdruk verzamelen met een robot)

Figuur C7: Links: de zichtbaar gemaakte vingerafdrukken. Midden: een rijdende robot waarop de RAFFE
bevestigd is. Rechts: De rijdende robot met RAFFE wordt uitgeladen. Bron: ►URL30
http://www.sciencedaily.com/releases/2004/04/040420011314.htm

NLTC-H301 Leven met Robots v 1.0 106


Keuzehoofdstukken A - F

UAV's - Unmanned Aerial Vehicle (UAV)


Het leger gebruikt ook steeds vaker robots. In
figuur C8 zie je een afbeelding van de HERTI een
UAV. Er bestaan verschillende soorten UAV's.
Nederland maakt gebruik van de Sperwer. Deze
UAV is vooral geschikt voor
verkenningsvluchten en kan zowel autonoom
als op afstand bestuurd vliegen. UAV's kunnen
voor verdediging, aanval of beide (hybride)
Figuur C8: HERTI ingezet worden.

In een artikel van intermediair.nl (maart 2008, "De opkomst van de militaire robot.pdf"), wordt de
Sperwer genoemd.

C3 Amsterdams ziekenhuis zet robot in tegen keelkanker


Om te opereren heb je in sommige gevallen nauwelijks nog mensenhanden nodig. In het Nederlands
Kanker Instituut — Anthonie van Leeuwenhoek Ziekenhuis in Amsterdam wordt sinds kort een speciale
operatierobot gebruikt voor patiënten met keelkanker.

De operatierobot kan ingezet worden in plaats van een 'normale' operatie of bestraling. Deze beide
methoden hebben grote nadelen. Zo is een operatie ingrijpend omdat vaak de kaak van de patiënten
gespleten moet worden en de bijwerkingen groot kunnen zijn. Ook houdt de patiënt er een groot
litteken in het gezicht aan over.

Een bestraling heeft als nadeel dat deze behandeling maar eenmaal kan worden toegepast. Als de
tumor terugkomt in hetzelfde gebied kan de patiënt dus niet meer bestraald worden. Ook kunnen de
lange termijn bijwerkingen van bestraling erg tegenvallen.

Met deze nieuwe techniek kan de robotarm via de nauwe doorgang in de mond, in de keel worden
gebracht. Met grote precisie kan met behulp van de operatierobot de tumor zo weggesneden worden
dat de schade aan omliggend weefsel minimaal is.

Het NKI/AVL - dat naar eigen zeggen als eerste Nederlands ziekenhuis met de robot werkt - heeft al 11
patiënten met de robot behandeld. Bij negen van hen was bestraling niet meer nodig en kon de
patiënt binnen vijf weken weer aan het werk. In het ziekenhuis worden ook al patiënten met
prostaatkanker met de robot behandeld.

Er komen wel nieuwe vragen naar voren waar niet iedereen al goed over nagedacht heeft. Wie is
verantwoordelijk voor fouten die een operatierobot maakt? De robot operator, de programmeur, de
toezichthoudende arts? En wat als de stroom uitvalt?

Daarnaast is het belangrijk dat een patiënt vertrouwen heeft in de arts. Kan een patiënt ook
vertrouwen hebben in een robot? En wat als er complicaties optreden tijdens de operatie, hoe
reageert de robot dan?

NLTC-H301 Leven met Robots v 1.0 107


Leerlingenhandleiding

Bron: NKI/AVL

Durf jij het aan?


Bij sommige operaties wordt
een robot ingezet. De chirurg
geeft de opdrachten aan de
robot en die voert ze met
precisie uit. In de clip zie je de
voordelen en nadelen van een
operatierobot. ►URL31

Figuur C9: operatie met robot

C4 Kunnen robots ethisch leren handelen?

Onderwerpen die filosofie en computerwetenschappen combineren, blijven fascineren. In PC-Active


van december 2008 kun je een bespreking lezen van de ideeën van Ronald Arkin, David Levy en Dylan
Evans. Op de 1st International Conference On Human-Robot Personal Relationships in Maastricht
bespraken zij de mogelijkheid van ontwikkeling van persoonlijke relaties met robots. Zij stelden dat je,
voordat je echt van persoonlijke relaties kunt spreken, een robot een vorm van ethisch handelen dient
te ontwikkelen.

Medische data-assistent
De econoom en filosoof Vincent Wiegel van de Technische Universiteit Delft toonde op een
conferentie in Maastricht zijn werk over 'morele sturingsmechanismen'. "Kunstmatige sturing is zo
complex dat de ontwerpers niet op voorhand kunnen overzien welk ‘gedrag’ hun systemen uiteindelijk
zullen hebben. We moeten er dan ook expliciet een vermogen inbouwen om moreel te redeneren,"
beweert Wiegel met klem. Voordat je met robots immers een persoonlijke relatie kunt aangaan, moet
je ze kunnen vertrouwen. En een noodzakelijke voorwaarde hiervoor is volgens hem dat deze robots
een moreel besef hebben.

Wiegel is gepromoveerd aan de Technische Universiteit Delft met zijn


onderzoek "SophoLab: Experimental Computational Philosophy". In zijn
promotiestudie onderzocht hij of je moreel redeneren in robotagenten
kunt inbrengen? Een uitbreiding hiervan is de expliciet ethisch
handelende agent, die zelf redeneert over verschillende mogelijkheden
vanuit moreel perspectief. Een voorbeeld hiervan is de nog niet
realistische mens-robot Robocop (figuur C10).

Een ander voorbeeld is de medische data-assistent, een complex stukje


software dat persoonlijke medische gegevens beheert en zelfstandig
nadenkt en voorstellen doet over de verschillende ingrepen die de arts
NLTC-H301
Figuur C10: Robocop Leven met Robots v 1.0 108
Keuzehoofdstukken A - F

kan uitvoeren. Op het moment dat bijvoorbeeld een ambulancier toegang vraagt tot de gegevens, kan
de data-assistent nadenken over het belang ervan. De data-assistent moet verschillende doelen
kunnen verenigen: enerzijds het up-to-date en consistent houden van de gegevens, en anderzijds de
privacy van de persoon beschermen en vermijden dat zijn medische gegevens met andere gegevens
worden vermengd voor commerciële doeleinden.

Een expliciet ethische handeling eenheid maken is iets dat je volgens Wiegel in principe moet kunnen
met de kennis die er is, maar hij noemt het heel lastig. Hij vermoedt dat je hiervoor enerzijds de
filosofie nog beter moeten begrijpen en anderzijds ook nog wat nieuwe technieken nodig hebt. (Bron:
koan.filosofie.be)

Figuur C11: Links: afbeelding uit "The


Crying Robot" door Murphy Elliott, 2006

Rechts: "Een blije dame met de robot


Paro als bewegende knuffel". Paro lijkt
te reageren op emoties.

Kan ethiek zich ontwikkelen bij robots


Pieter Spronck van de Universiteit van Tilburg test vanuit een andere vraagstelling ethische theorieën.
Zijn standpunt was de volgende: “Als je echt menselijke robots wil maken, moeten robots zich kunnen
aanpassen aan omstandigheden en daartoe moeten ze zelf kunnen leren.” De vraag daarbij is “Zullen
robots zich dan vanzelf ethisch beginnen te gedragen?”. Volgens Spronck kan dat inderdaad. Hij
baseert zich op evolutionaire ethiek, een theorie die op basis van biologische evolutie probeert te
verklaren hoe mensen ethisch zijn gaan handelen. "Met computersimulaties kun je
vooronderstellingen vanuit de ontwikkeling van de ethiek testen," zegt Spronck. "Zo kunnen je
bestuderen in welke omstandigheden er ethisch gedrag kan ontstaan."

Spronck programmeerde een digitale wereld (30 bij 30 cellen) met virtuele robots die evolueerden.
Een robot kan in elke stap een actie uitvoeren, zoals voedsel eten, waardoor het zijn gezondheid
verhoogt. Een robot kan ook een deel van zijn gezondheid aan een andere robot geven (altruïsme) en
een robot kan zich samen met een andere robot voortplanten. Maar de robot kan ook een deel van de
gezondheid van een andere agent stelen (egoïsme).

Elke robot voert een programma met regels uit, zoals "Als de dichtstbijzijnde robot niet ouder is dan 10
testseries, steel dan zijn gezondheid." Als twee robots zich voortplanten, worden hun handelingsregels
vermengd en worden de handelingsregels van hun kind samengesteld.

NLTC-H301 Leven met Robots v 1.0 109


Leerlingenhandleiding

In bepaalde omstandigheden ontwikkelde de robot een bepaald moreel gedrag omdat dat een
voordeel gaf. En dat terwijl er geen enkel ethisch gedrag expliciet in werd geprogrammeerd. Volgens
Spronck zou onze ethiek dus ook zo kunnen geëvolueerd zijn, en zouden robots als je ze in de juiste
omstandigheden laat ontwikkelen, zich ook ethisch beginnen te gedragen. Hij wil hier verder
onderzoek naar doen door complexere omgevingen te modelleren met meer soorten acties.

NLTC-H301 Leven met Robots v 1.0 110


Keuzehoofdstukken A - F

Feit of fictie: een leger van robots

Figuur C12: Een leger van Robots

De linker rijdende robot in figuur C12 is een bestaande robot die kan worden uitgerust met defensieve
en offensieve wapens. Rechts het prototype van een robotspin die onder andere echte verkenningen
zal kunnen uitvoeren op gevaarlijk terrein. In het midden een fictieve militaire robot droïd uit Star
Wars. Het is nog de vraag of humanoïde robotsoldaten in de praktijk effectief kunnen zijn.

Emotionele tegenstanders in computergames


John Jules Meyer van de Universiteit Utrecht doet onderzoek naar het programmeren van motivaties
en emoties in kunstmatige virtuele robots. Deze
'emotionele robots' combineren emoties met
rationele besluitvorming, net zoals mensen. Ze maken
hun beslissingen niet enkel op basis van logisch
redeneren, maar ook onder invloed van hun emoties.
Het al of niet slagen van de plannen van de virtuele
robot heeft ook een invloed op de emotionele
beleving.

Meyer ziet wel toepassingen hiervan in


computergames: "Virtuele karakters in
computergames kunnen zo veel realistischer gedrag
tonen, terwijl deze karakters in de huidige games
gewoon emotieloos zijn."

De onderzoekers van de Universiteit Utrecht zijn


momenteel bezig dit virtuele systeem te
implementeren op het Philips iCat-platform, een echte
robot die emoties kan vertonen door middel van
gezichtsuitdrukkingen Deze robot is bedoeld is als
gezelschapsrobot voor ouderen.

NLTC-H301 Leven met Robots v 1.0 111


Leerlingenhandleiding

Een samenleving waarin robot en mens volledig co-existeren, is dat sciencefiction of nabije toekomst?
Wat moet de mens ermee dat over twintig jaar misschien robots over straat lopen, opa's en oma's
verzorgen, operaties uitvoeren en oorlogen voor ons uitvechten?

De vraag is bij wie de verantwoordelijkheid ligt over het doen en laten van deze intelligente machines.
Is een grondwet voor robots een oplossing? De meningen verschillen over de vraag wanneer het zover
zal zijn, maar één ding staat vast: de robots komen eraan.

Figuur C13: Robots gaan ons leven beinvloeden

NLTC-H301 Leven met Robots v 1.0 112


Keuzehoofdstukken A - F

C5 Mag de robot mijn oma verzorgen?


Hoe verder?
De overheid in Zuid-Korea heeft onlangs bekendgemaakt een ethische code voor robots te willen
opstellen. Zij voorspelt namelijk dat ieder Zuid-Koreaans huishouden voor 2020 een robot heeft. Dan is
het toekomstbeeld dat ook in Nederlandse gezinnen robots verschijnen niet eens zo gek. Zullen ze dan
boerenkool met wordt of erwtensoep kunnen maken?

Een samenleving waarin robot en mens naast elkaar leven, is dat sciencefiction of nabije toekomst?
Zullen er over twintig jaar robots over straat lopen, opa's en oma's verzorgen, operaties uitvoeren en
zullen ze oorlogen voor ons uitvechten?

Maar wordt er in Nederland wel nagedacht over de consequenties die de moderne technologie van
robotica met zich meebrengt? Of maakt het niets uit om onze planeet te delen met mensmachines?

Het is volgens veel wetenschappers nog lang niet mogelijk een machine met bewustzijn of
zelfbewustzijn te ontwerpen. Maar dat robots steeds belangrijker worden, daarover zijn de meeste
deskundigen het wel eens.

Je associeert verantwoordelijkheid doorgaans met een mens. Die kun je verantwoordelijk houden voor
wat hij of zij doet. Hoe zit dat bij een robot? Een ontwerper stopt een programma in de machine, maar
het kan gebeuren dat een robot onverwachte dingen doet. Een robot geeft een patiënt eten dat een
verkeerde samenstelling heeft. Bij wie ligt de verantwoordelijkheid dan?'

De vraag “Wie is verantwoordelijk voor het doen en laten van deze intelligente machines?”, is hiermee
nog steeds niet beantwoord. Is een grondwet voor robots een oplossing? De meningen verschillen
over de vraag wanneer het zover zal zijn, maar één ding staat vast: de sociale robots komen eraan. '

Omdat de robots zich als mensen


(kunnen) gedragen moeten ze ook
maar het uiterlijk krijgen van een
mens. Dat is het uitgangspunt bij
het robotonderzoek. De Wabot
was er al in 1973 maar leek nog
niet echt op een mens (2 meter
lang en 140 kg zwaar).

De Wabian-2R van 2006 heeft wel


kenmerken van een menselijk
lichaam.

Figuur C14: Wabot (links) en Wabian-R2 (rechts)

NLTC-H301 Leven met Robots v 1.0 113


Leerlingenhandleiding

Kinderen en robots
Wat gebeurt er als je kinderen blootstelt aan robots?
Fantasie en werkelijkheid lopen opeens door elkaar. Je moet
kinderen zich bewust laten worden van wat robots wel en
niet zijn. Maar wat als je daar zelf nog geen raad mee weet?

Menselijke robots?
Er zijn robots die amper van mensen te onderscheiden zijn.
Deze robots zijn ontworpen voor interacties met mensen.
Het uitgangspunt is robots in te zetten in het huishouden of
in de verzorging van ouderen. We zijn blijkbaar op een punt Figuur C15: Kinderen met robots.
gekomen dat het verstandig wordt om eens na te denken
over de sociale en culturele impact van de inzet van robots.' aldus Brey.

Dat dat in Nederland gebeurt, blijkt uit het feit dat de Universiteit Twente samen met de TU Eindhoven
en de TU Delft centres of excellence zijn begonnen. Deze groepen houden zich bezig met Intelligent
Megatronic Systems, zeg maar: robots en andere intelligente systemen.

Verbeek en Brey werken aan de Universiteit Twente en zijn verbonden aan het Centre for Ethics and
Technology. Verbeek: 'Wij kijken naar de ethische aspecten van nieuwe technologieën. Wij werken
samen aan het onderwerp robot responsibility. Dat gaat over de vraag hoe een robot
verantwoordelijkheid kan dragen.

Industriële robots
Van het gebruik van industriële robots kijkt niemand meer op. Er is een breed scala aan taken die
robots uitvoeren. Ze doen dienst als grasmaaier en stofzuiger, en zelfs als danspartner. Maar ook er
zijn robots voor minder onschuldige taken. Denk aan militaire taken, zoals onbemande
spionagevliegtuigjes en rijdende spionagerobots, of intelligente geleide raketten. Wat zijn hierbij de
ethische consequenties?

In zijn boek “De Domesticatie van Noodlot “schrijft Jos de Mul, hoogleraar filosofie aan de Erasmus
Universiteit, van een ‘moral distance’. Hij stelt dat, wanneer robots bepaalde taken gaan uitvoeren, de
morele aspecten van die taken op de achtergrond raken. 'Hetzelfde geldt voor verkeersdrempels. Door
de drempel houden mensen zich aan de snelheid. Wanneer je ze weghaalt, gaat een automobilist weer
harder rijden”. Het gaat er om welk doel wij een robot meegeven. Wij geven onze morele standpunten
aan die machines mee. Wij moeten erover nadenken of je sommige vrijheden betreffende morele
beslissingen wel aan robots wil afstaan', aldus De Mul.

NLTC-H301 Leven met Robots v 1.0 114


Keuzehoofdstukken A - F

Figuur C16: Links: een robot die mensen ophaalt van het slagveld. Midden: de robot probeert
slachtoffers bij een brand te evacueren. Rechts: Deze robot is ontwikkeld om bosbranden te bestrijden.

Rechts: de robot (pak)ezel


Tot voor kort moesten soldaten flinke bepakkingen altijd zelf
op hun rug meetorsen. Nu is er de DOG OF WAR Big Dog robot
die als een pakezel gebruikt kan worden.

ROBOethics
In Europa bestaat een speciale Roboethics-werkgroep die een
soort handleiding over robots en ethiek heeft samengesteld.
De groep is onderdeel van de organisatie Euron, waarin allerlei
deskundigen op het gebied van robotica samen komen.
Figuur C17: Dog of War
Wetenschapper Frans Groen van de Universiteit van
Amsterdam is lid van de organisatie. Hij zegt dat de robotica nog in de kinderschoenen staat, maar
vindt het nu het juiste moment een discussie te voeren. Het is de bedoeling het handvest regelmatig
aan te passen aan de nieuwste ontwikkelingen.

De Roboethics-groep hield in 2008 een conferentie in Rome waarin de ethische kant van robotica
centraal stond. Brey en Verbeek streven een aanpassing na in de flexibiliteit om regels op te stellen of
wetgeving voor robots te formuleren. 'Regelgeving kan in beginsel best behulpzaam zijn. Je moet wel
eerst een beeld hebben van welke ethische taken een robot kan dragen. In een tweede stadium moet
je kijken of een ontwerper met de gegeven normen uit de voeten kan. Als dat nodig is moet je afwegen
of je regels praktischer moet maken.'

In Nederland zijn er diverse ontwikkelingen op het gebied van robotica. Hoogleraar Pieter Jonker van
de TU Eindhoven werkt aan een zelflerende voetballende robot. Hij denkt dat het in 2050 zover zal zijn
dat een elftal voetbalrobots een voetbalteam van mensen kan verslaan.

Jonker: 'Over een jaar of twintig zijn schoonmaakrobots en robots in de verzorging een vertrouwd
beeld. Wij zijn nu bezig met het ontwikkelen van zelflerende systemen. Een machine die zich zelf leert
lopen.'

NLTC-H301 Leven met Robots v 1.0 115


Leerlingenhandleiding

Door middel van een beloningssysteem wordt de robot gestimuleerd en specifieke actie te
ondernemen. Zo leert hij zichzelf nieuwe dingen. Deze robots hebben geen zelfbewustzijn. Toch
nemen ze zelf beslissingen.

Figuur C18: Militaire robots, beslist geen computerspel!

Links: Het opruimen van mijnen, het bewaken van bepaalde gebieden en andere militaire taken, zijn
zeker niet zonder gevaar. Robots kunnen het leven van de soldaat niet alleen veraangenamen, maar ook
redden. Rechts Bijvoorbeeld met spionagevliegtuigjes.
'Het is wel zo', aldus Jonker. 'Dat robots die zelf kunnen leren zijn eigenlijk heel erg beangstigend
kunnen zijn. In die zin is het niet gek gedacht van de Koreaanse regering om een ethische code op te
stellen. Ik denk wel dat de uitgangspunten voor ethische regels van ontwikkelaars zelf moet komen. Ik
vind het overdreven dat je dat op de overheid gaat afschuiven.'

Een ander probleem kan ontstaan wanneer robots het menselijke overleg gaan vervangen. 'Wij willen
de nadruk leggen op het verantwoordelijkheidsvraagstuk. De combinatie van mens en robot brengt dat
namelijk met zich mee. Dat speelt niet alleen als een robot beslissingen kan nemen die niet
geprogrammeerd zijn, maar er is ook nog het sociale aspect. Vervangt een robot een mens ook
sociaal? Het is lekker gemakkelijk oma een robot te geven zodat ze niet meer eenzaam is', zegt Brey.
Maar ben je er daarmee?

Verbeek: 'Naarmate robots zich gaan ontwikkelen worden ze een soort surrogaatburgers. Je moet je
afvragen hoe je deze intelligente machines kunt aanleren zich aan te passen en te socialiseren zodat ze
goede medeburgers kunnen zijn. Je kunt beginnen door een grondwet voor robots te maken. Een wet
zodat voor robots vastligt wat wel en niet mag. Dan kom je wel in een grijs gebied terecht. Ik vind het
eigenlijk een absurde gedachte, maar misschien zal de toekomst uitwijzen wat wijsheid is.'”

NLTC-H301 Leven met Robots v 1.0 116


Keuzehoofdstukken A - F

Figuur C19: een veiligheidsscherm, een grondplaat en een signalering

Veiligheidsregels : NEN-EN-ISO 10218


De ISO norm 10218-1 en 10218-2 standaarden, beschrijven de mogelijke gevaarlijke situaties rond het
gebruik van robots in een productie automatisering omgeving. Op basis van deze standaard moet
voldaan worden aan veiligheidsmaatregelen rond robot werkplaatsen (figuur C19).

Lichtscherm als beveiliging


Een lichtscherm zorgt ervoor dat je niet zo maar in het gevarengebied
van een werkende robot kunt komen.

Levensechte robots

Levensechte robots zorgen ervoor dat de grens tussen mens en robot


nog verder vervaagt. Intimidatie van robots lijkt dan als twee druppels
water op het intimideren van mensen. Maar wat doet ons
onderbewuste er mee?
Figuur C20: Lichtscherm
Voorkomen menselijke
robots problemen of
roepen ze deze juist op?!

Figuur C21: Levensechte robots

NLTC-H301 Leven met Robots v 1.0 117


Leerlingenhandleiding

Opdrachten bij C. Ethiek van Robotica

Opdracht C.1: Vergrijzing


Schrijf individueel een opstel over de volgende stelling:

'Door de toenemende vergrijzing en het tekort aan goed personeel, is het wenselijk dat in ziekenhuizen,
verzorgingshuizen voor ouderen en instellingen voor mensen met lichamelijke of verstandelijke
beperkingen, aantrekkelijk uitziende en prettig reagerende sociale robots, de werknemers al op korte
termijn gaan vervangen.'

Schrijf je opstel op ongeveer 2 A4-tjes met een lettergrootte van <= 11.

Alternatief: bereid een presentatie voor over dit onderwerp.

Opdracht C.2: Militaire robots


Lees het artikel uit intermediair.nl van maart 2008; "De opkomst van de militaire robot.pdf", de en
bespreek in een groepje de volgende stellingen:

- een robotsoldaat is beter, het scheelt mensenlevens


- alleen defensieve militaire robots zijn ethische verantwoord
- over 100 jaar worden mensen net als in Starwars aangevallen door militaire robots
- ik vind het slim dat men in Afghanistan de Sperwer inzet

Beargumenteer antwoorden en schrijf een samenvatting van de bespreking in een verslag.

Opdracht C.3: Androids


1. Lees het artikel "Robot Code of Ethics to Prevent Android Abuse, Protect Humans.pdf"
2. Bekijk in een groepje de video 'Jules asks about sex"
3. Bekijk in een groepje de video "Harassing an android"
4. Bespreek in een groepje wat je van beide filmpjes vindt, bespreek in ieder geval de volgende
zaken:

- doen de filmpjes je wat?


- zou je graag een robot als docent willen hebben? Zou het wat uitmaken?
- wat vind je van het gedrag van de onderzoeker bij het tweede filmpje ? Juist? Onjuist?
- Kun je een robot als een soort slaaf beschouwen (waarom wel/niet)
- Zou jij een robot als slaaf gebruiken, en ben je tegen slavernij?

Beargumenteer je antwoorden en schrijf een samenvatting van de bespreking in een verslag.

NLTC-H301 Leven met Robots v 1.0 118


Keuzehoofdstukken A - F

Opdracht C.4: Sally Ann


Een robot die de Sally Ann test goed weet te doorstaan zou wel eens zelfbewust kunnen zijn. Zoek uit
wat de Sally Ann test is (gebruik Google).

- Beschrijf de test in eigen woorden.


- Zoek uit hoe deze in de praktijk gebruikt wordt.
- Maak duidelijk of de test geschikt is om aan te tonen dat een robot zelfbewustzijn heeft.
- Kun je een robot zo programmeren dat deze voor de Sally Ann test slaagt?

Opdracht C.5: Licht gordijnen


Lees het document "Safety Light Curtain Brochure.pdf" goed door en maak met je groepje
onderstaande opdrachten.

- Welke wet (of wetten) van Asimov hebben betrekking op de oplossing welke in de brochure
aangedragen wordt?
- Wat is het doel van een lichtgordijn?
- Wat is het aantal stralen waarmee een SL-C licht gordijn minimaal en maximaal is uitgerust?
- Wat voor soort licht (frequentie) wordt er gebruikt voor de lichtstralen van het gordijn?
- Wat zal er gebeuren als men zich niet houdt aan de voorschriften uit het veiligheidsdocument?

Opdracht C.6: (A)Sociale Robots


Kies zelf een van de genoemde documenten over sociale robots uit het hoofdstuk 'Sociale Robotica'
en beschrijf minstens drie ethische voor- en nadelen voor de betreffende robot Zet deze in je verslag.
Iedere leerling kiest een andere robot.

Figuur C22: Robots

NLTC-H301 Leven met Robots v 1.0 119


Leerlingenhandleiding

D. Kunstmatige intelligentie

Figuur D1: Begrijpt de robot jou?

D1:Denkende machines

Een denkende machine?


Als je je bezig wil gaan houden met kunstmatige intelligentie, moet je natuurlijk wel eerst weten wat
kunstmatige intelligentie precies is. Er zijn wel gelukkig wel goede ideeën over. We beginnen dit
onderwerp dus met een stukje over Psychologie, Cognitie en Intelligentie.

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je kent het begrip Epistemologie
- je kent de basis van Kunstmatige Intelligentie (AI)

Presentatie
Je gaat eerst na wat denken eigenlijk is. Je noemt dit met een moeilijk woord de epistemologie ofwel
kennisleer: Wat is eigenlijk "kennis"? Hoe verschilt "weten" van "geloven"? Wat is waarheid? "Hoe
weet je, wat je weet?". Welke rol speelt waarneming daarbij?

NLTC-H301 Leven met Robots v 1.0 120


Keuzehoofdstukken A - F

Je zenuwen zorgen ervoor dat je zintuigen en spieren kunnen werken. Zenuwen geven signalen door
van zintuigen. Bijvoorbeeld warmte/kou, pijn, etc. Zenuwen lijken op de draden van de LEGO NXT / EV
robot. Signalen van sensoren worden door de bedrading via een chip getransporteerd naar actuatoren
met behulp van elektriciteit.

Binnen de chips van de NXT / EV vindt de besturing plaats, zoals bij ons in de hersenen. Schakelaars
worden aan- en uitgezet en zo kan de processor (microcontroller) van je NXT / EV programma's
uitvoeren.

Een robot werkt volstrekt logisch. Als ergens een spanning loopt noemen we dat 1 of waar (true), als er
geen spanning loopt, noemen we dat 0 of onwaar (false). Een robot doet alles met logische operaties:
reeksen nullen en enen worden vergeleken, opgeteld en/of verschoven. Wij zien daar niet zo veel van,
maar het is toch goed om dit te weten als basis voor kunstmatige intelligentie.

Kunstmatige intelligentie heeft een viertal hoofdrichtingen


 Taal en spraaktechnologie
 Cognitieve ergonomie
 Kennistechnologie
 Autonome systemen

Taal en spraaktechnologie
Bij dit hoofdgebied gaat het om vragen als: Hoe krijg je het voor elkaar dat een vertaalprogramma ‘I
love you’ niet vertaalt met: ik liefde jou?

Om dit te achterhalen moet je weten hoe taal in elkaar zit en wat een computer wel of niet moet
kunnen om taal te begrijpen of te produceren op een manier die correct is en natuurlijk aandoet.

Cognitieve ergonomie
Cognitieve ergonomie houdt zich bezig met de vraag hoe technische toepassingen optimaal kunnen
aansluiten bij de menselijke cognitie (hersenen). Deze kennis is in te zetten voor het verbeteren van
het bedieningsgemak van geprogrammeerde apparaten; parkeerautomaten, dvd-spelers,
koffiezetapparaten, medische apparatuur, enz..

Kennistechnologie
Kennistechnologie houdt zich bezig met de vraag hoe het mogelijk is om alle kennis te verzamelen en
te ontsluiten, zodat anderen er optimaal gebruik van kunnen maken. Het kan hierbij gaan om een
medische ‘diagnosewijzer’, die alle kennis bereikbaar maakt, onder meer via zoeken op symptomen.
Verantwoordelijk werk dus.

Autonome systemen
Veel mensen denken dat kunstmatige intelligentie zich uitsluitend bezighoudt met het maken van
robotjes. Voor driekwart is dat onwaar, maar voor een kwart is het dus wél waar. Autonome systemen
zijn systemen die zelf intelligent gedrag kunnen vertonen. Virtuele assistenten die kunnen volgen of je
iets goed of fout doet (‘ga naar rechts, probeer om te

NLTC-H301 Leven met Robots v 1.0 121


Leerlingenhandleiding

Je leert in dit hoofdstuk wat 'denkende machines' zijn. Wat betekent het als een robot emoties heeft?
Wat zijn de mogelijkheden om met de LEGO NXT / EV kunstmatige intelligentie programma’s uit te
voeren?

Als je terugkijkt naar het algemene robotmodel in


hoofdstuk 1 van de introductie, zie je dat je tot
nog toe alleen hebt gekeken naar de mechanische
kant en de actuatoren van de robot. De logica die
nodig is om het geheel te besturen, is nog niet aan
de orde geweest. Zoals mensen onze hersenen
nodig hebben om onze armen en benen aan te
sturen (via onze zenuwen en onze spieren, de
menselijke sensoren en actuatoren), heeft een
robot aansturing nodig. De hersenen van robots
zitten in chips.
Figuur D2: Algemeen robot model
Aan hersenen alleen heb je niet genoeg, die
hersenen moeten wel wat kunnen doen! Ze moeten informatie uit de omgeving verzamelen en met
behulp van die informatie kunnen reageren. Intelligentie is de meer of minder complexe manier
waarop dit gebeurt. Niet intelligente kunnen eenvoudige zaken goed uit voeren. Intelligente mensen
kunnen heel complexe zaken goed uitvoeren.

John McCarthy
Geboren in Boston (Massachusetts, USA) op 4 september 1927,
is een prominent informaticus. Hij geniet veel bekendheid om
zijn werk in de kunstmatige intelligentie, maar ook zijn eerdere
werk is bijzonder indrukwekkend.

In 1971 ontving hij, voor zijn bijdragen aan de kunstmatige


intelligentie, de Turing Award. Velen beschouwen hem als de
grondlegger van de Al.

Figuur D3: John McCarty

NLTC-H301 Leven met Robots v 1.0 122


Keuzehoofdstukken A - F

D2: Robot met hersenen


Robot helpt bij onderzoek van geheugen
Britse wetenschappers hebben een robot gebouwd die bestuurd wordt door een biologisch brein van
menselijke neuronen. Het doel van dit onderzoek is om beter te begrijpen hoe herinneringen zich
vormen in het brein, en hoe het brein specifieke informatie over zijn omgeving opslaat. De
onderzoekers hopen hiermee de werking van hersenaandoeningen als Alzheimer en Parkinson te
doorgronden.

Eerst kweken ze een netwerk van hersencellen, de neuronen, om de robot mee te besturen..
Vervolgens zetten ze de neuronen op een multi-electrode array (MEA). Dit is een soort petrischaaltje
met ongeveer zestig elektrodes die de elektrische signalen van de neurons oppikken. Deze signalen
worden verwerkt tot opdrachten zodat de robot gaat bewegen.

De robot heeft verschillende sensoren, zoals een sonar en een lichtsensor, die vergelijkbaar zijn met
onze oren en ogen. De informatie van deze sensoren wordt omgezet in een elektrisch signaal dat terug
gaat naar de neuronen. Het brein leert zo de omgeving kennen, en de robot leert wat de beste manier
is om zich erin te bewegen. Hier komt geen computer aan te pas, enkel het netwerk van de
hersencellen in de MEA.

Tekst: Kennislink waar je ook een filmpje kunt vinden ►URL32.

Alzheimer
Een volwassen brein van een mens bevat naar schatting zo’n honderd miljard neuronen. Eén van de
grootste vragen waar neurowetenschappers mee worstelen is hoe al deze individuele hersencellen
samen leiden tot complex menselijk gedrag. Door te kijken hoe de neuronen in de MEA groeien terwijl
de robot beweegt willen de wetenschappers uitvinden
hoe hun miniatuurbrein het robotlichaam bestuurt.

Met deze kennis hopen zij uiteindelijk een sleutel te


vinden tot de werking van hersenziektes als Alzheimer en
Parkinson, die het geheugen en de motoriek aantasten.

In figuur D4 is een robot met hersenen te zien die leert


obstakels te vermijden. Deze robot wordt bestuurd door
een brein dat slechts bestaat uit menselijke hersencellen.
Deze zitten in een array van elektrodes die stroompjes
van en naar de hersencellen sturen. De onderzoeker
houdt op dit plaatje de array vast. (bron: Kennislink)

Figuur D4: Robot met hersenen

NLTC-H301 Leven met Robots v 1.0 123


Leerlingenhandleiding

Verschillen in informatieverwerking door de hersenen en door een computer


Waarom kunnen computers veel sneller rekenen dan de mens, maar is de mens de computer toch de
baas bij veel complexe taken, zoals bij het beoordelen van medische beelden of het besturen van een
auto in het drukke verkeer? Een computer heeft meestal één of een aantal processoren (ook wel CPU
genaamd), die instructies uitvoeren op een tijdschaal van nanoseconden (één miljardste van een
seconde) of sneller. Omdat de processen in een hersencel zich afspelen op een tijdschaal van ongeveer
1 milliseconden, is de CPU van een computer een miljoen keer sneller dan een zenuwcel. Dit verklaart
waarom een computer veel sneller kan rekenen dan de mens. Want rekenen is immers niets meer dan
2 getallen bij elkaar optellen, vermenigvuldigen etc. en dat gaat veel sneller met een CPU dan met een
zenuwcel. In de hersenen zijn echter een groot aantal cellen actief (in totaal zijn er ongeveer 10E11
zenuwcellen!), waardoor meer informatie gelijktijdig verwerkt kan worden dan in een computer, die
meestal over hoogstens of enige duizenden processoren beschikt.

Samenhangend met het grote aantal neuronen in het zenuwstelsel is een belangrijk verschil met een
computer, dat een klein defect in de computer vaak catastrofaal is voor het functioneren, terwijl het
kapot gaan van een paar zenuwcellen weinig consequenties heeft. Dit valt te begrijpen uit het feit, dat
elk neuron informatie ontvangt van heel veel andere neuronen. Indien je in het voorbeeld van
afbeelding 3 een paar cellen “kapot” maakt, zal het effect op de totale input voor elk goed
functionerend neuron gering zijn: het ontbreken van input van een paar cellen is niet zo belangrijk
vanwege de correcte input van de vele overige, nog goed functionerende cellen. Als gevolg daarvan zal
het, in de ruis verborgen, patroon nog steeds goed herkend worden. Dit voorbeeld illustreert een
ander belangrijke eigenschap van het zenuwstelsel; indien het zenuwstelsel iets heeft geleerd, is het
verliezen van een paar neuronen niet desastreus. Je ervaart dat iedere dag zelf; dagelijks sterven een
aantal neuronen af, die niet worden bijgemaakt. Toch wordt het effect van het dagelijks afsterven van
neuronen vaak pas op latere leeftijd merkbaar in het minder worden van je geheugen en het trager
worden van je handelen. (bron: Kennislink)

Een test voor computers: Alan Turing en zijn Turingmachine


Computers kunnen dus snel rekenen, maar zijn computers ook
intelligent - zoals wij intelligent kunnen zijn? De Britse wetenschapper
Alan Turing ontwikkelde een IQ-test voor computers. Met die test kun
je bepalen hoe intelligent je computer is, maar kun je ook vaststellen
of iemand een man of vrouw is aan de hand van zijn of haar
antwoorden op vragen.

Alan Turing (Afbeelding links) wordt beschouwd als de grondlegger van


de Informatica. Alan Turing was zeer goed in het nadenken over
computers en over wat daarmee allemaal mogelijk zou zijn. Hij
bedacht een aantal van de meest belangrijke ideeën over wat
computers kunnen of zelfs ooit zullen kunnen. En dat allemaal op zeer
Figuur D5: Alan Turing
jonge leeftijd en nog voordat er snelle complexe computers waren.

Het leven van Alan Turing was kort en had een dramatisch verloop. Hij werd in 1912 geboren in
Londen en is slechts 41 jaar geworden. Naar aanleiding van zijn werk aan de Princeton universiteit
werd hij gevraagd om zich bezig te gaan houden met het ontcijferen van de code van de Duitse

NLTC-H301 Leven met Robots v 1.0 124


Keuzehoofdstukken A - F

ENIGMA codeermachine. Op basis van de Turingmachine kraakte Turing in 1942 de code. Hij overleed
op een tragische manier in 1952. Een Turingmachine is ook te realiseren met LEGO. ►URL33 (Lego
Turing machine, Youtube).

Communicatie met robots


Een computerprogramma dat dicht ligt bij een codekraker staat, is ELIZA. De Turingmachine is in feite
een vertaalmachine zonder woordenboek. ELIZA heeft dat wel en nog veel meer. Het taalprogramma
ELIZA is een vroeg voorbeeld van wat je nu primitieve natuurlijke (Nederlands, Duits, Engels)
taalverwerking zou noemen.

ELIZA werkt door de antwoorden gebruikers in ‘simulatie-scripts’ te plaatsen. Het meest bekende
script was ‘DOCTOR’ een simulatie van een Rogeriaanse psychotherapeut. Deze therapeut negeert
bijna alle informatie in de communicatie die met emoties of met gedachten te maken hebben.
Ondanks dat vertoonde DOCTOR soms een verrassende gelijkenis met een therapeut. Bijvoorbeeld. De
gebruiker zegt “IK heb hoofdpijn”, ELIZA antwoord: “waarom zegt u dat u hoofdpijn heeft”. Uw
antwoord zou kunnen zijn “Ik heb dadelijk proefwerk”. “Zijn er meer oorzaken van uw hoofdpijn?” En
zo gaat het programma door met vragen. ELIZA werd ontwikkeld door R. Weizenbaum in 1966.

NLTC-H301 Leven met Robots v 1.0 125


Leerlingenhandleiding

D3: Opdrachten bij D. Kunstmatige Intelligentie

Opdracht D.1: Eliza Doolittle


Ga naar de website ►URL34 of een vergelijkbare ELIZA interpretatie.

a. Hoe werkt ELIZA denk je?


b. Schrijf een artikel van ± 1 A4 (11pt, normale regelafstand) waarin je aan je ouders uitlegt hoe
ELIZA werkt.

Tip: probeer eens "yes" of "no" als antwoord te geven aan ELIZA.

Zie ook: ►URL35 (Wikipedia over ELIZA)

Opdracht D.2: Programmeertalen


Onder programmeertalen worden, in de normaal gebruikte definitie, talen verstaan die turingvolledig
zijn. Dat wil zeggen dat het mogelijk moet zijn om in de programmeertaal een interpreter voor een
Turingmachine te schrijven, en het moet mogelijk zijn een interpreter te schrijven voor de
programmeertaal op een Turingmachine.

Zoek met je groepje uit wat de verschillen en overeenkomsten zijn tussen:


- Java en/of C+ +
- RobotC
- Pascal
- Prolog
- NXT-G / Mindstorms EV3

Zijn dit echte programmeertalen?

Opdracht D.3: AIBO


Zoek met Google, bv op ►URL36 (Wikipedia, AIBO)

Maak een klein werkstuk over AIBO waarin je onder andere de volgende vragen beantwoordt:

a. Hoe wordt de kunstmatige intelligentie van AIBO genoemd?


b. Welke verschillende AI opties heeft AIBO?
c. Hoe is AIBO zelf lerend?
d. Wat zijn de twee verschillende hond modes van AIBO?
e. Welke emoties kent AIBO en hoe werken deze?

NLTC-H301 Leven met Robots v 1.0 126


Keuzehoofdstukken A - F

Opdracht D.4: Bronnenonderzoek

Zoek op het web naar tenminste 5 concrete voorbeelden van (onderzoek naar) toepassingen van
kunstmatige intelligentie. Je kunt denken aan zelfrijdende auto’s, domotica, toepassingen in de
ruimtevaart. Om mee te beginnen is een bruikbaar artikel met diverse verwijzingen: ►URL39
(mediawijsheid, kunstmatigeintelligentie). Geef antwoord op de volgende vragen.

a. Wat vind jij het beste voorbeeld met betrekking tot Kunstmatige Intelligentie?
b. Motiveer je antwoord. Geef daarbij aan waarin het verschil met andere projecten zit.
c. Op welke termijn verwacht men dat de toepassing in de praktijk toepasbaar is?
d. Welke bezwaren of problemen worden genoemd die toepassing nog tegenhouden?

NLTC-H301 Leven met Robots v 1.0 127


Leerlingenhandleiding

E. Sociale Robotica

Figuur E1: Vriendelijk ogende robots

E1: Mens - Robot Interactie


Mens en machine
Bij Sociale Robotica draait het om de communicatie over en weer tussen mens en robot. Je kunt je
daarbij vragen stellen als:
- Zijn sociale robots nodig?
- Hoe werkt de sociale interactie tussen mens en robot?
- Waarom reageer je op een AIBO alsof het een dier is?
- Wat zijn uitdagende toepassingen van androïde robots?

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je kunt uitleggen wat sociale interactie is
- je kunt beschrijven hoe emotie en expressie tot stand komen
- je kunt met een voorbeeld aangeven wat sociale hechting is
- je kunt aangeven wanneer je een robot een "Sociale Robot" kunt noemen.

Presentatie

NLTC-H301 Leven met Robots v 1.0 128


Keuzehoofdstukken A - F

De presentatie begint met de introductie van twee standpunten op de ‘mens – robot’ - interactie:
1. Vanuit de mens gezien
2. Vanuit de robot gezien

Je kijkt naar verschillen tussen kinderen en volwassenen ten aanzien van de mening over robots.

Opdrachten
Doel van het hoofdstuk is het bestuderen van verschillende sociale robots om zo te komen tot een
ontwerp voor een sociale robot. Deze kun je maken met behulp van LEGO Mindstorms NXT / EV.
Als onderzoek ga je wat filmpjes bekijken over sociale robots. Soms kun je gebruik maken van een
sociale robots van een informatica afdeling van een hogeschool of universiteit, maar de opdrachten
zijn ook prima met gewoon de filmpjes uit te voeren.

Sociale interactie
Sociale interactie heeft betrekking op de relatie tussen twee, drie of meer individuen (in ons geval ook
robots). Sociale interactie bestaat uit de verbale (met woorden) en non-verbale, dus met gebaren,
gezichtsuitdrukkingen, etc. communicatie tussen (met name) mensen. Het gaat bij sociale interactie
eigenlijk altijd om de wisselwerking.
Bij sociale interactie spelen allerlei emoties een belangrijke rol. Bij communicatie met behulp van de
computer druk je emoties uit met behulp van smiley's ( 'emoticons'). Als iemand je vraagt : "Hey joh,
hoe gaatie?" kun je bijvoorbeeld antwoorden met: a. :-), b. :-(, c. :'-( of d. ;-).

Het maakt dan nogal uit of je met a antwoordt of met c. Zo gaat het ook als je elkaar tegenkomt. Je
kunt bijvoorbeeld blij zijn dat je de ander tegenkomt of juist boos: afhankelijk van hoe jij je voelt, hoe
die ander op jou reageert en wat er eerder in de relatie is gebeurd.
Onderzoek leert ons dat emoties niet cultuur gebonden zijn. Dat maakt het relatief gemakkelijker om
emotioneel expressieve robots te bouwen zo dat je de getoonde emoties ook kunt herkennen.

Als we sociale robots maken, zijn we ook geïnteresseerd in de vorming van een soort
vriendschapsbanden. De vorming van een band tussen mens en robot zorgt ervoor dat je bijvoorbeeld
niet meer zonder je AIBO kunt. Eigenlijk is het best vreemd om niet zonder een robothond te kunnen.
Net als met echte knuffelhonden. Als je er over nadenkt, weet je dat je knuffelhond of kat ook niet op
dezelfde manier van jou houdt als je vrienden en je ouders.

Voor- en nadelen
Sociale robots hebben voor- en nadelen. Op dit moment is misschien wel het grootste nadeel dat
sociale robots heel veel moeten kunnen, we noemen een aantal vaardigheden:

 herkennen van gezichten


 herkennen van emoties
 spraakherkenning
 geluidsherkenning
 natuurgetrouw werken
 er lief, intelligent en goed uitzien
 geen rare geluiden maken (bijv. probleem van servo motoren)

NLTC-H301 Leven met Robots v 1.0 129


Leerlingenhandleiding

 snel reageren.

NLTC-H301 Leven met Robots v 1.0 130


Keuzehoofdstukken A - F

Hiroshi Ishiguro
De Japanse robotwetenschapper Hiroshi Ishiguro ontwierp ook
een kopie van zichzelf in 2006. Hij kostte 258.000 dollar. “Toen
mijn dochtertje haar voor het eerst zag, werd ze een beetje
verlegen en bang", vertelt Hiroshi Ishiguro.

Het mag duidelijk zijn dat niet elke robot alle eigenschappen
nodig heeft. Een humanoïde robot moet per definitie
geavanceerder zijn dan bijvoorbeeld AIBO of Paro, immers een
dier wekt minder hoge verwachtingen.

Huggable

Huggable is speciaal ontworpen


voor het ondersteunen van
relaties tussen kind en
Figuur E2: Hiroshi Ishiguro
(groot)ouders. De robot teddy
kan drie verschillende zaken meten:

a. Elektrisch veld
b. Temperatuur
Figuur E3: Huggable c. Kracht

De robot heeft camera's in de ogen, microfoontjes in de oren en een lekker zachte 'huid'.

Andere nadelen van sociale robots zijn zaken als ethische kwesties. Mag je robots die er super echt uit
zien zo maar beledigen of overal aanraken?

Al maakt dat niets uit voor de robot van plastic, ijzer en stroomdraadjes zelf, toch doet het (al dan niet
onbewust) wat met jezelf en de mensen om je heen (vooral kinderen) als je een antropomorfe of
theriomorfische robot behandelt op een manier waarop je een echt mens of dier niet zou behandelen.

Half sociale robots


Er zijn ook robots die eigenlijk niet sociaal zijn in de zin van sociale interactie. Als ze toch bedoeld zijn
om functioneel te zijn voor ons als mensen en zorgen dat we een beter leven hebben, is er toch wel
enigszins sprake van een sociale robot. Zolang deze in ieder geval maar enige interactie met de mens
heeft.

De grens voor zulke robots blijft wel lastig om aan te geven. Bij een militaire robot kun je wel met
redelijke zekerheid zeggen dat deze niet echt een sociale robot is. Een melkrobot echter, levert actief
interactie met de koe, hoewel het niet direct sociale interactie is. De koe krijgt bijvoorbeeld voer van
de robot en daarnaast zorgt de robot ervoor dat de koe haar melkdrang kwijtraakt en dat is toch
duidelijk iets waar de koe blij van wordt.

NLTC-H301 Leven met Robots v 1.0 131


Leerlingenhandleiding

Verschillende 'sociale robots'


Figuur E4 links: R2D2 en 3CPO uit Starwars, hebben sociale interacties, hoewel R2D2 (links) vooral met
bliepjes communiceert. E4 Midden: De dame is geen robot, maar ziet er heel sociaal uit en wordt
geholpen door een extern skelet (harnas) om sociaal mee te kunnen, ook bij zwaar tillen etc. E4 rechts:
Een melkrobot is niet super interactief maar de koe is er blij mee.

NLTC-H301 Leven met Robots v 1.0 132


Keuzehoofdstukken A - F

E2: Kennis maken met programmeren


Bezint eer ge begint...

Artikel uit Telegraph.co.uk:

Robot verpleegster zal voor eenzame oude mensen in Japan zorgen

Om het toenemende aantal oudere Japanners te helpen dat geen familie heeft om voor hen te zorgen,
zal er een speciale robot op de markt gebracht worden. De robot combineert de rol van verpleegster,
buddy en bewaker.
Figuur E4: Sociale robots
De Wakamaru robot zal 24 uur per dag een huis kunnen bewaken en eventueel zelfs familie,
ziekenhuizen of beveiligingsbedrijven inschakelen als een mogelijk probleem geconstateerd wordt. Het
zal bijvoorbeeld familieleden waarschuwen als de eigenaar instort of niet meer uit bad kan komen.

Deze technologie heeft in heel Japan de publiciteit getrokken. Vooral te midden van een groeiende
ongerustheid over hoe er voldoende zorg zal kunnen zijn voor de steeds verder groeiende populatie
ouderen. De levensverwachting van Japanse vrouwen is gestegen tot bijna 85 en is daarmee de
hoogste ter wereld.

Wakamaru kan met zowel een jongens- als een meisjesstem spreken en is ook ontworpen om als
gezelschap te dienen en "papa" te groeten als deze thuis komt.Het kan vergeetachtige mensen helpen
bij het onthouden van zaken als het moment om medicijnen in te nemen, te gaan eten, te gaan slapen,
etc. Het is de eerste huishoudelijke robot die in staat is om eenvoudige gesprekken te houden op basis
van een vocabulaire van ongeveer 10.000 woorden. Het kan niet alleen spreken, maar antwoorden ook
begrijpen en erop reageren.

Het zal bijvoorbeeld vragen 'Alles goed met je?' als de eigenaar voor een bepaalde tijd niet beweegt.
Als de eigenaar dan ‘nee’ zegt of helemaal niet antwoord, zal de robot voorgeprogrammeerde
nummers bellen, beelden versturen en als een speaker telefoon werken. Als er een harde knal gebeurt
of een onbekende de woning binnenkomt als de eigenaar slaapt of niet thuis is, zal Wakamaru een
beveiligingsbedrijf waarschuwen. Wakamaru kan verder tot 10 gezichten herkennen.

Wakamaru
Wakamaru is een Japanse,huishoudelijke robot, gemaakt door Mitsubishi Heavy Industries. De robot is
bedoeld om ouderen en gehandicapten gezelschap te bieden. Hoogte: 1 meter Gewicht: 30 kg. Twee
armen en een cirkelvormige basis met een diameter van 45 cm.

Prijs: +14.000 Dollar

NLTC-H301 Leven met Robots v 1.0 133


Leerlingenhandleiding

Helaas kan de robot zoals veel robots geen trappen lopen. Mitsubishi maakte Wakamaru op basis van
robots die gebruikt worden om wacht te 'lopen' in kernenergie centrales. Een medewerker bedacht
dat dit concept ook in de thuissetting nuttig toegepast zou kunnen worden.

Wakamaru, een sociale robot

Figuur E5: Wakamaru

In Japan, thuisland van de Sony Aibo, Paro en andere sociale robots, zijn robots
veel meer geaccepteerd als leden van de maatschappij dan in de meeste andere landen (met
uitzondering van Korea).

Red zeehond Paro


Amsterdam, juli 2007.

Hij had het zo naar zijn zin in Osdorp. Vier weken lang werd Paro de zeehond - van Japanse afkomst -
vertroeteld door de bewoners aan de Saaftingestraat. Bewoners fleurden op als ze hem zagen. Paro
werd geknuffeld, geaaid en toegesproken met lieve woordjes. Dat werd door hem beantwoord door
hoge zeehondengilletjes, spinnen en knorren. Met zijn vertederende grote, donkere ogen nam hij een
ieder voor zich in. Ook zijn heerlijk zachte witte vacht zal daaraan hebben bijgedragen. Maar nu moet
Paro weg. Zijn Japanse baasje, dr. Shibata, wil hem terug. De bewoners kunnen hem houden, maar dan
moeten ze wel vierduizend euro betalen. En dat geld is er niet.

NLTC-H301 Leven met Robots v 1.0 134


Keuzehoofdstukken A - F

Jammer, vinden ze in het Leo Polak verzorgingstehuis waar Paro als proef een maand onderdak vond

Ziekenhuis verbod voor dieren: behalve Paro!

Dieren zijn in verband met bacteriën en andere complicaties,


niet toegestaan in ziekenhuizen. Paro is een uitzondering. De
robot zeehond helpt zieke kinderen maar ook oudere mensen
om het leven weer van een iets positievere kant te bekijken.

Figuur E6: Paro


op de afdeling voor dementerende bewoners. Paro is een robot, maar dat zal zowel bewoners als
verzorgers worst zijn.

Paro is levensecht. Zelfs woonbegeleider Anja knuffelt graag met het donzige dier. Het idee dat de
zeehond deze week in het laadruim de lange tocht naar de andere kant van de wereld moet maken,
stemt haar droevig. En ook bewoonster Klaar zal bedroefd zijn. Paro is haar zeehondenkind en wie niet
beter weet, zou denken dat ook Paro opklaart als ie Klaar ziet. Logisch, zelfs koekjes worden hem
gevoerd. De kruimels worden later wel weer opgeveegd. Paro neemt deze week afscheid van het Leo
Polakverzorgingshuis. Tenzij een gulle gever zich meldt. Red de zeehond!

Behandeling van prostaatkanker met behulp van de Da Vinci Robot


De Da Vinci Robot is een nieuw high-tech systeem dat de chirurg helpt om moeilijke ingrepen via een
kijkoperatie te verrichten. Het systeem kan alleen worden toegepast als de prostaatkanker nog niet is
uitgezaaid. De uroloog kan de patiënt dan volledig genezen. Behalve voor deze operatie kan de arts
overigens ook kiezen voor bestraling van de prostaat. Dat hangt van een aantal zaken af, zoals de
leeftijd en de algemene toestand van de patiënt.

Op enkele plaatsen in ons land is men begonnen met het inschakelen van deze robot om een prostaat
helemaal te verwijderen. Hierbij zit de operateur met zijn hoofd en handen in een nauwe ruimte en
zijn zijn vingers via een computer verbonden met instrumentarium, dat via holle buisjes in het lichaam
ingebracht is. Door subtiele vingerbewegingen stuurt hij de instrumenten. Veel oefening is nodig om
deze procedure binnen een redelijke tijd klaar te krijgen.

Figuur E7: Links: de instrumenten gaan via holle


NLTC-H301 Leven met Robots v 1.0
buisjes het lichaam in. Rechts: de operateur 135
bedient de robot via een console
Leerlingenhandleiding

De Da Vinci Robot bestaat enerzijds uit een patiënt-component met 4 armen. Deze houden
verschillende instrumenten vast welke via kleine gaatjes in de patiënt zijn binnengebracht door de
chirurg. De ‘polsbewegingen’ van de instrumenten laten een grotere bewegingsvrijheid toe dan de
menselijke hand. Trillen van de hand wordt uitgeschakeld en bijgevolg kunnen deze fijne instrumenten
de meest precieze handelingen uitvoeren.

De robot werkt niet op zichzelf maar wordt door de chirurg bediend op een console (zie figuur E8). In
tegenstelling met conventionele kijkoperaties beschikt de chirurg hier over een driedimensioneel
beeld welke ook nog vergroot is. Via een soort handvaatjes worden de handelingen van de chirurg in
real-time door de robot overgenomen. De chirurg stelt de schaal van beweging in en trillingen worden
weggefilterd door de robot. De Da Vinci robot voorziet de chirurg dus van een veel beter zicht en geeft
hem fijnere vingerbewegingen, waardoor veel preciezer kan worden geopereerd.

De theoretische voordelen voor de patiënt zijn:

 minder pijn na de operatie


 minder bloedverlies en bloedtransfusies
 sneller herstel
 korter ziekenhuisverblijf
 minder littekens
 minder kans op erectiestoornissen
 minder kans op urineverlies
 sneller hervatten van de normale dagelijkse
activiteiten Figuur E8: Console

De Da Vinci robot is een duidelijke meerwaarde voor de patiënt. (bron: prostaat.nl)

Een andere robot die in de zorg toegepast wordt, is de RI-MAN robot. Het onderzoekscentrum van het
elektronica bedrijf RIKEN, probeert basaal onderzoek naar de flexibele en dynamische motorische
functies van biologische systemen te promoten.

Het doel is om geavanceerde


technische systemen te maken
zoals een zachte robot voor de
omgang met mensen. De robot
die men ontwikkeld heeft, wordt
RI-MAN genoemd. RI-MAN
vertoont de vaardigheden en
mogelijkheden ten einde in staat
te zijn om taken ten behoeve van
de menselijke zorg en welzijn te
realiseren. RI-MAN zal een partner
robot worden van onschatbare
waarde.
Figuur E9: RI-MAN

NLTC-H301 Leven met Robots v 1.0 136


Keuzehoofdstukken A - F

Eigenschap 1. Terugkoppeling van krachten

De linker en rechter bovenarmen


van RI-MAN en ook de torso zijn
uitgerust met een zachte laag
waarin sensoren zijn verwerkt
die de grootte en plaats van de
kracht die op hen drukt, meten.
De robot meet hoe stevig je hem
beetpakt. Zo kan RI-MAN
lichamelijk contact met mensen
hebben.

Figuur E10: RI-MAN eigenschappen. Op de linker foto is te zien hoe


zacht RI-MAN wel niet is. Rechts zie je het schema van de decentrale
controllers die samen de robot intelligentie (het robotbrein) vormen.
Eigenschap 2. Een zacht
(aaibaar) lichaam

RI-MAN is ontwikkeld om op een veilige manier met mensen in contact te komen. Daarom is de robot
bedekt met een zachte laag en zijn de mechanische gewrichten met een zachte isolatie bekleed.

RI-MAN herkent gezichten

Net als veel andere sociale robots, kan RI-MAN gezichten herkennen. Waar de meeste andere sociale
robots het puur van hun gezichtsvermogen moeten hebben, gebruikt RI-MAN geluidstechnieken om
zich te kunnen focussen op mensen die wat tegen de RI-MAN robot zeggen.

Eigenschap 3. Kleine maar krachtige armen.

Beide armen hebben zes gewrichten die aangestuurd worden door middel van zes motoren. De armen
van RI-MAN maken gebruik van het principe van 'direct gekoppelde aandrijving', waarbij gebruik
gemaakt kan worden van de torsie van twee motoren. Dit mechanisme is nodig om de krachtige
bewegingen van de schouder en elleboog mogelijk te maken die nodig zijn voor het optillen en
vasthouden van mensen. Hoewel dit mechanisme erg sterk is, stelt het RI-MAN toch in staat om kleine,
mensachtige armen te hebben.

Eigenschap 4. Simulatie van beweging

Je kunt zien hoe RI-MAN op een veilige manier met mensen kan omgaat. Dit kan de ontwikkeling van
een in de dynamische 3D simulatie omgeving, waar je een virtuele RI-MAN in kunt programmeren en
testen. Voordat je een beweging in de werkelijkheid uit hoeft te voeren, kun je simulaties uitvoeren
van volledig tillen tot wassen van een menselijk lichaam.

Eigenschap 5. Centrale besturing

Elk gewricht van RI-MAN wordt bestuurd vanuit een individuele controller (een klein computertje).
Totaal beschikt het lichaam van RI-MAN over vijftien van dergelijke kleine controllers. Deze controllers

NLTC-H301 Leven met Robots v 1.0 137


Leerlingenhandleiding

zijn in staat om zich volledig te richten op de taken voor het besturen van de motor en uitlezen van de
sensoren. Dit helpt om te voorkomen dat de hoofd computer al het rekenwerk moet doen en
reduceert het complexe netwerk van draden. Dit is de 'sleutel' technologie waardoor het lichaam van
RI-MAN zo compact blijft.

NLTC-H301 Leven met Robots v 1.0 138


Keuzehoofdstukken A - F

Eigenschap 6. Geluidslokalisatie

Het lokaliseren van geluidsbronnen kan voor elkaar gekregen worden


door twee gangbare microfoons te gebruiken en deze te combineren
met reflectoren zodat het gedrag lijkt op dat van menselijke oren.
Door toepassing van een nieuwe generatie reflectoren, is RI-MAN ook
in staat om de verticale richting van het geluid te bepalen. Door
functies te combineren, kan geluidslokalisatie uit elke richting
gerealiseerd worden.
Figuur E11: gezichtsherkenning
Eigenschap 7. Herkennen en volgen van een menselijk gezicht

Door gebruik te maken van stereo camera's, kan de positie van menselijke gezichten uitgefilterd
worden. Door auditieve en visuele informatie te integreren, weet RI-MAN de persoon die opdrachten
aan de robot geeft te identificeren.

Eigenschap 8. Geur onderscheiding door middel van een hal/geleidende gassensor

We hebben een gas sensor module ontwikkeld die verschillende geurtjes kan onderscheiden. De geur
detectie methode is gebaseerd op de niet-lineaire dynamische uitvoer van een gas sensor in reactie op
verhitting over een bepaald tijdsbestek. Verschillen in dynamische respons worden gebruikt om het
type gas en de concentratie ervan te bepalen. Door twee gas sensoren te plaatsen, aan de linker en
rechterkant van de torso van de RI-MAN, kan de robot belangrijke geurtjes, zoals urine detecteren als
de patiënt in de armen gehouden wordt.

Figuur E12: BeatBots: De beatbots heb je gezien bij


Kunstmatige Intelligentie, maar ze horen ook thuis bij
Sociale Robotica. De combinatie van kunstmatige
intelligentie met zich sociaal gedragende en sociaal
uitziende robots, maakt een robot pas echt sociaal! Zie:
beatbots.org

Eigenschap 9. De programmatuur is op basis van QoS (Quality of Service) ontworpen

NLTC-H301 Leven met Robots v 1.0 139


Leerlingenhandleiding

De RI-MAN is uitgerust met een architectuur die gebaseerd is op een notie van Quality of Service
(QoS). Belangrijke verwerkingsoperaties (beeldverwerking, spraakherkenning, enzovoorts), krijgen op
een dynamische manier een prioriteit.

E3: Opdrachten bij E. Sociale Robotica

Opdracht E.1: Medische robot


Kies met je groepje een sociale medische robot uit (een van de voorgaande artikelen) en beantwoord
voor deze robot de volgende vragen:

a. Wat zijn de eigenschappen die deze robot 'sociaal' maakt?


b. Zou jij je op je gemak voelen bij deze robot en waarom wel/niet?
c. Aan welke kenmerken moet volgens jou een robot voldoen om als 'sociaal' bestempeld te
kunnen worden?

Je maakt een verslag waarin je de antwoorden verwerkt.

Opdracht E.2: AIBO, iCat, Kismet..

Bekijk in je groepje het onderstaande lijstje en zoek informatie op van de


robots die je niet kent. Rangschik deze op de mate van sociaal zijn.
Beargumenteer samen, per robot, de plaats die je deze robot gegeven
hebt.

a. AIBO
b. Kismet
c. Paro
d. Repliee
e. iCat Figuur E13: Repliee en Eveliee.
f. Eveliee Links: androïde robot Repliee R1.
Rechts: humanoïde Eveliee P1.
Opdracht E.3: Ontwerpen
Ontwerp je eigen sociale robot. Overleg met je docent welke stappen je allemaal uitvoert. Analyseren
en ontwerpen is genoeg voor de kleine opdracht, als dit je eindopdracht is, voer dan ook de andere
stappen uit!

Analyse
1 a. Wat moet de robot kunnen? (analyse)
1b. Welke onderdelen heb je tot je beschikking? (inventarisatie)
1c. Welke eventuele externe onderdelen heb je nodig? (inventarisatie)
1d. Schets de robot.

Ontwerp
2a. Zijn er al ontwerpen beschikbaar die je aan kunt passen?
2b. Maak de robot in LEGO Digital Designer.
NLTC-H301 Leven met Robots v 1.0 140
Keuzehoofdstukken A - F

2c. Maak een ontwerp voor de software functies.

NLTC-H301 Leven met Robots v 1.0 141


Leerlingenhandleiding

Constructie
3a. Bouw de robot fysiek.
3b. Programmeer de eigenschappen van de robot.

Evaluatie / testen
4a. Test de mechanische eigenschappen….
4b. Test de software van de robot.
4c. Test de robot in de praktijk.

Toepassing
5a. Gebruik de robot in de praktijk.
5b. Evalueer de prestaties van de robot in de praktijk en pas de robot eventueel nog aan (mechanisch
en/of software).
5c. Maak een verslag van het proces.
5d. Presenteer je verslag en robot aan de docent (en/of de rest van de groep).

NLTC-H301 Leven met Robots v 1.0 142


Keuzehoofdstukken A - F

F. Programmeren met RobotC

Figuur F1: Website van programmeertaal RobotC

F1: De besturing van een robot

Uitleg hoofdstuk
Sommige NLT leerlingen vinden de NXT / EV-G programmeeromgeving niet toereikend. Zij willen graag
gebruik maken van een 'echte' programmeertaal. RobotC is een dergelijke programmeertaal: de
klassieke programmeertaal C, maar dan helemaal toegespitst op robots. Ook voor Informatica
leerlingen en leerlingen die een profielwerkstuk willen maken of mee willen doen aan een wedstrijd
zoals de FIRST Tech Challenge (FTC), is RobotC een goede keuze.

Leerdoelen
De leerdoelen van dit hoofdstuk zijn:
- je kunt de basisprincipes van programmeren uitleggen
- je kunt de basisprincipes van RobotC noemen
- je kunt speciale functies in RobotC voor de First Tech Challenge noemen

Presentatie

NLTC-H301 Leven met Robots v 1.0 143


Leerlingenhandleiding

Er is geen klassikale presentatie voor RobotC. Je werkt je dit hoofdstuk als zelfstudie door. Je hebt een
robot nodig waarmee je de opdrachten die in het hoofdstuk verwerkt zijn, kunt uitvoeren. Dit
hoofdstuk biedt geen uitputtende handleiding, maar is een introductie.

Wat ga je doen?
Je leest eerst de korte uitleg over het programma RobotC: de IDE, (=
Integrated Development Environment). In normaal Nederlands: de
geïntegreerde ontwikkel omgeving.

De IDE gebruik je om je programmacode te programmeren, de code te


compileren en op de NXT / EV te zetten.

Daarnaast kun je verschillende functies gebruiken om fouten op te lossen.


Ook zorgt de IDE dat je gebruik kunt maken van Bluetooth en zaken als
handige pookjes om de Robot te laten bewegen.

RobotC for MINDSTORMS


In dit hoofdstuk wordt er van je verwacht dat je een Robot gebouwd hebt
en deze gebruikt om je programma te testen.
Figuur F2:
Programmeren in C
De programmeertaal C bestaat al sinds 1972 en is nog steeds een veel gebruikte taal voor
programma's op computers, telefoons en programmeerbare apparaten. C is snel, efficiënt en compact
en is de basis geweest voor vele andere programmeertalen waaronder Java en C# en C++. De laatste
taal begon als uitbreiding van C en is pas later een aparte taal geworden.

Besturingssystemen zoals Unix, Mac OS en Windows zijn ontwikkeld in C. Ook LabVIEW (waar NXT /
EV-G van afgeleid is) heeft als basis C(++). Omdat C dicht op het machineniveau van een computer of
de microcontroller staat, is deze in staat om de gemiddelde C byte code (tussenvorm tussen je C code
en de 0-en en 1-en die je machine daadwerkelijk uitvoert) snel uitvoeren.

Als je NXT / EV-G-code gewend bent, zul je merken dat RobotC-code veel sneller gecompileerd wordt
(je C-code wordt omgezet in een voor de robot te interpreteren bytecode bestand).

Syntax van C
De woorden en grammatica van een programmeertaal noem je de syntax. Zoals de Nederlandse taal
bepaalde eigenschappen heeft, zo heeft de Duitse taal weer andere eigenschappen. Dit is hetzelfde bij
een programmeertaal. Je moet je houden aan de eigenschappen van de C-taal om in C te kunnen
programmeren. Zoals je kunt zien, is er nog een verschil tussen "C voor spelletjes computers" en "C
voor de NXT / EV robot". De functies die je kunt programmeren zijn verschillend.

Platform type
Binnen de RobotC omgeving (LEGO editie), is er een aantal platforms dat ondersteund wordt:
- de oude LEGO Mindstorms RCX
- de standaard NXT / EV

NLTC-H301 Leven met Robots v 1.0 144


Keuzehoofdstukken A - F

- de FTC NXT / EV robot


- de EV3 robot

De FTC robot heeft extra onderdelen nodig zoals enkele niet-LEGO motoren en HiTechnic uitbreidingen
om deze motoren aan te kunnen sluiten. In de meeste gevallen zul je kiezen voor de standaard NXT /
EV robot.

De LEGO editie van RobotC is te vinden op de site ►URL39 (site RobotC). De keuze voor het platform
kun je doen in het menu onder "Robot" in de IDE.

Robot aansluiten
De NXT / EV robot ondersteunt twee manieren om met de computer te kunnen communiceren:

a. USB kabel
b. Bluetooth

De NXT / EV robot werkt met de standaard Bluetooth stick die bij de 9797 basisset geleverd wordt (o.a.
via LEGO.com). Ook de EV3 ondersteunt Bluetooth communicatie. Als je het programma een naam
geeft en opslaat, moet je geen punt in de naam zelf zetten. Wel voor de .c extensie op het eind.
Bestandsnamen met meer dan een punt kan de NXT / EV3 niet uitvoeren.

Zie voor meer tips: ►URL40 (LEGO Bluetooth dongle).

NLTC-H301 Leven met Robots v 1.0 145


Leerlingenhandleiding

F2: De RobotC IDE


Opdrachten

Figuur F3: Overzicht van de RobotC programmeeromgeving

Je eerste programma in RobotC


Robots moeten vaak meerdere taken tegelijk uitvoeren. Daarom begin je in RobotC met een hoofdtaak
(task main) waarin de robot verschillende taken moet uitvoeren:

In programma zie je een aantal


dingen terug. Het programma
staat in 'task main()' (zie ook
figuur F). Dit is de methode van
het hoofdprogramma van je
robot. Deze taak begint bij de
{ (accolade openen of begin) en
eindigt met een } (accolade
Figuur F4: Je eerst RobotC programma deel 1 sluiten of einde).

Nb. Een methode is een procedure of functie die je kunt uitvoeren op je robot. RobotC weet (omdat je
ingesteld hebt dat je bijv. de NXT / EV gebruikt) dat er een aantal motoren aanwezig kunnen zijn op
poort A, B of C. Deze kun je aansturen met "motor[motor_naam] = snelheid;".

In C lees je = als "wordt". Dus de snelheid in de broncode 3.1 van motorA wordt 100.

NLTC-H301 Leven met Robots v 1.0 146


Keuzehoofdstukken A - F

wait1Msec is een methode die je kunt gebruiken om een milliseconde te wachten. Als argument kun je
dan opgeven hoe vaak je een milliseconde wilt wachten (in ons geval 4000 keer). De wait1Msec(4000);
regel heb je pas nodig als er meer code staat.

Tip! Wat tussen de "//"-tekens staat is commentaar, dit is nuttig voor jou en mij, maar de robot doet er
zelf niets mee!

NLTC-H301 Leven met Robots v 1.0 147


Leerlingenhandleiding

Opdracht:
Sluit je robot aan en, ga naar "Robot" in je IDE menu. Compileer je programma, haal er foutjes uit
(eventuele puntkomma's die je vergeten bent etc.). Je moet de rechter motor op poort A hebben
aangesloten en de linker op B. Daarna kun je het programma op de NXT / EV zetten en uitvoeren
(eerst zorgen dat je een Bluetooth of USB link met de robot hebt).

Nu ga je de robot 4 seconden achteruit laten rijden. Je geeft de motorA gewoon een snelheid van -100
en wachten (wait1Msec) 4000 milliseconde (code fig 3.2)

Figuur F5: Overzicht van de RobotC programmeeromgeving

Figuur F7: Je eerste RobotC programma deel 2

Motoren een andere snelheid geven


Je kunt nu het programma aanpassen aan eigen wensen. Zo kun je motor A een snelheid van 100
geven, maar motor B geef je een snelheid van -100.

Opdracht: Voorspel wat er dan gebeurt en test dit uit.

Herhalingen: "when time becomes a loop"


Herhalingen of “lussen” zijn er om herhaling van bepaalde bewegingen sneller te programmeren. Een
robot die autonoom is, moet het hoofdprogramma continu kunnen herhalen.

Er zijn in RobotC drie soorten herhalingenopdrachten: ‘while’, ‘for’ en ‘do ... while’.Deze doen allemaal
in principe hetzelfde, alleen de code-weergave is anders.

Figuur 1

Figuur 2
Figuur F6:

NLTC-H301 Leven met Robots v 1.0 148


Keuzehoofdstukken A - F

While-lus; is een herhaling die er zo uitziet:

- zolang (voorwaarde IS waar) (tussen de haakjes staat de voorwaarde!)


- start
doeIets;
nogEenVolgendeKeer!
- stop

For-lus; is een herhaling die er ietsje anders uitziet, je zet dan bovenin alle
voorwaarden en een teller.

For-lus als “activity diagram” In figuur F8 zie je hoe een for-lus in een
activiteiten diagram gemodelleerd wordt. Je ziet hier drie voorwaarden; de
start, de loop-test en een teller.

Do ... while-lus; werkt hetzelfde als een while-lus. Je test nu tot aan een
voorwaarde die je stelt voldaan is (waar is).

While Figuur F8:


Herhalingsopdracht ‘for

Figuur F9: Een herhalend programma met while

In figuur F9 zie je een voorbeeld van een while lus die 20 keer uitgevoerd wordt. Als je iets 20 keer wilt
herhalen, moet je zorgen dat je dat met een teller bij kunt houden. Een teller is een getal, daarom type
je ‘int teller’. Dit geeft aan dat je ruimte(array) nodig hebt voor een teller van gehele getallen (1, 2,
3, ...) of van ‘integers’. Je noemt de teller in dit geval teller maar je zou deze ook iets anders zoals
teller1 of zelfs i kunnen noemen, zolang het maar type int is, want anders kun je er niet mee tellen.

Je zet de teller eerst op de beginwaarde in dit geval 1: teller = 1;. Spreek uit "teller wordt 1". Vergeet
de puntkomma niet. Aan het einde van de while-lus moet je de teller met een ophogen: teller++;.

NLTC-H301 Leven met Robots v 1.0 149


Leerlingenhandleiding

Doe je dat niet, wordt de teller nooit opgehoogd en blijft deze altijd 1 (eindeloze lus).

For

Figuur F10: Een herhalend programma met for-lus

In figuur F10 zie je een programma wat hetzelfde doet als in figuur F9, alleen is het anders
opgeschreven. Je ziet na for drie parameters gescheiden door punt komma. Bij de for lus heb je eerst
eengetal waarin je de teller kunt opslaan (int teller). Daarna geef je de voorwaarde aan (teller < 21).

In de for-lus geef je tenslotte met teller++ aan dat de teller aan het eind van een lus met 1 opgehoogd
dien te worden.

Resultaat van de ‘While’ en ‘For’ lus


Bij beide programma's zal de robot 20 keer beide motoren 4 seconden lang met snelheid 75 vooruit
laten draaien. Vervolgens 0,75 seconden lang motor B achteruit laten draaien terwijl tegelijk motor A
vooruit blijft draaien.

NLTC-H301 Leven met Robots v 1.0 150


Keuzehoofdstukken A - F

F3: Het programmeren: tellen en rekenen


Tellen en rekenen met gehele getallen
Zoals gezegd, staat int voor elk geheel getal (1, 2, 3, 10, 101, 10001, etc.). Er zit in RobotC wel een
maximum aan een getal (zie help van RobotC). Normaal gesproken bereik je dit getal niet.

Getallen kun je op verschillende manieren bewerken: je gebruikt daarvoor de term “operaties”. Een
operatie die je al gebruikt hebt is = en ++. Een operator is de bewerkingsmanier (+,-, *)

Stel, je hebt de code:

int getal = 1;
Als je deze programmacode vertaalt, betekent dit: “Maak een nieuwe variabele van het type geheel
getal (int) en geef deze de waarde 1.” Nu je de variabele “getal” hebt gedefinieerd als integer, kun je er
wat mee doen.

getal = getal + 10;


Dit ziet er voor een beginnende programmeur misschien vreemd uit, maar heeft te maken met de
werking van je compiler / computer. De computer zal eerst het rechter deel (na de =) uitvoeren en dit
met het resultaat het linker deel uitvoeren. De computer doet met "getal + 10" eigenlijk de volgende
dingen:

- wat stond er ook al weer in getal? // er stond 1 in getal

- tel 10 op bij wat er in getal stond. // 1 + 10 wordt 11 Vervolgens staat er dan dus voor de computer:

getal = 11; // getal wordt dus 11

De code getal++; levert hetzelfde op als getal = getal + 1;.

Je kun ook andere operaties(bewerkingen) met getallen doen zoals:

 aftrekken getal = getal -1;


// getal wordt 1 kleiner
 vermenigvuldigen getal= 10*3;
// getal wordt 30
 delen getal = 9 / 3;
// getal wordt 3

N.b.: omdat getal door ons als int is gedefinieerd, heb je een probleem als je getal = 1/3 uitvoert. Je
krijgt dan namelijk een kommagetal terug. RobotC zal deze afronden naar het dichtstbijzijnde gehele
getal.

Vergelijkingen en vergelijkingsoperatoren

NLTC-H301 Leven met Robots v 1.0 151


Leerlingenhandleiding

In de herhaal-lusjes maakte je een vergelijking met een getal:

teller < 21.

Een vergelijking levert altijd een true of een false waarde op (dit is datatype boolean; waar of niet
waar,). Je kunt een vergelijking in een lus doen, maar ook apart:

if (teller < 21)

{ // doe dan iets

Je noemt bovenstaande code een conditionele vergelijking (met als conditie, als . doe dan ..)

Er zijn de volgende vergelijkingsoperatoren:

- gelijk aan ==
- ongelijk aan !=
- groter dan >
- kleiner dan <
- kleiner of gelijk aan <=
- groter of gelijk aan >=

Deze vergelijkingsoperatoren werken voor type int. Elk datatype heeft weer zijn eigen operatoren.

De operatoren van boolean dataype


Een boolean is een datatype met twee mogelijke waarden: true of false. (‘bool’ in RobotC)

Booleans werken alleen met de operatoren:

- is gelijk aan ==
- is ongelijk aan !=
- inverteren !

Een boolean kun je niet optellen of aftrekken, je kunt een boolean alleen inverteren (omdraaien) (!):

Voorbeeld van een ‘bool’ bewerking:


bool gebotst; //definitie boolean met naam gebotst
gebotst = false; // je zet gebotst op false
gebotst = !gebotst; //Nu staat gebotst op true want ! draait de waarde van gebotst om.

Als je een operatie op een variabele doet, moet je zorgen dat de variabelen en waarden in het
statement (de programma regel) waarop je operaties doet die van hetzelfde type zijn.

Voorbeeld:
NLTC-H301 Leven met Robots v 1.0 152
Keuzehoofdstukken A - F

int getal1 = 5;
int teller = 2;

Geldige operaties zijn nu bijvoorbeeld:

Getal1 = teller; // getal1 is nu 2 geworden.


if (getal1 == teller) {
getal1 = teller + 4;
}

Omdat getal1 en teller beiden variabelen zijn van type int, mag je bewerkingen (operaties) doen met
hele getallen en mag je ze ook met elkaar optellen etc.

Het gaat dus bij programmeren niet om de naam van een variabele, maar om het type en
de waarde die in de variabele gestopt is.

Vraag: wat is getal1 na afloop van deze code?

Als je getal1 = teller uitvoert, wordt de waarde van teller in getal1 gezet. Daarna is de waarde van
getal1 dus hetzelfde geworden als de waarde van teller (beide 2).

In het if statement staat dus eigenlijk if (2 == 2) {…}. De operatie 2 == 2 levert true op. Dus wordt nu de
code tussen { en } uitgevoerd. Vervolgens voer je je getal1 = teller+4 uit. De waarde van getal1 wordt
nu 2+4, dus na afloop staat er in getal1 de waarde 6 (en heeft teller nog de waarde 2).

NLTC-H301 Leven met Robots v 1.0 153


Leerlingenhandleiding

Meer over programmeren


Programmeren leer je door te oefenen. Als je veel programmeert, wordt het programmeren steeds
gemakkelijker. Als je niet uit een probleem komt, vraag dan hulp aan anderen. Zorg er wel voor dat je
je er wel in verdiept hebt. En: RTFM (zoek maar op in Google wat dat betekent!).

Je ziet dat je in de RobotC code, moet zorgen dat je het programma overzichtelijk houdt.

Je zet tabs of spaties op regels om het programma overzichtelijk te houden. De vuistregel hierbij is dat
je bij elke accolade openen ({) een stukje inspringt (naar rechts) en bij elke accolade sluiten (}) weer
hetzelfde stukje terugspringt (naar links)..

Zo kun je heel snel zien welke { bij


welke } hoort.

In figuur F11 zie je een


overzichtelijke code. Je ziet snel
waar task main() begint en
ophoudt?

Ook bij de if { ... } else { ... }-lus en


de for-lus zie je heel snel waar het
blok met code begint en ophoudt.

Door goed in te springen houd je


dus overzicht over de opzet van
een stuk programmacode (wat
hoort bij wat en hoe verloopt een
codeblok).

Tip!
Figuur F11: Inspringen
RobotC heeft een menuoptie om
je code automatisch netjes te laten inspringen:
"Menu -> Edit -> Advanced -> Format Whole File".

Commentaar toevoegen
Op plaatsen waar dat nodig is, kun je commentaar toevoegen. Commentaar is alleen bedoeld voor een
programmeur en de compiler zorgt ervoor dat in de robotcode geen commentaar zit.

Je begint een commentaar met twee slashes: // achter de punt komma. Als je tussen of na statements
meer regels met commentaar kwijt wilt, dan doe je dat tussen /* en */ tekens:

/*

Programma: Lijnvolg robot demonstratie


NLTC-H301 Leven met Robots v 1.0 154
Keuzehoofdstukken A - F

Auteur: J.A. Korten


Versie: 1.0
Datum: 1-4-2009

*/

Hierboven zie je een duidelijke manier om een programmacode te beginnen. Iemand die de
programmacode leest, kan direct zien waar het programma voor dient, welke versie het is en dat jij het
geschreven hebt.

NLTC-H301 Leven met Robots v 1.0 155


Leerlingenhandleiding

F4: Het programmeren: meer code en sensoren


Werken met sensoren

Het programma in figuur F12 laat


de robot rijden tot er iets tegen
de bumper aan komt. Op ingang 1
is een drukschakelaar
aangesloten. Dat moet de robot
nog wel even weten. Vandaar dat
op de eerste regel een conditie is
aangegeven while(Sensorvalue
(drukschakelaar==0).

De code in figuur F12 voert een


lus uit en controleert steeds of de
drukschakelaar waarde van de
sensor ongelijk is aan 1 (dus gelijk Figuur F12: Sensoren in je code gebruiken
aan 0). Als de drukschakelaar niet
ingedrukt wordt, rijdt de robot met een snelheid van 100 op motorA en motorB.

Zodra de schakelaar geraakt wordt, is de uitkomst van SensorValue(drukschakelaar) gelijk aan 1 en dus
levert de controle (1 == 0) false op voor de while lus.

Tip! Je kunt de namen en instellingen van sensoren laten genereren door het RobotC programma. Zie
de Robot-IDE menu optie: "Motors en sensors set-up"). Type de gewenste naam in, selecteer soort
sensor en de juiste poort.

Een eenvoudige lijnvolger


Zoals je ziet in Figuur F13, is het mogelijk
om een lijn-volgende robot te maken. De
eerste truc is een eindeloze lus maken. Dat
kun je doen door in een while statement
iets te zetten dat altijd waar is. De lus blijft
eindeloos aan het herhalen totdat de
batterij van de robot leeg is.

De strategie van dit programma is:


- probeer de linkerrand van de
zwarte lijn te volgen.
- als de sensor zwart ziet, ga je er
vanuit de dat robot op de rechter
rand afgaat en dus naar links bij
moet sturen om de linker rand
weer te zien.
Figuur F13: Eenvoudige lijnvolger
NLTC-H301 Leven met Robots v 1.0 156
Keuzehoofdstukken A - F

- als je wit ziet, ben je blijkbaar over de linker rand heen gegaan en stuur je weer naar rechts om
op de lijn te komen
- dit herhaal je eindeloos. (of zolang de lijn is!)

Deze simpele strategie werkt als de sensorwaarde voldoende is goed. Eventueel verander je de
sensorwaarde. Maar een nadeel in dit voorbeeld is dat de robot de hele tijd zigzagt. Eens kijken of er
geen slimmere oplossing te bedenken is.

NLTC-H301 Leven met Robots v 1.0 157


Leerlingenhandleiding

F5: Het programmeren: sensoren


Handleiding
Er zijn een paar manieren om
achter de commando's van
RobotC te komen:

- Helpbestand van RobotC


- RobotC pdf' bestanden op de
Leerlingen CD over
beschikbare functies
- NXT / EV RobotC functies op
de Leerlingen CD
Figuur F14a: Geluidsensoren: een robot die schrikt van geluid
Robot die reageert op
geluid
De code in figuur F14a laat de
robot rijden totdat er een hard
geluid klinkt. (bijvoorbeeld
iemand in de handen klapt).

Ultrasoon geluid: sonar


Je kunt met de NXT / EV m.b.v.
hoge tonen afstand laten meten
door gebruik te maken van de
Ultrasone sensor, met de code
in figuur F14b.
NB.: deze sensor is niet altijd
even betrouwbaar, Lees de Figuur F14b: Geluidsensoren: een robot afstanden laten meten

handleiding.

Tekst naar het computerscherm


schrijven
In figuur F15 hiernaast kun je zien
hoe je iets naar het beeldscherm
kunt schrijven. De code
demonstreert twee dingen:

- Het aanroepen van een andere


functie
- Een paar handige manieren om
naar het scherm te schrijven
Figuur F15: Het schermpje gebruiken

NLTC-H301 Leven met Robots v 1.0 158


Keuzehoofdstukken A - F

Deze code wordt ook in het I2C_Scanner.c bestand gebruikt!


Je kunt maximaal 20 tekens naar het scherm schrijven.

NLTC-H301 Leven met Robots v 1.0 159


Leerlingenhandleiding

F5: De joystick om je robot te besturen.


Een Robot programmeren
1. Analyseer en bespreek wat de robot moet doen
2. Maak een schets (activiteiten diagram)
3. Programmeer de code
4. Test de code en pas deze zo nodig aan.
5. Je hebt nu een goed werkende Robot!

Joysticks
Zoals je weet, is er een aantal robots
dat met een controller (joystick)
bestuurd kan worden. Voor de FIRST
Tech Challenge is het nodig dat dit
ook met de NXT / EV robot kan.

In de FTC worden twee joysticks


gebruikt (wedstrijd van 2008-2009),
en daar heeft RobotC ook keurig
ondersteuning voor.
Figuur F16:de robot aansturen met een joystick
Hoe ga je aan de slag?
Ten eerste moet je ervoor zorgen dat RobotC in de FIRST Tech Challenge mode staat. Daarna maak je
je robot programma waarbij je eventueel
gebruik maakt van de voorbeeld code in
deze module.

Stap 1. Zorg dat je programma met de


joystick(s) overweg kan. Je moet daarom de
standaard "joystickdriver.c" driver van
RobotC of de extra "AdvJoystickDriver.c"
driver die o.a. bij de NLT module bestanden
staan. Als je ze daar niet kunt vinden kijk je
op het forum van robotc.net.

#include "joystickdriver.c"

Deze code zorgt er dus voor dat het bestand Figuur F17: Basis voor Joystick.c I
en daarmee de joystick gebruikt kan
worden. Zorg er wel voor dat je programma dit bestand kan vinden. Zet het vooraan.

Stap 2. Maak een hoofdprogramma met een eindeloze lus (Zie broncode in figuur F17)

Stap 3. Om met één pookje de motoren te kunnen aansturen, moet je onderscheid kunnen maken
tussen richting en kracht. Je neemt daarom twee variabelen:
NLTC-H301 Leven met Robots v 1.0 160
Keuzehoofdstukken A - F

- motorRichting
- motorVermogen

De richting haal je uit de x-as -(horizontale) beweging en de snelheid uit de y-as(verticale) -beweging.

- motorRichting =joystick.joy1_x1;
- motorVermogen=joystick.joy1_y1;

Stap 4. Zet de code bij elkaar in je programma


zodat het er zo uit komt te zien als in figuur F18

Stap 5. Als je de code van figuur F18 in je


programma zet en deze probeert, merk je dat het
nog niet helemaal goed werkt.

Dit komt omdat je de status van de joystick


steeds moet blijven opvragen. Dit doe je met de
programmaregel:

- getJoystickSettings(joystick);

Stap 6. Je werkende programma ziet er nu uit Figuur F18: Basis voor Joystick.c II
zoals in figuur F19 getoond wordt.

Stap 7. Je kunt deze code nog optimaliseren


voor een voertuig op wielen.

De code uit figuur F20 is vooral geschikt voor


een tank (rups) robot.

Je zorgt er bij optimale code voor dat je robot bij


een bocht naar links, de linker motor ook sneller
laat draaien en bij een bocht naar rechts de
rechter motor sneller draait.

Figuur F19: Basis voor Joystick.c III

NLTC-H301 Leven met Robots v 1.0 161


Leerlingenhandleiding

Figuur F20: Basis voor Joystick.c IV

Robots in de praktijk
De NXT / EV3 robot wordt op Hogescholen en Universiteiten voor onderzoek gebruikt. Daarnaast is de
NXT / EV een perfecte manier om realistische prototypes relatief eenvoudig en goedkoop in elkaar te
zetten. Naast RobotC kun je de NXT / EV met NXC, LabView, Java en natuurlijk NXT / EV-G
programmeren.

NLTC-H301 Leven met Robots v 1.0 162


Keuzehoofdstukken A - F

Figuur F21: LEGO Mindstorms robots EV3 en NXT /


EV LEGO

F6: Opdrachten bij F. RobotC Programmeeropdrachten


Opdracht F.1: Robotmodel
Leg in maximaal een half A4-tje en beantwoord daarin de volgende vragen:

a. Wat is de rol het programmeren in het robotmodel?


b. Benoem een aantal voor- en nadelen van de RobotC programmeertaal ten opzichte van een
iconen gebaseerde taal zoals NXT / EV-G, Mindstorms EV3 of WeDo.

Opdracht F.2: Concurrency


Maak een schema van de concurrente (gelijktijdig uit te voeren) processen voor een gemiddelde NXT /
EV robot (eventueel de NXT / EV Simpele Robot uit de NXT / EV Materiaal map).

Opdracht F.3: Programmeren


a. Programmeer de code uit figuur F4
b. Breid de code uit figuur F4 uit zodat je de code uit figuur F7 krijgt
Pas de code van figuur F7 aan zodat je een robot krijgt die in een vierkant kan rijden

NLTC-H301 Leven met Robots v 1.0 163

You might also like