https://cstwiki.wtb.tue.nl/api.php?action=feedcontributions&user=S080518&feedformat=atomControl Systems Technology Group - User contributions [en]2024-03-29T00:10:40ZUser contributionsMediaWiki 1.39.5https://cstwiki.wtb.tue.nl/index.php?title=Thursday_Interactive_Talks_Minutes&diff=26101Thursday Interactive Talks Minutes2016-04-19T18:09:18Z<p>S080518: /* Minutes 14-04-2016 */ Minutes of separate meetings to separate pages</p>
<hr />
<div>[[Thursday_Interactive_Talks_Minutes/14-04-2016 | 14-04-2016]]<br />
<br />
[[Thursday_Interactive_Talks_Minutes/07-04-2016 | 07-04-2016]]</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Thursday_Interactive_Talks_Minutes/07-04-2016&diff=26100Thursday Interactive Talks Minutes/07-04-20162016-04-19T18:07:36Z<p>S080518: Created page with 'De eerste TIT, een voorstelrondje. '''Bram''': ''omnivision buiten'' * Project: Stage * Lastige dingen: ** Daglicht ** Schaduwen * Verwachte einddatum: juli 2016 '''Rens''': '…'</p>
<hr />
<div>De eerste TIT, een voorstelrondje.<br />
<br />
'''Bram''': ''omnivision buiten''<br />
* Project: Stage<br />
* Lastige dingen:<br />
** Daglicht<br />
** Schaduwen<br />
* Verwachte einddatum: juli 2016<br />
<br />
<br />
'''Rens''': ''Afstand meten tussen tool en retina met behulp van OCT''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** herkennen van verschillende lagen in de retina<br />
** noisy sensor data<br />
* Verwachte einddatum: november 2016<br />
<br />
<br />
'''Jan''': ''Mapping van het oog (SLAM)''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** oog kan bewegen<br />
** tracking van features<br />
** locale focus (1x1 cm)<br />
* Verwachte einddatum: oktober 2016<br />
<br />
<br />
'''Rozemarijn''': ''Van A-scan naar B-scan en evt naar M-scan''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** oog kan bewegen<br />
* Verwachte einddatum: januari 2017<br />
<br />
<br />
'''Roel''': ''SLAM voor schoonmaakrobots''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** slechte sensordata<br />
** verstoringen in odometrie<br />
* Verwachte einddatum: juli 2016<br />
<br />
<br />
'''Alex''': ''Sergio arm control''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** afhankelijk van hardware, die af en toe kapot gaat<br />
** drift op absolute sensoren<br />
** gravity compensation<br />
** compliance<br />
* Verwachte einddatum: september 2016<br />
<br />
<br />
'''Geert-Jan''': ''Human robot interaction voor de oogrobot''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** hoe koppel je events terug aan chirurg?<br />
** hoe moet machine reageren op input?<br />
* Verwachte einddatum: augustus 2016<br />
<br />
<br />
'''Rokus''': ''Taakgerelateerd lokaliseren van een mobiele robot''<br />
* Project: Afstuderen<br />
* Lastige dingen:<br />
** Nieuwe representatie van wereldmodel nodig<br />
** Associatie van sensordata met entiteiten in het wereldmodel<br />
* Verwachte einddatum: mei 2016</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Thursday_Interactive_Talks_Minutes/14-04-2016&diff=26099Thursday Interactive Talks Minutes/14-04-20162016-04-19T17:30:05Z<p>S080518: Created page with 'De tweede TiTs-meeting; degene die zich nog niet hebben voorgesteld, hebben dat deze keer gedaan: '''Jordy:''' ''A model-based approach in aiming a soccer ball at a 3D target wi…'</p>
<hr />
<div>De tweede TiTs-meeting; degene die zich nog niet hebben voorgesteld, hebben dat deze keer gedaan:<br />
<br />
'''Jordy:''' ''A model-based approach in aiming a soccer ball at a 3D target with a Soccer Robot.'' <br />
* Focust zich op stuiterende ballen. Als het inverse model van de bal bekend is; kan de gewenste trajectory gespecificeerd worden en kunnen de inputs op de robots naar de bal bepaald worden op basis van deze gewenste trajectory. <br />
* Expirementen om de submodellen te valideren (e.g. snelheid klepel) kunnen niet worden gedaan omdat dit niet gemeten kan worden. Daarom wordt het totale model in een keer gevalideert. <br />
* Het inverteren van het model tussen de Duty Cycle, Hoek Klepel naar de kracht op de bal is niet mogelijk, daarom wordt dit inverse model benadert met een statische map. Dit vereist wel wat afschatten van de map, wat wordt gedaan aan de hand van het (voorwaartse) model. <br />
* De uiteindelijke validatie zal worden gedaan met de Kinect V2 op de robots, hiermee zal de trajectory van de robot worden gemeten en vergeleken met de gewenste trajectory. Eerste testen zijn hiervoor al gedaan, van veraf werd het gewenste target goed benaderd, van dichtbij is de methode minder nauwkeurig (komt misschien door low-level aanpassingen in de TURTLE software?). <br />
<br />
'''Niels:''' ''Situational Awareness for Vehicle Platoons.''<br />
<br />
* Focust zich op het wereld model van voertuigen in het TNO platoon (DAF's of Priussen). Nieuw is hier dat de informatie (snelheden van omringende voertuigen, acceleraties van eigen voertuigen) met elkaar worden gedeeld. <br />
* Het doel is om de data over "common objects" te fuseren en tot een consistent estimate te komen. Het probleem hierbij is dat de measurement noise onafhankelijk is voor beide voertuigen, maar de process noise niet (ze meten hetzelfde voertuig; informatie is dus niet compleet nieuw). Dit resulteert in een overconfident covariance van het Kalman Filter; "cross-correlation problem".<br />
* Het doel van de informatie is om objecten beter te herkennen én objecten te delen binnen het platoon. <br />
* Rauwe sensor informatie versturen zou dit probleem eenvoudiger maken, dit is niet mogelijk omdat automative sensoren vaak "smart" zijn: hebben een intern filter. <br />
<br />
'''Yanick:''' ''Sensor integration and cognitive feedback in robot-assisted eye surgery''<br />
<br />
* EurEyeCase is een project dat zich focust op robot-assisted vitreoretinal eye-surgery (chirurgie in, en aan de achterkant van het oog). Deel van het consortium zijn onder andere TU/e en [http://www.preceyes.nl/ Preceyes]. Yanick focust zich (naast RoboCup) op het toevoegen en integreren van meer sensoren om:<br />
** voorheen onmogelijke operaties mogelijk te maken (e.g. cannulatie; medicijnen aanbrengen bij opstoppingen in de bloedvaten; in dit geval achter het oog). <br />
** huidige operaties te verbeteren (kans op complicaties te verminderen) (e.g. peeling, vitrectromie)<br />
** de chirurg beter te assisteren: welke informatie moet worden teruggekoppeld naar de chirurg? (Opdracht Geertjan)<br />
* een voorbeeld van een extra sensor is de OCT Probe (interferometer-type sensor) (Opdracht Rensen Rozemarijn), welke de verschillende laagjes achterin het oog kan herkennen, hierdoor kunnen bijvoorbeeld virtual bounds worden gecreëerd.<br />
* daarnaast wordt er gewerkt aan het modeleren van het oog, dit helpt in het herkennen van bloedvaten en in het oppakken van het velletje in de peeling procedure (Opdracht Wouter H)<br />
* Een MOOG-setup is geinstalleerd om te testen welke input kan worden teruggevoerd naar de chirurg. Kwaliteit en bruikbaarheid worden onder andere getest. <br />
<br />
'''Wouter:''' ''Development and Validation of a Tomato Crop Model for Climate Management Support Systems in Greenhouses.''<br />
<br />
* TU/e zit samen met WUR, UU en TUD in het [http://www.stw.nl/nl/content/p14-13-led-it-be-50 LED it be 50%]-project. Het doel is hier om een automatische aansturing voor het kasklimaat te ontwikkelen, een aansturing welke de opbrengst van het aantal kilo's tomaten optimaliseert. <br />
* Wouter focust zich op dit moment vooral op tomaten en het modeleren hiervan. Het doel is om een model te ontwikkelen wat een goede prediction accuracy heeft en een lage computationele complexiteit; dit is dan het beste voor een model-based design. <br />
* Tussensignalen meten is niet mogelijk bij tomatenplanten, daarom wordt er een generiek framework opgezet waar submodellen (bijv. photosynthese) kunnen worden ingeplugd. Binnen deze afstudeerstage worden er 4 bestaande modellen in dit framework gezet en worden alle mogelijke combinaties van submodellen gesimuleerd. Het doel is om de combinatie te vinden welke voldoet aan de wensen: lage computationele complexiteit maar goede prediction accuracy.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22824Robotics Lab Map2015-11-09T13:14:07Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Yanick Douven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@tue.nl y.g.m.douven@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>4: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>5: Jos Elfring </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Availability:</b> Mondays </li><br />
</ul><br />
<b>6: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>7: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>18: Alex Andriën </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>19: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>20: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>22: Eric de Mooij</b><br />
<ul><br />
<li><b>E-mail:</b>e.b.c.d.mooij@student.tue.nl </li><br />
<li><b>Computer(s):</b> Laptop</li><br />
</ul><br />
<b>23: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>24: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>25: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>26: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>27: Eline van den Haak (Soil Optimizer) </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:E.A.M.van.den.Haak@student.tue.nl E.A.M.van.den.Haak@student.tue.nl]</li><br />
<li><b>Computer(s):</b> HP Monitor</li><br />
</ul><br />
<b>28: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>29: Haico Ploegmakers (Soil Optimizer) </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:H.E.C.W.Ploegmakers@student.tue.nl H.E.C.W.Ploegmakers@student.tue.nl]</li><br />
<li><b>Computer(s):</b> HP CST101 + HP Monitor </li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>32: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Jordy Senden </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>37: Erik van Broekhoven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:e.c.v.broekhoven@student.tue.nl e.c.v.broekhoven@student.tue.nl] </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>38: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22823Robotics Lab Map2015-11-09T13:13:28Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Yanick Douven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@tue.nl y.g.m.douven@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>4: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>5: Jos Elfring </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Availability:</b> Mondays </li><br />
</ul><br />
<b>6: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>7: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>18: Alex Andriën </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>19: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>20: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>22: Eric de Mooij</b><br />
<ul><br />
<li><b>E-mail:</b>e.b.c.d.mooij@student.tue.nl </li><br />
<li><b>Computer(s):</b> Laptop</li><br />
</ul><br />
<b>23: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>24: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>25: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>26: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>27: Eline van den Haak (Soil Optimizer) </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:E.A.M.van.den.Haak@student.tue.nl E.A.M.van.den.Haak@student.tue.nl]</li><br />
<li><b>Computer(s):</b> HP Monitor</li><br />
</ul><br />
<b>28: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>29: Haico Ploegmakers (Soil Optimizer) </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:H.E.C.W.Ploegmakers@student.tue.nl H.E.C.W.Ploegmakers@student.tue.nl]</li><br />
<li><b>Computer(s):</b> HP CST101 + HP Monitor </li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>32: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Jordy Senden </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>37: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>38: Erik van Broekhoven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:e.c.v.broekhoven@student.tue.nl e.c.v.broekhoven@student.tue.nl] </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=File:Floorplan_robotics_lab.png&diff=22819File:Floorplan robotics lab.png2015-11-02T12:02:56Z<p>S080518: uploaded a new version of "File:Floorplan robotics lab.png":&#32;Fixed double 22 (now 23</p>
<hr />
<div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22814Robotics Lab Map2015-10-26T12:39:32Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Yanick Douven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@tue.nl y.g.m.douven@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>4: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>5: Jos Elfring </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Availability:</b> Mondays </li><br />
</ul><br />
<b>6: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>7: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>18: Alex Andriën </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>19: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>20: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>22: Eric de Mooij</b><br />
<ul><br />
<li><b>E-mail:</b>e.b.c.d.mooij@student.tue.nl </li><br />
<li><b>Computer(s):</b> Laptop</li><br />
</ul><br />
<b>23: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>24: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>25: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>26: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>27: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>28: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>29: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>32: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Jordy Senden </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>37: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>38: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab&diff=22813Robotics Lab2015-10-26T12:33:08Z<p>S080518: /* Getting started in the robotics lab */</p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Wiki Page Robotics Lab - Mechanical Engineering - TU/e</h1><br />
<br />
[[File:Amigolab.jpg|500px]]<br />
<br />
= Getting started in the robotics lab =<br />
* Announce your presence, also to the PhDs/staff!<br />
* Pick a free desk. Indicate the desk that you have chosen on [[Robotics Lab Map|this page]].<br />
* Indicate the computer that you are using on [[Robotics Lab Inventory|this page]].<br />
* Get yourself subscribed on the robotics-lab Googlegroups mailinglist (ask Sjoerd about this)<br />
* Make yourself familiar with the keys to the lab and testlab, the coffee machine, etc. If you have any questions, ask people and put the additional info on this Wiki!<br />
* Bring pie ;)<br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Inventory&diff=22812Robotics Lab Inventory2015-10-26T12:30:54Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Computers</h1><br />
<br />
<h2>Dell Optiplex 960</h2><br />
<br />
<ul><br />
<li>Dell Optiplex 960 - </li><br />
</ul><br />
<br />
<h2>HP XW4600</h2><br />
<br />
<ul><br />
<li>CST64 - </li><br />
<li>CST39 - </li><br />
</ul><br />
<br />
<h2>HP Z200</h2><br />
<br />
<ul><br />
<li>CST70 - Ramon Wijnands</li><br />
<li>CST73 - </li><br />
<li>CST86 - </li><br />
<li>DCT63 - </li><br />
<li>CST71 - </li><br />
<li>CST85 - Anne Krus</li><br />
</ul><br />
<br />
<h2>HP Z210</h2><br />
<br />
<ul><br />
<li>CST99 - </li><br />
<li>CST96 - </li><br />
<li>CST100 - </li><br />
<li>CST91 - </li><br />
</ul><br />
<br />
<h2>HP Z220</h2><br />
<br />
<ul><br />
<li>CST108 - </li><br />
<li>CST107 - </li><br />
<li>DCT85 - </li><br />
<li>CST101 - </li><br />
<li>CST104 - </li><br />
<li>CST110 - Rokus Ottervanger</li><br />
<li>CST105 - </li><br />
</ul><br />
<br />
<h2>Custom</h2><br />
<br />
<ul><br />
<li>Shuttle - </li><br />
<li>Rekenbeest - </li><br />
</ul><br />
<br />
</div><div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22811Robotics Lab Map2015-10-26T12:24:50Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Yanick Douven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@tue.nl y.g.m.douven@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>4: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>5: Jos Elfring </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Availability:</b> Mondays </li><br />
</ul><br />
<b>6: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>7: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>18: Alex Andriën </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>19: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>20: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>22: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>23: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>24: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>25: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>26: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>27: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>28: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>29: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>32: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Jordy Senden </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>37: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>38: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22810Robotics Lab Map2015-10-26T12:24:05Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Yanick Douven </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@tue.nl y.g.m.douven@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>4: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>5: Jos Elfring </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Availability:</b> Mondays </li><br />
</ul><br />
<b>6: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>7: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>18: Alex Andriën </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> laptop </li><br />
</ul><br />
<b>19: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>20: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>22: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>23: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>24: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>25: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>26: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>27: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>28: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>29: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>32: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Jordy Senden </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>37: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>38: ~</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22809Robotics Lab Map2015-10-26T12:05:38Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>4: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST 99 </li><br />
</ul><br />
<b>5: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>6: CAD Station </b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> CST 90</li><br />
</ul><br />
<b>7: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> ~ </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST 108 - (HP Z220)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: Flex</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST96 (HP Z210)</li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>18: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST73 (HP Z200)</li><br />
</ul><br />
<b>19: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST86 (HP Z200)</li><br />
</ul><br />
<b>20: Peter Hobo</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:p.d.hobo@student.tue.nl p.d.hobo@student.tue.nl]</li><br />
<li><b>Computer(s):</b>own laptop</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: ~</b><br />
<ul><br />
<li><b>E-mail:</b>~</li><br />
<li><b>Computer(s):</b> CST71 (HP Z200)</li><br />
</ul><br />
<b>22: Eric de Mooij</b><br />
<ul><br />
<li><b>E-mail:</b>e.b.c.d.mooij@student.tue.nl </li><br />
<li><b>Computer(s):</b> Laptop</li><br />
</ul><br />
<b>23: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>24: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>25: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>26: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>27: -</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:b.t.m.tijdink@student.tue.nl b.t.m.tijdink@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST101 (HP Z220) + ?</li><br />
</ul><br />
<b>28: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> CST104 (HP Z220)</li><br />
</ul><br />
<b>29: Anne Krus</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:a.m.krus@student.tue.nl a.m.krus@tue.nl]</li><br />
<li><b>Computer(s):</b> CST85 (HP Z200)</li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST100 (HP Z210)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: (Joost Groenen)</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.j.groenen@student.tue.nl j.p.j.groenen@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST91 (HP Z210)</li><br />
</ul><br />
<b>32: Roel?</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: Yanick Douven</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@student.tue.nl y.g.m.douven@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST105 (HP Z220)</li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Frank Botden</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:f.j.b.m.botden@student.tue.nl f.j.b.m.botden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>37: Jordy Senden</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>38: ~</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=22808Robotics Lab Map2015-10-26T12:02:13Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Henri Boessenkool</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:H.Boessenkool@tue.nl H.Boessenkool@tue.nl]</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>4: Edwin Olson </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST 99 </li><br />
</ul><br />
<b>5: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>6: CAD Station</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> CST 90</li><br />
</ul><br />
<b>7: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> ~ </li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome12</li><br />
</ul><br />
<b>10: Luis Ferreira </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:ferreira9999@gmail.com ferreira9999@gmail.com]</li><br />
<li><b>Computer(s):</b> CST 108 - (HP Z220)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: Robin Soetens</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.p.t.soetens@student.tue.nl r.p.t.soetens@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST110 (HP Z220)</li><br />
</ul><br />
<b>13: Flex</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> Shuttle PC</li><br />
</ul><br />
<b>14: Roel Smallegoor</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.smallegoor@student.tue.nl r.smallegoor@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT85 (HP Z220)</li><br />
</ul><br />
<b>15: Ton Peters</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:t.m.c.peters@student.tue.nl t.m.c.peters@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST96 (HP Z210)</li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Niels Koenraad</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:n.j.g.koenraad@student.tue.nl n.j.g.koenraad@student.tue.nl]</li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>18: Max Baeten</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:m.j.j.baeten@student.tue.nl m.j.j.baeten@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST73 (HP Z200)</li><br />
</ul><br />
<b>19: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> CST86 (HP Z200)</li><br />
</ul><br />
<b>20: Peter Hobo</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:p.d.hobo@student.tue.nl p.d.hobo@student.tue.nl]</li><br />
<li><b>Computer(s):</b>own laptop</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: ~</b><br />
<ul><br />
<li><b>E-mail:</b>~</li><br />
<li><b>Computer(s):</b> CST71 (HP Z200)</li><br />
</ul><br />
<b>22: Eric de Mooij</b><br />
<ul><br />
<li><b>E-mail:</b>e.b.c.d.mooij@student.tue.nl </li><br />
<li><b>Computer(s):</b> Laptop</li><br />
</ul><br />
<b>23: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>24: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>25: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>26: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>27: -</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:b.t.m.tijdink@student.tue.nl b.t.m.tijdink@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST101 (HP Z220) + ?</li><br />
</ul><br />
<b>28: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> CST104 (HP Z220)</li><br />
</ul><br />
<b>29: Anne Krus</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:a.m.krus@student.tue.nl a.m.krus@tue.nl]</li><br />
<li><b>Computer(s):</b> CST85 (HP Z200)</li><br />
</ul><br />
<b>30: </b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> CST100 (HP Z210)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>31: (Joost Groenen)</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.j.groenen@student.tue.nl j.p.j.groenen@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST91 (HP Z210)</li><br />
</ul><br />
<b>32: Roel?</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: Yanick Douven</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@student.tue.nl y.g.m.douven@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST105 (HP Z220)</li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Frank Botden</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:f.j.b.m.botden@student.tue.nl f.j.b.m.botden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>37: Jordy Senden</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.f.senden@student.tue.nl j.p.f.senden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>38: ~</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Hexapod&diff=19305Hexapod2015-06-15T12:34:45Z<p>S080518: </p>
<hr />
<div>'''WARNING''' Before you start doing anything on the Hexapod, know that this page is old and the ideas used in the work of which this page is the documentation are not all modern/correct. Before starting to hack into the existing software, choose whether you want to use Orocos or rather Simulink for the control software architecture. If you do use Orocos, as done before, be aware that it is better to use a different architecture (minimize the number of components to minimize communication, so don't separate filter blocks etc.). Also, the Ubuntu and ROS versions referred to in this page are completely outdated.<br />
<br />
= Installation =<br />
The installation assumes that Ubuntu 12.04 LTS is installed. If not you should install an Ubuntu version. Notice that the version of Ubuntu determines line 3 in the following code i.e. precise.<br />
<pre><br />
# Setup your computer to accept software from ROS.org<br />
# 12.04 (precise)<br />
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'<br />
<br />
# Set up your keys<br />
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -<br />
<br />
# Installation<br />
sudo apt-get update<br />
sudo apt-get install ros-fuerte-desktop-full<br />
sudo apt-get install ros-fuerte-orocos-toolchain<br />
sudo apt-get install ros-fuerte-rtt-common-msgs<br />
<br />
# Create your personal ros directory<br />
mkdir ~/ros_personal<br />
<br />
echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc<br />
echo "export ROS_PACKAGE_PATH=/opt/ros/fuerte/stacks:~/ros_personal" >> ~/.bashrc<br />
echo "export RTT_COMPONENT_PATH=/opt/ros/fuerte/stacks/orocos_toolchain/install/lib/orocos" >> ~/.bashrc<br />
echo "source /opt/ros/fuerte/stacks/orocos_toolchain/env.sh" >> ~/.bashrc<br />
. ~/.bashrc<br />
<br />
# Build SOEM<br />
cd ~/ros_personal<br />
git clone http://git.mech.kuleuven.be/robotics/soem.git<br />
cd soem<br />
git checkout origin/electric<br />
rosmake soem<br />
<br />
# Build hexapod<br />
cd ~/ros_personal<br />
svn checkout http://hexapod.wtb.tue.nl/svn/hexapod ./hexapod<br />
roscd hexapod<br />
rosrun rtt_rosnode create_rtt_msgs hexapod_msgs<br />
rosmake<br />
<br />
# You still should get<br />
## (1) pr2_spring_transmission_example<br />
## (2) rtt_generic_components (from the amigo trunk, ask with the amigo team)<br />
</pre><br />
It is possible to put the code in a shell-file and run it.<br />
<br />
= SVN =<br />
The code can be found on: http://hexapod.wtb.tue.nl/svn/hexapod/.<br />
<br />
To obtain an account you should contact Patrick van Brakel.<br />
To keep the svn clean i.e. no build, bin or lib files do the following:<br />
<pre><br />
sudo gedit /etc/subversion/config <br />
</pre><br />
Uncomment, by removing the '#' and add<br />
<pre><br />
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo<br />
*.rej *~ #*# .#* .*.swp .DS_Store lib build bin .tb_history msg_gen srv_gen<br />
</pre><br />
<br />
= Hardware =<br />
The TU/e hexapod is a six legged robot with compliant joints. The compliance is obtained by using torsional springs between the actuators and the joints; for the last two segments additional steel cables are wrapped around pulleys for remote actuation. The motors as well as the joints have absolute encoders. From the difference between these readings, the torsion in the springs can be calculated. <br />
<br />
There are three main PCBs on the robot. The PCB inside the bottom of the robot (data acquisition module or DAM1) communicates with a computer. This can be the on board computer or an external pc. It is also equipped with an IMU that can measure pitch and roll angles, roll rates about three axes and acceleration along three axes. Furthermore, it receives power directly from the battery or external power supply and feeds it to the other boards.<br />
<br />
== Startup ==<br />
The PCB on top of the robot (DAM 2) translates the signals it receives from a controller to electric currents for the actuators. <br />
The middle PCB is the on board computer on which it is possible to run the robot's software. <br />
<br />
To power the hardware, there is a 24V connection on the bottom of the robot. There is a possibility to connect one of the LiPo battery packs or alternatively to wire the robot to a laboratory power supply. When connecting a power supply, make sure the current is not limited too much (you need more than 3A, 10A should be enough. Alternatively, wiring a capacitor in parallel is an option). Once this is connected, the DAM 1 can be started using the small red button that is connected to two loose wires and after that, pressing the large white button on top starts DAM 2.<br />
<br />
Connection to a computer, either the on board one or an off board pc, can be established using the "In" port on the piggyback EtherCAT board on the DAM 2. The "out" port should be connected to the "Out" port on DAM 1.<br />
<br />
= Software =<br />
A basic structure of the software is shown in the figure below. The grey components are not used, the grey components with grey text are not (yet) implemented.<br />
<br />
[[File:ControlLoop2.png|800px|The basic control structure for the Hexapod.]]<br />
<br />
= Simulator =<br />
For simulation purposes, the [http://gazebosim.org/ Gazebo] simulator has been adopted in the very first hexapod development because of its integration with ROS. In a short time, Gazebo has changed and has become a stand-alone software. The early version of the robot model is not compatible with both ROS Fuerte and Gazebo. A complete re-writing of the interface code is needed. However, a porting from the old version to the new one has been attempted. To get started a few basic steps are presented below.<br />
<br />
To start, proceed with the installation following the instructions [http://gazebosim.org/wiki/Install here]. Choose the latest stable release.<br />
<br />
It's important to specify the robot model in the SDF format. The *.urdf.xacro format is no longer supported. To convert such a file, a script is available in the repository. Once you have defined the correct filename of the model to be converted, type<br />
<pre><br />
roscd hexapod_model/models/scripts<br />
source update.bash<br />
</pre><br />
== Hierarchy convention ==<br />
The folder tree has this structure: <br />
* '''hexapod_model'''<br />
** '''model_name'''<br />
*** hexapod.world ("launch" file)<br />
*** model.config<br />
*** model.sdf<br />
*** model.urdf<br />
*** meshes<br />
*** '''plugins'''<br />
**** '''build'''<br />
<br />
== Plugins ==<br />
Gazebo plugins are lines of code compiled as a shared library and inserted into the simulation. The plugins have direct access to all the functionality of Gazebo through the standard C++ classes. <br />
They are used to load models, control the robot, etc.<br />
From gazebosim.org:<br />
<blockquote>Each plugin type is managed by a different component of Gazebo. For example, a Model plugin is attached to and controls a specific model in Gazebo. Similarly, a World plugin is attached to a world, and a Sensor plugin to a specific sensor. The System plugin is specified on the command line, and loads first during a Gazebo startup. This plugin gives the user control over the startup process.</blockquote><br />
<br />
Write your plugin_name.cpp in the hexapod_model/model_name/plugins folder. Then edit the CMakeLists.txt so that it looks like this:<br />
<br />
<pre>cmake_minimum_required(VERSION 2.8 FATAL_ERROR)<br />
include (FindPkgConfig)<br />
if (PKG_CONFIG_FOUND)<br />
pkg_check_modules(GAZEBO gazebo)<br />
endif()<br />
include_directories(${GAZEBO_INCLUDE_DIRS})<br />
link_directories(${GAZEBO_LIBRARY_DIRS})<br />
<br />
<br />
add_library(plugin_name SHARED plugin_name.cc)<br />
target_link_libraries(plugin_name ${GAZEBO_libraries})</pre><br />
<br />
As a next step, go in the plugins/build folder and build the library.<br />
<pre><br />
cmake ../<br />
make<br />
</pre><br />
<br />
It's important to define the models and the plugins that you want to load in your hexapod.world file. Here's its generic model:<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<sdf version="1.4"><br />
<world name="default"><br />
<include><br />
<uri>model://ground_plane</uri><br />
</include><br />
<br />
<include><br />
<uri>model://sun</uri><br />
</include><br />
<br />
<plugin name="plugin_name" filename="libplugin_name.so"/><br />
</world><br />
</sdf><br />
</pre><br />
<br />
It's important to set the GAZEBO_PLUGIN_PATH correctly, pointing to the shared libraries. To do so, edit your .bashrc file:<br />
<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_PLUGIN_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/''model_name''/plugins/build:${GAZEBO_PLUGIN_PATH}<br />
<br />
source ~/.bashrc<br />
</pre> <br />
<br />
To have more insight, follow the [http://gazebosim.org/wiki/Tutorials/1.9/plugins tutorial].<br />
<br />
== Model spawning ==<br />
The hexapod_model folder contains the models, each one with its ''model_name'' folder. <br />
<br />
It's important to set the GAZEBO_MODEL_PATH correctly, pointing to ''hexapod_model''. To do so, edit your bashrc file adding this line:<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_MODEL_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/:${GAZEBO_MODEL_PATH}<br />
<br />
source ~/.bashrc<br />
</pre><br />
== What is missing? ==<br />
Compatibility problems show up for the moment. The model implementation has no elastic transmission and no interface hardware-simulator.<br />
<br />
= Getting started with the robot =<br />
Essential files for robot startup are presented here.<br />
== hexapod_launch ==<br />
The 'hexapod_launch' package contains launch files, whose task is to call Orocos scripting language files (ops) contained in the hexapod_launch/deploy_files folder and start the ROS master. <br />
Some of the deploy scripts contain hard coded paths. Make sure to substitute them with your own. A shell file, rename.sh, was written to automatically do this, but be sure to change the path in this file to your own path. It is located in hexapod_launch. Another possible solution for the future is to seperate the scripts more clearly and call them in a launch file, in which ROS launch syntax can be used to avoid hard coding paths.<br />
<br />
== Essential launch files description ==<br />
{| border="1" class="wikitable"<br />
|-<br />
! File name <br />
! Description<br />
|-<br />
| robot_model_and_state_publisher.launch<br />
| Loads robot parameters and kinematic model, plus starts the state publisher<br />
|-<br />
| start.launch<br />
| Deploys the full set of components currently available to control the robot.<br />
|}<br />
<br />
In order to control the robot, the robot model file must '''always''' run.<br />
== OROCOS components ==<br />
=== Hardware interface and measurement components ===<br />
A series of components interfacing with sensors and actuators constitute the essential core of the robot. Real-time data flow has to be preserved<br />
at all time during communication. Measurement and safety components are included in this section, because they base their functionality on the three main interface components (actuator, encoder and IMU drivers) that<br />
communicate directly with the EtherCAT boards.<br />
<br />
==== Actuator driver ====<br />
This component sends the control message to the actuators, that has the form of a current setpoint.<br />
The signal that is sent through the output port has the dimensions of a torque, being the current multiplied by the motor torque constant. <br />
In order for the signal to be sent, a command message has to be sent as well.<br />
==== Encoder driver ====<br />
The encoder driver, as the name says, reads the encoders, transforming them into human readable angle values.<br />
==== IMU driver ====<br />
IMU data flows through this component, that outputs the pitch and roll estimates together with acceleration and gyro values.<br />
==== Safety ====<br />
For the actuators to work, the safety module has to send an authorization signal. <br />
The conditions for which a green light command message is sent are that the legs are not trying to move out of their workspace and<br />
that the last link is not damaging the steel cable of the thigh by bending the shank. Moreover, an operation can be called to check <br />
the actuators status. An error message is displayed in the following cases:<br />
<br />
* there's an overheating of the bridge driver overheating.<br />
* the drive input voltage drops below 16V.<br />
* invalid hall commutation is detected.<br />
<br />
==== Ground contact detection ====<br />
To manage the transitions between stance and flight phases, the ground contact detection is crucial.<br />
Because of the series elastic transmission, the difference between joint and actuator encoders readings is available. <br />
When the legs are touching the floor, a deflection in the compliant transmission occurs. <br />
By measuring the average difference for the hip encoders readings during stance and flight phase, it's possible to determine a deflection region corresponding to ground contact, and subsequently a threshold <br />
can be easily fixed in order to distinguish the two phases.<br />
==== Height detection ====<br />
The vertical position measurement of the hexapod's body over time, a desired performance index for a hopping robot, is hard to estimate.<br />
In literature, body height of legged robots is generally computed by averaging the tips vertical positions of the legs, transformed to the world coordinate frame, when they are touching the floor. <br />
==== Gait components ====<br />
These components are responsible for the legs reference trajectory definition. According to the desired motion, different kind of gaits exist.<br />
* Tips positioning<br />
The user can specify a preferred Cartesian objective for each leg tip, and subsequently a reference trajectory is generated.<br />
* Continuous gait: the continuous gait component generates a third order Cartesian trajectory for the legs. A fifth order trajectory has been tested as well, and needs some final debugging to work correctly.<br />
* Turning gait: a slow turning gait is available via this component. <br />
<br />
A list of tunable properties allows to specify the following gait parameters and, as a consequence, the type of gait:<br />
** The gait duty factor: fraction of time the leg is on the ground.<br />
** The cycle time: time spent for a gait cycle.<br />
** The phase: normalized time shift between reference trajectories with respect to a reference.<br />
**Leg stroke: leg distance from the body.<br />
<br />
==== Kinematics ====<br />
Hexapod forward and inverse kinematics are integrated using the Kinematics and Dynamics Library (KDL)<br />
of OROCOS. KDL is an application independent framework for modelling and computation of<br />
kinematic chains. It includes class libraries for geometrical entities, various kinematic chains, and their motion.<br />
==== Feedforward ====<br />
The feedforward block sums its signal to the controller output feeding the plant. <br />
The amplitude of 18 current signals can be singularly specified, and an operation<br />
that manages the current offset for the shank, in case of horizontal jump movement, is exposed for<br />
external program or state machine callers.<br />
<br />
= Hopping = <br />
One of the main goals of the design of the TU/e Hexapod robot is for it to be able to run and/or jump. To achieve this, the idea is that the resonance frequency is utilized. The approach that is used, is the one proposed in <ref>Hopping at the Resonance Frequency: A Trajectory Generation Technique for Bipedal Robots with Elastic Joints, Ugurlu et al.</ref>. The authors of this article use 9 steps to generate a joint reference for a jumping robot. This method is adapted to work on a hexapod and applied here.<br />
<br />
== Determining the resonance frequency ==<br />
The first step in this approach is to determine the resonance frequency of the standing robot. In our case, this is done by making the robot stand up (up to position_3) and giving it a sudden push on the top, as a way of applying a delta function. As we are interested in the vertical displacement, and the IMU only gives accelerations, the vertical acceleration is measured. As a sinusoidal response is expected in the displacement, the second derivative should also be a sinusoid at the same frequency. This measurement is documented using a reporter component in OROCOS and the resulting data is imported into matlab to calculate the single sided amplitude spectrum.<br />
<br />
The resulting amplitude spectrum is shown in the figure on the right. A clear peak is visible at 4.0 Hz, which is a reasonable value for the resonance frequency, looking at the robot in practice. <br />
<br />
[[File:SSAS_Hexapod_vertical_mode_6.jpg|thumb|400px|Single-sided amplitude spectrum of the Hexapod in vertical oscillation mode with 6 legs on the ground.]]<br />
<br />
= Troubleshooting =<br />
* The Soem master could not initialize on eth1<br />
Make sure that you are connected to eth1 or otherwise change it in the *.ops file.<br />
To list the network ID's form your PC use the following command in the terminal:<br />
<br />
<pre><br />
ifconfig<br />
</pre><br />
<br />
* If the setcap cannot be found.<br />
Install the setcap.<br />
<br />
<pre><br />
sudo apt-get install libcap2-bin<br />
</pre><br />
<br />
* If the followin error occurs:<br />
<pre><br />
[ ERROR ][Soem] Could not initialize master on eth1<br />
</pre><br />
Set the permission for the deployer-gnulinux such that it can use ethernet.<br />
<br />
<pre><br />
roscd ocl<br />
cd bin<br />
sudo setcap cap_net_raw+ep ./deployer-gnulinux<br />
</pre><br />
<br />
* If, while running the orocos software, you are getting errors/warnings like <br />
<pre><br />
Actuator CF & FT disabled, difference act-jnt is too large"<br />
</pre><br />
or HexapodSafety will not start, giving a similar error.<br />
<br />
Stop and restart HexapodDriverEncoder while in position_init<br />
<br />
= Log =<br />
Log any hardware failure and/or breakdown here. After repair works, ALWAYS recalibrate the encoders! Look for hardware_calibration.ops in hexapod_launch.<br />
<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Mar 21 || Femur cable of leg 1 broke during testing of walking gait. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Mar 31 || Femur cable of leg 6 broke during testing of hopping/jumping. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 7 || Femur cable of leg 6 wrapped around the wrong slot during testing of new walking gait trajectory. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 16 || Femur cable of leg 6 wrapped around the wrong slot during testing of jumping. Fixed by Speciaalmachinefabriek Ketels.<br />
|- <br />
| Oct 26 || Femur cable of leg 5 broke, plus femur cable of leg 1 wrapped around wrong slot. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
|}<br />
<br />
= Useful references =<br />
Some interesting tips and tricks can be found on [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Software/tips_and_tricks the wiki of AMIGO]. Regarding realtime performance, also look at [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Allow_OROCOS_to_work_(almost)_realtime this page]. For these links, an account for the AMIGO wiki is needed. This can be obtained with the AMIGO team.<br />
<br />
== Reports ==<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Boris Mrkajic || Systems and Control Library Development || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Boris_Mrkajic.pdf pdf]<br />
|-<br />
| Max Baeten || Control of the Philips Experimental Robotic Arms using EtherCAT || [http://cstwiki.wtb.tue.nl/servicerobot/files/Free_Space_Report_Max_Baeten.pdf pdf]<br />
|-<br />
| Niek Bilterijst || Low Level Spindle Control of AMIGO || [http://cstwiki.wtb.tue.nl/servicerobot/files/LowLevelSpindleControlonAMIGO.pdf pdf]<br />
|-<br />
| Tim Clephas || Design and control of a service robot - ''The birth of AMIGO'' || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Tim_Clephas.pdf pdf]<br />
|-<br />
| R. Woering || Simulating the "first steps" of a hexapodal robot || [http://www.mate.tue.nl/mate/pdfs/12670.pdf pdf]<br />
|-<br />
| Jeroen Willems || Control of a hexapodal robot || [http://cstwiki.wtb.tue.nl/images/Willems_Hexapod_2011.pdf pdf]<br />
|-<br />
| Rokus Ottervanger || Reviving the Hexapod || [http://cstwiki.wtb.tue.nl/images/Ottervanger2014RevivingTheHexapod.pdf pdf]<br />
|}<br />
<br />
== References ==<br />
<br />
<references/></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Hexapod&diff=19304Hexapod2015-06-15T12:31:40Z<p>S080518: Added warning about how old this is</p>
<hr />
<div>'''WARNING''' Before you start doing anything on the Hexapod, know that this page is old and the ideas used in the work of which this page is the documentation are not all modern/correct. Before starting to hack into the existing software, choose whether you want to use Orocos or rather Simulink for the control software architecture. The Ubuntu and ROS versions referred to in this page are outdated.<br />
<br />
= Installation =<br />
The installation assumes that Ubuntu 12.04 LTS is installed. If not you should install an Ubuntu version. Notice that the version of Ubuntu determines line 3 in the following code i.e. precise.<br />
<pre><br />
# Setup your computer to accept software from ROS.org<br />
# 12.04 (precise)<br />
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'<br />
<br />
# Set up your keys<br />
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -<br />
<br />
# Installation<br />
sudo apt-get update<br />
sudo apt-get install ros-fuerte-desktop-full<br />
sudo apt-get install ros-fuerte-orocos-toolchain<br />
sudo apt-get install ros-fuerte-rtt-common-msgs<br />
<br />
# Create your personal ros directory<br />
mkdir ~/ros_personal<br />
<br />
echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc<br />
echo "export ROS_PACKAGE_PATH=/opt/ros/fuerte/stacks:~/ros_personal" >> ~/.bashrc<br />
echo "export RTT_COMPONENT_PATH=/opt/ros/fuerte/stacks/orocos_toolchain/install/lib/orocos" >> ~/.bashrc<br />
echo "source /opt/ros/fuerte/stacks/orocos_toolchain/env.sh" >> ~/.bashrc<br />
. ~/.bashrc<br />
<br />
# Build SOEM<br />
cd ~/ros_personal<br />
git clone http://git.mech.kuleuven.be/robotics/soem.git<br />
cd soem<br />
git checkout origin/electric<br />
rosmake soem<br />
<br />
# Build hexapod<br />
cd ~/ros_personal<br />
svn checkout http://hexapod.wtb.tue.nl/svn/hexapod ./hexapod<br />
roscd hexapod<br />
rosrun rtt_rosnode create_rtt_msgs hexapod_msgs<br />
rosmake<br />
<br />
# You still should get<br />
## (1) pr2_spring_transmission_example<br />
## (2) rtt_generic_components (from the amigo trunk, ask with the amigo team)<br />
</pre><br />
It is possible to put the code in a shell-file and run it.<br />
<br />
= SVN =<br />
The code can be found on: http://hexapod.wtb.tue.nl/svn/hexapod/.<br />
<br />
To obtain an account you should contact Patrick van Brakel.<br />
To keep the svn clean i.e. no build, bin or lib files do the following:<br />
<pre><br />
sudo gedit /etc/subversion/config <br />
</pre><br />
Uncomment, by removing the '#' and add<br />
<pre><br />
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo<br />
*.rej *~ #*# .#* .*.swp .DS_Store lib build bin .tb_history msg_gen srv_gen<br />
</pre><br />
<br />
= Hardware =<br />
The TU/e hexapod is a six legged robot with compliant joints. The compliance is obtained by using torsional springs between the actuators and the joints; for the last two segments additional steel cables are wrapped around pulleys for remote actuation. The motors as well as the joints have absolute encoders. From the difference between these readings, the torsion in the springs can be calculated. <br />
<br />
There are three main PCBs on the robot. The PCB inside the bottom of the robot (data acquisition module or DAM1) communicates with a computer. This can be the on board computer or an external pc. It is also equipped with an IMU that can measure pitch and roll angles, roll rates about three axes and acceleration along three axes. Furthermore, it receives power directly from the battery or external power supply and feeds it to the other boards.<br />
<br />
== Startup ==<br />
The PCB on top of the robot (DAM 2) translates the signals it receives from a controller to electric currents for the actuators. <br />
The middle PCB is the on board computer on which it is possible to run the robot's software. <br />
<br />
To power the hardware, there is a 24V connection on the bottom of the robot. There is a possibility to connect one of the LiPo battery packs or alternatively to wire the robot to a laboratory power supply. When connecting a power supply, make sure the current is not limited too much (you need more than 3A, 10A should be enough. Alternatively, wiring a capacitor in parallel is an option). Once this is connected, the DAM 1 can be started using the small red button that is connected to two loose wires and after that, pressing the large white button on top starts DAM 2.<br />
<br />
Connection to a computer, either the on board one or an off board pc, can be established using the "In" port on the piggyback EtherCAT board on the DAM 2. The "out" port should be connected to the "Out" port on DAM 1.<br />
<br />
= Software =<br />
A basic structure of the software is shown in the figure below. The grey components are not used, the grey components with grey text are not (yet) implemented.<br />
<br />
[[File:ControlLoop2.png|800px|The basic control structure for the Hexapod.]]<br />
<br />
= Simulator =<br />
For simulation purposes, the [http://gazebosim.org/ Gazebo] simulator has been adopted in the very first hexapod development because of its integration with ROS. In a short time, Gazebo has changed and has become a stand-alone software. The early version of the robot model is not compatible with both ROS Fuerte and Gazebo. A complete re-writing of the interface code is needed. However, a porting from the old version to the new one has been attempted. To get started a few basic steps are presented below.<br />
<br />
To start, proceed with the installation following the instructions [http://gazebosim.org/wiki/Install here]. Choose the latest stable release.<br />
<br />
It's important to specify the robot model in the SDF format. The *.urdf.xacro format is no longer supported. To convert such a file, a script is available in the repository. Once you have defined the correct filename of the model to be converted, type<br />
<pre><br />
roscd hexapod_model/models/scripts<br />
source update.bash<br />
</pre><br />
== Hierarchy convention ==<br />
The folder tree has this structure: <br />
* '''hexapod_model'''<br />
** '''model_name'''<br />
*** hexapod.world ("launch" file)<br />
*** model.config<br />
*** model.sdf<br />
*** model.urdf<br />
*** meshes<br />
*** '''plugins'''<br />
**** '''build'''<br />
<br />
== Plugins ==<br />
Gazebo plugins are lines of code compiled as a shared library and inserted into the simulation. The plugins have direct access to all the functionality of Gazebo through the standard C++ classes. <br />
They are used to load models, control the robot, etc.<br />
From gazebosim.org:<br />
<blockquote>Each plugin type is managed by a different component of Gazebo. For example, a Model plugin is attached to and controls a specific model in Gazebo. Similarly, a World plugin is attached to a world, and a Sensor plugin to a specific sensor. The System plugin is specified on the command line, and loads first during a Gazebo startup. This plugin gives the user control over the startup process.</blockquote><br />
<br />
Write your plugin_name.cpp in the hexapod_model/model_name/plugins folder. Then edit the CMakeLists.txt so that it looks like this:<br />
<br />
<pre>cmake_minimum_required(VERSION 2.8 FATAL_ERROR)<br />
include (FindPkgConfig)<br />
if (PKG_CONFIG_FOUND)<br />
pkg_check_modules(GAZEBO gazebo)<br />
endif()<br />
include_directories(${GAZEBO_INCLUDE_DIRS})<br />
link_directories(${GAZEBO_LIBRARY_DIRS})<br />
<br />
<br />
add_library(plugin_name SHARED plugin_name.cc)<br />
target_link_libraries(plugin_name ${GAZEBO_libraries})</pre><br />
<br />
As a next step, go in the plugins/build folder and build the library.<br />
<pre><br />
cmake ../<br />
make<br />
</pre><br />
<br />
It's important to define the models and the plugins that you want to load in your hexapod.world file. Here's its generic model:<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<sdf version="1.4"><br />
<world name="default"><br />
<include><br />
<uri>model://ground_plane</uri><br />
</include><br />
<br />
<include><br />
<uri>model://sun</uri><br />
</include><br />
<br />
<plugin name="plugin_name" filename="libplugin_name.so"/><br />
</world><br />
</sdf><br />
</pre><br />
<br />
It's important to set the GAZEBO_PLUGIN_PATH correctly, pointing to the shared libraries. To do so, edit your .bashrc file:<br />
<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_PLUGIN_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/''model_name''/plugins/build:${GAZEBO_PLUGIN_PATH}<br />
<br />
source ~/.bashrc<br />
</pre> <br />
<br />
To have more insight, follow the [http://gazebosim.org/wiki/Tutorials/1.9/plugins tutorial].<br />
<br />
== Model spawning ==<br />
The hexapod_model folder contains the models, each one with its ''model_name'' folder. <br />
<br />
It's important to set the GAZEBO_MODEL_PATH correctly, pointing to ''hexapod_model''. To do so, edit your bashrc file adding this line:<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_MODEL_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/:${GAZEBO_MODEL_PATH}<br />
<br />
source ~/.bashrc<br />
</pre><br />
== What is missing? ==<br />
Compatibility problems show up for the moment. The model implementation has no elastic transmission and no interface hardware-simulator.<br />
<br />
= Getting started with the robot =<br />
Essential files for robot startup are presented here.<br />
== hexapod_launch ==<br />
The 'hexapod_launch' package contains launch files, whose task is to call Orocos scripting language files (ops) contained in the hexapod_launch/deploy_files folder and start the ROS master. <br />
Some of the deploy scripts contain hard coded paths. Make sure to substitute them with your own. A shell file, rename.sh, was written to automatically do this, but be sure to change the path in this file to your own path. It is located in hexapod_launch. Another possible solution for the future is to seperate the scripts more clearly and call them in a launch file, in which ROS launch syntax can be used to avoid hard coding paths.<br />
<br />
== Essential launch files description ==<br />
{| border="1" class="wikitable"<br />
|-<br />
! File name <br />
! Description<br />
|-<br />
| robot_model_and_state_publisher.launch<br />
| Loads robot parameters and kinematic model, plus starts the state publisher<br />
|-<br />
| start.launch<br />
| Deploys the full set of components currently available to control the robot.<br />
|}<br />
<br />
In order to control the robot, the robot model file must '''always''' run.<br />
== OROCOS components ==<br />
=== Hardware interface and measurement components ===<br />
A series of components interfacing with sensors and actuators constitute the essential core of the robot. Real-time data flow has to be preserved<br />
at all time during communication. Measurement and safety components are included in this section, because they base their functionality on the three main interface components (actuator, encoder and IMU drivers) that<br />
communicate directly with the EtherCAT boards.<br />
<br />
==== Actuator driver ====<br />
This component sends the control message to the actuators, that has the form of a current setpoint.<br />
The signal that is sent through the output port has the dimensions of a torque, being the current multiplied by the motor torque constant. <br />
In order for the signal to be sent, a command message has to be sent as well.<br />
==== Encoder driver ====<br />
The encoder driver, as the name says, reads the encoders, transforming them into human readable angle values.<br />
==== IMU driver ====<br />
IMU data flows through this component, that outputs the pitch and roll estimates together with acceleration and gyro values.<br />
==== Safety ====<br />
For the actuators to work, the safety module has to send an authorization signal. <br />
The conditions for which a green light command message is sent are that the legs are not trying to move out of their workspace and<br />
that the last link is not damaging the steel cable of the thigh by bending the shank. Moreover, an operation can be called to check <br />
the actuators status. An error message is displayed in the following cases:<br />
<br />
* there's an overheating of the bridge driver overheating.<br />
* the drive input voltage drops below 16V.<br />
* invalid hall commutation is detected.<br />
<br />
==== Ground contact detection ====<br />
To manage the transitions between stance and flight phases, the ground contact detection is crucial.<br />
Because of the series elastic transmission, the difference between joint and actuator encoders readings is available. <br />
When the legs are touching the floor, a deflection in the compliant transmission occurs. <br />
By measuring the average difference for the hip encoders readings during stance and flight phase, it's possible to determine a deflection region corresponding to ground contact, and subsequently a threshold <br />
can be easily fixed in order to distinguish the two phases.<br />
==== Height detection ====<br />
The vertical position measurement of the hexapod's body over time, a desired performance index for a hopping robot, is hard to estimate.<br />
In literature, body height of legged robots is generally computed by averaging the tips vertical positions of the legs, transformed to the world coordinate frame, when they are touching the floor. <br />
==== Gait components ====<br />
These components are responsible for the legs reference trajectory definition. According to the desired motion, different kind of gaits exist.<br />
* Tips positioning<br />
The user can specify a preferred Cartesian objective for each leg tip, and subsequently a reference trajectory is generated.<br />
* Continuous gait: the continuous gait component generates a third order Cartesian trajectory for the legs. A fifth order trajectory has been tested as well, and needs some final debugging to work correctly.<br />
* Turning gait: a slow turning gait is available via this component. <br />
<br />
A list of tunable properties allows to specify the following gait parameters and, as a consequence, the type of gait:<br />
** The gait duty factor: fraction of time the leg is on the ground.<br />
** The cycle time: time spent for a gait cycle.<br />
** The phase: normalized time shift between reference trajectories with respect to a reference.<br />
**Leg stroke: leg distance from the body.<br />
<br />
==== Kinematics ====<br />
Hexapod forward and inverse kinematics are integrated using the Kinematics and Dynamics Library (KDL)<br />
of OROCOS. KDL is an application independent framework for modelling and computation of<br />
kinematic chains. It includes class libraries for geometrical entities, various kinematic chains, and their motion.<br />
==== Feedforward ====<br />
The feedforward block sums its signal to the controller output feeding the plant. <br />
The amplitude of 18 current signals can be singularly specified, and an operation<br />
that manages the current offset for the shank, in case of horizontal jump movement, is exposed for<br />
external program or state machine callers.<br />
<br />
= Hopping = <br />
One of the main goals of the design of the TU/e Hexapod robot is for it to be able to run and/or jump. To achieve this, the idea is that the resonance frequency is utilized. The approach that is used, is the one proposed in <ref>Hopping at the Resonance Frequency: A Trajectory Generation Technique for Bipedal Robots with Elastic Joints, Ugurlu et al.</ref>. The authors of this article use 9 steps to generate a joint reference for a jumping robot. This method is adapted to work on a hexapod and applied here.<br />
<br />
== Determining the resonance frequency ==<br />
The first step in this approach is to determine the resonance frequency of the standing robot. In our case, this is done by making the robot stand up (up to position_3) and giving it a sudden push on the top, as a way of applying a delta function. As we are interested in the vertical displacement, and the IMU only gives accelerations, the vertical acceleration is measured. As a sinusoidal response is expected in the displacement, the second derivative should also be a sinusoid at the same frequency. This measurement is documented using a reporter component in OROCOS and the resulting data is imported into matlab to calculate the single sided amplitude spectrum.<br />
<br />
The resulting amplitude spectrum is shown in the figure on the right. A clear peak is visible at 4.0 Hz, which is a reasonable value for the resonance frequency, looking at the robot in practice. <br />
<br />
[[File:SSAS_Hexapod_vertical_mode_6.jpg|thumb|400px|Single-sided amplitude spectrum of the Hexapod in vertical oscillation mode with 6 legs on the ground.]]<br />
<br />
= Troubleshooting =<br />
* The Soem master could not initialize on eth1<br />
Make sure that you are connected to eth1 or otherwise change it in the *.ops file.<br />
To list the network ID's form your PC use the following command in the terminal:<br />
<br />
<pre><br />
ifconfig<br />
</pre><br />
<br />
* If the setcap cannot be found.<br />
Install the setcap.<br />
<br />
<pre><br />
sudo apt-get install libcap2-bin<br />
</pre><br />
<br />
* If the followin error occurs:<br />
<pre><br />
[ ERROR ][Soem] Could not initialize master on eth1<br />
</pre><br />
Set the permission for the deployer-gnulinux such that it can use ethernet.<br />
<br />
<pre><br />
roscd ocl<br />
cd bin<br />
sudo setcap cap_net_raw+ep ./deployer-gnulinux<br />
</pre><br />
<br />
* If, while running the orocos software, you are getting errors/warnings like <br />
<pre><br />
Actuator CF & FT disabled, difference act-jnt is too large"<br />
</pre><br />
or HexapodSafety will not start, giving a similar error.<br />
<br />
Stop and restart HexapodDriverEncoder while in position_init<br />
<br />
= Log =<br />
Log any hardware failure and/or breakdown here. After repair works, ALWAYS recalibrate the encoders! Look for hardware_calibration.ops in hexapod_launch.<br />
<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Mar 21 || Femur cable of leg 1 broke during testing of walking gait. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Mar 31 || Femur cable of leg 6 broke during testing of hopping/jumping. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 7 || Femur cable of leg 6 wrapped around the wrong slot during testing of new walking gait trajectory. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 16 || Femur cable of leg 6 wrapped around the wrong slot during testing of jumping. Fixed by Speciaalmachinefabriek Ketels.<br />
|- <br />
| Oct 26 || Femur cable of leg 5 broke, plus femur cable of leg 1 wrapped around wrong slot. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
|}<br />
<br />
= Useful references =<br />
Some interesting tips and tricks can be found on [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Software/tips_and_tricks the wiki of AMIGO]. Regarding realtime performance, also look at [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Allow_OROCOS_to_work_(almost)_realtime this page]. For these links, an account for the AMIGO wiki is needed. This can be obtained with the AMIGO team.<br />
<br />
== Reports ==<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Boris Mrkajic || Systems and Control Library Development || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Boris_Mrkajic.pdf pdf]<br />
|-<br />
| Max Baeten || Control of the Philips Experimental Robotic Arms using EtherCAT || [http://cstwiki.wtb.tue.nl/servicerobot/files/Free_Space_Report_Max_Baeten.pdf pdf]<br />
|-<br />
| Niek Bilterijst || Low Level Spindle Control of AMIGO || [http://cstwiki.wtb.tue.nl/servicerobot/files/LowLevelSpindleControlonAMIGO.pdf pdf]<br />
|-<br />
| Tim Clephas || Design and control of a service robot - ''The birth of AMIGO'' || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Tim_Clephas.pdf pdf]<br />
|-<br />
| R. Woering || Simulating the "first steps" of a hexapodal robot || [http://www.mate.tue.nl/mate/pdfs/12670.pdf pdf]<br />
|-<br />
| Jeroen Willems || Control of a hexapodal robot || [http://cstwiki.wtb.tue.nl/images/Willems_Hexapod_2011.pdf pdf]<br />
|-<br />
| Rokus Ottervanger || Reviving the Hexapod || [http://cstwiki.wtb.tue.nl/images/Ottervanger2014RevivingTheHexapod.pdf pdf]<br />
|}<br />
<br />
== References ==<br />
<br />
<references/></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=19184Embedded Motion Control 20152015-06-10T09:24:17Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| [[Media:20150520-EMC-TUE-architecture-nup.pdf | Composition Pattern part II by ''Herman Bruyninckx'']]<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | [[Media:20150603-EMC-TUE-communication-nup.pdf | Communication patterns by ''Herman Bruyninckx'']]<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon.<br />
<br />
Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!<br />
<br />
Please charge the robot whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-05-2015 || 12:45 - 13:45 ||Groep 5<br />
|-<br />
| 21-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 21-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 21-05-2015 || 15:45 - 16:45 ||Group 11<br />
|-<br />
| 22-05-2015 || 8:45 - 9:45 ||Group 8<br />
|-<br />
| 22-05-2015 || 9:45 - 10:45 ||Group 6 <br />
|-<br />
| 22-05-2015 || 10:45 - 11:45 ||Group 7 <br />
|-<br />
| 22-05-2015 || 12:45 - 13:45 ||Group 4 <br />
|-<br />
| 22-05-2015 || 13:45 - 14:45 ||Group 10<br />
|-<br />
| 22-05-2015 || 14:45 - 15:45 ||Group 3<br />
|-<br />
| 22-05-2015 || 15:45 - 16:45 ||Group 2<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-05-2015 || 8:45 - 9:45 || Group 1<br />
|-<br />
| 28-05-2015 || 9:45 - 10:45 || Group 7<br />
|-<br />
| 28-05-2015 || 10:45 - 11:45 || Group 4<br />
|-<br />
| 28-05-2015 || 12:45 - 13:45 || Groep 5<br />
|-<br />
| 28-05-2015 || 13:45 - 14:45 || Group 9<br />
|-<br />
| 28-05-2015 || 14:45 - 15:45 || Group 10<br />
|-<br />
| 28-05-2015 || 15:45 - 16:45 || Group 8<br />
|-<br />
| 29-05-2015 || 8:45 - 9:45 || Group 11<br />
|-<br />
| 29-05-2015 || 9:45 - 10:45 || Group 6<br />
|-<br />
| 29-05-2015 || 10:45 - 11:45 || Group 2<br />
|-<br />
| 29-05-2015 || 11:45 - 12:45 || Group 3<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 04-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 04-06-2015 || 9:45 - 10:45 || Group 11<br />
|-<br />
| 04-06-2015 || 10:45 - 11:45 || Group 4<br />
|-<br />
| 04-06-2015 || 12:45 - 13:45 || Group 5<br />
|-<br />
| 04-06-2015 || 13:45 - 14:45 || Group 7<br />
|-<br />
| 04-06-2015 || 14:45 - 15:45 || Group 6<br />
|-<br />
| 04-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 05-06-2015 || 8:45 - 9:45 || Group 8<br />
|-<br />
| 05-06-2015 || 9:45 - 10:45 || Group 3<br />
|-<br />
| 05-06-2015 || 10:45 - 11:45 || Group 2<br />
|-<br />
| 05-06-2015 || 11:45 - 12:45 || Group 9<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-06-2015 || 8:45 - 9:45 || Group 2<br />
|-<br />
| 11-06-2015 || 9:45 - 10:45 || Group 11<br />
|-<br />
| 11-06-2015 || 10:45 - 11:45 || Group 1<br />
|-<br />
| 11-06-2015 || 12:45 - 13:45 || Group 5 <br />
|-<br />
| 11-06-2015 || 13:45 - 14:45 || Group 7<br />
|-<br />
| 11-06-2015 || 14:45 - 15:45 || Group 4<br />
|-<br />
| 12-06-2015 || 8:45 - 9:45 || Group 8<br />
|-<br />
| 12-06-2015 || 9:45 - 10:45 || Group 3<br />
|-<br />
| 12-06-2015 || 10:45 - 11:45 || Group 6<br />
|-<br />
| 12-06-2015 || 11:45 - 12:45 || Group 9<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 15-06-2015 || 8:45 - 9:45 || Group 11<br />
|-<br />
| 15-06-2015 || 9:45 - 10:45 || Group 4<br />
|-<br />
| 15-06-2015 || 10:45 - 11:45 || Group 5<br />
|-<br />
| 15-06-2015 || 12:45 - 13:45 || Group 1<br />
|-<br />
| 16-06-2015 || 8:45 - 9:45 || Group 2<br />
|-<br />
| 16-06-2015 || 9:45 - 10:45 || Group 8<br />
|-<br />
| 16-06-2015 || 13:45 - 14:45 || Group 9<br />
|-<br />
| 16-06-2015 || 14:45 - 15:45 || Group 3<br />
|-<br />
| 16-06-2015 || 15:45 - 16:45 || Group 7<br />
|-<br />
| 16-06-2015 || 16:45 - 17:45 || Group 6<br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
<!--<br />
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction (sideways), only in x and theta. So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots!<br />
--><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18860MRC/Using Pico2015-06-02T11:08:56Z<p>S080518: /* Playing back bag files */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> The password is '''emc'''.<br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your project folder within your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a '''new terminal''' (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@192.168.2.81:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing <pre>scp emc@192.168.2.81:~/*.bag .</pre> This will copy all files wit the .bag extention from the home folder of Pico to your current directory.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre><br />
For more advanced use and other information on the command line use of rosbag, go to the official [http://wiki.ros.org/rosbag/Commandline documentation of the tool].</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18858MRC/Using Pico2015-06-02T11:04:13Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> The password is '''emc'''.<br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your project folder within your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a '''new terminal''' (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@192.168.2.81:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing <pre>scp emc@192.168.2.81:~/*.bag .</pre> This will copy all files wit the .bag extention from the home folder of Pico to your current directory.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18857MRC/Using Pico2015-06-02T11:00:27Z<p>S080518: /* Starting Pico */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> The password is '''emc'''.<br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your project folder within your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@192.168.2.81:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing <pre>scp emc@192.168.2.81:~/*.bag .</pre> This will copy all files wit the .bag extention from the home folder of Pico to your current directory.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18806Embedded Motion Control 20152015-06-01T07:21:03Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| [[Media:20150520-EMC-TUE-architecture-nup.pdf | Composition Pattern part II by ''Herman Bruyninckx'']]<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon.<br />
<br />
Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!<br />
<br />
Please charge the robot whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-05-2015 || 12:45 - 13:45 ||Groep 5<br />
|-<br />
| 21-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 21-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 21-05-2015 || 15:45 - 16:45 ||Group 11<br />
|-<br />
| 22-05-2015 || 8:45 - 9:45 ||Group 8<br />
|-<br />
| 22-05-2015 || 9:45 - 10:45 ||Group 6 <br />
|-<br />
| 22-05-2015 || 10:45 - 11:45 ||Group 7 <br />
|-<br />
| 22-05-2015 || 12:45 - 13:45 ||Group 4 <br />
|-<br />
| 22-05-2015 || 13:45 - 14:45 ||Group 10<br />
|-<br />
| 22-05-2015 || 14:45 - 15:45 ||Group 3<br />
|-<br />
| 22-05-2015 || 15:45 - 16:45 ||Group 2<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-05-2015 || 8:45 - 9:45 || Group 1<br />
|-<br />
| 28-05-2015 || 9:45 - 10:45 || Group 7<br />
|-<br />
| 28-05-2015 || 10:45 - 11:45 || Group 4<br />
|-<br />
| 28-05-2015 || 12:45 - 13:45 || Groep 5<br />
|-<br />
| 28-05-2015 || 13:45 - 14:45 || Group 9<br />
|-<br />
| 28-05-2015 || 14:45 - 15:45 || Group 10<br />
|-<br />
| 28-05-2015 || 15:45 - 16:45 || Group 8<br />
|-<br />
| 29-05-2015 || 8:45 - 9:45 || Group 11<br />
|-<br />
| 29-05-2015 || 9:45 - 10:45 || Group 6<br />
|-<br />
| 29-05-2015 || 10:45 - 11:45 || Group 2<br />
|-<br />
| 29-05-2015 || 11:45 - 12:45 || Group 3<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 04-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 04-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 04-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 04-06-2015 || 12:45 - 13:45 || <br />
|-<br />
| 04-06-2015 || 13:45 - 14:45 || <br />
|-<br />
| 04-06-2015 || 14:45 - 15:45 || <br />
|-<br />
| 04-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 05-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 05-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 05-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 05-06-2015 || 11:45 - 12:45 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 11-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 11-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 11-06-2015 || 12:45 - 13:45 || <br />
|-<br />
| 11-06-2015 || 13:45 - 14:45 || <br />
|-<br />
| 11-06-2015 || 14:45 - 15:45 || <br />
|-<br />
| 11-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 12-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 12-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 12-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 12-06-2015 || 11:45 - 12:45 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 15-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 15-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 15-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 15-06-2015 || 12:45 - 13:45 || <br />
|-<br />
| 16-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 16-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 16-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 16-06-2015 || 13:45 - 14:45 ||<br />
|-<br />
| 16-06-2015 || 14:45 - 15:45 || <br />
|-<br />
| 16-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 16-06-2015 || 16:45 - 17:45 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
<!--<br />
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction (sideways), only in x and theta. So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots!<br />
--><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18805Embedded Motion Control 20152015-06-01T07:16:02Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| [[Media:20150520-EMC-TUE-architecture-nup.pdf | Composition Pattern part II by ''Herman Bruyninckx'']]<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon.<br />
<br />
Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!<br />
<br />
Please charge the robot whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-05-2015 || 12:45 - 13:45 ||Groep 5<br />
|-<br />
| 21-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 21-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 21-05-2015 || 15:45 - 16:45 ||Group 11<br />
|-<br />
| 22-05-2015 || 8:45 - 9:45 ||Group 8<br />
|-<br />
| 22-05-2015 || 9:45 - 10:45 ||Group 6 <br />
|-<br />
| 22-05-2015 || 10:45 - 11:45 ||Group 7 <br />
|-<br />
| 22-05-2015 || 12:45 - 13:45 ||Group 4 <br />
|-<br />
| 22-05-2015 || 13:45 - 14:45 ||Group 10<br />
|-<br />
| 22-05-2015 || 14:45 - 15:45 ||Group 3<br />
|-<br />
| 22-05-2015 || 15:45 - 16:45 ||Group 2<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-05-2015 || 8:45 - 9:45 || Group 1<br />
|-<br />
| 28-05-2015 || 9:45 - 10:45 || Group 7<br />
|-<br />
| 28-05-2015 || 10:45 - 11:45 || Group 4<br />
|-<br />
| 28-05-2015 || 12:45 - 13:45 || Groep 5<br />
|-<br />
| 28-05-2015 || 13:45 - 14:45 || Group 9<br />
|-<br />
| 28-05-2015 || 14:45 - 15:45 || Group 10<br />
|-<br />
| 28-05-2015 || 15:45 - 16:45 || Group 8<br />
|-<br />
| 29-05-2015 || 8:45 - 9:45 || Group 11<br />
|-<br />
| 29-05-2015 || 9:45 - 10:45 || Group 6<br />
|-<br />
| 29-05-2015 || 10:45 - 11:45 || Group 2<br />
|-<br />
| 29-05-2015 || 11:45 - 12:45 || Group 3<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 04-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 04-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 04-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 04-06-2015 || 12:45 - 13:45 || <br />
|-<br />
| 04-06-2015 || 13:45 - 14:45 || <br />
|-<br />
| 04-06-2015 || 14:45 - 15:45 || <br />
|-<br />
| 04-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 05-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 05-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 05-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 05-06-2015 || 11:45 - 12:45 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 11-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 11-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 11-06-2015 || 12:45 - 13:45 || <br />
|-<br />
| 11-06-2015 || 13:45 - 14:45 || <br />
|-<br />
| 11-06-2015 || 14:45 - 15:45 || <br />
|-<br />
| 11-06-2015 || 15:45 - 16:45 || <br />
|-<br />
| 12-06-2015 || 8:45 - 9:45 || <br />
|-<br />
| 12-06-2015 || 9:45 - 10:45 || <br />
|-<br />
| 12-06-2015 || 10:45 - 11:45 || <br />
|-<br />
| 12-06-2015 || 11:45 - 12:45 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
<!--<br />
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction (sideways), only in x and theta. So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots!<br />
--><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18515Embedded Motion Control 20152015-05-18T14:16:47Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon.<br />
<br />
Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!<br />
<br />
Please charge the robot whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-05-2015 || 12:45 - 13:45 || <br />
|-<br />
| 21-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 21-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 21-05-2015 || 15:45 - 16:45 ||<br />
|-<br />
| 22-05-2015 || 8:45 - 9:45 || <br />
|-<br />
| 22-05-2015 || 9:45 - 10:45 || <br />
|-<br />
| 22-05-2015 || 10:45 - 11:45 || <br />
|-<br />
| 22-05-2015 || 12:45 - 13:45 || <br />
|-<br />
| 22-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 22-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 22-05-2015 || 15:45 - 16:45 ||<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-05-2015 || 8:45 - 9:45 || <br />
|-<br />
| 28-05-2015 || 9:45 - 10:45 || <br />
|-<br />
| 28-05-2015 || 10:45 - 11:45 || <br />
|-<br />
| 28-05-2015 || 12:45 - 13:45 || <br />
|-<br />
| 28-05-2015 || 13:45 - 14:45 || <br />
|-<br />
| 28-05-2015 || 14:45 - 15:45 || <br />
|-<br />
| 28-05-2015 || 15:45 - 16:45 ||<br />
|-<br />
| 29-05-2015 || 8:45 - 9:45 || <br />
|-<br />
| 29-05-2015 || 9:45 - 10:45 || <br />
|-<br />
| 29-05-2015 || 10:45 - 11:45 || <br />
|-<br />
| 29-05-2015 || 11:45 - 12:45 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
<!--<br />
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction (sideways), only in x and theta. So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots!<br />
--><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18300Embedded Motion Control 20152015-05-13T12:12:37Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
A timetable for the second stage tests will become available soon.<br />
<br />
Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!<br />
<br />
Please charge the robots whenever possible so there is no down time due to empty batteries.<br />
<br />
<!--<br />
<br />
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction, only in x and theta (like with the uni-cycle model). So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots!<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Pico'''<br />
! scope="col" | '''Taco'''<br />
|-<br />
| 07-05-2015 || 8:30 - 9:30 || ||<br />
|-<br />
| 07-05-2015 || 9:40 - 10:40 || ||<br />
|-<br />
| 07-05-2015 || 10:50 - 11:50 || ||<br />
|-<br />
| 08-05-2015 || 8:30 - 9:30 || ||<br />
|-<br />
| 08-05-2015 || 9:40 - 10:40 || ||<br />
|-<br />
| 08-05-2015 || 10:50 - 11:50 || ||<br />
|-<br />
| 08-05-2015 || 14:10 - 15:10 || ||<br />
|-<br />
| 08-05-2015 || 15:20 - 16:20 || ||<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2015 || 8:30 - 9:30 || ||<br />
|-<br />
| 11-05-2015 || 9:40 - 10:40 || ||<br />
|-<br />
| 11-05-2015 || 10:50 - 11:50 || ||<br />
|-<br />
| 11-05-2015 || 13:00 - 14:00 || ||<br />
|-<br />
| 11-05-2015 || 14:10 - 15:10 || ||<br />
|-<br />
| 11-05-2015 || 15:20 - 16:20 || ||<br />
|-<br />
| 12-05-2015 || 8:30 - 9:30 || ||<br />
|-<br />
| 12-05-2015 || 9:40 - 10:40 || ||<br />
|-<br />
| 12-05-2015 || 10:50 - 11:50 || ||<br />
|-<br />
| 12-05-2015 || 13:00 - 14:00 || ||<br />
|-<br />
| 12-05-2015 || 14:10 - 15:10 || ||<br />
|-<br />
| 12-05-2015 || 15:20 - 16:20 || ||<br />
|-<br />
| 12-05-2015 || 16:30 - 17:30 || ||<br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
--><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18240MRC/Using Pico2015-05-12T12:16:27Z<p>S080518: /* Running your software */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> <br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your project folder within your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@192.168.2.81:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing <pre>scp emc@192.168.2.81:~/*.bag .</pre> This will copy all files wit the .bag extention from the home folder of Pico to your current directory.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18234Embedded Motion Control 20152015-05-12T07:50:51Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
In order to test your software on the Pico robot, each group has one one hour time slot a week available.<br />
You can reserve your test slot in the table below. Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your software to work.<br />
<br />
Please charge the robots whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 07-05-2015 || 8:30 - 9:30 || <br />
|-<br />
| 07-05-2015 || 9:40 - 10:40 || <br />
|-<br />
| 07-05-2015 || 10:50 - 11:50 || 9<br />
|-<br />
| 08-05-2015 || 8:30 - 9:30 || 8<br />
|-<br />
| 08-05-2015 || 9:40 - 10:40 || 3, DIBBS!<br />
|-<br />
| 08-05-2015 || 10:50 - 11:50 || 5<br />
|-<br />
| 08-05-2015 || 14:10 - 15:10 || 7<br />
|-<br />
| 08-05-2015 || 15:20 - 16:20 || 10<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2015 || 8:30 - 9:30 || 4<br />
|-<br />
| 11-05-2015 || 9:40 - 10:40 || 1<br />
|-<br />
| 11-05-2015 || 10:50 - 11:50 || 2<br />
|-<br />
| 11-05-2015 || 13:00 - 14:00 || 5<br />
|-<br />
| 11-05-2015 || 14:10 - 15:10 || 10<br />
|-<br />
| 11-05-2015 || 15:20 - 16:20 || 4<br />
|- <br />
| <strike>11-05-2015</strike> || <strike>16:30 - 17:30</strike> || <strike>11</strike><br />
|-<br />
| 12-05-2015 || 8:30 - 9:30 || 7<br />
|-<br />
| 12-05-2015 || 9:40 - 10:40 || 2<br />
|-<br />
| 12-05-2015 || 10:50 - 11:50 || 6<br />
|-<br />
| 12-05-2015 || 13:00 - 14:00 || 6<br />
|-<br />
| 12-05-2015 || 14:10 - 15:10 || 8<br />
|-<br />
| 12-05-2015 || 15:20 - 16:20 || 9<br />
|-<br />
| 12-05-2015 || 16:30 - 17:30 || 3, DIBBS!<br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18216Embedded Motion Control 20152015-05-11T11:42:52Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups'': 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern.<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Corridor Competition =<br />
{{:Embedded_Motion_Control/Corridor_competition_2015}}<br />
<br />
= Maze Competition =<br />
{{:Embedded_Motion_Control/Maze_competition_2015}}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira<br />
<br />
= Pico test schedule =<br />
In order to test your software on the Pico robot, each group has one one hour time slot a week available.<br />
You can reserve your test slot in the table below.<br />
<br />
Please charge the robots whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 07-05-2015 || 8:30 - 9:30 || <br />
|-<br />
| 07-05-2015 || 9:40 - 10:40 || <br />
|-<br />
| 07-05-2015 || 10:50 - 11:50 || 9<br />
|-<br />
| 08-05-2015 || 8:30 - 9:30 || 8<br />
|-<br />
| 08-05-2015 || 9:40 - 10:40 || 3, DIBBS!<br />
|-<br />
| 08-05-2015 || 10:50 - 11:50 || 5<br />
|-<br />
| 08-05-2015 || 14:10 - 15:10 || 7<br />
|-<br />
| 08-05-2015 || 15:20 - 16:20 || 10<br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2015 || 8:30 - 9:30 || 4<br />
|-<br />
| 11-05-2015 || 9:40 - 10:40 || 1<br />
|-<br />
| 11-05-2015 || 10:50 - 11:50 || 2<br />
|-<br />
| 11-05-2015 || 13:00 - 14:00 || 5<br />
|-<br />
| 11-05-2015 || 14:10 - 15:10 || 10<br />
|-<br />
| 11-05-2015 || 15:20 - 16:20 || 4<br />
|- <br />
| <strike>11-05-2015</strike> || <strike>16:30 - 17:30</strike> || <strike>11</strike><br />
|-<br />
| 12-05-2015 || 8:30 - 9:30 || 7<br />
|-<br />
| 12-05-2015 || 9:40 - 10:40 || 2<br />
|-<br />
| 12-05-2015 || 10:50 - 11:50 || 6<br />
|-<br />
| 12-05-2015 || 13:00 - 14:00 || 6<br />
|-<br />
| 12-05-2015 || 14:10 - 15:10 || 8<br />
|-<br />
| 12-05-2015 || 15:20 - 16:20 || 9<br />
|-<br />
| 12-05-2015 || 16:30 - 17:30 || 3, DIBBS!<br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18178MRC/Using Pico2015-05-08T14:31:34Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> <br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@192.168.2.81:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing <pre>scp emc@192.168.2.81:~/*.bag .</pre> This will copy all files wit the .bag extention from the home folder of Pico to your current directory.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials/Setting_up_your_project&diff=18162MRC/Tutorials/Setting up your project2015-05-08T11:39:01Z<p>S080518: /* CMake */</p>
<hr />
<div>Of course, we not only want to use software during this course, but we want to create some! Let's create a workspace directory in which we will put this code:<br />
<br />
<pre>mkdir ~/emc</pre><br />
<br />
Let's start off with a simple example project. Go inside the ''~/emc'' directory, and create a new folder with the name ''my_project'':<br />
<br />
<pre>cd ~/emc<br />
mkdir my_project<br />
</pre><br />
<br />
Often, the code files are not put directly in the root of a folder, but in a directory called ''src''. This stands for ''source'', and is called this way because the files in there are the source of the compilation process, and are converted into ''binaries'' (files that are no longer human-readable, but are understandable for the machine). So, let's go. Remember that when using ''cd'' (and many other commands in linux) you can use ''tab-completion'' to type quicker, ''i.e'', try:<br />
<br />
<pre>cd m<<< now push the TAB key >>></pre><br />
<br />
You will see that the terminal fills out the rest, because ''my_project'' is the only directory in the current directory that starts with an ''m''. Ok, create the ''src'' directory, and go inside:<br />
<br />
<pre>mkdir src<br />
cd src</pre><br />
<br />
Finally, let's do some programming! You should have finished the C++ tutorials by now, so you know how to create a basic C++ program. Let us do it now. Open your favourite editor to create a file called ''example.cpp'' and put some code inside:<br />
<br />
<pre><br />
#include <iostream><br />
<br />
int main()<br />
{<br />
std::cout << "Hello world!" << std::endl;<br />
return 0;<br />
}<br />
</pre><br />
<br />
Remember that you can compile the project using ''g++'':<br />
<br />
<pre>g++ -o example example.cpp</pre><br />
<br />
This will generate a file called ''example'' that you can run. Now, actually, our nice ''src'' is already not as clean as it should be. It should contain ''only'' source files, not binaries! No worries, let's go one directory down:<br />
<br />
<pre>cd ..</pre><br />
<br />
Create a ''bin'' folder for our libraries:<br />
<br />
<pre>mkdir bin</pre><br />
<br />
And run compilation as follows:<br />
<br />
<pre>g++ -o bin/example src/example.cpp</pre><br />
<br />
Now our binary is create in the ''bin'' directory, while the source is in ''src'': nicely seperated! You can run the program using:<br />
<br />
<pre>bin/example</pre><br />
<br />
By the way, just remove the ''example'' binary we created 'wrongly' in the ''src'' directory using:<br />
<br />
<pre> rm src/example</pre><br />
<br />
And we are good to go.<br />
<br />
= Using the EMC framework =<br />
<br />
So, we've got a C++ source file that we can compile, but it is still not very useful. We have to build software that runs on a robot and performs the complex task of solving a maze. Starting from scratch would take a lot of time, but fortunately a lot is already provided! Actually it was already secretly sitting on your computer, being installed by the install script. This software that is provided is not something that is runnable on its own, but a set of functions and C++ classes that we can ''use'' in our own project. Such a set of reusable software parts is called a [http://en.wikipedia.org/wiki/Library_%28computing%29 ''software library'']. Now, we have to ''include'' this installed library in the project.<br />
<br />
Open the ''example.cpp'' file, and change it to the following:<br />
<br />
<pre><br />
#include <emc/io.h><br />
<br />
int main()<br />
{<br />
emc::IO io;<br />
return 0;<br />
}<br />
</pre><br />
<br />
The ''include'' statement on top includes the ''emc'' framework in your source file, which means that all functions, classes, etc ''declared'' there can be used by your project. The ''io'' object is something we will use to build our application with. Don't worry about it now, we'll get back to that later.<br />
<br />
Try to compile the project (make sure to 'be' in your project root, ''i.e.'': ''~/emc/my_project''):<br />
<br />
<pre>g++ -o bin/example src/example.cpp</pre><br />
<br />
Woah, errors! Note that the error states something about ''undefined reference''. We included ''emc/engine.h'' so we should be fine right? No: often ''*.h''-files only ''declare'' functions etc, but they do not define them, that is: they tell the compiler something with that name is out there, but they do not provide the actual implementation. We need to tell the compiler where the implementation, which is already compiled into binary form, is. This is called ''linking'', and we need to specify it in the ''g++'' command:<br />
<br />
<pre>g++ -o bin/example src/example.cpp -lemc-framework</pre><br />
<br />
Here, the ''-l'' specifies that g++ should link the program to the library that is called ''emc-framework''. For those who are wondering, the compiler does not grab ''emc-framework'' out of thin air. Take a look in the ''/usr/lib'' directory: you will find ''libemc-framework.so'' sitting there, along with many other libraries. The extension ''so'' stands for ''shared object'': it is a piece of software that can be ''shared'' across different applications. The ''h''-files, which are called ''header files'' can be found in ''/usr/include'' (''e.g.'', look for ''/usr/include/emc/engine.h'').<br />
<br />
= CMake =<br />
<br />
So, we compiled a source file into a binary in another directory, while linking against the ''emc-framework'' library. Imagine that by the end of the course you will use more libraries, and every time you need to remember the ''g++'' command. That's quite a nuisance! Fortunately, there are tools that will help you out. In this course, we will use [http://www.cmake.org/ CMake].<br />
<br />
A very short history: when Linux programmers started to become annoyed with typing the ''g++'' (or rather ''gcc'' back in those days, the compiler for plain C), they invented [http://www.gnu.org/software/make/ Make], a ''"tool which controls the generation of executables and other non-source files of a program from the program's source files"''. ''Make'' allows you to specify compiler options, linking, etc of your project in a file, and once that was done, you only had to run ''make'' to compile your project. However, other Operating Systems created their own ''build systems'' (that is what these tools are called), ''e.g.'', Microsoft uses ''Visual Studio'' for Windows. Then some people came up with ''CMake'' which is a cross-platform (that is what the ''C'' stand for) build tool: it can be used on Linux, Mac OS and Windows. In fact, it builds on top of the OS-specific build tool. For example, on Linux, CMake generates Make-files, while on Windows it generates files that can be used by Visual Studio. That's quite useful! It allows programmers from all over the world to collaborate on software projects, even if they are using different Operating Systems!<br />
<br />
Enough talking, let's start using CMake to ''build'' our project, such that compilation becomes easier. All you have to do is create a file in the root of you project that can be read by CMake, called ''CMakeLists.txt''. In it, you specify the instructions that are needed to compile the project. Create a file called ''CMakeLists.txt'' with this text:<br />
<br />
<pre><br />
cmake_minimum_required(VERSION 2.8)<br />
project(my_project)<br />
<br />
add_executable(example src/example.cpp)<br />
</pre><br />
<br />
This file is probably quite understandable at first sight: it specifies the minimum required version of CMake to read the file, the name of your project, and states that an executable called ''example'' should be created from the source file ''src/example.cpp''.<br />
<br />
Now, how should we use this thing? As was already said, CMake does not directly call the compiler. Instead, it generates ''Makefiles'' which can be used by the Linux-dependent ''Make'' tool. These ''Makefiles'', or more generically called ''build files'', are created in a seperate folder, often called ''build''. Go to the root of your project (''cd ~/emc/my_project''), create a ''build'' directory and go inside:<br />
<br />
<pre><br />
mkdir build<br />
cd build<br />
</pre><br />
<br />
Now, to generate the build files, we only have to call CMake and refer to the directory in which the CMakeLists file is we just created:<br />
<br />
<pre><br />
cmake ..<br />
</pre><br />
<br />
(remember ''..'' stands for 'one directory up')<br />
<br />
Have a look inside the ''build'' directory: CMake generated a lot of files, one of which is a ''Makefile''. Now while 'being' in the ''build'' directory, call Make:<br />
<br />
<pre><br />
make<br />
</pre><br />
<br />
You will see that the compiler is called (as if we started ''g++'' ourselves). Oh whoops... Again the ''undefined reference'' error. But this makes sense: we did not specify yet that we need to use the ''emc-framework'' library. Doing so in CMake is easy. Edit the CMakeLists.txt file, and add below the ''add_executable'' statement:<br />
<br />
<pre><br />
target_link_libraries(example emc-framework)<br />
</pre><br />
<br />
Now run ''cmake'' and ''make'' again:<br />
<br />
<pre><br />
cd build<br />
cmake ..<br />
make<br />
</pre><br />
<br />
Success! However, the binary is also created in the directory where you called make, ''i.e.'' in the build directory. It would be nice to have it in the ''bin'' directory we created earlier. Well, we can. Just add the following line to your CMakeList.txt:<br />
<br />
<pre><br />
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)<br />
</pre><br />
<br />
This sets the CMake variable ''EXECUTABLE_OUTPUT_PATH'' to be the ''bin'' directory in your project directory. The ''${...}'' simply returns the value of the variable inside. The CMake variable ''PROJECT_SOURCE_DIR'' is set by CMake and refers to the directory in which your CMakeLists.txt is placed (the name is somewhat confusing...). Try to run ''cmake ..'' and ''make'' again. You should see the executable appear in your ''bin'' directory''.<br />
<br />
By the way, you only need to run the cmake command if you change your ''CMakeLists.txt''. Once you start programming, ''i.e'', editing your source files, you can simply go to the ''build'' directory and run ''make''.<br />
<br />
== A note on CMake ==<br />
<br />
You might be thinking: this still is a lot of hassle. The ''g++'' command wasn't that bad, and now I need an extra directory, some extra commands, understand CMake, etc. Indeed, for the small example above CMake is a bit overkill. However, once your project grows and source files are added, more libraries are used, etc, you will see that it is quite handy to have your project set-up defined in one simple file. Furthermore, you won't have to tell your teammates what command to run if you add a file or library, as you can simply update the ''CMakeLists.txt''. Also, CMake is a widely used language, and supported by many ''Integrated Development Environments'' (IDE), which can be thought of as really smart programming editors that not only providing editing, but also support compiling and even runnning and debugging your program. Having a CMakeLists.txt is having a project definition that can be used by many IDEs to 'understand' what is going on in your project.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control/Tutorials/Setting_up_the_PICO_simulator_2015&diff=18161Embedded Motion Control/Tutorials/Setting up the PICO simulator 20152015-05-08T11:19:58Z<p>S080518: /* Visualization */</p>
<hr />
<div>= Introduction =<br />
<br />
During the course, we have 10 large groups and only one robot, so test time on the robot is scarce. Fortunately, we have a virtual (software) representation of the robot that can be used to simulate the robot. At the moment it:<br />
<br />
* Simulates the movement of the robot<br />
* The laser data of the robot, created by the virtual environment<br />
* Provide a simple visualization<br />
<br />
This should already be enough to get you started, and more will be added later (odometry, moving doors, better dynamics, etc).<br />
<br />
= Updating the simulator =<br />
<br />
Before you start working with the simulator, make sure you have our latest version by running<br />
<br />
<pre><br />
emc-update<br />
</pre><br />
<br />
This will download the latest changes and compile the updated software (framework and simulator). I will notify you when I made changes to the software such that you can run the updater, but feel free to run the command whenever you want.<br />
<br />
= Starting the simulator =<br />
<br />
As was already stated before, we will not be using ROS in this course, unless you really want to use it yourself. However, secretly the provided tools are build on top of that; the inter-process communication to be more specific. Don't worry about it too much. The only thing you need to know is that before running the simulator or your software, you need to create a ''roscore''. Simply open a terminal an run:<br />
<br />
<pre><br />
roscore<br />
</pre><br />
<br />
and keep it running. This allows processes to 'find' each other and communicate. For example, the software abstraction layer we provide 'talks' to the simulator through this roscore.<br />
<br />
Enough about ROS, let's start the simulator! Open a terminal and run<br />
<br />
<pre><br />
emc-sim<br />
</pre><br />
<br />
That's it! What you will see, is a visualization of the virtual environment (the white lines are walls) and a top-down view of the robot (the red lines).<br />
<br />
= Controlling the robot =<br />
<br />
Now, as you can see, not much is happening. The robot is standing still in a static environment. Let's change that! A first simple way to test the simulator is by controlling the robot using your keyboard. Just run:<br />
<br />
<pre><br />
pico-teleop<br />
</pre><br />
<br />
and you will be able to control the robot using the ''numpad'' keys. You can rotate the robot using '/' and '*'.<br />
<br />
= Visualization =<br />
<br />
As you already noticed, the simulator pops up a visualization windows showing the robot in the virtual world. This shows how the world ''is'' (at least in simulation...). It is also very interesting to know how to robot ''perceives'' the world through its sensors. Note that this is a big difference! We also created a visualization for that. Just run<br />
<br />
<pre><br />
emc-viz<br />
</pre><br />
<br />
You will again see the robot footprint displayed in red. However, the walls are gone and replaced by the actual (simulated) sensor data from the robot (the green dots). The laser data is actually represented in polar coordinates (remember, the LRF is a laser with a rotating mirror, so what it will return are angles and distances) but the visualization 'projects' them back to world coordinates. See how the laser data changes even if the robot is standing still: this is the simulated noise added to the data.<br />
<br />
Try driving the robot around using 'pico-teleop' and notice how the laser data changes, and how it differs from the actual virtual world.<br />
<br />
= Stopping the simulator and visualization =<br />
<br />
You can stop the simulator and visualization by pressing ''ctrl-C'' in the terminal.<br />
<br />
= Loading a custom heightmap =<br />
<br />
By default, the simulator loads a pretty ugly maze. Fortunately, you can change the simulation environment very easily! You just have to create a heightmap: an image that specifies for each pixel how 'high' the world has to be at that point. Since the laser only scans at one height, we can use two extremes here: flat (ground level) or high enough to be detected by the laser.<br />
<br />
To create an image, simply open your favourite image editor and create a black-and-white image. If you don't know how to create an image, have a look at the section below. White corresponds to the floor, black to the walls (i.e., which will be detected by the laser). You have to keep the following things in mind:<br />
<br />
* The simulator converts the pixels to world coordinates. Each pixel corresponds to a block of 2.5 by 2.5 cm, or in other words, 40 pixels correspond to 1 meter.<br />
* The robot always starts in the center of the image. So, if you want to robot to start at the edge of your maze / corridor, just create a bigger image and move the black pixels to the upper part of the image.<br />
* You'll get the best result if the lines drawn are at least 2 pixels wide<br />
* Store your image lossless, ''i.e.'' using the ''png'' format (which is recommended by the way!), instead of the ''jpg'' format.<br />
* Make sure your heightmap images always have a border of white pixels, ''i.e.'' there should '''not''' be any non-white pixels at the borders of your image<br />
<br />
Once you have created an image, simply run the simulator and provide the image file as argument:<br />
<br />
<pre><br />
emc-sim <YOUR_IMAGE_FILE>.png<br />
</pre><br />
<br />
That's it!<br />
<br />
== Create a heigthmap image ==<br />
<br />
There are many linux applications that you use to create images. We suggest using Gimp, an open-source alternative to Photoshop. Although it might be a bit overkill to use for our application, it has great support and the thing we want to do (draw black lines on a white background) isn't hard. To install Gimp, run:<br />
<br />
<pre><br />
sudo apt-get install gimp<br />
</pre><br />
<br />
And run it using:<br />
<pre><br />
gimp<br />
</pre><br />
<br />
Then to create a simple image:<br />
<br />
* Select ''File'' -> ''New'' (or ''ctrl-N'')<br />
* Specify the size of your image. Remember, 40 pixels = 1 meter, and the robot starts in the center<br />
* Select the ''Pencil Tool'' from the left pane.<br />
* Set the pencil size in the lower left pane to something sensible, ''e.g.'' 2 pixels<br />
<br />
Now, if you click left on the image, a dot is drawn, but we want lines! To draw a line:<br />
<br />
* left click, ''then'' hold ''shift'', ''then'' left click again.<br />
* While holding the ''shift'' button, you can click more times to create a sequence of lines<br />
* To create nice, axis-aligned lines, also hold ''ctrl''<br />
<br />
There is two types of saving in Gimp. The first one is the using ''File'' -> ''Save''. However, this will only generate an ''xcf''-file, something that can only be read by Gimp. Instead, you should use the ''File'' -> ''Export'' option:<br />
<br />
* ''File'' -> ''Export''<br />
* Provide a name for your file. If you put '.png' as extension, it will be saved as png<br />
* Use the default ''png'' export settings<br />
<br />
That's it!</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18138MRC/Using Pico2015-05-07T04:58:32Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> <br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@pico:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18122MRC/Using Pico2015-05-06T15:05:07Z<p>S080518: </p>
<hr />
<div>== Starting Pico ==<br />
To start Pico please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
<!--<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
--><br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>sshpico</pre> <br />
<!-- where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. --><br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
<!--<br />
#* For Taco: <pre>tstart</pre><br />
--><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>sshpico</pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/emc/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Develop while testing ==<br />
<br />
You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:<br />
<br />
# Edit the files on your pc:<br />
## Simply use Qt Creator or any other editor to change the files<br />
## Push your changes to the git server<br />
## Pull the changes on the robot, recompile, and try<br />
# Edit the files on the robot:<br />
## Use programs such as 'nano' or 'vim' to edit the files<br />
## recompile and test<br />
## Commit and push your changes once you're happy<br />
##* Be sure to set your name and email address before committing!<pre>git config user.email "bla@student.tue.nl"</pre><pre>git config user.name "Your name"</pre>'''Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.'''<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre>pico-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>sshpico</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@pico:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18115MRC/Using Pico2015-05-06T13:08:19Z<p>S080518: </p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!<br />
<br />
== Playing back bag files ==<br />
Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:<br />
# First start a roscore, like you always do<br />
# Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to ''true'': <pre>rosparam set use_sim_time true</pre><br />
# If all is well, you should now be able to play the bag file by entering <pre>rosbag play --clock <filename></pre></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18114MRC/Using Pico2015-05-06T12:13:42Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s): <pre>rm <filename></pre> This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18113MRC/Using Pico2015-05-06T12:13:22Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.<br />
# After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s):<br />
<pre>rm <filename></pre><br />
This '''permanently''' removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control/Tutorials_2015&diff=18112Embedded Motion Control/Tutorials 20152015-05-06T12:08:43Z<p>S080518: </p>
<hr />
<div># [[ Embedded Motion Control/Tutorials/Introduction | Introduction ]]<br />
# [[ Embedded Motion Control/Tutorials/Installing Ubuntu | Installing Ubuntu ]]<br />
# [[ Embedded Motion Control/Tutorials/Customizing Ubuntu | Customizing Ubuntu ]]<br />
# Do the following C++ tutorials:<br />
## [http://www.cplusplus.com/doc/tutorial/ cplusplus.com]: up to and including '''Name visibility'''<br />
## [http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/lecture-notes/ MIT's Introduction to C++]: up to and including '''Classes'''<br />
#* Remarks:<br />
#** For now, use a simple editor such as ''gedit'' (the ubuntu version of Notepad). We will install a more advanced editor (IDE - Integrated Development Environment) later.<br />
#** Once you have saved your C++ program (e.g. as ''example.cpp''), it can be compiled from a terminal using:<pre>g++ example.cpp -o example</pre>and run with<pre>./example</pre><br />
<br />
# [[ Embedded Motion Control/Tutorials/Installing the EMC environment | Installing the EMC environment ]]<br />
# [[ Embedded Motion Control/Tutorials/Setting up your project | Setting up your project ]]<br />
# [[ Embedded Motion Control/Tutorials/Setting up an IDE | Setting up an IDE ]]<br />
# [[ Embedded_Motion_Control/Tutorials/Setting_up_the_PICO_simulator_2015 | Setting up the PICO simulator ]]<br />
# [[ Embedded_Motion_Control/Tutorials/Towards an autonomous robot | Towards an autonomous robot ]]<br />
# [[ Embedded_Motion_Control/Tutorials/Obtaining laser and odometry data | Obtaining laser and odometry data ]]<br />
# [[ Embedded_Motion_Control/Tutorials/Sharing your project through git | Sharing your project through git ]]<br />
# [[ Embedded_Motion_Control/Using_Pico | Testing on the real robot and recording data]]<br />
<!--<br />
<br />
# .. More tutorials coming up ..!<br />
<br />
<br />
# [[ Embedded Motion Control/Tutorials/Using Subversion to share and manage your project | Using Subversion to share and manage your project ]]<br />
# [[ Embedded Motion Control/Tutorials/Building a ROS package | Building a ROS package ]]<br />
# On the [http://wiki.ros.org/ROS/Tutorials ROS tutorials page], do tutorials 5 ([http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes Understanding ROS Nodes]) to 17 ([http://wiki.ros.org/ROS/Tutorials/Recording%20and%20playing%20back%20data Recording and playing back data]), but '''keep this in mind''':<br />
#* If you can choose between ''rosbuild'' and ''catkin'', select '''rosbuild'''<br />
#* If you can choose between ''C++'' and ''Python'', select '''C++'''<br />
#* Whenever the tutorial refers to the ''beginners_tutorial'' ROS package, use the name of the package you created above instead (that is, ''beginners_tutorial_<YOUR_NAME>''). Of course, you can use TAB completion when possible.<br />
#* The path to your ROS package differs from the path in the ROS tutorials<br />
# [[ Embedded Motion Control/Tutorials/Setting up an IDE | Setting up an IDE ]]<br />
# [[ Embedded Motion Control/Tutorials/Setting up the PICO simulator | Setting up the PICO simulator ]]<br />
<br />
# [[ Embedded Motion Control/Tutorials/Creating your first PICO-related ROS package | Creating your first PICO-related ROS package ]]<br />
<br />
Learn about ROS concepts on the ROS tutorial page. Start [http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes here] and continue up until the tutorial '''Using RosEd'''<br />
# [[ Embedded Motion Control/Tutorials/Understanding ROS nodes | Understanding ROS nodes ]]<br />
# [[ Embedded Motion Control/Tutorials/Understanding ROS topics | Understanding ROS topics ]]<br />
# [[ Embedded Motion Control/Tutorials/Understanding ROS services and parameters | Understanding ROS services and parameters ]]<br />
# [[ Embedded Motion Control/Tutorials/Using rqt_console and roslaunch | Using rqt_console and roslaunch ]]<br />
# [[ Embedded Motion Control/Tutorials/Using rosed to edit files in ROS | Using rosed to edit files in ROS ]]<br />
# [[ Embedded Motion Control/Tutorials/Creating a ROS msg and srv | Creating a ROS msg and srv ]]<br />
# [[ Embedded Motion Control/Tutorials/Writing a simple publisher and subscriber | Writing a simple publisher and subscriber ]]<br />
# [[ Embedded Motion Control/Tutorials/Examining the simple publisher and subscriber | Examining the simple publisher and subscriber ]]<br />
# [[ Embedded Motion Control/Tutorials/Writing a simple service and client | Writing a simple service and client ]]<br />
# [[ Embedded Motion Control/Tutorials/Examining the simple service and client | Examining the simple service and client ]]<br />
# [[ Embedded Motion Control/Tutorials/Recording and playing back data | Recording and playing back data ]]<br />
--></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18110MRC/Using Pico2015-05-06T11:58:22Z<p>S080518: /* Starting Pico */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.<br />
# '''From here on, you should work on your laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18109MRC/Using Pico2015-05-06T11:53:37Z<p>S080518: /* Visualization */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal and type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18108MRC/Using Pico2015-05-06T11:52:27Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18107MRC/Using Pico2015-05-06T11:52:15Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre>Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre><br />
you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre> What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18106MRC/Using Pico2015-05-06T11:51:51Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre><br />
Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre><br />
you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<pre>scp emc@<robot_name>:~/<filename> <filename></pre><br />
What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18105MRC/Using Pico2015-05-06T11:51:15Z<p>S080518: /* Recording data */</p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and log in to the robot <br />
<pre>ssh<robot name></pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <br />
<pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <br />
<pre>rosbag record topic_1 topic_2</pre><br />
Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <br />
<pre>ls</pre><br />
you can see it amongst the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering<br />
<pre>scp emc@<robot_name>:~/<filename> <filename></pre><br />
What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name.<br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18103MRC/Using Pico2015-05-06T11:24:34Z<p>S080518: </p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal and make sure the terminal listens to the robot's topics: <pre><robot name>-core</pre><br />
# Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry) by using <pre>rostopic list</pre><br />
# You can now use the rosbag tool to record the topics you like: <pre>rosbag record topic_1 topic_2</pre> Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording '''a lot''' of unnecessary data), you could use the option -a instead of typing in all of the topic names.<br />
# The bag file you just recorded is now in the current directory, so if you enter <pre>ls</pre> you can see it amongst the other files in the current directory. You can now copy this file to a USB drive or on a server. Which one, Sjoerd? <br />
# Once copied to your own PC, you can play the bag file using this command <pre>rosbag play <filename></pre> This will publish the topics that were recorded as if you are currently running that experiment.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Using_Pico&diff=18102MRC/Using Pico2015-05-06T10:03:15Z<p>S080518: </p>
<hr />
<div>== Starting Pico ==<br />
To start Pico or Taco please follow the following steps:<br />
# Power on the robot<br />
#* For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer<br />
#* For Taco, the on-off switch is on the outer edge of the base. Also start the laptop, if it is not already on (you don't need to log in).<br />
# '''From here on, you should work on the operator laptop.''' Open a terminal and type <pre>ssh<robot name></pre> where <robot name> is either pico or taco, depending on which robot you want to use. Using this command, you login on the robot's computer; the password is again '''emc'''. You are now working directly on the robot's computer through the WiFi.<br />
# Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter <br />
#* For Pico: <pre>pstart</pre><br />
#* For Taco: <pre>tstart</pre><br />
# '''N.B. leave this terminal open! '''<br />
<br />
== Running your software ==<br />
Pico/Taco is now up and running. To run your own software follow these steps:<br />
# Open a '''new''' terminal and login to your robot again: <pre>ssh<robot name></pre> with password '''emc'''.<br />
# Go to your group's folder: <pre>cd ~/groups/emc<group number></pre><br />
# The rest works the same as on your own PC. <br />
#* The first time, you will have to clone your git project on the robot's computer: <pre>git clone http://roboticssrv.wtb.tue.nl:8800/emc<group number>/my_project.git shared_project</pre> Of course with your own group number, project name etc. Just like you did on the PCs of the group members.<br />
#* Any next time you can just navigate to your group's folder and <pre>git pull</pre><br />
#* Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.<br />
<br />
== Visualization ==<br />
When you want to visualize the robot while testing, you can do the following<br />
# Open a new terminal<br />
# Type <pre><robot name>-core</pre> This makes sure that any software you run in this terminal listens to the ros-master on your robot.<br />
# So if you now run our visualization software by entering <pre>emc-viz</pre> it will subscribe to the topics published on the robot.<br />
<br />
== Recording data ==<br />
A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they create rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.<br />
# The first step is again to open a terminal<br />
# Almost done...</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials/Sharing_your_project_through_git&diff=18101MRC/Tutorials/Sharing your project through git2015-05-06T09:28:07Z<p>S080518: /* Share a project */</p>
<hr />
<div>= Introduction =<br />
<br />
Creating a software solution together means sharing a project, which in our case means sharing code. We will be using [http://git-scm.com/ ''git''] for this. Git is "a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency":<br />
<br />
* ''version control'' means that the files and changes you make to them are 'tracked' over time, ''i.e.'', their 'history' is stored. You can always go back to previous version, show the difference since a certain point in time, etc.<br />
* ''distributed'' means that you don't necessarily need a central server to store your changes. Every team member has the full history available, and can always stored his changes and go back to previous versions, even if he or she is off-line. However, note that we will use a central server every team member stores his or her changes to, and loads the changes others made from.<br />
<br />
<br />
The first part of the tutorial shows how to initialize a git repository and how to store your local changes to the server. However, imagine that this may soon become a mess if every team member will do so. Therefore, it is advised that only one team member actually runs all the commands in this tutorial, but it is strongly recommended for the others to ''also'' take a good look and understand the different steps and commands.<br />
<br />
= Telling git who you are =<br />
<br />
Before you start using git, you have to tell git who you are. That way, git can 'stamp' all the changes you make with your name and email address. That way it is easy to keep track of who did what, and when. Just run the following (with your real name and email address):<br />
<br />
<pre>git config --global user.name "Put your name here"</pre><br />
<br />
<pre>git config --global user.email "Put your email address here"</pre><br />
<br />
= Intializing a git repository =<br />
<br />
Navigate to your project directory. For this tutorial, we will use '~/emc/my_project', but if you renamed your project in the meantime (which is actually advisable), use that name instead.<br />
<br />
<pre>cd ~/emc/my_project</pre><br />
<br />
Turn the directory into a git repository:<br />
<pre>git init</pre><br />
<br />
It's that easy! Now let's have a look at the current status of the git repository. Run:<br />
<pre>git status</pre><br />
<br />
You will see a list of untracked files, e.g., something like this:<br />
<pre><br />
Untracked files:<br />
(use "git add <file>..." to include in what will be committed)<br />
<br />
CMakeLists.txt<br />
bin/<br />
build/<br />
src/<br />
</pre><br />
<br />
''Untracked'' means that these files are not under git version control. Note that we only want some of the files to be ''tracked'' by git. For example, the ''bin'' and ''build'' folder are automatically generated by CMake and compilation. We should therefore only add the ''source'' files, and the ''CMakeLists.txt'' (and possibly other files that you want to share). To make sure git will keep track of these files, use ''git add'':<br />
<br />
<pre>git add src CMakeLists.txt</pre><br />
<br />
Now, run ''git status'' again. You should see something like this:<br />
<br />
<pre><br />
Changes to be committed:<br />
(use "git rm --cached <file>..." to unstage)<br />
<br />
new file: CMakeLists.txt<br />
new file: src/example.cpp<br />
<br />
Untracked files:<br />
(use "git add <file>..." to include in what will be committed)<br />
<br />
bin/<br />
build/<br />
</pre><br />
<br />
As you can see, you now have some 'changes to be committed'. Committing means we store the added files as they are now. From that point on we can make new modifications, and we can always roll back to this version, see the changes since this version, ''and'', we can share the changes with others. To commit the changes:<br />
<br />
<pre>git commit -m 'Type a meaningful sentence here'</pre><br />
<br />
The part after '-m' is the ''commit message''. It is important that this message is a meaningful message that describes what the added changes are, for example 'fixed this-and-this bug' or 'added this-and-this feature'. That way, you can look in the 'git log' and easily see what was added when, and to which version you need to roll back if you have to.<br />
<br />
So, we have commited our changes. Let's see the status using ''git status''. It no longer indicates any changes. That is correct, we just committed them! Now, have a look at the git log:<br />
<br />
<pre>git log</pre><br />
<br />
It outputs an overview of who committed what and when. You should see your name and commit message, and some long code with letters and numbers. This is a ''commit hash'', and can be thought of as a unique id for this commit.<br />
<br />
= Storing your changes on the server =<br />
<br />
Alright, you work is now safely stored on your computer. You can make changes, and commit these as well (remember, first use 'git add', then 'git commit'). But you also want to share these changes with your team mates!<br />
<br />
Well, we have put up a git server such that you can store your projects in a safe place. You should have received an email with a username and password. Now:<br />
<br />
* Browse to http://roboticssrv.wtb.tue.nl:8800/<br />
* Log-in using the username and password you received<br />
* Change your password: Profile (upper-right corner) -> Password (tab) '''and make sure to tell your team mates!'''<br />
<br />
<br />
You are logged into 'GitLab', a very nice open-source git server that allows you to create new git repositories and manage them through a web interface. You won't have to use it much. Just now to create a new repository. To do so (while being logged in):<br />
<br />
* Click on 'New Project' (the 'plus' icon in upper-right corner)<br />
* Set the project name<br />
* Leave visibility level to Private<br />
* Click 'Create project'<br />
<br />
<br />
That's it! You have create a repository on the server. We can now push the local commits you made so far to this project. Once we've done that, the commits are also safely stored on the server. So, let's do this!<br />
<br />
First, we need to tell git where it has to store the commits. The online git project you just created has unique URL. This URL depends on the name of your project you created in GitLab. If your group number is 1, and the project was called 'my_project', you can set the URL of your local git repository as follows:<br />
<br />
<pre>git remote add origin http://roboticssrv.wtb.tue.nl:8800/emc01/my_project.git</pre><br />
<br />
So, we've told the git repository where it should send the commits to (and where it can pull them from later). But we still have to tell git to actually send them there. This is called 'pushing'. The first time you push commits to the server, you have to use this command:<br />
<br />
<pre>git push -u origin master</pre><br />
<br />
and enter your username and password (emc... and the password you received in the email, if you did not change it yet).<br />
<br />
We won't go into details here, but the command basically states that the current commits should be send to the origin (of which we set the URL above) and that the git repository should 'keep an eye' on what happens on the server. This means that if one of your team mates also pushes commits to this address, we can 'pull' them to your local repository. This is exactly how the synchronization works. You push your changes, and pull changes that others made.<br />
<br />
Now, make a small change to one of the files. Then if you run 'git status', you will see which file was modified. If you type 'git diff' you can see the actual changes. Quite useful, isn't it!<br />
<br />
Again, you can commit the change once you've done something useful, but first you need to tell git again which files you want to commit by using 'git add'. Then once you've created the commit, you can push it to the server, this time simply using 'git push'. So, to sum up:<br />
<br />
# Make your changes<br />
# Add the files of which you want to commit the changes:<pre>git add ...</pre><br />
# Commit your changes:<pre>git commit -m '... message ...'</pre><br />
# Push your changes to the server: <pre>git push</pre>(the '-u' stuff is no longer necessary)<br />
<br />
= Share a project =<br />
<br />
Up until now, you have seen how you can commit your changes to the server, but it is not very useful if you cannot share your changes with your teammates. Well, sharing is easy in git! Instead of creating their own project, they can get a local copy of the repository you created in GitLab (and to which you pushed your local commits). This is called 'cloning', and works as follows (change the URL to the correct project url)<br />
<br />
<pre>cd ~/emc<br />
git clone http://roboticssrv.wtb.tue.nl:8800/emc01/my_project.git shared_project<br />
</pre><br />
<br />
This will create a directory called 'shared_project' in which you will find the files that someone else committed. Have a look at the git log, and you see who committed what.<br />
<br />
Now, this is just a normal git repository to which you can make changes, commit and from which you can push your commits to the server. It is advised that ''one'' person in the group creates a project and corresponding git repository, and that the others clone it.<br />
<br />
One thing is not yet explained, and that is how you can get the changes that others pushed to the server since you cloned it. Well, it's easy:<br />
<br />
<pre>git pull</pre><br />
<br />
This will 'pull in' the latest commits and your files will be updated accordingly. Note that this won't work if you have modified files, ''i.e.'' file changes that you have not yet committed. You don't want these changes to be overwritten by a 'pull', so git doesn't allow it. To get the latest changes, you have to commit your changes and try pulling again.<br />
<br />
= Recap =<br />
<br />
The tutorial above showed how to create a repository in Gitlab, how to push changes to it, and how to pull changes from it. From now on, keep working in this directory and commit all your changes, and pull the changes from your team members.</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18008Embedded Motion Control 20152015-05-01T12:23:55Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups''<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 12 - [[Embedded Motion Control 2015 Group 12 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 13 - [[Embedded Motion Control 2015 Group 13 | visit wiki ]] - '''Tutor''':<br />
<br />
= Pico test schedule =<br />
In order to test your software on the Pico robot, each group has one one hour time slot a week available.<br />
You can reserve your test slot in the table below.<br />
<br />
Please charge the robots whenever possible so there is no down time due to empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 18'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 06-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 06-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 06-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 06-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 06-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 06-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 07-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 07-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 07-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 08-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 08-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 08-05-2014 || 15:20 - 16:20 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 11-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 11-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 11-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 11-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 11-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 12-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 12-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 12-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 12-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 12-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 16:30 - 17:30 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18007Embedded Motion Control 20152015-05-01T12:22:39Z<p>S080518: /* Pico test schedule */</p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups''<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 12 - [[Embedded Motion Control 2015 Group 12 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 13 - [[Embedded Motion Control 2015 Group 13 | visit wiki ]] - '''Tutor''':<br />
<br />
= Pico test schedule =<br />
In order to test your software on the Pico robot, each group has one one hour time slot a week available.<br />
You can reserve your test slot in the table below.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 18'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 06-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 06-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 06-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 06-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 06-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 06-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 07-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 07-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 07-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 08-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 08-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 08-05-2014 || 15:20 - 16:20 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 11-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 11-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 11-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 11-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 11-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 12-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 12-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 12-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 12-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 12-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 16:30 - 17:30 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015&diff=18006Embedded Motion Control 20152015-05-01T12:22:06Z<p>S080518: </p>
<hr />
<div><div align="center"><br />
<font size="5">Guide towards the assignment</font><br /><br />
<font size="4">'A-MAZE-ING PICO'</font><br />
</div><br />
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]<br />
<br />
----<br />
<br />
= Introduction =<br />
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.<br />
<br />
= Course Schedule and Lecture Slides =<br />
<br />
Lectures will be given on Wednesdays from 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"<br />
|-<br />
| width="150" | April 22<br />
| width="325" | Introduction<br />
| width="325" | <br />
|-<br />
| April 29<br />
| [[Media:20150429-EMC-TUe-CompositionPattern-nup.pdf | Composition pattern part I by ''Herman Bruyninckx'']]<br />
| [[Media:Emc-2015-04-29-tools-and-infrastructure.pdf | Tooling and Infrastructure by ''Sjoerd van den Dries'']]<br />
|-<br />
| May 6<br />
| First presentation of the design by ''groups''<br />
|-<br />
| May 13<br />
| colspan="2" | '''Corridor competition'''<br />
|-<br />
| May 20<br />
| Composition Pattern part II by ''Herman Bruyninckx''<br />
|-<br />
| May 27<br />
| Second presentation of the design by ''groups''<br />
|-<br />
| June 3<br />
| colspan="2" | Communication patterns<br />
|-<br />
| June 10<br />
| Presentation of final design by ''groups''<br />
|-<br />
| June 17<br />
| colspan="2" | '''Final competition'''<br />
|-<br />
|}<br />
<br />
<br />
<br />
= Assignment =<br />
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. Please note:<br />
<br />
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.<br />
* Of course, things may still go wrong. If so, do not hesitate to contact us.<br />
<br />
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.<br />
<br />
= FAQ =<br />
[[Embedded_Motion_Control_2015/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.<br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Embedded Motion Control 2015 Group 1 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 2 - [[Embedded Motion Control 2015 Group 2 | visit wiki ]] - '''Tutor''': Luis Ferreira <br />
<br />
Group 3 - [[Embedded Motion Control 2015 Group 3 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 4 - [[Embedded Motion Control 2015 Group 4 | visit wiki ]] - '''Tutor''': Sjoerd van den Dries<br />
<br />
Group 5 - [[Embedded Motion Control 2015 Group 5 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 6 - [[Embedded Motion Control 2015 Group 6 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 7 - [[Embedded Motion Control 2015 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 8 - [[Embedded Motion Control 2015 Group 8 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 9 - [[Embedded Motion Control 2015 Group 9 | visit wiki ]] - '''Tutor''': René van de Molengraft<br />
<br />
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven<br />
<br />
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 12 - [[Embedded Motion Control 2015 Group 12 | visit wiki ]] - '''Tutor''': <br />
<br />
Group 13 - [[Embedded Motion Control 2015 Group 13 | visit wiki ]] - '''Tutor''':<br />
<br />
= Pico test schedule =<br />
In order to test your software on the Pico robot, each group has one one hour time slot a week available.<br />
You can reserve your test slot in the table below.<br />
<br />
N.B. please charge Pico when you are not driving around, so there will be no downtime because of empty batteries.<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 18'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 06-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 06-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 06-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 06-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 06-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 06-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 07-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 07-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 07-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 08-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 08-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 08-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 08-05-2014 || 15:20 - 16:20 || <br />
|-<br />
|}<br />
<br />
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: gray;"<br />
|+ '''Week 19'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 11-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 11-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 11-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 11-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 11-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 8:30 - 9:30 || <br />
|-<br />
| 12-05-2014 || 9:40 - 10:40 || <br />
|-<br />
| 12-05-2014 || 10:50 - 11:50 || <br />
|-<br />
| 12-05-2014 || 13:00 - 14:00 || <br />
|-<br />
| 12-05-2014 || 14:10 - 15:10 || <br />
|-<br />
| 12-05-2014 || 15:20 - 16:20 || <br />
|-<br />
| 12-05-2014 || 16:30 - 17:30 || <br />
|-<br />
|}<br />
<div style="clear:both"></div><br />
<br />
= Group Final Presentations =<br />
<br />
To be added...<br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2015/Contact_Details}}</div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Map&diff=16603Robotics Lab Map2014-12-01T14:22:53Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Floor plan Robotics Lab</h1><br />
[[File:Floorplan_robotics_lab.png]]<br />
<br />
<table width="100%"><br />
<tr><br />
<td width="25%"><br />
<b>1: Jesse Scholtes</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.scholtes@tue.nl j.scholtes@tue.nl]</li><br />
<li><b>Computer(s):</b> laptop </li><br />
<li><b>Type:</b> project management </li><br />
<li><b>Availability:</b> Mo. / Thu. / Fri. </li><br />
</ul><br />
<b>2: Herman Bruyninckx</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:Herman.Bruyninckx@mech.kuleuven.be Herman.Bruyninckx@mech.kuleuven.be] </li><br />
<li><b>Computer(s):</b> Laptop </li><br />
<li><b>Type:</b> Prof. </li><br />
<li><b>Availability:</b> Mostly on Monday's </li><br />
</ul><br />
<b>3: Henri Boessenkool</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:H.Boessenkool@tue.nl H.Boessenkool@tue.nl]</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>4: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> ~ </li><br />
</ul><br />
<b>5: Luis Ferreira</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:ferreira9999@gmail.com ferreira9999@gmail.com]</li><br />
<li><b>Computer(s):</b> CST 108 - (HP Z220)</li><br />
</ul><br />
<b>6: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>7: ~ </b><br />
<ul><br />
<li><b>E-mail:</b> ~ </li><br />
<li><b>Computer(s):</b> BTO laptop (athome5)</li><br />
</ul><br />
<b>8: Sjoerd van den Dries</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:s.v.d.dries@tue.nl s.v.d.dries@tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>9: Janno Lunenburg</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:J.J.M.Lunenburg@tue.nl J.J.M.Lunenburg@tue.nl]</li><br />
<li><b>Computer(s):</b> dct-nb73, athome6</li><br />
</ul><br />
<b>10: Jos Elfring</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.elfring@tue.nl j.elfring@tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>11: Erik Geerts</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:e.g.geerts@student.tue.nl e.g.geerts@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST107 (HP Z220)</li><br />
</ul><br />
<b>12: Rokus Ottervanger</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.a.ottervanger@student.tue.nl r.a.ottervanger@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST64 (xw4600) + CST110 (HP Z220)</li><br />
</ul><br />
<b>13: Jean-Pierre Denissen</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.w.c.j.denissen@student.tue.nl j.w.c.j.denissen@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>14: Yifan Zhu </b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.zhu@student.tue.nl y.zhu@student.tue.nl] </li><br />
<li><b>Computer(s):</b> ~ </li><br />
</ul><br />
<b>15: Ton Peters</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:t.m.c.peters@student.tue.nl t.m.c.peters@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST96 (HP Z210)</li><br />
</ul><br />
<b>16: Ramon Wijnands</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.w.j.wijnands@student.tue.nl r.w.j.wijnands@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST70 (HP Z200)</li><br />
</ul><br />
<b>17: Rein Appeldoorn</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.p.w.appeldoorn@student.tue.nl r.p.w.appeldoorn@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST85 (HP Z220)</li><br />
</ul><br />
<b>18: Max Baeten</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:m.j.j.baeten@student.tue.nl m.j.j.baeten@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST73 (HP Z200)</li><br />
</ul><br />
<b>19: Marc Meijs</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:m.j.meijs@student.tue.nl m.j.meijs@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST86 (HP Z200)</li><br />
</ul><br />
<b>20: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> Rekenbeest (Custom) + DCT63 (HP Z200)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>21: Jimmy van den Heuvel</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.v.d.heuvel@student.tue.nl j.v.d.heuvel@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST71 (HP Z200)</li><br />
</ul><br />
<b>22: Ric Jacobs</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:h.c.m.jacobs@student.tue.nl h.c.m.jacobs@student.tue.nl]</li><br />
<li><b>Computer(s):</b> DCT27 (Dell Optiplex 960) + CST39 (HP XW4600)</li><br />
</ul><br />
<b>23: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>24: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> -</li><br />
</ul><br />
<b>25: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>26: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>27: Bernadette Tijdink</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:b.t.m.tijdink@student.tue.nl b.t.m.tijdink@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST101 (HP Z220) + ?</li><br />
</ul><br />
<b>28: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> CST104 (HP Z220)</li><br />
</ul><br />
<b>29: Ingrid van Haaren</b><br />
<ul><br />
<li><b>E-mail:</b> i.m.h.v.haaren@student.tue.nl</li><br />
<li><b>Computer(s):</b> CST100 (HP Z210)</li><br />
</ul><br />
</td><br />
<td width="25%"><br />
<b>30: Anne Krus</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:a.m.krus@student.tue.nl a.m.krus@tue.nl]</li><br />
<li><b>Computer(s):</b> CST85 (HP Z200)</li><br />
</ul><br />
<b>31: Joost Groenen</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:j.p.j.groenen@student.tue.nl j.p.j.groenen@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST91 (HP Z210)</li><br />
</ul><br />
<b>32: Sander van Zundert</b><br />
<ul><br />
<li><b>E-mail:</b> </li><br />
<li><b>Computer(s):</b> </li><br />
</ul><br />
<b>33: Yanick Douven</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:y.g.m.douven@student.tue.nl y.g.m.douven@student.tue.nl]</li><br />
<li><b>Computer(s):</b> CST105 (HP Z220)</li><br />
</ul><br />
<b>34: Martijn Timmermans</b><br />
<ul><br />
<li><b>E-mail:</b> m.timmermans@student.tue.nl</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>35: Frank Botden</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:f.j.b.m.botden@student.tue.nl f.j.b.m.botden@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>36: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>37: ~</b><br />
<ul><br />
<li><b>E-mail:</b> ~</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
<b>38: Robin Soetens</b><br />
<ul><br />
<li><b>E-mail:</b> [mailto:r.p.t.soetens@student.tue.nl r.p.t.soetens@student.tue.nl]</li><br />
<li><b>Computer(s):</b> ~</li><br />
</ul><br />
</td><br />
</tr><br />
</table><br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab_Inventory&diff=16522Robotics Lab Inventory2014-11-27T14:06:29Z<p>S080518: </p>
<hr />
<div><div style="width: 80%; float: left;"><br />
<h1>Computers</h1><br />
<br />
<h2>Dell Optiplex 960</h2><br />
<br />
<ul><br />
<li>Dell Optiplex 960 - Ric Jacobs</li><br />
</ul><br />
<br />
<h2>HP XW4600</h2><br />
<br />
<ul><br />
<li>CST64 - Pieterjan van Gastel</li><br />
<li>CST39 - Ric Jacobs</li><br />
</ul><br />
<br />
<h2>HP Z200</h2><br />
<br />
<ul><br />
<li>CST70 - Ramon Wijnands</li><br />
<li>CST73 - Max Baeten</li><br />
<li>CST86 - FREE</li><br />
<li>DCT63 - Teun Derksen</li><br />
<li>CST71 - Jimmy van den Heuvel</li><br />
<li>CST85 - ...</li><br />
</ul><br />
<br />
<h2>HP Z210</h2><br />
<br />
<ul><br />
<li>CST99 - Foad S Farimani</li><br />
<li>CST96 - Bas Coenen</li><br />
<li>CST100 - FREE</li><br />
<li>CST91 - Joost Groenen</li><br />
</ul><br />
<br />
<h2>HP Z220</h2><br />
<br />
<ul><br />
<li>CST108 - Luis Ferreira</li><br />
<li>CST107 - Erik Geerts</li><br />
<li>DCT85 - Rein Appeldoorn</li><br />
<li>CST101 - Bernadette Tijdink</li><br />
<li>CST104 - FREE</li><br />
<li>CST110 - Rokus Ottervanger</li><br />
<li>CST105 - Yannick Douven</li><br />
</ul><br />
<br />
<h2>Custom</h2><br />
<br />
<ul><br />
<li>Shuttle - Ziyang Li</li><br />
<li>Rekenbeest - Teun Derksen</li><br />
</ul><br />
<br />
</div><div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>S080518https://cstwiki.wtb.tue.nl/index.php?title=Hexapod&diff=9794Hexapod2014-06-02T22:17:55Z<p>S080518: /* Reports */</p>
<hr />
<div>= To Do List =<br />
<br />
Main objectives:<br />
* Jump around! ('''Rokus and Marcello''')<br />
<br />
<br />
<br />
Secondary objectives and tweaks:<br />
<br />
* Rewrite everything in one OROCOS component <br />
* Use Matlab/Simulink <br />
* Use fifth order reference trajectories for gait implementation ('''Marcello''') -'''done'''<br />
* Create reference for jumping ('''Rokus''') - '''done'''<br />
* Improve ground contact robustness<br />
* Improve height estimation<br />
* Create centralized kinematics and reference components (without need for demux and mux) for better synchronisation between legs<br />
* Measuring if the software is now really running real time using an oscilloscope<br />
* Attain some namespace convention and make sure all existing software uses this convention<br />
* Convert spatial reference velocity and acceleration to joint reference velocity and acceleration for use in feedforward<br />
<br />
Furthermore:<br />
<br />
* Document all existing Orocos components with input, output and algorithm<br />
* Document launch and deploy files, including their use and started components. Delete obsolete launch and deploy files.<br />
<br />
= Installation =<br />
The installation assumes that Ubuntu 12.04 LTS is installed. If not you should install an Ubuntu version. Notice that the version of Ubuntu determines line 3 in the following code i.e. precise.<br />
<pre><br />
# Setup your computer to accept software from ROS.org<br />
# 12.04 (precise)<br />
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'<br />
<br />
# Set up your keys<br />
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -<br />
<br />
# Installation<br />
sudo apt-get update<br />
sudo apt-get install ros-fuerte-desktop-full<br />
sudo apt-get install ros-fuerte-orocos-toolchain<br />
sudo apt-get install ros-fuerte-rtt-common-msgs<br />
<br />
# Create your personal ros directory<br />
mkdir ~/ros_personal<br />
<br />
echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc<br />
echo "export ROS_PACKAGE_PATH=/opt/ros/fuerte/stacks:~/ros_personal" >> ~/.bashrc<br />
echo "export RTT_COMPONENT_PATH=/opt/ros/fuerte/stacks/orocos_toolchain/install/lib/orocos" >> ~/.bashrc<br />
echo "source /opt/ros/fuerte/stacks/orocos_toolchain/env.sh" >> ~/.bashrc<br />
. ~/.bashrc<br />
<br />
# Build SOEM<br />
cd ~/ros_personal<br />
git clone http://git.mech.kuleuven.be/robotics/soem.git<br />
cd soem<br />
git checkout origin/electric<br />
rosmake soem<br />
<br />
# Build hexapod<br />
cd ~/ros_personal<br />
svn checkout http://hexapod.wtb.tue.nl/svn/hexapod ./hexapod<br />
roscd hexapod<br />
rosrun rtt_rosnode create_rtt_msgs hexapod_msgs<br />
rosmake<br />
<br />
# You still should get<br />
## (1) pr2_spring_transmission_example<br />
## (2) rtt_generic_components (from the amigo trunk, ask with the amigo team)<br />
</pre><br />
It is possible to put the code in a shell-file and run it.<br />
<br />
= SVN =<br />
The code can be found on: http://hexapod.wtb.tue.nl/svn/hexapod/.<br />
<br />
To obtain an account you should contact Patrick van Brakel.<br />
To keep the svn clean i.e. no build, bin or lib files do the following:<br />
<pre><br />
sudo gedit /etc/subversion/config <br />
</pre><br />
Uncomment, by removing the '#' and add<br />
<pre><br />
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo<br />
*.rej *~ #*# .#* .*.swp .DS_Store lib build bin .tb_history msg_gen srv_gen<br />
</pre><br />
<br />
= Hardware =<br />
The TU/e hexapod is a six legged robot with compliant joints. The compliance is obtained by using torsional springs between the actuators and the joints. The motors as well as the joints have absolute encoders. From the difference between these readings, the torsion in the springs can be calculated. <br />
<br />
There are three main PCBs on the robot. The PCB inside the bottom of the robot (data acquisition module or DAM1) communicates with a computer. This can be the on board computer or an external pc. It is also equipped with an IMU that can measure pitch and roll angles, roll rates about three axes and acceleration along three axes. Furthermore, it receives power directly from the battery or external power supply and feeds it to the other boards.<br />
<br />
== Start-up ==<br />
The PCB on top of the robot (DAM 2) translates the signals it receives from a controller to electric currents for the actuators. <br />
The middle PCB is the on board computer on which it is possible to run the robot's software. <br />
<br />
To power the hardware, there is a 24V connection on the bottom of the robot. There is a possibility to connect one of the LiPo battery packs or alternatively to wire the robot to a laboratory power supply. When connecting a power supply, make sure the current is not limited too much (you need more than 3A, 10A should be enough. Alternatively, wiring a capacitor in parallel is an option). Once this is connected, the DAM 1 can be started using the small red button that is connected to two loose wires and after that, pressing the large white button on top starts DAM 2.<br />
<br />
Connection to a computer, either the on board one or an off board pc, can be established using the "In" port on the piggyback EtherCAT board on the DAM 2. The "out" port should be connected to the "Out" port on DAM 1.<br />
<br />
= Software =<br />
The software on the SVN contains, among other things, a Gazebo model and control programs that communicate with the hardware through SOEM-drivers. A basic structure of the software is shown in the figure below. The grey components are not used, the grey components with grey text are not (yet) implemented.<br />
<br />
[[File:ControlLoop2.png|800px|The basic control structure for the Hexapod.]]<br />
<br />
= Simulator =<br />
For simulation purposes, the [http://gazebosim.org/ Gazebo] simulator is adopted. <br />
As a first step, proceed with the installation following the instructions [http://gazebosim.org/wiki/Install here]. Choose the latest stable release.<br />
<br />
It's important to specify the robot model in the SDF format. The *.urdf.xacro format is no longer supported. To convert such a file, a script is available in the repository. Once you have defined the correct filename of the model to be converted, type<br />
<pre><br />
roscd hexapod_model/models/scripts<br />
source update.bash<br />
</pre><br />
== Hierarchy convention ==<br />
The folder tree has this structure: <br />
* '''hexapod_model'''<br />
** '''model_name'''<br />
*** hexapod.world ("launch" file)<br />
*** model.config<br />
*** model.sdf<br />
*** model.urdf<br />
*** meshes<br />
*** '''plugins'''<br />
**** '''build'''<br />
<br />
== Plugins ==<br />
Gazebo plugins are lines of code compiled as a shared library and inserted into the simulation. The plugins have direct access to all the functionality of Gazebo through the standard C++ classes. <br />
They are used to load models, control the robot, etc.<br />
From gazebosim.org:<br />
<blockquote>Each plugin type is managed by a different component of Gazebo. For example, a Model plugin is attached to and controls a specific model in Gazebo. Similarly, a World plugin is attached to a world, and a Sensor plugin to a specific sensor. The System plugin is specified on the command line, and loads first during a Gazebo startup. This plugin gives the user control over the startup process.</blockquote><br />
<br />
Write your plugin_name.cpp in the hexapod_model/model_name/plugins folder. Then edit the CMakeLists.txt so that it looks like this:<br />
<br />
<pre>cmake_minimum_required(VERSION 2.8 FATAL_ERROR)<br />
include (FindPkgConfig)<br />
if (PKG_CONFIG_FOUND)<br />
pkg_check_modules(GAZEBO gazebo)<br />
endif()<br />
include_directories(${GAZEBO_INCLUDE_DIRS})<br />
link_directories(${GAZEBO_LIBRARY_DIRS})<br />
<br />
<br />
add_library(plugin_name SHARED plugin_name.cc)<br />
target_link_libraries(plugin_name ${GAZEBO_libraries})</pre><br />
<br />
As a next step, go in the plugins/build folder and build the library.<br />
<pre><br />
cmake ../<br />
make<br />
</pre><br />
<br />
It's important to define the models and the plugins that you want to load in your hexapod.world file. Here's its generic model:<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<sdf version="1.4"><br />
<world name="default"><br />
<include><br />
<uri>model://ground_plane</uri><br />
</include><br />
<br />
<include><br />
<uri>model://sun</uri><br />
</include><br />
<br />
<plugin name="plugin_name" filename="libplugin_name.so"/><br />
</world><br />
</sdf><br />
</pre><br />
<br />
It's important to set the GAZEBO_PLUGIN_PATH correctly, pointing to the shared libraries. To do so, edit your .bashrc file:<br />
<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_PLUGIN_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/''model_name''/plugins/build:${GAZEBO_PLUGIN_PATH}<br />
<br />
source ~/.bashrc<br />
</pre> <br />
<br />
To have more insight, follow the [http://gazebosim.org/wiki/Tutorials/1.9/plugins tutorial].<br />
<br />
== Model spawning ==<br />
The hexapod_model folder contains the models, each one with its ''model_name'' folder. <br />
<br />
It's important to set the GAZEBO_MODEL_PATH correctly, pointing to ''hexapod_model''. To do so, edit your bashrc file adding this line:<br />
<pre><br />
gedit ~/.bashrc<br />
<br />
#GAZEBO<br />
export GAZEBO_MODEL_PATH=$HOME/ros/hex/hexapod/trunk/hexapod/hexapod_model/:${GAZEBO_MODEL_PATH}<br />
<br />
source ~/.bashrc<br />
</pre><br />
<br />
= Getting Started =<br />
<br />
The 'SOEM_hexapod_drivers' package contains a launch file named 'start.launch'. This runs the basic interface of the hexapod robot. From the Soem process, it is possible to, for instance, read the encoder signals or write commands to the actuators, using the Slave_1001 service. The Slave_1002 service is the interface service of the IMU.<br />
<br />
The 'Hexapod_Launch' package contains much more launch files, which can be used for various purposes indicated in the names of these files. These launch files start orocos deploy scripts, which in turn may call other scripts. <br />
<br />
Some of the deploy scripts contain hard coded paths. Make sure to substitute them with your own. A shell file, rename.sh, was written to automatically do this, but be sure to change the path in this file to your own path. It is located in hexapod_launch. Another possible solution for the future is to seperate the scripts more clearly and call them in a launch file, in which ROS launch syntax can be used to avoid hard coding paths.<br />
<br />
== Launch files description ==<br />
<br />
== OROCOS components ==<br />
<br />
=== Hexapod Encoder ===<br />
<br />
This is the encoder component. It reads a message coming from the encoder port on the Soem board and outputs three different messages: a status, necessary for the actuators to be enabled, and a joint and actuator reading.<br />
<br />
[[File:HexapodEncoder.jpg|480px|center]]<br />
<br />
=== Hexapod Actuator ===<br />
<br />
This is the actuator component. It reads two messages at its input ports: the command message, that can be either 0 or 1, enables the actuators. The control message is what the motor is receiving and it's written to the output port of the component, connected with the Soem board.<br />
<br />
[[File:HexapodActuator.jpg|480px|center]]<br />
<br />
=== Hexapod Safety ===<br />
<br />
This is the safety block that handles the limits in the joints revolution such that motors and cables are not damaged. It enables/disables the motors according to that.<br />
<br />
[[File:HexapodSafety.jpg|480px|center]]<br />
<br />
=== Joint Error ===<br />
<br />
This component is the error block. It has 6 inputs for the six legs references, plus one additional input that reads the encoder to recover the actual joints positions. <br />
It computes the error and copies it to the output port.<br />
<br />
[[File:JointError.jpg|480px|center]]<br />
<br />
=== Hexapod IMU ===<br />
<br />
The IMU component is connected with the Soem Slave_1002 encoder port, and gives as output the roll and pitch angles plus three components of acceleration.<br />
<br />
[[File:HexapodIMU_-_1.jpg|480px|center]]<br />
<br />
=== Hexapod Height ===<br />
<br />
This component roughly computes the height of the robot from an average of the tip positions of the legs that are touching the ground. <br />
<br />
[[File:HexapodHeight_-_1.jpg|480px|center]]<br />
<br />
=== Ground Contact ===<br />
This component determines if the leg tips are touching the ground. The conditions that are used are the following:<br />
* The difference between the actuator encoder and the joint encoder is large enough and in the right direction for ground contact (This is very buggy as backlash in the gearheads and joints is in the same order of magnitude as the spring torsion);<br />
* The tip position is below the bottom of the robot (may be improved by adding the height and angle of the robot);<br />
<br />
An alternative for this Ground Contact component is to let the reference decide which feet should be touching the ground. This would be less buggy, but also less robust, because if the robot steps on something, this will not be perceived by the robot.<br />
<br />
[[File:GroundContact.png|thumb|540px|center|Structure of the Ground Contact component]]<br />
<br />
= Hopping = <br />
One of the main goals of the design of the TU/e Hexapod robot is for it to be able to run and/or jump. To achieve this, the idea is that the resonance frequency is utilized. The approach that is used, is the one proposed in <ref>Hopping at the Resonance Frequency: A Trajectory Generation Technique for Bipedal Robots with Elastic Joints, Ugurlu et al.</ref>. The authors of this article use 9 steps to generate a joint reference for a jumping robot. This method is adapted to work on a hexapod and applied here.<br />
<br />
== Determining the resonace frequency ==<br />
The first step in this approach is to determine the resonace frequency of the standing robot. In our case, this is done by making the robot stand up (up to position_3) and giving it a sudden push on the top, as a way of applying a delta function. As we are interested in the vertical displacement, and the IMU only gives accelerations, the vertical acceleration is measured. As a sinusoidal response is expected in the displacement, the second derivative should also be a sinusoid at the same frequency. This measurement is documented using a reporter component in OROCOS and the resulting data is imported into matlab to calculate the single sided amplitude spectrum.<br />
<br />
The resulting amplitude spectrum is shown in the figure on the right. A clear peak is visible at 4.0 Hz, which is a reasonable value for the resonance frequency, looking at the robot in practice. <br />
<br />
[[File:SSAS_Hexapod_vertical_mode_6.jpg|thumb|400px|Single-sided amplitude spectrum of the Hexapod in vertical oscillation mode with 6 legs on the ground.]]<br />
<br />
= Troubleshooting =<br />
* The Soem master could not initialize on eth1<br />
Make sure that you are connected to eth1 or otherwise change it in the *.ops file.<br />
To list the network ID's form your PC use the following command in the terminal:<br />
<br />
<pre><br />
ifconfig<br />
</pre><br />
<br />
* If the setcap cannot be found.<br />
Install the setcap.<br />
<br />
<pre><br />
sudo apt-get install libcap2-bin<br />
</pre><br />
<br />
* If the followin error occurs:<br />
<pre><br />
[ ERROR ][Soem] Could not initialize master on eth1<br />
</pre><br />
Set the permission for the deployer-gnulinux such that it can use ethernet.<br />
<br />
<pre><br />
roscd ocl<br />
cd bin<br />
sudo setcap cap_net_raw+ep ./deployer-gnulinux<br />
</pre><br />
<br />
* If, while running the orocos software, you are getting errors/warnings like <br />
<pre><br />
Actuator CF & FT disabled, difference act-jnt is too large"<br />
</pre><br />
or HexapodSafety will not start, giving a similar error.<br />
<br />
Stop and restart HexapodDriverEncoder while in position_init<br />
<br />
= Log =<br />
Log any hardware failure and/or breakdown here. After repair works, ALWAYS recalibrate the encoders! Look for hardware_calibration.ops in hexapod_launch.<br />
<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Mar 21 || Femur cable of leg 1 broke during testing of walking gait. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Mar 31 || Femur cable of leg 6 broke during testing of hopping/jumping. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 7 || Femur cable of leg 6 wrapped around the wrong slot during testing of new walking gait trajectory. Fixed by Speciaalmachinefabriek Ketels.<br />
|-<br />
| Apr 16 || Femur cable of leg 6 wrapped around the wrong slot during testing of jumping.<br />
|}<br />
<br />
= Useful references =<br />
Some interesting tips and tricks can be found on [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Software/tips_and_tricks the wiki of AMIGO]. Regarding realtime performance, also look at [http://servicerobot.cstwiki.wtb.tue.nl/index.php?title=Allow_OROCOS_to_work_(almost)_realtime this page]. For these links, an account for the AMIGO wiki is needed. This can be obtained with the AMIGO team.<br />
<br />
== Reports ==<br />
{| border="0" cellpadding="2"<br />
|-<br />
| Boris Mrkajic || Systems and Control Library Development || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Boris_Mrkajic.pdf pdf]<br />
|-<br />
| Max Baeten || Control of the Philips Experimental Robotic Arms using EtherCAT || [http://cstwiki.wtb.tue.nl/servicerobot/files/Free_Space_Report_Max_Baeten.pdf pdf]<br />
|-<br />
| Niek Bilterijst || Low Level Spindle Control of AMIGO || [http://cstwiki.wtb.tue.nl/servicerobot/files/LowLevelSpindleControlonAMIGO.pdf pdf]<br />
|-<br />
| Tim Clephas || Design and control of a service robot - ''The birth of AMIGO'' || [http://cstwiki.wtb.tue.nl/servicerobot/files/Final_Thesis_Tim_Clephas.pdf pdf]<br />
|-<br />
| R. Woering || Simulating the "first steps" of a hexapodal robot || [http://www.mate.tue.nl/mate/pdfs/12670.pdf pdf]<br />
|-<br />
| Jeroen Willems || Control of a hexapodal robot || [http://cstwiki.wtb.tue.nl/images/Willems_Hexapod_2011.pdf pdf]<br />
|-<br />
| Rokus Ottervanger || Reviving the Hexapod || [http://cstwiki.wtb.tue.nl/images/Ottervanger2014RevivingTheHexapod.pdf pdf]<br />
|}<br />
<br />
== References ==<br />
<br />
<references/><br />
<br />
= Timetable =<br />
*'''April'''<br />
** ''Week 1''<br />
*** Restore simulator<br />
**** Look into Gazebo/OROCOS online documentation<br />
**** Order the models <br />
**** Spawn the robot on new Gazebo 2.2 version<br />
** ''Week 2 & 3''<br />
*** Elaborate a simple model for the jumping dynamics<br />
** ''Week 4''<br />
*** Simulate the model and find torques to be sent to enable the jumping feature<br />
*'''May'''<br />
** ''Week 1''<br />
*** <br />
****<br />
** ''Week 2''<br />
*** <br />
**** <br />
** ''Week 3''<br />
<br />
** ''Week 4''<br />
<br />
*'''June'''<br />
** ''Week 1''<br />
*** Restore simulator<br />
****<br />
** ''Week 2''<br />
*** Implement feedforward when robot is in STATE_LAND<br />
**** Write suitable command to joint actuators<br />
** ''Week 3''<br />
<br />
** ''Week 4''</div>S080518