5XID0 – Nature-inspired control Marc Geilen Sander Stuijk
Eerste 3 collegeweken: • maandagmorgen 8.45: kick‐off weekopdrachten (Laplace 1.105) • donderdagmiddag 15.45: afronding weekopdracht (Laplace 1.105)
laatste vijf weken: project, nadere informatie volgt
Voorbereidende lab sessies • • • • • •
Programmeerbare robotjes Draadloze communicatie met Zigbee Sensoren en actuatoren Augmented reality / 3D Emergent behaviour Brein‐computer interface
organisatie • werken in gemengde teams met gemengde expertise en niveaus. • zorg dat je individueel leert van de oefeningen! • Twee opdrachten per week, te verdelen binnen het team naar competentie (niet alleen dat doen waar je goed in bent!) • Tijdbesteding: 5ects, ongeveer 16u/w • Elke donderdag, 15.45 korte presentatie / demonstratie zorg dat je goed voorbereid bent
organisatie • wekelijks per team kort verslag over ontwerp en realisatie • en korte *individuele* reflectie van elk teamlid over haar/zijn bijdrage en eigen ontwikkelingen • uiterlijk vrijdag van de betreffende week opsturen per e‐mail naar:
[email protected] en
[email protected]
evaluatie • Verslagen/reflectie voorbereidende projekten, 30% • Eindverslag en reflectie 70%
Deze week: Admoveo + 3D virtual reality
Sensoren • Infrarood afstandsensoren voor, links en rechts • Lichtsensoren twee lichtsensoren (LDR) aan de voorkant links en rechts • Geluidsensors twee microfoons • “Lijnvolger” twee infrarood sensors naast elkaar meten reflectie op de vloer
Actuatoren • Motoren Twee afzonderlijk in richting en snelheid bestuurbare DC motoren. • Geluid Een kleine buzzer • Licht RGB LED in het chassis • Communicatie 1 USB seriële communicatie met een pc • Communicatie 2 Xbee draadloze communicatie over Zigbee netwerk
Programmeren • • • •
Atmel Atmega 328 Arduino duemilanove Via de Arduino softwareomgeving Programmeertaal: C(‐achtig)
Draadloze Communicatie • (nog niet nodig deze week) • Zigbee module XBee
Opdrachten • installatie • programmeren Admoveo onder de knie krijgen • testen van sensoren en actuatoren • oefening • demonstratie / wedstrijdje
installatie • volg de installatiehandleiding op www.es.ele.tue.nl/education/ci/project/lab1 • laad de batterijen op • software: download alle bestanden van onze webpagina
test sensoren en actuatoren • gebruik testprogramma’s van website • bestudeer hoe sensoren en actuatoren te gebruiken vanuit Arduino software • test hoe (goed) de sensoren of actuatoren werken
mogelijke oefening • laat de robot rondrijden, sturen • terugdeinzen wanneer er iets of iemand voor hem staat (afstandssensoren)
wedstrijdje autonome voertuigen • de juiste weg: witte lijn (schilderstape) volgen op donkere grond (zie de vloer), lijn kruist zichzelf niet • twee robotjes mogen niet botsen: afstand houden • zo snel mogelijk, tijd van tweede voertuig telt • bonus: startschot door handenklap • programma opsturen source code + korte beschrijving via e‐mail:
[email protected] en
[email protected] • Zorg dat de batterijen opgeladen zijn!
(Augmented Reality) 3D Virtuele Realiteit
Virtual en Augmented Reality
Virtual en Augmented Reality
Augmented Reality • http://www.youtube.com/watch?v=gOYgyJxmNp0 • http://www.youtube.com/watch?v=qaFL5xO9ulc • http://www.youtube.com/watch?v=CCRN6Pu7ygg
Wat achtergrond, 3d rendering
3D Modelling • • • • • •
Punten en driehoeken Een ‘mesh’ Rendering Transformaties Projecties GPUs, simpele, uniforme operaties
coordinatensysteem • XY scherm, Z van scherm naar je toe • Google Sketchup: X,Y grond, Z vertikaal omhoog
transformaties • Translatie • Rotatie • Projectie
Translatie Verplaatsing
x y z
x a y b z c
als matrix‐vermenigvuldiging: 1 0 0 0
0 0 a x x a 1 0 b y y b 0 1 c z z c 0 0 1 1 1
Rotatie • Rotatie om de Y‐as met hoek φ x y z 1
x cosφ z sinφ y z cosφ x sinφ 1
cosφ 0 sinφ 0 x x cosφ z sinφ 0 1 0 0 y y sinφ 0 cosφ 0 z z cosφ x sinφ 0 0 1 1 1 0
Schaling • Schaal x, y, z met factor s s x s y s z 1
x y z 1
s 0 0 0
0 s 0 0
0 0 s 0
0 x sx 0 y sy 0 z sz 1 1 1
Rotatie en Translatie • • • •
Eerst rotatie met matrix Mφ Dan schaling met matrix Ms Dan translatie met matrix Mv => vermenigvuldiging met: MvMsMφ
• (Let op in de software zijn vectoren rij‐ vectoren en is het andersom: MφMsMv)
Projectie • Camera op positie [x,y,z] kijkend naar [a,b,c], met bepaalde field‐of‐view, ‘brandpuntsafstand lens’ • Ook lineaire tranformatie ‐> matrix
transformaties • World Matrix Object naar wereld, translatie, rotatie, schaling (, animatie) • View Matrix Wereld naar camera, translatie, rotatie • Projection Matrix camera naar scherm, FOV, 3D naar 2D • Eenvoudige functies om matrices te maken • Zie code voorbeelden
Voorwerp eigen coordinaten 3D World Wereld Absolute coordinaten 3D View Wereld relatieve coordinaten camera 3D Projection Scherm coordinaten 2D
rendering • • • •
Ray tracing, hoge kwaliteit, langzaam Polygonen , lagere kwaliteit, maar snel Driehoekje voor driehoekje Z‐buffer, geeft aan of nieuw de driehoek zichtbaar is of niet • Belichting, materiaal, enz. • Gedaan door gespecialiseerde GPUs, maar toch vaak bottleneck
Interactie • Beweging, animatie, ‘physics’ • Interactie, “collission detection” • Externe input/output
implementatie • Initialisatie • Loop begin – DrawFrame() – InputOutput() – Update(deltaT)
• Loop end
XNA Game Studio • (XNA’s Not Acronymed) • Eenvoudige ontwikkelomgeving Xbox 360 + PC + Windows Phone • Visual Studio (Express) • C#, soort C++/Java, maar dan anders, automatisch geheugen management: garbage collection, gebaseerd op Microsofts .NET • Veel hulp / tips / documentatie / voorbeelden op internet
XNA Game Studio • Leer van voorbeelden • Afgeleide van de klasse Microsoft.Xna.Framework.Game • Initializatie – Initialize() – LoadContent()
• Update(GameTime gameTime) • Draw(GameTime gameTime) • Methodes om eenvoudig tranformatiematrices te maken: Matrix.createTranslation(a, b, c)
C# • • • •
C / C++ / Java ‐ achtige programmeertaal “Object‐georiënteerd” Leer van voorbeelden en van collega’s .Net framework
3D modellen • DirectX (.x) bestandsformaat • Google Sketchup 2013, sketchup.google.com Gebruik “Simple Template ‐ Meters” • 3D modellen: sketchup.google.com/3dwarehouse/ • Voor gevorderden: – (Textures: alleen vierkante, machten van twee?) – Blender (geen support!)
Installatie 1. Installeren van de software • Windows Phone SDK 7.1 Visual Studio Express for Windows Phone XNA 4.0, Google Sketchup Make 2013, .x export plugin • Volg de instructies op de website • Probeer niet Windows Phone SDK 8.0 te installeren. Deze ondersteunt XNA niet meer
Installatie 2. Open de ‘frog’ solution in Visual Studio Express 3. Bekijk ook het HighRoller project in Visual Studio Express
Oefeningen • Bestudeer de gegeven code, probeer te begrijpen hoe het werkt. • Maak kleine wijzigingen – Voeg andere 3D modellen toe of vervang de bestaande modellen door je eigen modellen – Krijg onder de knie hoe de orientatie en afmetingen zich verhouden tussen Sketchup en XNA – Leer hoe je je eigen modellen toevoegt aan je XNA project – Voeg (simpele) collision detection toe Voeg bijv. aan HighRoller collission detection toe, zodat de ‘admoveo’ niet meer door de blokken heen kan bewegen. – Animeer de camera Laat de camera bijv. één van de objecten in het spel volgen.
Eindopdracht • Maak een eenvoudig 3D spel in XNA Game Studio • Bijvoorbeeld door een 2D klassieker te nemen en opnieuw te maken in 3D • Geef een korte presentatie/toelichting op je spel en laat iemand van een ander team spelen
meer informatie • www.es.ele.tue.nl/education/ci/project • onoplosbare problemen: Sander Stuijk, Marc Geilen
groepsindelingen Team 1 Dings D.L.M. (Daan) Koenders J.T.W. (Jesse) Pijnenborg D.H.G. (Daniël) Vries G.G. de (Guus) Wolters E.J. (Eric)
Team 2 Borges E Souza M. (Mariana) Heck F.J.M. (Frank) Jager R. de (Robbert‐Jan) Ummelen A.R.A. (Alex)
• Lokalen Team 1: PT6.10 Team 2: PT6.11 • Nu, PT9.10, ophalen materiaal per team bij Sander Stuijk