Professional Documents
Culture Documents
Moduleboekje HA TM HF
Moduleboekje HA TM HF
Moduleboekje HA TM HF
Deze handleiding is het vervolg van de Leerlingenhandleiding Leven met Robots, hoofdstukken 1-4.
Colofon en bijlagen zijn in de andere bundel afgedrukt.
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.
A1 Actuatoren en vrijheidsgraden
De aandrijving van een robot
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).
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.
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).
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,
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).
Het verband tussen de Cartesische coördinaten (x,y) en de poolcoördinaten (r, θ) wordt gegeven door:
Omgekeerd geldt:
Cilindrische coördinaten
Voor het cilindrische coördinatenstelsel gebruik je θ (theta), R, en Z-coördinaten.
θ: de hoek tussen de verbindingslijn van de oorsprong met de projectie van het punt op
het xy-vlak en de positieve x-as.
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.
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.
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.
Tabel A1
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.
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'.
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.
Links een tweevoudige differentieel van LEGO, rechts een differentieel in een
‘real world’ voertuig.
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.
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)
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.
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’.
B. Sensoren en Elektronica
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
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).
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).
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).
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.
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.
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.
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.
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.
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”.
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.
Door schema B.3 een beetje aan te passen, kun je een verkeerslicht en voetgangers oversteeklicht
maken.
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.
Voor een echte robot heb je meer dan 3 actuatoren nodig. Eén robot arm heeft standaard al 6
actuatoren.
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.
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:
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).
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.
- 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.
Met vier diodes kun je deze schakeling eenvoudig maken, je kunt ook
een bruggelijkrichter kopen die deze 4 diodes ingebouwd heeft.
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.
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!).
Links
►URL19 Mindsensors, controle over motoren met PCF8574
►URL20 H brug, wikipedia
►URL21 Philohome, motoren
►URL22 Bruggelijkrichter, wikipedia
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.
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.
R1 is de voorschakelweerstand voor de
LED (> 75 Ohm [bijv. 100Ω]).
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!
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.
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.
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
Kleur Getal
Zwart 0
Bruin 1
Rood 2
Oranje 3
Geel 4
Groen 5
Blauw 6
Paars 7
Grijs 8
Wit 9
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
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.
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?
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."
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?
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.
Vraag:
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."
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).”
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
In een artikel van intermediair.nl (maart 2008, "De opkomst van de militaire robot.pdf"), wordt de
Sperwer genoemd.
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?
Bron: NKI/AVL
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.
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)
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.
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.
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.
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.
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. '
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.
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.
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.'
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.
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.'”
Levensechte robots
'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.
- 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?
D. Kunstmatige intelligentie
D1:Denkende machines
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?
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.
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
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?
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.
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.
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.
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)
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
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).
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.
Tip: probeer eens "yes" of "no" als antwoord te geven aan ELIZA.
Maak een klein werkstuk over AIBO waarin je onder andere de volgende vragen beantwoordt:
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?
E. Sociale Robotica
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
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:
snel reageren.
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
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.
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.
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.
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.
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).
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.
Jammer, vinden ze in het Leo Polak verzorgingstehuis waar Paro als proef een maand onderdak vond
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!
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.
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.
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.
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.
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.
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.
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.
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
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.
Eigenschap 6. Geluidslokalisatie
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.
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.
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.
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
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).
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
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.
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
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.
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.
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!
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)
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:
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).
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++;.
Doe je dat niet, wordt de teller nooit opgehoogd en blijft deze altijd 1 (eindeloze lus).
For
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.
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 (+,-, *)
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.
- tel 10 op bij wat er in getal stond. // 1 + 10 wordt 11 Vervolgens staat er dan dus voor de computer:
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
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:
Je noemt bovenstaande code een conditionele vergelijking (met als conditie, als . doe dan ..)
- 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.
- is gelijk aan ==
- is ongelijk aan !=
- inverteren !
Een boolean kun je niet optellen of aftrekken, je kunt een boolean alleen inverteren (omdraaien) (!):
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;
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.
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).
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)..
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:
/*
*/
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.
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.
- 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.
handleiding.
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.
#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;
- getJoystickSettings(joystick);
Stap 6. Je werkende programma ziet er nu uit Figuur F18: Basis voor Joystick.c II
zoals in figuur F19 getoond wordt.
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.