https://cstwiki.wtb.tue.nl/api.php?action=feedcontributions&user=20170140&feedformat=atomControl Systems Technology Group - User contributions [en]2024-03-29T10:40:06ZUser contributionsMediaWiki 1.39.5https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Connecting_to_file_server_via_samba&diff=98981RoPod/Tutorials/Connecting to file server via samba2020-06-09T14:54:37Z<p>20170140: </p>
<hr />
<div>= Connecting while on the tue-wpa2 network =<br />
For the ropod-project, a file server is created on the wtb-filer is created where all the hardware details are placed. It is protected, so in order to obtain specific details or the get access contact Cesar or Wouter. The location is <br />
<pre><br />
//wtbfiler.wtb.tue.nl/Control Systems Technology/Servicerobotica/5. ROPOD<br />
</pre><br />
<br />
From Linux, this filer can be accessed via [https://www.samba.org/ Samba]. First, ensure Samba is installed on your system:<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
<br />
Then, if you are connected to the tue-wpa2 connection, you should be able to access this folder via Files (or Nautilus) -> Connect to server (on the left part of your screen). Enter the following Server address<br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD<br />
</pre><br />
<br />
and provide your once requested. Here, your TUE-username and password are requested. Use "TUE" in the domain-field.<br />
<br />
You can also obtain access via the command line (replace username by the username of your TU/e-account):<br />
<pre><br />
smbclient "//wtbfiler.wtb.tue.nl/Control Systems Technology/" -W TUE -U "username"<br />
cd Servicerobotica/ropod<br />
</pre><br />
<br />
= Connecting via VPN =<br />
If not on the tue-wpa2 network, you need to connect to the tue-server via vpn first. You can follow the instructions from [https://www.win.tue.nl/bcf/diensten/netwerk/Vpn-tue-ubuntu1404.pdf this page] using vpn2.tue.nl, but the steps are slightly different for using Ubuntu 16.04. First, enter the following lines in order to be compatible with the Cisco-system by installing the "Cisco AnyConnect Compatible VPN (openconnect)"-package:<br />
<pre><br />
sudo apt-get install network-manager-openconnect network-manager-openconnect-gnome<br />
</pre><br />
<br />
Next, the following steps need to be applied:<br />
* Go to your connections dialog by clicking on your network icon<br />
* Select edit connections<br />
* click add<br />
* select Cisco AnyConnect Compatible VPN (openconnect)<br />
* Give a connection name, fill in vpn2.tue.nl at the "Gateway" and save.<br />
* Go back to your connection dialog, select vpn connections and click on the connection name you gave at the previous step<br />
* Select at Group number 2 (Tunnel TU/e traffic), fill in your username and password and click login. If everything is correct, your connection will be established.<br />
<br />
Now, the wtb-filer can be connected via both the file-manager as the terminal as mentioned above. The experience is that it is faster to access the folder via the terminal when connecting via the vpn. If the file manager is used, first connect to <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/<br />
</pre><br />
before navigating to the ropod-folder. Keep in mind that this takes a while (about half a minute to a minute)!<br />
<br />
CAD-files can be found at <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD/Mechanics/CadFiles/Workspaces/Workspace/CadFiles<br />
</pre></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Connecting_to_file_server_via_samba&diff=98980RoPod/Tutorials/Connecting to file server via samba2020-06-09T14:54:23Z<p>20170140: </p>
<hr />
<div>= Connecting while on the tue-wpa2 network =<br />
For the ropod-project, a file server is created on the wtb-filer is created where all the hardware details are placed. It is protected, so in order to obtain specific details or the get access contact Cesar or Wouter. The location is <br />
<pre><br />
//wtbfiler.wtb.tue.nl/Control Systems Technology/Servicerobotica/5. ROPOD<br />
</pre><br />
<br />
From Linux, this filer can be accessed via [https://www.samba.org/ Samba]. First, ensure Samba is installed on your system:<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
<br />
Then, if you are connected to the tue-wpa2 connection, you should be able to access this folder via Files (or Nautilus) -> Connect to server (on the left part of your screen). Enter the following Server address<br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD<br />
</pre><br />
<br />
and provide your once requested. Here, your TUE-username and password are requested. Use "TUE" in the domain-field.<br />
<br />
You can also obtain access via the command line (replace username by the username of your TU/e-account):<br />
<pre><br />
smbclient "//wtbfiler.wtb.tue.nl/Control Systems Technology/" -W TUE -U "username"<br />
cd Servicerobotica/ropod<br />
</pre><br />
<br />
= Connecting via VPN =<br />
If not on the tue-wpa2 network, you need to connect to the tue-server via vpn first. You can follow the instructions from [https://www.win.tue.nl/bcf/diensten/netwerk/Vpn-tue-ubuntu1404.pdf this page] using vpn2.tue.nl, but the steps are slightly different for using Ubuntu 16.04. First, enter the following lines in order to be compatible with the Cisco-system by installing the "Cisco AnyConnect Compatible VPN (openconnect)"-package:<br />
<pre><br />
sudo apt-get install network-manager-openconnect network-manager-openconnect-gnome<br />
</pre><br />
<br />
Next, the following steps need to be applied:<br />
* Go to your connections dialog by clicking on your network icon<br />
* Select edit connections<br />
* click add<br />
* select Cisco AnyConnect Compatible VPN (openconnect)<br />
* Give a connection name, fill in vpn2.tue.nl at the "Gateway" and save.<br />
* Go back to your connection dialog, select vpn connections and click on the connection name you gave at the previous step<br />
* Select at Group number 2 (Tunnel TU/e traffic), fill in your username and password and click login. If everything is correct, your connection will be established.<br />
<br />
Now, the wtb-filer can be connected via both the file-manager as the terminal as mentioned above. The experience is that it is faster to access the folder via the terminal when connecting via the vpn. If the file manager is used, first connect to <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/<br />
</pre><br />
before navigating to the ropod-folder. Keep in mind that this takes a while (about half a minute to a minute)!<br />
<br />
CAD-files can be found at <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD/Mechanics/CadFiles/Workspaces/Workspace/CadFiles;<br />
</pre></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Connecting_to_file_server_via_samba&diff=98979RoPod/Tutorials/Connecting to file server via samba2020-06-09T14:54:10Z<p>20170140: </p>
<hr />
<div>= Connecting while on the tue-wpa2 network =<br />
For the ropod-project, a file server is created on the wtb-filer is created where all the hardware details are placed. It is protected, so in order to obtain specific details or the get access contact Cesar or Wouter. The location is <br />
<pre><br />
//wtbfiler.wtb.tue.nl/Control Systems Technology/Servicerobotica/5. ROPOD<br />
</pre><br />
<br />
From Linux, this filer can be accessed via [https://www.samba.org/ Samba]. First, ensure Samba is installed on your system:<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
<br />
Then, if you are connected to the tue-wpa2 connection, you should be able to access this folder via Files (or Nautilus) -> Connect to server (on the left part of your screen). Enter the following Server address<br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD<br />
</pre><br />
<br />
and provide your once requested. Here, your TUE-username and password are requested. Use "TUE" in the domain-field.<br />
<br />
You can also obtain access via the command line (replace username by the username of your TU/e-account):<br />
<pre><br />
smbclient "//wtbfiler.wtb.tue.nl/Control Systems Technology/" -W TUE -U "username"<br />
cd Servicerobotica/ropod<br />
</pre><br />
<br />
= Connecting via VPN =<br />
If not on the tue-wpa2 network, you need to connect to the tue-server via vpn first. You can follow the instructions from [https://www.win.tue.nl/bcf/diensten/netwerk/Vpn-tue-ubuntu1404.pdf this page] using vpn2.tue.nl, but the steps are slightly different for using Ubuntu 16.04. First, enter the following lines in order to be compatible with the Cisco-system by installing the "Cisco AnyConnect Compatible VPN (openconnect)"-package:<br />
<pre><br />
sudo apt-get install network-manager-openconnect network-manager-openconnect-gnome<br />
</pre><br />
<br />
Next, the following steps need to be applied:<br />
* Go to your connections dialog by clicking on your network icon<br />
* Select edit connections<br />
* click add<br />
* select Cisco AnyConnect Compatible VPN (openconnect)<br />
* Give a connection name, fill in vpn2.tue.nl at the "Gateway" and save.<br />
* Go back to your connection dialog, select vpn connections and click on the connection name you gave at the previous step<br />
* Select at Group number 2 (Tunnel TU/e traffic), fill in your username and password and click login. If everything is correct, your connection will be established.<br />
<br />
Now, the wtb-filer can be connected via both the file-manager as the terminal as mentioned above. The experience is that it is faster to access the folder via the terminal when connecting via the vpn. If the file manager is used, first connect to <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/<br />
</pre><br />
before navigating to the ropod-folder. Keep in mind that this takes a while (about half a minute to a minute)!<br />
<br />
<pre><br />
CAD-files can be found at smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD/Mechanics/CadFiles/Workspaces/Workspace/CadFiles;<br />
</pre></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Connecting_to_file_server_via_samba&diff=98978RoPod/Tutorials/Connecting to file server via samba2020-06-09T14:53:51Z<p>20170140: </p>
<hr />
<div>= Connecting while on the tue-wpa2 network =<br />
For the ropod-project, a file server is created on the wtb-filer is created where all the hardware details are placed. It is protected, so in order to obtain specific details or the get access contact Cesar or Wouter. The location is <br />
<pre><br />
//wtbfiler.wtb.tue.nl/Control Systems Technology/Servicerobotica/5. ROPOD<br />
</pre><br />
<br />
From Linux, this filer can be accessed via [https://www.samba.org/ Samba]. First, ensure Samba is installed on your system:<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
<br />
Then, if you are connected to the tue-wpa2 connection, you should be able to access this folder via Files (or Nautilus) -> Connect to server (on the left part of your screen). Enter the following Server address<br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD<br />
</pre><br />
<br />
and provide your once requested. Here, your TUE-username and password are requested. Use "TUE" in the domain-field.<br />
<br />
You can also obtain access via the command line (replace username by the username of your TU/e-account):<br />
<pre><br />
smbclient "//wtbfiler.wtb.tue.nl/Control Systems Technology/" -W TUE -U "username"<br />
cd Servicerobotica/ropod<br />
</pre><br />
<br />
= Connecting via VPN =<br />
If not on the tue-wpa2 network, you need to connect to the tue-server via vpn first. You can follow the instructions from [https://www.win.tue.nl/bcf/diensten/netwerk/Vpn-tue-ubuntu1404.pdf this page] using vpn2.tue.nl, but the steps are slightly different for using Ubuntu 16.04. First, enter the following lines in order to be compatible with the Cisco-system by installing the "Cisco AnyConnect Compatible VPN (openconnect)"-package:<br />
<pre><br />
sudo apt-get install network-manager-openconnect network-manager-openconnect-gnome<br />
</pre><br />
<br />
Next, the following steps need to be applied:<br />
* Go to your connections dialog by clicking on your network icon<br />
* Select edit connections<br />
* click add<br />
* select Cisco AnyConnect Compatible VPN (openconnect)<br />
* Give a connection name, fill in vpn2.tue.nl at the "Gateway" and save.<br />
* Go back to your connection dialog, select vpn connections and click on the connection name you gave at the previous step<br />
* Select at Group number 2 (Tunnel TU/e traffic), fill in your username and password and click login. If everything is correct, your connection will be established.<br />
<br />
Now, the wtb-filer can be connected via both the file-manager as the terminal as mentioned above. The experience is that it is faster to access the folder via the terminal when connecting via the vpn. If the file manager is used, first connect to <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/<br />
</pre><br />
before navigating to the ropod-folder. Keep in mind that this takes a while (about half a minute to a minute)!<br />
<br />
CAD-files can be found at smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD/Mechanics/CadFiles/Workspaces/Workspace/CadFiles;</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Connecting_to_file_server_via_samba&diff=98971RoPod/Tutorials/Connecting to file server via samba2020-06-09T14:48:49Z<p>20170140: </p>
<hr />
<div>= Connecting while on the tue-wpa2 network =<br />
For the ropod-project, a file server is created on the wtb-filer is created where all the hardware details are placed. It is protected, so in order to obtain specific details or the get access contact Cesar or Wouter. The location is <br />
<pre><br />
//wtbfiler.wtb.tue.nl/Control Systems Technology/Servicerobotica/5. ROPOD<br />
</pre><br />
<br />
From Linux, this filer can be accessed via [https://www.samba.org/ Samba]. First, ensure Samba is installed on your system:<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
<br />
Then, if you are connected to the tue-wpa2 connection, you should be able to access this folder via Files (or Nautilus) -> Connect to server (on the left part of your screen). Enter the following Server address<br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/control%20systems%20technology/Servicerobotica/5.%20ROPOD<br />
</pre><br />
<br />
and provide your once requested. Here, your TUE-username and password are requested. Use "TUE" in the domain-field.<br />
<br />
You can also obtain access via the command line (replace username by the username of your TU/e-account):<br />
<pre><br />
smbclient "//wtbfiler.wtb.tue.nl/Control Systems Technology/" -W TUE -U "username"<br />
cd Servicerobotica/ropod<br />
</pre><br />
<br />
= Connecting via VPN =<br />
If not on the tue-wpa2 network, you need to connect to the tue-server via vpn first. You can follow the instructions from [https://www.win.tue.nl/bcf/diensten/netwerk/Vpn-tue-ubuntu1404.pdf this page] using vpn2.tue.nl, but the steps are slightly different for using Ubuntu 16.04. First, enter the following lines in order to be compatible with the Cisco-system by installing the "Cisco AnyConnect Compatible VPN (openconnect)"-package:<br />
<pre><br />
sudo apt-get install network-manager-openconnect network-manager-openconnect-gnome<br />
</pre><br />
<br />
Next, the following steps need to be applied:<br />
* Go to your connections dialog by clicking on your network icon<br />
* Select edit connections<br />
* click add<br />
* select Cisco AnyConnect Compatible VPN (openconnect)<br />
* Give a connection name, fill in vpn2.tue.nl at the "Gateway" and save.<br />
* Go back to your connection dialog, select vpn connections and click on the connection name you gave at the previous step<br />
* Select at Group number 2 (Tunnel TU/e traffic), fill in your username and password and click login. If everything is correct, your connection will be established.<br />
<br />
Now, the wtb-filer can be connected via both the file-manager as the terminal as mentioned above. The experience is that it is faster to access the folder via the terminal when connecting via the vpn. If the file manager is used, first connect to <br />
<pre><br />
smb://wtbfiler.wtb.tue.nl/<br />
</pre><br />
before navigating to the ropod-folder. Keep in mind that this takes a while (about half a minute to a minute)!</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=97536Mobile Robot Control 20202020-05-27T14:16:30Z<p>20170140: /* Presentation Schedule */</p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:EMC2020_localization-handout.pdf | ''Part 1'']] - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| colspan="2" | '''Escape Room Competition'''<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | [[Media:MRC2020-LectureHermanBruyninckx.pdf | Coordination: mechanisms and architectural patterns]] by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
==Presentation Schedule==<br />
<br />
As you have seen in the course schedule, the presentations of the final software design will take place on June 3rd. As we did last years, each presentation will take no more than 6 minutes, followed by a 4 minute discussion. Given this years circumstances, we have decided to do these presentations for each group separately. However, your entire group is required to be available for the discussion session. Therefore, we plan these presentations during the regular lecture hours of the course.<br />
For the presentations of your final software design, please take the following into account:<br />
* Pick a time slot in the table below. First come, first served.<br />
* Send an invitation to all your group members, as well as René van de Molengraft, Jordy Senden, Bob Hendrikx and Wouter Houtman. These mail addresses can be found at the bottom of this page. Make sure, your invitation is accompanied with a meeting room of Microsoft Teams.<br />
* As long as your presentation can be shared via the Teams meeting, you are free to chose the medium you like.<br />
* In order to not waist time, make sure all team members are present, and both microphones and cameras are tested BEFORE the start of the presentation. Make sure your microphone is muted when you are not speaking.<br />
<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2020 || 15:30 - 15:40 ||group 3<br />
|-<br />
| || 15:45 - 15:55 ||group 1<br />
|-<br />
| || 16:00 - 16:10 ||group 7<br />
|-<br />
| || 16:15 - 16:25 ||group 6<br />
|-<br />
| || 16:30 - 16:40 ||group 2<br />
|-<br />
| || 16:45 - 16:55 ||group 8<br />
|-<br />
| || 17:00 - 17:10 ||group 4<br />
|-<br />
| || 17:15 - 17:25 ||group 10<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=97535Mobile Robot Control 20202020-05-27T14:16:21Z<p>20170140: /* Presentation Schedule */</p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:EMC2020_localization-handout.pdf | ''Part 1'']] - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| colspan="2" | '''Escape Room Competition'''<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | [[Media:MRC2020-LectureHermanBruyninckx.pdf | Coordination: mechanisms and architectural patterns]] by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
==Presentation Schedule==<br />
<br />
As you have seen in the course schedule, the presentations of the final software design will take place on June 3rd. As we did last years, each presentation will take no more than 6 minutes, followed by a 4 minute discussion. Given this years circumstances, we have decided to do these presentations for each group separately. However, your entire group is required to be available for the discussion session. Therefore, we plan these presentations during the regular lecture hours of the course.<br />
For the presentations of your final software design, please take the following into account:<br />
* Pick a time slot in the table below. First come, first served.<br />
* Send an invitation to all your group members, as well as René van de Molengraft, Jordy Senden, Bob Hendrikx and Wouter Houtman. These mail addresses can be found at the bottom of this page. Make sure, your invitation is accompanied with a meeting room of Microsoft Teams.<br />
* As long as your presentation can be shared via the Teams meeting, you are free to chose the medium you like.<br />
* In order to not waist time, make sure all team members are present, and both microphones and cameras are tested BEFORE the start of the presentation. Make sure your microphone is muted when you are not speaking.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2020 || 15:30 - 15:40 ||group 3<br />
|-<br />
| || 15:45 - 15:55 ||group 1<br />
|-<br />
| || 16:00 - 16:10 ||group 7<br />
|-<br />
| || 16:15 - 16:25 ||group 6<br />
|-<br />
| || 16:30 - 16:40 ||group 2<br />
|-<br />
| || 16:45 - 16:55 ||group 8<br />
|-<br />
| || 17:00 - 17:10 ||group 4<br />
|-<br />
| || 17:15 - 17:25 ||group 10<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=96378Mobile Robot Control 20202020-05-20T06:49:12Z<p>20170140: /* Presentation Schedule */</p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:EMC2020_localization-handout.pdf | ''Part 1'']] - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| colspan="2" | '''Escape Room Competition'''<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | Do's and Don'ts in the design of a robotic software architecture by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
==Presentation Schedule==<br />
For the presentations which will take place on June 3rd, each group can pick a time slot in the table below. First come, first served.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2020 || 15:30 - 15:40 || <br />
|-<br />
| || 15:45 - 15:55 ||<br />
|-<br />
| || 16:00 - 16:10 ||<br />
|-<br />
| || 16:15 - 16:25 ||<br />
|-<br />
| || 16:30 - 16:40 ||<br />
|-<br />
| || 16:45 - 16:55 ||<br />
|-<br />
| || 17:00 - 17:10 ||<br />
|-<br />
| || 17:15 - 17:25 ||<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=96377Mobile Robot Control 20202020-05-20T06:48:17Z<p>20170140: /* Course Schedule and Lecture Slides */</p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:EMC2020_localization-handout.pdf | ''Part 1'']] - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| colspan="2" | '''Escape Room Competition'''<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | Do's and Don'ts in the design of a robotic software architecture by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
==Presentation Schedule==<br />
For the presentations which will take place on June 3rd, each group can pick a time slot in the table below. First come, first served.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2020 || 15:30 - 15:40 || <br />
|-<br />
| || 15:45 - 15:55 ||<br />
|-<br />
| || 16:00 - 16:10 ||<br />
|-<br />
| || 16:15 - 16:25 ||<br />
|-<br />
| || 16:30 - 16:40 ||<br />
|-<br />
| || 16:45 - 16:55 ||<br />
|-<br />
| || 17:00 - 17:10 ||<br />
|-<br />
| || 17:15 - 17:25 ||<br />
|}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=95155Mobile Robot Control 20202020-05-08T07:04:43Z<p>20170140: /* Group Wiki Pages */</p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:EMC2020_localization-handout.pdf | ''Part 1'']] - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| width="325" | '''Escape Room Competition'''<br />
| width="325" | Reflection Session<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | Do's and Don'ts in the design of a robotic software architecture by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=95060Mobile Robot Control 20202020-05-07T09:01:53Z<p>20170140: </p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1 - [[Media:MRC2020-TutorialLecture1_1_1_2.pdf | ''Part 1-2'']] - [[Media:MRC2020-TutorialLecture1_3.pdf | ''Part 3'']]<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2 - [[Media:MRC2020-TutorialLecture2_Object_Detection.pdf | ''Part 2'']] - [[Media:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf | ''Part 3'']]<br />
|-<br />
| May 13<br />
| width="325" | '''Escape Room Competition'''<br />
| width="325" | Reflection Session<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | Do's and Don'ts in the design of a robotic software architecture by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 4th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<!---<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=File:2020-05-06_Mobile_Robot_Control_-_Motion_Planning.pdf&diff=95059File:2020-05-06 Mobile Robot Control - Motion Planning.pdf2020-05-07T08:58:20Z<p>20170140: </p>
<hr />
<div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2020&diff=93123Mobile Robot Control 20202020-04-21T09:20:22Z<p>20170140: </p>
<hr />
<div><div align="center"><br />
<font size="4">'PICO in the Hospital'</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 />
Lectures will be given on Wednesdays from 15.30h-17.30h in an online fashion. The course schedule is as follows:<br />
<br />
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"<br />
|-<br />
| April 22<br />
| width="325" | Introduction by ''René van de Molengraft'', [[Media:MRC2020-TechUnitedEindhoven.pdf | ''Tech United'']] , ''VanderLande'' and ''Lely''<br />
| width="325" | [[Media:MRC_tooling_infrastructure_2020.pdf | Tooling, Infrastructure and Assignment by ''Bob Hendrikx'' ]]<br />
|-<br />
| April 29<br />
| colspan="2" | Tutorial Lecture #1<br />
|-<br />
| May 6<br />
| colspan="2" | Tutorial Lecture #2<br />
|-<br />
| May 13<br />
| width="325" | '''Escape Room Competition'''<br />
| width="325" | Reflection Session<br />
|-<br />
| May 20<br />
| colspan="2" | No Lecture<br />
|-<br />
| May 27<br />
| colspan="2" | Do's and Don'ts in the design of a robotic software architecture by ''Herman Bruyninckx''<br />
|-<br />
| June 3<br />
| colspan="2" | Presentation of final design by the ''groups''.<br />
|-<br />
| June 10<br />
| colspan="2" | '''Final Competition''' <br />
|-<br />
| June 17<br />
| colspan="2" | No Lecture<br />
|-<br />
| <span style="color:red">June 24</span><br />
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span><br />
|-<br />
|}<br />
<br />
= Getting Started =<br />
<br />
To get started, please do the tutorials on the [[MRC/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_2018/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 />
<!---<br />
= Design Document = <br />
Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with: <br />
* Requirements,<br />
* Functions,<br />
* Components,<br />
* Specifications<br />
* Interfaces.<br />
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 6th, 17.00h. In case of questions about the document, consult your tutor.<br />
<br />
= Escape Room Competition =<br />
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}<br />
<br />
<br />
= Hospital Competition =<br />
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}<br />
<br />
<br />
= Map For The Final Challenge =<br />
{{:Embedded_Motion_Control_map_2019}}<br />
--><br />
<br />
=Group Wiki Pages=<br />
<br />
Group 1 - [[Mobile Robot Control 2020 Group 1 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 2 - [[Mobile Robot Control 2020 Group 2 | visit wiki ]] - '''Tutor''': Bob Hendrikx <br />
<br />
Group 3 - [[Mobile Robot Control 2020 Group 3 | visit wiki ]] - '''Tutor''': Hao Liang Chen<br />
<br />
Group 4 - [[Mobile Robot Control 2020 Group 4 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi Farahani<br />
<br />
Group 5 - [[Mobile Robot Control 2020 Group 5 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<br />
Group 6 - [[Mobile Robot Control 2020 Group 6 | visit wiki ]] - '''Tutor''': Wouter Kuijpers<br />
<br />
Group 7 - [[Mobile Robot Control 2020 Group 7 | visit wiki ]] - '''Tutor''': Elena Torta<br />
<br />
Group 8 - [[Mobile Robot Control 2020 Group 8 | visit wiki ]] - '''Tutor''': Wouter Houtman <br />
<br />
Group 9 - [[Mobile Robot Control 2020 Group 9 | visit wiki ]] - '''Tutor''': Bob Hendrikx<br />
<br />
Group 10 - [[Mobile Robot Control 2020 Group 10 | visit wiki ]] - '''Tutor''': Hao-Liang Chen<br />
<br />
Group 11 - [[Mobile Robot Control 2020 Group 11 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi-Farahani<br />
<br />
Group 12 - [[Mobile Robot Control 2020 Group 12 | visit wiki ]] - '''Tutor''': Jordy Senden<br />
<!---<br />
=Pico test schedule=<br />
- Testing takes place on the RoboCup field in Gemini-North.<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 />
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.<br />
- Submissions are last checked the day before at 22:00.<br />
<br />
==Week 19==<br />
'''For week 19 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 7-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 7-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 7-5-2019 || 14:30 - 15:25 || 8<br />
|-<br />
| 7-5-2019 || 15:30 - 16:25 || 7<br />
|-<br />
| 7-5-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 8-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 8-5-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 8-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 8-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 8-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 8-5-2019 || 16:30 - 17:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 9-5-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 9-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 9-5-2019 || 11:45 - 12:40 || 9<br />
|-<br />
| 9-5-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 9-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 9-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 9-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 19 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 9-5-2019 || 12:00 - 12:55 || 7<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 20==<br />
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 13-5-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 13-5-2019 || 11:45 - 12:40 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 14-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 14-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 14-5-2019 || 13:30 - 14:25 || 8<br />
|-<br />
| 14-5-2019 || 14:30 - 15:25 || 2<br />
|-<br />
| 14-5-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 14-5-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 16-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 16-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 16-5-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 16-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 16-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 16-5-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 16-5-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 16-5-2019 || 16:30 - 17:25 || 4<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 20 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 17-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 17-5-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 21==<br />
'''For week 21 each group can choose 2 time slots'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 21-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 21-5-2019 || 14:30 - 15:25 ||<br />
|-<br />
| 21-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 21-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 22-5-2019 || 09:45 - 10:40 || <br />
|-<br />
| 22-5-2019 || 10:45 - 11:40 || 5<br />
|-<br />
| 22-5-2019 || 11:45 - 12:40 ||<br />
|-<br />
| 22-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 22-5-2019 || 14:30 - 15:25 || 8<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 23-5-2019 || 08:45 - 09:40 || 9<br />
|-<br />
| 23-5-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 23-5-2019 || 10:45 - 11:40 || 3<br />
|-<br />
| 23-5-2019 || 11:45 - 12:40 || 7<br />
|-<br />
| 23-5-2019 || 13:30 - 14:25 || 5<br />
|-<br />
| 23-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 21 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 24-5-2019 || 08:45 - 09:40 || <br />
|-<br />
| 24-5-2019 || 09:45 - 10:40 || 1<br />
|-<br />
| 24-5-2019 || 10:45 - 11:40 || 2<br />
|-<br />
| 24-5-2019 || 11:45 - 12:40 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 22 + 23==<br />
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 27-5-2019 || 13:30 - 14:25 ||<br />
|-<br />
| 27-5-2019 || 14:30 - 15:25 || 5<br />
|-<br />
| 27-5-2019 || 15:30 - 16:25 ||<br />
|-<br />
| 27-5-2019 || 16:30 - 17:25 ||<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 28-5-2019 || 13:30 - 14:25 || 7<br />
|-<br />
| 28-5-2019 || 14:30 - 15:25 || 9<br />
|-<br />
| 28-5-2019 || 15:30 - 16:25 || <br />
|-<br />
| 28-5-2019 || 16:30 - 17:25 || 7<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 22 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 29-5-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 29-5-2019 || 09:45 - 10:40 || 4<br />
|-<br />
| 29-5-2019 || 10:45 - 11:40 || <br />
|-<br />
| 29-5-2019 || 11:45 - 12:40 || 3<br />
|-<br />
| 29-5-2019 || 13:30 - 14:25 || 9<br />
|-<br />
| 29-5-2019 || 14:30 - 15:25 || <br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Monday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 3-6-2019 || 13:30 - 14:25 || 4<br />
|-<br />
| 3-6-2019 || 14:30 - 15:25 || 1<br />
|-<br />
| 3-6-2019 || 15:30 - 16:25 || 1<br />
|-<br />
| 3-6-2019 || 16:30 - 17:25 || 5<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 4-6-2019 || 13:30 - 14:25 || 7<br />
|- <br />
| 4-6-2019 || 14:30 - 15:25 || <br />
|-<br />
| 4-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 4-6-2019 || 16:30 - 17:25 || 2<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Wednesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 5-6-2019 || 08:45 - 09:40 || 5<br />
|-<br />
| 5-6-2019 || 09:45 - 10:40 || <br />
|-<br />
| 5-6-2019 || 10:45 - 11:40 || 4<br />
|-<br />
| 5-6-2019 || 11:45 - 12:40 || 4<br />
|-<br />
| 5-6-2019 || 13:30 - 14:25 || 8 <br />
|-<br />
| 5-6-2019 || 14:30 - 15:25 || 3<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Thursday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 6-6-2019 || 08:45 - 09:40 ||<br />
|-<br />
| 6-6-2019 || 09:45 - 10:40 ||<br />
|-<br />
| 6-6-2019 || 10:45 - 11:40 || 7<br />
|-<br />
| 6-6-2019 || 11:45 - 12:40 || 2<br />
|-<br />
| 6-6-2019 || 13:30 - 14:25 || 3<br />
|-<br />
| 6-6-2019 || 14:30 - 15:25 || 3<br />
|-<br />
| 6-6-2019 || 15:30 - 16:25 || 8<br />
|-<br />
| 6-6-2019 || 16:30 - 17:25 || 9<br />
|}<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 23 Friday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 7-6-2019 || 08:45 - 09:40 || 2<br />
|-<br />
| 7-6-2019 || 09:45 - 10:40 || 5<br />
|-<br />
| 7-6-2019 || 10:45 - 11:40 || 1<br />
|-<br />
| 7-6-2019 || 11:45 - 12:40 || 8<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
<br />
==Week 24==<br />
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.<br />
<br />
<br />
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"<br />
|+ '''Week 24 Tuesday'''<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Time'''<br />
! scope="col" | '''Group'''<br />
|-<br />
| 11-6-2019 || 08:45 - 09:40 || 4<br />
|-<br />
| 11-6-2019 || 09:45 - 10:40 || 3<br />
|-<br />
| 11-6-2019 || 10:45 - 11:40 || 8<br />
|-<br />
| 11-6-2019 || 11:45 - 12:40 || 5<br />
|-<br />
| 11-6-2019 || 13:30 - 14:25 || 2<br />
|-<br />
| 11-6-2019 || 14:30 - 15:25 || 7<br />
|-<br />
| 11-6-2019 || 15:30 - 16:25 || 9<br />
|-<br />
| 11-6-2019 || 16:30 - 17:25 || 1<br />
|}<br />
<br />
<div style="clear:both"></div><br />
<br><br />
--><br />
<br />
=Contact Details=<br />
{{:Embedded_Motion_Control_2018/Contact_Details}}</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=File:MRC2020-TechUnitedEindhoven.pdf&diff=93122File:MRC2020-TechUnitedEindhoven.pdf2020-04-21T09:17:53Z<p>20170140: </p>
<hr />
<div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=80854Packing List2019-09-18T14:08:17Z<p>20170140: </p>
<hr />
<div>* Robot(s) (2nd one) & flightcase<br />
* Batteries & charger (take care of which one to take!!)<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
* hard disk<br />
* power extension cables<br />
* joystick<br />
* wooden connector with bolts<br />
* remote emergency switches</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=80852Packing List2019-09-18T08:05:28Z<p>20170140: </p>
<hr />
<div>* Robot(s) (2nd one) & flightcase<br />
* Batteries & charger<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
* hard disk<br />
* power extension cables<br />
* joystick<br />
* wooden connector with bolts<br />
* remote emergency switches</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=80682Packing List2019-08-13T11:51:11Z<p>20170140: </p>
<hr />
<div>* Robot(s) & flightcase<br />
* Batteries & charger<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
* hard disk<br />
* power extension cables<br />
* joystick</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control/Hospital_Room_Competition_2019&diff=74729Embedded Motion Control/Hospital Room Competition 20192019-05-08T09:48:13Z<p>20170140: </p>
<hr />
<div>[[File:Hospital_full.png|thumb|right|500px|Overview of a possible Hospital setup, not up to scale!]]<br />
<br />
'''Challenge Description'''<br />
The figure on the right shows a 2D representation of a '''possible''' Hospital setup, '''as an example'''.<br />
The map shows several ''rooms'' and a ''hallway''. <br />
In each ''room'' there are ''cabinets'' (represented by a rectangular block).<br />
The objective is for PICO to "deliver" medicines from one ''cabinet'' to another (both defined by the judges just before the challenge starts).<br />
The hospital will contain a number of unknown static and dynamic objects (boxes, human actors walking)<br />
<br />
Since PICO does not have the capability to grab and carry medicines, the "delivery" task cannot be performed physically.<br />
Instead, the "delivery" is defined by the following steps:<br />
* Drive up to the first ''cabinet''.<br />
* Position in front of the ''cabinet'', facing towards the ''cabinet''.<br />
* Give a clear sound signal, signalling PICO has arrived at cabinet A (io.speak("I arrived at cabinet four")).<br />
* Drive to the next ''cabinet''.<br />
* Position in front of the ''cabinet'', facing towards the ''cabinet''.<br />
* Repeat until all the cabinets are visited in the correct order<br />
<br />
<br />
'''Setup Specifications'''<br />
* All ''walls'' in the ''hospital'' will be approximately straight.<br />
* All ''corners'' in the ''hospital'' will be approximately right.<br />
* The ''doors'' inside the ''hospital'' will be (time-invariant) openings in the ''walls'' of about 0.5-1m that may be '''closed or open'''.<br />
* It is possible that a ''room'' has more than one ''door''.<br />
* A ''cabinet'' is represented by a rectangular block.<br />
* A region will be marked in front of the ''cabinets''. This is the region in which PICO must stand when "taking" or "delivering" the medicine.<br />
* The front of the cabinet is defined as the first linesegment in the line array that represents a cabinet. <br />
* This region will be a square with sides equal to the length of the front of the ''cabinet''.<br />
<br />
<br />
'''Challenge Conditions'''<br />
* PICO will start in the ''start area'', defined by a rectangle of approximately 0.5 by 0.5 meters. The orientation of PICO is arbitrary. <br />
* After starting the software, PICO has to drive to the first ''cabinet'' to "pick up" the medicine.<br />
* If PICO found the correct ''cabinet'' and signalled his "arrival", he has to drive to the next cabinets to "drop off" the medicines.<br />
* The task is completed after PICO visited all cabinets.<br />
* Bonus points are given to the groups that can detect the static and dynamic objects and present them in the world model. How this is presented is left to the groups. <br />
* Within the hospital start area, we will make sure that some visible features (i.e. lines, corners) remain visible (but we will not make it easy). <br />
<br />
<br />
'''Challenge Rules'''<br />
* The list of cabinets to visit has to be supplied to the executable when starting the challenge. <br />
* Do not touch the walls! Slightly touching is allowed, however, bumping (''i.e.'', driving head-on into a wall) '''is not allowed'''! If PICO hits the wall, '''we''' decide whether it counts as ''bumping''.<br />
* Every team has two trials (= max one restart). A trial ends if:<br />
** PICO ''bumps'' into the wall<br />
** PICO has not moved or has not made sensible movements (as judged by the tutors) for 30 seconds<br />
** The total time limit of 10 minutes per group is reached <br />
** The group requests a restart (on the first trial)<br />
* restart means:<br />
** PICO restarts at the defined start position<br />
** The trail time (= the time graded) is reset, but<br />
** the total time keeps running<br />
* Maximum speed (is limited in PICO): 0.5 m/s translational, 1.2 rad/s rotational.<br />
* There will be no second attempt if first attempt was successful<br />
* Every situation that might occur, that is not covered in this document will be evaluated on the spot. If this happens, the judges have the final word.<br />
<br />
<br />
'''Visualization'''<br />
* Your code should save a snapshot of the laserdata in your group folder when in front of each cabinet (e.g., using OpenCV).<br />
<br />
<br />
'''Robot Software'''<br />
* Make sure your software is easy to set-up, ''i.e'':<br />
** Your software can be updated with one easy command, ''e.g.'' 'git pull'<br />
** Your software can be compiled using 'cmake' and 'make'<br />
** It is allowed to use multiple executables. Note that the ''Mapping/Parking''-phase and ''Searching''-phase can have separate executables, both have to be build before the challenge. <br />
** '''If your set-up deviates from this method, let your tutor know 1 week before the challenge!'''<br />
* The software of all groups will be updated on the robot '''before''' the challenge starts<br />
** This way, teams starting the challenge have as much time as teams that do the challenge at the end, compiling in between trials is not allowed. <br />
* If you use a separate catkin workspace<br />
** Make sure this workspace is compiled during the final testing hour<br />
** Building separate catkin workspaces during the final challenge is not allowed<br />
** The safest way to make sure your code works is by avoiding catking workspaces and including everything in your CMakeLists.txt<br />
<br />
<br />
'''Example map format and code'''<br />
* We provide a simple example of a room with two cabinets and the code to read the map into your own c++ code. <br />
* For this simple example, a simulator map is also provided. (A simulator map will not be provided for the final challenge).<br />
* We used the 20cm thickness blocks for your convenience<br />
* Remember to add unknown objects to your simulator and test environments!<br />
* '''You can find an example map (JSON) and the code to get you started here:''' [[File:Emc_2019_map_format.zip]]<br />
<br />
<gallery widths="300px" heights="450px" style="text-align:left"><br />
File:Example_map_simple_emc_2019.png|Overview of example map.<br />
File:Vectormap_simple_example_emc_2019.png|Visualisation of vector map.<br />
File:Example_map_sim_emc2019.png|Bitmap representation of map, used for simulator.<br />
</gallery></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab&diff=74546Robotics Lab2019-05-06T07:53:20Z<p>20170140: </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 />
* Ask Thea for acces to the lab.<br />
<br />
= Bachelor End Project =<br />
The Robotics Research Lab provides support and guidance in the Bachelor End Projects regarding Tech United, for both AMIGO/SERGIO and the Soccer Robots. For information about available Bachelor End Project-assignments, running Bachelor End Projects and past projects (from 2017 onwards) see: [[Robotics Research Lab BEP]]<br />
<br />
= WIKIs =<br />
* '''Service Robot Wiki''' (pc installation, tutorials, projects, etc - often severely out-dated!):<br />
<br />
http://servicerobot.cstwiki.wtb.tue.nl<br />
<br />
* '''Robotics Lab Wiki''' (practical robotics lab issues, coffee, who-is-who, etc)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab<br />
<br />
* E'''MC wiki''' (course wiki Embedded Motion Control)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control<br />
<br />
* '''RoPod Wiki''' (for those involved in the RoPod project)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=RoPod_Project<br />
<br />
* '''CST Wiki''' (general CST wiki - links to wiki's above)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php<br />
<br />
<br />
<br />
= Google (email) Groups =<br />
* '''Robotics lab''' (practical lab issues, coffee, birthday cake, etc)<br />
<br />
https://groups.google.com/forum/#!forum/robotics-lab<br />
<br />
(Owners: Yanick Douven, Jesse Scholtes)<br />
* '''RoboCup@Home Team ''' (software, progress, tournaments, organization)<br />
<br />
https://groups.google.com/forum/#!forum/amigo-at-home<br />
<br />
(Owners: Jesse Scholtes, Matthijs van der Burgh, Tech United Eindhoven)<br />
<br />
* '''RoboCup Mid Size League Team''' (software, progress, tournaments, organization)<br />
<br />
https://groups.google.com/forum/#!forum/msl-tech-united<br />
<br />
(Owners: Tech United Eindhoven)<br />
<br />
= File Server = <br />
<br />
\\wtbfiler\Control Systems Technology\Servicerobotica<br />
<br />
= Robotics Lab Printer =<br />
<br />
== Ubuntu ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Open a terminal and type<br />
<pre><br />
system-config-printer<br />
</pre><br />
<br />
3) Add <br />
<br />
4) Network Printer<br />
* LPD / LPR Host or Printer<br />
* Host: tueprint2.campus.tue.nl<br />
* Queue: Robotics01<br />
* Forward<br />
* Provide [http://cstwiki.wtb.tue.nl/images/Hp-laserjet_500_color_m551-ps.zip this PPD file]<br />
* Name: Robotics01<br />
* Description: Robotics01<br />
* Location: Robotics Lab<br />
<br />
== Windows 7/8 ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Open Control Panel<br />
<br />
3) Go to Devices and Printers<br />
<br />
4) Select a Shared Printer by name:<br />
* Adress: \\tueprint2\Robotics01<br />
* IP: 131.155.66.17<br />
<br />
5) The process should finish by itself, including driver installation<br />
== Windows 10 ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Go to Start > type 'Run' <br />
<br />
3) Type: \\tueprint2\Robotics01<br />
<br />
4) Log in with your TUe account<br />
<br />
5) Install the driver<br />
<br />
6) The process should finish by itself<br />
<br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab&diff=74545Robotics Lab2019-05-06T07:52:30Z<p>20170140: </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 />
* Ask Thea for acces to the lab.<br />
<br />
= Bachelor End Project =<br />
The Robotics Research Lab provides support and guidance in the Bachelor End Projects regarding Tech United, for both AMIGO/SERGIO and the Soccer Robots. For information about available Bachelor End Project-assignments, running Bachelor End Projects and past projects (from 2017 onwards) see: [[Robotics Research Lab BEP]]<br />
<br />
= WIKIs =<br />
* '''Service Robot Wiki''' (pc installation, tutorials, projects, etc - often severely out-dated!):<br />
<br />
http://servicerobot.cstwiki.wtb.tue.nl<br />
<br />
* '''Robotics Lab Wiki''' (practical robotics lab issues, coffee, who-is-who, etc)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=Robotics_Lab<br />
<br />
* E'''MC wiki''' (course wiki Embedded Motion Control)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control<br />
<br />
* '''RoPod Wiki''' (for those involved in the RoPod project)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php?title=RoPod_Project<br />
<br />
* '''CST Wiki''' (general CST wiki - links to wiki's above)<br />
<br />
http://cstwiki.wtb.tue.nl/index.php<br />
<br />
<br />
<br />
= Google (email) Groups =<br />
* '''Robotics lab''' (practical lab issues, coffee, birthday cake, etc)<br />
<br />
https://groups.google.com/forum/#!forum/robotics-lab<br />
<br />
(Owners: Yanick Douven, Jesse Scholtes)<br />
* '''RoboCup@Home Team ''' (software, progress, tournaments, organization)<br />
<br />
https://groups.google.com/forum/#!forum/amigo-at-home<br />
<br />
(Owners: Jesse Scholtes, Matthijs van der Burgh, Tech United Eindhoven)<br />
<br />
* '''RoboCup Mid Size League Team''' (software, progress, tournaments, organization)<br />
<br />
https://groups.google.com/forum/#!forum/msl-tech-united<br />
<br />
(Owners: Tech United Eindhoven)<br />
<br />
= File Server = <br />
<br />
\\wtbfiler\Control Systems Technology\Servicerobotica<br />
<br />
= Robotics Lab Printer =<br />
<br />
== Ubuntu ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Open a terminal and type<br />
<pre><br />
system-config-printer<br />
</pre><br />
<br />
3) Add <br />
<br />
4) Network Printer<br />
* LPD / LPR Host or Printer<br />
* Host: tueprint2.campus.tue.nl<br />
* Queue: Robotics01<br />
* Forward<br />
* Provide [http://cstwiki.wtb.tue.nl/images/Hp-laserjet_500_color_m551-ps.zip this PPD file]<br />
* Name: Robotics01<br />
* Description: Robotics01<br />
* Location: Robotics Lab<br />
<br />
== Windows 7/8 ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Open Control Panel<br />
<br />
3) Go to Devices and Printers<br />
<br />
4) Select a Shared Printer by name:<br />
* Adress: \\wbmtprint\Robotics01<br />
* IP: 131.155.66.17<br />
<br />
5) The process should finish by itself, including driver installation<br />
== Windows 10 ==<br />
<br />
1) Make sure the printer is turned on and not in error mode!<br />
<br />
2) Go to Start > type 'Run' <br />
<br />
3) Type: \\wbmtprint\Robotics01<br />
<br />
4) Log in with your TUe account<br />
<br />
5) Install the driver<br />
<br />
6) The process should finish by itself<br />
<br />
<br />
</div><br />
<div style="width: 20%; float: left;"><center>{{:Robotics_Lab_Navigation}}</center></div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=62575RoPod/Tutorials/ROS installation2018-08-30T12:12:04Z<p>20170140: </p>
<hr />
<div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
<div STYLE="float: left; width:60%"><br />
=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
= Install basic set of packages = <br />
<br />
<pre>sudo apt-get -y update && apt-get install -y \<br />
nano \<br />
vim \<br />
git \<br />
mercurial \<br />
cmake \<br />
build-essential \<br />
automake \<br />
libtool \<br />
libtool-bin \<br />
pkg-config \<br />
wget \<br />
curl \<br />
unzip \<br />
libjsoncpp-dev</pre><br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage. Install the Desktop-Full version. Make sure you follow at least steps 1.1-1.7 in the webpage .<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
= Follow basic tutorials for ROS =<br />
<br />
Get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
<br />
= Install ROPOD Software =<br />
<br />
<pre>echo "source ~/ropod-project-software/catkin_workspace/src/platform/setup.bash" >> ~/.bashrc<br />
echo "source ~/ropod-project-software/catkin_workspace/src/platform/robot_common/setup.bash" >> ~/.bashrc</pre><br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, the next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
<br />
=Install Dependencies =<br />
First, make sure your system is up-to-date:<br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
<br />
Then, install all ROS dependencies by running<br />
cd ''_catkin_workspace_dir_''<br />
sudo rosdep init<br />
rosdep update<br />
rosdep install --from-path . -i -y <br />
<br />
Install other 3-rd party dependencies by running<br />
<br />
sudo apt-get install libbullet-dev libsdl-image1.2-dev libsdl-dev<br />
<br />
<br />
Next, only of you are a contributor to the private ROPOD repository (you should have already been informed by your coach if you are), install the following packages, otherwise jump to "Compile Software" section.<br />
<br />
<br />
'''ROPOD specific packages'''<br />
cd ''_catkin_workspace_dir_''/src<br />
wstool init<br />
wstool up<br />
<br />
'''ROPOD-common lib'''<br />
<br />
git clone git@git.ropod.org:ropod/ropod_common.git<br />
sudo mv ropod_common /opt/<br />
<br />
<br />
'''Zyre'''<br />
<br />
On the git-page of Sebastian Blumenthal, a bash script can be found to install the zyre-dependencies:<br />
cd ~<br />
wget https://raw.githubusercontent.com/blumenthal/ropod-base-cpp/master/install_deps.sh<br />
chmod 755 install_deps.sh<br />
sudo ./install_deps.sh --workspace-path=/opt --install-path=/usr/local<br />
cd /opt<br />
sudo mkdir ropod<br />
sudo mv ropod_common/ ropod <br />
<br />
= Compile Software =<br />
<br />
The first time you install the files in your computer be sure that the folders ‘build’ and ‘devel’ are removed, as well as the file src/Cmakelists.txt<br />
<br />
Then, on the main directory level, run a cmake command to generate the executable files<br />
<pre>catkin_make</pre><br />
<br />
You can run the alias <br />
<pre> clean_build</pre><br />
to do all these actions at once. However a clean build is only necessary twice each time you want to add functionality. AT the very beginning after updating the repository and at the end before commiting changes to the repository. <br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].<br />
<br />
</div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=62573Packing List2018-08-20T05:54:50Z<p>20170140: </p>
<hr />
<div>* Robot(s) & flightcase<br />
* Batteries & charger<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
* hard disk<br />
* power extension cables</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=62460Packing List2018-08-17T14:05:50Z<p>20170140: </p>
<hr />
<div>* Robot(s) & flightcase<br />
* Batteries & charger<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
* hard disk</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=62255RoPod/Tutorials/ROS installation2018-08-14T14:12:06Z<p>20170140: /* Install Dependencies */</p>
<hr />
<div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
<div STYLE="float: left; width:60%"><br />
=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
= Install basic set of packages = <br />
<br />
<pre>sudo apt-get -y update && apt-get install -y \<br />
nano \<br />
vim \<br />
git \<br />
mercurial \<br />
cmake \<br />
build-essential \<br />
automake \<br />
libtool \<br />
libtool-bin \<br />
pkg-config \<br />
wget \<br />
curl \<br />
unzip \<br />
libjsoncpp-dev</pre><br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage. Install the Desktop-Full version. Make sure you follow at least steps 1.1-1.7 in the webpage .<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
= Follow basic tutorials for ROS =<br />
<br />
Get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
<br />
= Install ROPOD Software =<br />
<br />
<pre>echo "source ~/ropod-project-software/catkin_workspace/src/platform/setup.bash" >> ~/.bashrc<br />
echo "source ~/ropod-project-software/catkin_workspace/src/platform/robot_common/setup.bash" >> ~/.bashrc</pre><br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, the next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
<br />
=Install Dependencies =<br />
First, make sure your system is up-to-date:<br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
<br />
Then, install all ROS dependencies by running<br />
cd ''_catkin_workspace_dir_''<br />
sudo rosdep init<br />
rosdep update<br />
rosdep install --from-path . -i -y <br />
<br />
Install other 3-rd party dependencies by running<br />
<br />
sudo apt-get install libbullet-dev libsdl-image1.2-dev libsdl-dev<br />
<br />
<br />
Next, only of you are a contributor to the private ROPOD repository (you should have already been informed by your coach if you are), install the following packages, otherwise jump to "Compile Software" section.<br />
<br />
<br />
'''ROPOD specific packages'''<br />
cd ''_catkin_workspace_dir_''/src<br />
wstool init<br />
wstool up<br />
<br />
'''ROPOD-common lib'''<br />
<br />
git clone git@git.ropod.org:ropod/ropod_common.git<br />
sudo mv ropod_common /opt/<br />
<br />
<br />
'''Zyre'''<br />
<br />
On the git-page of Sebastian Blumenthal, a bash script can be found to install the zyre-dependencies:<br />
cd ~<br />
wget https://raw.githubusercontent.com/blumenthal/ropod-base-cpp/master/install_deps.sh<br />
chmod 755 install_deps.sh<br />
./install_deps.sh --workspace-path=/opt --install-path=/usr/local<br />
<br />
= Compile Software =<br />
<br />
The first time you install the files in your computer be sure that the folders ‘build’ and ‘devel’ are removed, as well as the file src/Cmakelists.txt<br />
<br />
Then, on the main directory level, run a cmake command to generate the executable files<br />
<pre>catkin_make</pre><br />
<br />
You can run the alias <br />
<pre> clean_build</pre><br />
to do all these actions at once. However a clean build is only necessary twice each time you want to add functionality. AT the very beginning after updating the repository and at the end before commiting changes to the repository. <br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].<br />
<br />
</div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials/Setting_up_your_project&diff=55409MRC/Tutorials/Setting up your project2018-05-02T14:35:29Z<p>20170140: /* Using the EMC framework */</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 />
#include <emc/io.h><br />
#include <unistd.h><br />
<br />
int main()<br />
{<br />
emc::IO io; <br />
while( io.ok() )<br />
{<br />
sleep(1);<br />
io.speak("test " );<br />
}<br />
<br />
return 0;<br />
}<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>20170140https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials&diff=55367MRC/Tutorials2018-05-02T09:52:50Z<p>20170140: </p>
<hr />
<div>In here, one can find the programs that are going to be used for this course and the proper way of operating them. If one encounters a problem/error, this is typically resolved in the tutorial. If not, then one can also consult the [[Embedded_Motion_Control_2018/FAQ | FAQ]].<br />
<br />
# [[ 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 />
# [[ 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_2017 | 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 />
# [[ Embedded_Motion_Control/FullExample | Full Example ]]<br />
<br />
<!--<br />
# [[ Embedded_Motion_Control/OpenCV | Additional OpenCV ]]<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>20170140https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials&diff=55365MRC/Tutorials2018-05-02T09:50:21Z<p>20170140: </p>
<hr />
<div>In here, one can find the programs that are going to be used for this course and the proper way of operating them. If one encounters a problem/error, this is typically resolved in the tutorial. If not, then one can also consult the [[Embedded_Motion_Control_2018/FAQ | FAQ]].<br />
<br />
# [[ 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_2017 | 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 />
# [[ Embedded_Motion_Control/FullExample | Full Example ]]<br />
<br />
<!--<br />
# [[ Embedded_Motion_Control/OpenCV | Additional OpenCV ]]<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>20170140https://cstwiki.wtb.tue.nl/index.php?title=MRC/Tutorials/Installing_Ubuntu&diff=55286MRC/Tutorials/Installing Ubuntu2018-05-01T08:22:48Z<p>20170140: </p>
<hr />
<div>= Installing Ubuntu =<br />
<br />
Download Ubuntu 16.04:<br />
* [http://releases.ubuntu.com/16.04/ubuntu-16.04.4-desktop-i386.iso 32-bit]<br />
* [http://releases.ubuntu.com/16.04/ubuntu-16.04.4-desktop-amd64.iso 64-bit]<br />
<br />
Then, assuming you are currently running Windows, go to [http://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows this page] and follow the instructions to create a bootable USB stick. Reboot your computer with the newly created USB stick, and install Ubuntu. If you want to keep using Windows next to Ubuntu the most easy way is to have a dual-boot system, i.e., during startup you can choose to boot either Ubuntu or Windows. Of course you can also bring your notebook to the ICT servicedesk and ask them to install Ubuntu (but mention that you need version '''16.04''').<br />
<br />
=== Troubleshoot ===<br />
<br />
'''Nothing happens when I reboot with the USB drive'''<br />
<br />
When rebooting your computer with the USB stick it may be the case that booting from your hard drive or SSD is preferred over booting from the USB drive, and the Ubuntu installation doesn't start. In that case, try rebooting again, and now try to enter the ''BIOS'' or watch out for a ''Boot order'' menu. Often, you have to press keys during start-up such as F12 or DEL. Once you found the boot order menu, make sure the USB drive has priority over your normal drive, and restart.<br />
<br />
= The Ubuntu Terminal =<br />
<br />
Most of your interaction with Ubuntu will be done through the terminal, the number-one way of interacting with Ubuntu using your keyboard. A terminal can be started by pressing ''ctrl-alt-t''. <!-- It might be a good idea to drag the terminal icon in the menu to the Ubuntu panel, as you will be using it a lot. --><br />
<br />
Although the terminal commands may seem somewhat puzzling at first, you'll soon find out that the terminal is a nifty tool and allows for faster and more powerful access to all of Ubuntu's possibilities than the graphical interface and mouse. If you don't know your way around the terminal, have a look at [https://help.ubuntu.com/community/UsingTheTerminal this page].<br />
<br />
<br />
Ubuntu is already pretty great out-of-the-box, but some [[Embedded Motion Control/Tutorials/Customizing Ubuntu | customizations will make your Ubuntu experience even better]].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Ropod_v1_hardware_configuration&diff=54592RoPod/Tutorials/Ropod v1 hardware configuration2018-04-18T13:00:44Z<p>20170140: Created page with '= Laser = * Configure IP-address using the SOPAS-software of Sick. Make sure the IP-address is in the same domain as the local network of the robot. * Place this IP-address in th…'</p>
<hr />
<div>= Laser =<br />
* Configure IP-address using the SOPAS-software of Sick. Make sure the IP-address is in the same domain as the local network of the robot.<br />
* Place this IP-address in the corresponding launch file<br />
<br />
= Network =<br />
* 1 central router, 1 router on the robot, connected to the PC.<br />
* router of the robot should have DD-WRT firmware installed. An overview can be found at https://www.dd-wrt.com/wiki/index.php/Supported_Devices. Make sure, the hardware revision is correct as well!<br />
* General installation advice can be found at https://www.dd-wrt.com/wiki/index.php/Installation<br />
* Download the right firmware-version<br />
* Flash the firmware on the robot-router<br />
* An overview of different strategies for linking routers can be found at https://www.dd-wrt.com/wiki/index.php/Category:Linking_Routers. Now, we chose the Client Bridge link.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod_Tutorials&diff=54591RoPod Tutorials2018-04-18T12:49:30Z<p>20170140: </p>
<hr />
<div><div STYLE="float: left; width:60%"><br />
</div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
During the RoPod project, you will use several tools, systems and concepts you might have (partly) seen before. Here, a general overview will be given in order to get everything up-and-running as fast as possible. <br />
<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Windows Part) | Installing Ubuntu (Windows Part)]]<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Linux Part) | Installing Ubuntu (Linux Part)]]<br />
# [[ RoPod/Tutorials/Configuring GitHub | Configuring GitHub]]<br />
# [[ RoPod/Tutorials/Matlab Installation | Matlab Installation]]<br />
# [[ RoPod/Tutorials/Matlab and ROPOD platform interface | Matlab and ROPOD platform interface]]<br />
# [[ RoPod/Tutorials/ROS installation | ROS installation]]<br />
# [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and a ROS node interface]]<br />
# [[ RoPod/Tutorials/GAZEBO installation and interface with ROS | GAZEBO installation and interface with ROS]]<br />
# [[ RoPod/Tutorials/Install SDL library | Install SDL library]]<br />
# [[ RoPod/Tutorials/Load heightmap in GAZEBO | Load heightmap in GAZEBO]]<br />
# [[ RoPod/Tutorials/Setup IDE | Setup IDE]]<br />
<br />
= Using the robot =<br />
# [[ RoPod/Tutorials/Simulation | Simulation: how to get the software running?]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWireless | Connecting to the robot (wireless)]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWired | Connecting to the robot (wired)]]<br />
# [[ RoPod/Tutorials/Gmapping | Gmapping]]<br />
# [[ RoPod/Tutorials/Localization | Localization]]<br />
<br />
= Miscellaneous =<br />
# [[ RoPod/Tutorials/C++ | Learning C++]]<br />
# [[ RoPod/Tutorials/RGBD-camera: calibration & registration | RGBD-camera: calibration & registration]]<br />
# [[ RoPod/Tutorials/Connecting to file server via samba | Connecting to file server via samba]]<br />
# [[ RoPod/Tutorials/Commands cheat sheet | Commands cheat sheet]]<br />
# [[ RoPod/Tutorials/Copying External Repositories| Copying External Repositories]]<br />
# [[ RoPod/Tutorials/Ropod_v1_hardware_configuration | Ropod v1: hardware configuration]]<br />
# Tutorials of our World Model, the Environment Descriptor (ED), can be found [https://github.com/tue-robotics/ed_tutorials here].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=Packing_List&diff=54550Packing List2018-04-16T15:29:50Z<p>20170140: Created page with '* Robot(s) & flightcase * Batteries & charger * Router * Network Cables * Tools? * Mobidik * screen (and cables!), keyboard & mouse to connect to robot? * laptop stand *'</p>
<hr />
<div>* Robot(s) & flightcase<br />
* Batteries & charger<br />
* Router<br />
* Network Cables<br />
* Tools?<br />
* Mobidik<br />
* screen (and cables!), keyboard & mouse to connect to robot?<br />
* laptop stand<br />
*</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod_Table_Menu&diff=54549RoPod Table Menu2018-04-16T15:22:22Z<p>20170140: </p>
<hr />
<div><div style="text-align: left; position: relative; margin: .5em; border: .1em solid black; padding: 10px 10px 10px 10px; width:200px; background-color: #f9f9f9; margin: 5px 5px 5px 5px"><br />
<div style="position: absolute; display: inline; border: 1px solid; padding: 0 .5em; top: -0.8em; left: 1em; background-color: white; "><font size="3"><b>RoPod Navigation:</b></font></div><br />
<p><b><u>Info</u></b></p><br />
<ul><br />
<li>[[RoPod_Project|Main Page]]</li><br />
<li>[[RoPod_Contact|Contact]]</li><br />
<li>[[RoPod_Tutorials|Tutorials]]</li><br />
<li>[[RoPod_Minutes|Minutes]]</li><br />
<li>[[RoPod_Issues_ToDo|Issues / to do]]</li><br />
</ul><br />
<p><b><u>RoPod Configuration</u></b></p><br />
<ul><br />
<li>[[RoPod_Hardware|Hardware]]</li><br />
<li>[[RoPod_Software|Software]]</li><br />
<li>[[RoPod_Conventions|Conventions]]</li><br />
<li>[[RoPod_Repository|Repository]]</li><br />
<li>[[Packing_List|Packing List]]</li><br />
<br />
</ul><br />
<p><b><u>Other</u></b></p><br />
<ul><br />
<li>[[RoPod_FAQ|FAQ]]</li><br />
</ul><br />
</div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=54548RoPod/Tutorials/ROS installation2018-04-16T15:20:23Z<p>20170140: </p>
<hr />
<div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
<div STYLE="float: left; width:60%"><br />
=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
= Install basic set of packages = <br />
<br />
<pre>sudo apt-get -y update && apt-get install -y \<br />
nano \<br />
vim \<br />
git \<br />
mercurial \<br />
cmake \<br />
build-essential \<br />
automake \<br />
libtool \<br />
libtool-bin \<br />
pkg-config \<br />
wget \<br />
curl \<br />
unzip \<br />
libjsoncpp-dev</pre><br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage. Install the Desktop-Full version. Make sure you follow at least steps 1.1-1.7 in the webpage .<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
= Follow basic tutorials for ROS =<br />
<br />
Get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
<br />
= Install ROPOD Software =<br />
<br />
<pre>echo "source ~/ropod-project-software/catkin_workspace/src/platform/setup.bash" >> ~/.bashrc<br />
echo "source ~/ropod-project-software/catkin_workspace/src/platform/robot_common/setup.bash" >> ~/.bashrc</pre><br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, the next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
<br />
=Install Dependencies =<br />
First, make sure your system is up-to-date:<br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
<br />
Then, install all ROS dependencies by running<br />
cd ''_catkin_workspace_dir_''<br />
sudo rosdep init<br />
rosdep update<br />
rosdep install --from-path . -i -y <br />
<br />
Install other 3-rd party dependencies by running<br />
<br />
sudo apt-get install libbullet-dev libsdl-image1.2-dev libsdl-dev<br />
<br />
<br />
Next, only of you are a contributor to the private ROPOD repository (you should have already been informed by your coach if you are), install the following packages, otherwise jump to "Compile Software" section.<br />
<br />
<br />
'''ROPOD specific packages'''<br />
cd ''_catkin_workspace_dir_''/src<br />
wstool init<br />
wstool up<br />
<br />
<br />
'''Zyre'''<br />
<br />
On the git-page of Sebastian Blumenthal, a bash script can be found to install the zyre-dependencies:<br />
cd ~<br />
wget https://raw.githubusercontent.com/blumenthal/ropod-base-cpp/master/install_deps.sh<br />
chmod 755 install_deps.sh<br />
./install_deps.sh --workspace-path=/opt --install-path=/usr/local<br />
<br />
= Compile Software =<br />
<br />
The first time you install the files in your computer be sure that the folders ‘build’ and ‘devel’ are removed, as well as the file src/Cmakelists.txt<br />
<br />
Then, on the main directory level, run a cmake command to generate the executable files<br />
<pre>catkin_make</pre><br />
<br />
You can run the alias <br />
<pre> clean_build</pre><br />
to do all these actions at once. However a clean build is only necessary twice each time you want to add functionality. AT the very beginning after updating the repository and at the end before commiting changes to the repository. <br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].<br />
<br />
</div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Load_heightmap_in_GAZEBO&diff=46301RoPod/Tutorials/Load heightmap in GAZEBO2018-01-23T12:10:17Z<p>20170140: </p>
<hr />
<div>In principle Gazebo can load directly heightmaps specified in a png grayscale file. However, after following some tutorials, there is a bug in GAZEBO and the heightmap is not loaded correctly. According to comments in forums such functionality has not been paid too much attention since it is more efficient to work with mesh files when checking for collisions.<br />
<br />
Therefore, as an alternative one can convert the heightmap into a 3D mesh file and load it in GAZEBO, which works straightforward. The conversion could be made in a program like blender, however here directions are given using open source software.<br />
<br />
The conversion process is divided in several steps:<br />
<br />
1. Convert PGM to SVG<br />
<br />
The conversion is made using the program potrace. If not installed, run:<br />
<br />
<pre><br />
sudo apt install potrace<br />
</pre><br />
<br />
Next, use the resolution of your heightmap to compute the corresponding dpi resolution. Use this formula: <br />
<br />
dpi resolution = 25.4 / #mmperpixel<br />
<br />
For the heightmap of the lab, the resolution is 25mm/pixel, thus 1.016 dpi. Next run the potrace command as follows:<br />
<br />
<pre><br />
potrace -s heightmap.pgm -a 0 -r 1.016<br />
</pre><br />
<br />
Then a file named heightmap.svg is created.<br />
<br />
2. Convert SVG to openSCAD file<br />
<br />
OpenSCAD is an open source software to create mesh files, however it works with its own file types, thus we will later export the mesh to STL file. Thus, to do that, first a conversion from SVG to openSCAD is necessary.<br />
<br />
To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step2 . For the installation of the plugin you need to copy the paths2openscad.py AND the paths2openscad.inx files.<br />
<br />
When creating the openSCAD file you can choose the height(mm) and the smoothing factor. Values of 1000 mm (Maximum allowed in the configuration) and 0.5 respectively work fine.<br />
<br />
3. Render and create STL file<br />
<br />
After installating openSCAD, follow step three from this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step3 . Thus, in openSCAD render the file generated in the previous step and export it as STL. The commands are slightly updated compared to the commands in the link. You should use Design-> Render and File->Export->Export as STL.<br />
<br />
4. Create a URDF-file<br />
<br />
Open a texteditor and create a URDF-file. Below an example is given. Important is that you refer to the STL-files generated in the previous step (here malaga_test_map) for both the collision-map and the visual-map. In the lines below it you can set the scaling in x, y and z-direction. It is IMPORTANT to scale DOWN the mesh 1000 times. This because the default units in the STL file are millimeters and in GAZEBO are meters. If you wish to have walls higher than 1000mm choose an appropriate scale in z-direction.<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<robot name="Floorplan_demo_ROPOD"><br />
<br />
<br />
<link name="map"><br />
<inertial><br />
<mass value="500"/><br />
<inertia<br />
ixx="1000.0" ixy="0.0" ixz="0.0"<br />
iyy="1000.0" iyz="0.0"<br />
izz="1000.0"/><br />
</inertial> <br />
<br />
<visual name="map_visual"><br />
<origin rpy="0 0 0" xyz="0 0 0"/><br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</visual><br />
<br />
<collision name="map_collision"> <br />
<origin rpy="0 0 0" xyz="0 0 0"/> <br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</collision> <br />
<br />
</link> <br />
<br />
<gazebo reference="map"><br />
<maxContacts>10</maxContacts><br />
<laserRetro>0</laserRetro><br />
<dampingFactor>0.01</dampingFactor><br />
<selfCollide>false</selfCollide><br />
</gazebo><br />
<br />
</robot><br />
</pre><br />
<br />
5. Use URDF-file in GAZEBO<br />
<br />
As a final step, you can use the generated STL file in GAZEBO. At the moment we do this by referring to the URDF-file in the "start.launch"-file of the corresponding robot.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=46281RoPod/Tutorials/ROS installation2017-12-01T09:03:38Z<p>20170140: /* Install Dependencies */</p>
<hr />
<div>=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage.<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
(This is not valid/ to be checked)Then, install roslaunch, which will be useful when launching multiple ROS applications from packages.<br />
<br />
<pre>sudo apt-get install python-roslaunch</pre><br />
<br />
Install SMACH tools that wuill be used to create state machines<br />
<br />
<pre>sudo apt-get install ros-kinetic-smach*</pre><br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
You can get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, teh next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
=Install Dependencies =<br />
First, make sure your system is up-to-date:<br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
<br />
'''tf2 bullet'''<br />
<br />
sudo apt-get install ros-kinetic-tf2-bullet<br />
<br />
'''autoconf'''<br />
<br />
sudo apt-get install autoconf<br />
<br />
'''libyaml'''<br />
<br />
sudo apt-get install libyaml-cpp-dev<br />
<br />
'''Zyre'''<br />
<br />
Follow instructions for **master** branches: https://github.com/zeromq/zyre<br />
<br />
At the moment of writing (Oct, 2017), those correspond to:<br />
* libsodium 1.0.15<br />
* libzmq 4.2.2<br />
* czmq 4.0.2<br />
* zyre 2.0.0<br />
<br />
<br />
git clone --depth 1 -b stable https://github.com/jedisct1/libsodium.git<br />
cd libsodium<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/libzmq.git<br />
cd libzmq<br />
./autogen.sh<br />
# do not specify "--with-libsodium" if you prefer to use internal tweetnacl<br />
# security implementation (recommended for development)<br />
./configure --with-libsodium<br />
make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/czmq.git<br />
cd czmq<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/zyre.git<br />
cd zyre<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
<br />
'''JSONCPP'''<br />
<br />
apt-get install libjsoncpp-dev<br />
<br />
= Compile Software =<br />
<br />
After installing the dependencies, then you should be able to compile the software now:<br />
<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=46280RoPod/Tutorials/ROS installation2017-11-30T09:28:35Z<p>20170140: </p>
<hr />
<div>=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage.<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
(This is not valid/ to be checked)Then, install roslaunch, which will be useful when launching multiple ROS applications from packages.<br />
<br />
<pre>sudo apt-get install python-roslaunch</pre><br />
<br />
Install SMACH tools that wuill be used to create state machines<br />
<br />
<pre>sudo apt-get install ros-kinetic-smach*</pre><br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
You can get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, teh next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
=Install Dependencies =<br />
First, make sure your system is up-to-date:<br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
<br />
'''tf2 bullet'''<br />
<br />
sudo apt-get install ros-kinetic-tf2-bullet<br />
<br />
'''autoconf'''<br />
<br />
sudo apt-get install autoconf<br />
<br />
'''Zyre'''<br />
<br />
Follow instructions for **master** branches: https://github.com/zeromq/zyre<br />
<br />
At the moment of writing (Oct, 2017), those correspond to:<br />
* libsodium 1.0.15<br />
* libzmq 4.2.2<br />
* czmq 4.0.2<br />
* zyre 2.0.0<br />
<br />
<br />
git clone --depth 1 -b stable https://github.com/jedisct1/libsodium.git<br />
cd libsodium<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/libzmq.git<br />
cd libzmq<br />
./autogen.sh<br />
# do not specify "--with-libsodium" if you prefer to use internal tweetnacl<br />
# security implementation (recommended for development)<br />
./configure --with-libsodium<br />
make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/czmq.git<br />
cd czmq<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/zyre.git<br />
cd zyre<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
<br />
'''JSONCPP'''<br />
<br />
apt-get install libjsoncpp-dev<br />
<br />
= Compile Software =<br />
<br />
After installing the dependencies, then you should be able to compile the software now:<br />
<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ROS_installation&diff=46279RoPod/Tutorials/ROS installation2017-11-30T09:22:46Z<p>20170140: </p>
<hr />
<div>=Get familiar with ROS =<br />
The Robot Operating System (ROS) is a framework for writing robot software. ROS uses concepts like nodes, topics, messages, etc. Get familiar with them by searching on the web. You can start reading at:<br />
http://wiki.ros.org/ROS/Concepts<br />
<br />
=Install ROS =<br />
ROS have several distributions (versions). Install ROS kinetic distribution, which is the one compatible with ubuntu 16.04. Follow the instructions on this webpage.<br />
<br />
http://wiki.ros.org/kinetic/Installation/Ubuntu<br />
<br />
(This is not valid/ to be checked)Then, install roslaunch, which will be useful when launching multiple ROS applications from packages.<br />
<br />
<pre>sudo apt-get install python-roslaunch</pre><br />
<br />
Install SMACH tools that wuill be used to create state machines<br />
<br />
<pre>sudo apt-get install ros-kinetic-smach*</pre><br />
<br />
To test the installation, run in a terminal the ROS core:<br />
<br />
<pre>roscore</pre><br />
<br />
Then in another terminal you can type:<br />
<br />
<pre>rostopic list</pre><br />
<br />
You should be able to see at least the following:<br />
<br />
<pre>/rosout<br />
/rosout_agg</pre><br />
<br />
You can get familiar with ROS using the tutorials for beginners available at http://wiki.ros.org/ROS/Tutorials.<br />
<br />
Get familiar with catkin workspaces, which will allow you to build a ROS node in the future. Moreover, get familiar on how to run a ros node.<br />
<br />
If you already [[ RoPod/Tutorials/Configuring GitHub | cloned the ropod-project-software]] in your home directory, teh next step is to install the software dependencies, i.e. non standard packages and third party software:<br />
=Install Dependencies =<br />
<br />
'''tf2 bullet'''<br />
<br />
sudo apt-get install ros-kinetic-tf2-bullet<br />
<br />
'''autoconf'''<br />
<br />
sudo apt-get install autoconf<br />
<br />
'''Zyre'''<br />
<br />
Follow instructions for **master** branches: https://github.com/zeromq/zyre<br />
<br />
At the moment of writing (Oct, 2017), those correspond to:<br />
* libsodium 1.0.15<br />
* libzmq 4.2.2<br />
* czmq 4.0.2<br />
* zyre 2.0.0<br />
<br />
<br />
git clone --depth 1 -b stable https://github.com/jedisct1/libsodium.git<br />
cd libsodium<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/libzmq.git<br />
cd libzmq<br />
./autogen.sh<br />
# do not specify "--with-libsodium" if you prefer to use internal tweetnacl<br />
# security implementation (recommended for development)<br />
./configure --with-libsodium<br />
make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/czmq.git<br />
cd czmq<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
git clone git://github.com/zeromq/zyre.git<br />
cd zyre<br />
./autogen.sh && ./configure && make check<br />
sudo make install<br />
sudo ldconfig<br />
cd ..<br />
<br />
<br />
'''JSONCPP'''<br />
<br />
apt-get install libjsoncpp-dev<br />
<br />
= Compile Software =<br />
<br />
After installing the dependencies, then you should be able to compile the software now:<br />
<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
<br />
In the next part of the tutorial we are going to see how [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and ROS can communicate]].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Simulation&diff=46264RoPod/Tutorials/Simulation2017-11-14T08:00:12Z<p>20170140: </p>
<hr />
<div>To get all the software up-and-running, first the right configuration of different bash-files should be added. Open a terminal (CTRL+SHIFT+T), go to your .bashrc and source the /src/platform/devpc/setup.bash-file:<br />
<pre><br />
vim .bashrc<br />
source ~/ropod-project-software/catkin_workspace/src/platform/devpc/setup.bash<br />
</pre><br />
Save by ESC followed by typing ":wq". Now you w(rote) and q(uitted) the file. Now, in order to have all the dependencies and aliases correct, close all your terminals and open a new one.<br />
<br />
As some packages are missing, we need to install these first. Therefore, execute the following commands in a terminal:<br />
<pre><br />
sudo apt-get install libbullet-dev libsdl-image1.2-dev libsdl-dev ros-kinetic-robot-pose-ekf<br />
</pre><br />
<br />
The software can be build by navigating to the catkin_workspace of the project executing the catkin_make command:<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
In order to do this at once, e.g. after making a small change in the software, you can use the alias "buildit" as well instead of these commands. Do you want to remove the old software and re-build because there are some problems? Just run the "clean_build" command. More handy command can be found in the [[ RoPod/Tutorials/Commands cheat sheet | cheat sheet]].<br />
<br />
Basically, you are good to go now! How? Well, lets first simulate the sensor data. There is a very handy command for that (again :)), namely pstart. So open a terminal and<br />
<pre><br />
pstart<br />
</pre><br />
<br />
From another terminal you can check which topics are active (using rostopic list). What happened here? Well, we started the "start.launch"-file in the pico_bringup folder (you can roscd to it). Here, all the parameters of the sensors can be found, both for the real robot and the simulation environment. Remember, this is robot-specific, so that is why the p is there before the start command. If you run this from your own pc, the Gazebo simulator environment will start up, as well as rviz. This last program visualizes the relevant data. At the moment however, it will probably not visualize any data. Why? Because the robot has no knowledge about its environment! We can achieve this by launching the localization-package, as well as the navigation package. Both depend on the worldmodel, the [https://github.com/tue-robotics/ed Environment Descriptor (ED)], so we launch all at once. We can find the configurations in the applications-folder. The command to get this up-and-running for the first demonstrations are as follows:<br />
<pre><br />
roslaunch ropod_demo_dec_2017 ROPOD_demo_dec2017_gazebosim.launch <br />
</pre><br />
<br />
Now, you will see the environment showing up and the costmaps of the navigation package. If you want more information about this, e.g. how to set up this description and how the world-model is used for localization and navigation purposes? Check out the [https://github.com/tue-robotics/ed_tutorials ED-tutorials]. In order to navigate around with the robot, you can give it a navigation goal with the "2D Nav Goal"-command. On the real-robot, you probably have to give an initial location as well. You can do this with the "2d Pose Estimate"-button.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Simulation&diff=46263RoPod/Tutorials/Simulation2017-11-14T07:59:48Z<p>20170140: </p>
<hr />
<div>To get all the software up-and-running, first the right configuration of different bash-files should be added. Open a terminal (CTRL+SHIFT+T), go to your .bashrc and source the /src/platform/devpc/setup.bash-file:<br />
<pre><br />
vim .bashrc<br />
source ~/ropod-project-software/catkin_workspace/src/platform/devpc/setup.bash<br />
</pre><br />
Save by ESC followed by typing ":wq". Now you w(rote) and q(uitted) the file. Now, in order to have all the dependencies and aliases correct, close all your terminals and open a new one.<br />
<br />
As some packages are missing, we need to install these first. Therefore, execute the following commands in a terminal:<br />
<pre><br />
sudo apt-get install libbullet-dev<br />
sudo apt-get install libsdl-image1.2-dev<br />
sudo apt-get install libsdl-dev<br />
sudo apt-get install ros-kinetic-robot-pose-ekf<br />
</pre><br />
<br />
The software can be build by navigating to the catkin_workspace of the project executing the catkin_make command:<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
In order to do this at once, e.g. after making a small change in the software, you can use the alias "buildit" as well instead of these commands. Do you want to remove the old software and re-build because there are some problems? Just run the "clean_build" command. More handy command can be found in the [[ RoPod/Tutorials/Commands cheat sheet | cheat sheet]].<br />
<br />
Basically, you are good to go now! How? Well, lets first simulate the sensor data. There is a very handy command for that (again :)), namely pstart. So open a terminal and<br />
<pre><br />
pstart<br />
</pre><br />
<br />
From another terminal you can check which topics are active (using rostopic list). What happened here? Well, we started the "start.launch"-file in the pico_bringup folder (you can roscd to it). Here, all the parameters of the sensors can be found, both for the real robot and the simulation environment. Remember, this is robot-specific, so that is why the p is there before the start command. If you run this from your own pc, the Gazebo simulator environment will start up, as well as rviz. This last program visualizes the relevant data. At the moment however, it will probably not visualize any data. Why? Because the robot has no knowledge about its environment! We can achieve this by launching the localization-package, as well as the navigation package. Both depend on the worldmodel, the [https://github.com/tue-robotics/ed Environment Descriptor (ED)], so we launch all at once. We can find the configurations in the applications-folder. The command to get this up-and-running for the first demonstrations are as follows:<br />
<pre><br />
roslaunch ropod_demo_dec_2017 ROPOD_demo_dec2017_gazebosim.launch <br />
</pre><br />
<br />
Now, you will see the environment showing up and the costmaps of the navigation package. If you want more information about this, e.g. how to set up this description and how the world-model is used for localization and navigation purposes? Check out the [https://github.com/tue-robotics/ed_tutorials ED-tutorials]. In order to navigate around with the robot, you can give it a navigation goal with the "2D Nav Goal"-command. On the real-robot, you probably have to give an initial location as well. You can do this with the "2d Pose Estimate"-button.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Configuring_GitHub&diff=46262RoPod/Tutorials/Configuring GitHub2017-11-13T15:23:48Z<p>20170140: </p>
<hr />
<div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
<div STYLE="float: left; width:60%"><br />
<br />
In order to keep track of the changes made within the software of the entire project (so we know who screwed up :)) and have the ability to revert a the software to a previous revision, we are using version control. We will use GitHub for this. 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 />
Get familiar first with Git repositories https://git-scm.com/doc, and the used concepts: i.e. branches, commits, push, etc.<br />
<br />
Create an account in guthub https://github.com/, it will allow you to do changes to the repository<br />
<br />
Install Git in your system: https://git-scm.com/downloads<br />
<br />
<pre>sudo apt-get install git </pre><br />
At this point you might want to follow this tutorial to get hands on experience on how a repository works: https://git-scm.com/docs/gittutorial. For now you can also continue to get a quick example on how to commit files.<br />
<br />
= Example =<br />
Send the username of your github account to the administrator of the RoPod repository (Currently César López) so that you can be added as contributor of the ropod project, you will receive a link back in your email in which you can accept the invitation to the project. Next, configure git in your laptop<br />
<br />
<pre>git config --global user.name "USERNAME used in GitHub" <br />
git config --global user.email "Mail_used_in_Git_Hub@domain.com"</pre><br />
<br />
We will create 2 folder in your home directory: ropod-project and ropod-project-software. Therefore, cd to your home directory first:<br />
<br />
<pre>cd ~</pre><br />
<br />
<pre>git init</pre><br />
<br />
Add the ROPOD test branch repository to your GIT<br />
<br />
<pre>git remote add origin https://github.com/tue-ropod/ropod-project.git</pre><br />
<br />
Then clone both repositories and, for the rest of this tutorial, switch to the testbranch of in the ropod-project directory<br />
<br />
<pre><br />
git clone https://github.com/tue-ropod/ropod-project.git<br />
git clone https://github.com/tue-ropod/ropod-project-software.git<br />
cd ropod-project<br />
git checkout InittestBranch</pre><br />
<br />
Check the online repository, for now mostly only readme files:<br />
https://github.com/tue-ropod/ropod-project/tree/InittestBranch<br />
<br />
Now, suppose you want to add a file. You can make a test by creating a test file and add it, commit it and push it into the repository:<br />
<br />
<pre>cd ropod-project/documentation/reports<br />
echo "My first test file to add, commit and push into the repository" > YOURNAME_testfile.txt</pre><br />
<br />
You have created the YOURNAME_testfile.txt, which you will add to version-control:<br />
<pre>git add YOURNAME_testfile.txt </pre><br />
<br />
Now the file is added to version control but is not committed yet, run:<br />
<br />
<pre>git status</pre><br />
<br />
and you will be able to see that the file was added and not committed yet. You can indeed add more files if desired. Next, commit the file:<br />
<br />
<pre>git commit -m "Here you can add a comment to this commit, i.e. commit test "</pre><br />
<br />
Always try to put a meaningful comment in the message field of your commit. In this way other people know what is your commit for. By the way, after three months it could be really useful for yourself as well! Now run again:<br />
<br />
<pre>git status</pre><br />
<br />
Notice that there is nothing to commit but you received the message that your branch is ahead of ‘origin/InittestBranch’, which is the branch we are using in the online repository.<br />
<br />
<pre>git push -u origin InittestBranch</pre><br />
<br />
You will be prompted the username and password created in the github website.<br />
Now, if you check the online repository at https://github.com/tue-ropod/ropod-project/tree/InittestBranch you should see your file online.<br />
<br />
In order to set some dependencies correctly, add the following line to your .bashrc:<br />
<pre><br />
vim ~/.bashrc<br />
source ~/ropod-project-software/catkin_workspace/src/platform/setup.bash<br />
source ~/ropod-project-software/catkin_workspace/src/platform/devpc/setup.bash<br />
</pre><br />
<br />
= Structure of Ropod-repository: software =<br />
All packages will be placed in the catkin_workspace/src. To add more structure between all the packages, this folder contains 3 other folders:<br />
* functionalities: Here, all non-standard ros-packages are placed, such as ED, but also packages for localization, navigation, etc. <br />
* platform: Files corresponding to specific platforms located in this folder, while general files for getting the communication with the sensors to work is placed in the robot_common sub-folder<br />
* applications: In order to configure the robot for specific use-cases, all the relevant files are placed here.<br />
<br />
As it is impossible to work without Matlab, lets [[ RoPod/Tutorials/Matlab Installation | install ]] it now. <br />
</div></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Load_heightmap_in_GAZEBO&diff=46257RoPod/Tutorials/Load heightmap in GAZEBO2017-11-03T12:04:49Z<p>20170140: </p>
<hr />
<div>In principle Gazebo can load directly heightmaps specified in a png grayscale file. However, after following some tutorials, there is a bug in GAZEBO and the heightmap is not loaded correctly. According to comments in forums such functionality has not been paid too much attention since it is more efficient to work with mesh files when checking for collisions.<br />
<br />
Therefore, as an alternative one can convert the heightmap into a 3D mesh file and load it in GAZEBO, which works straightforward. The conversion could be made in a program like blender, however here directions are given using open source software.<br />
<br />
The conversion process is divided in several steps:<br />
<br />
1. Convert PGM to SVG<br />
<br />
The conversion is made using the program potrace. If not installed, run:<br />
<br />
<pre><br />
sudo apt install potrace<br />
</pre><br />
<br />
Next, use the resolution of your heightmap to compute the corresponding dpi resolution. Use this formula: <br />
<br />
dpi resolution = 25.4 / #mmperpixel<br />
<br />
For the heightmap of the lab, the resolution is 25mm/pixel, thus 1.016 dpi. Next run the potrace command as follows:<br />
<br />
<pre><br />
potrace -s heightmap.pgm -a 0 -r 1.016<br />
</pre><br />
<br />
Then a file named heightmap.svg is created.<br />
<br />
2. Convert SVG to openSCAD file<br />
<br />
OpenSCAD is an open source software to create mesh files, however it works with its own file types, thus we will later export the mesh to STL file. Thus, to do that, first a conversion from SVG to openSCAD is necessary.<br />
<br />
To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step2 . For the installation of the plugin you need to copy the paths2openscad.py AND the paths2openscad.inx files.<br />
<br />
When creating the openSCAD file you can choose the height(mm) and the smoothing factor. Values of 1000 mm (Maximum allowed in the configuration) and 0.5 respectively work fine.<br />
<br />
3. Render and create STL file<br />
<br />
After installating openSCAD, follow step three from this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step3 . Thus, in openSCAD render the file generated in the previous step and export it as STL.<br />
<br />
4. Create a URDF-file<br />
<br />
Open a texteditor and create a URDF-file. Below an example is given. Important is that you refer to the STL-files generated in the previous step (here malaga_test_map) for both the collision-map and the visual-map. In the lines below it you can set the scaling in x, y and z-direction. It is IMPORTANT to scale DOWN the mesh 1000 times. This because the default units in the STL file are millimeters and in GAZEBO are meters. If you wish to have walls higher than 1000mm choose an appropriate scale in z-direction.<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<robot name="Floorplan_demo_ROPOD"><br />
<br />
<br />
<link name="map"><br />
<inertial><br />
<mass value="500"/><br />
<inertia<br />
ixx="1000.0" ixy="0.0" ixz="0.0"<br />
iyy="1000.0" iyz="0.0"<br />
izz="1000.0"/><br />
</inertial> <br />
<br />
<visual name="map_visual"><br />
<origin rpy="0 0 0" xyz="0 0 0"/><br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</visual><br />
<br />
<collision name="map_collision"> <br />
<origin rpy="0 0 0" xyz="0 0 0"/> <br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</collision> <br />
<br />
</link> <br />
<br />
<gazebo reference="map"><br />
<maxContacts>10</maxContacts><br />
<laserRetro>0</laserRetro><br />
<dampingFactor>0.01</dampingFactor><br />
<selfCollide>false</selfCollide><br />
</gazebo><br />
<br />
</robot><br />
</pre><br />
<br />
5. Use URDF-file in GAZEBO<br />
<br />
As a final step, you can use the generated STL file in GAZEBO. At the moment we do this by referring to the URDF-file in the "start.launch"-file of the corresponding robot.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Load_heightmap_in_GAZEBO&diff=46256RoPod/Tutorials/Load heightmap in GAZEBO2017-11-03T12:04:24Z<p>20170140: </p>
<hr />
<div>In principle Gazebo can load directly heightmaps specified in a png grayscale file. However, after following some tutorials, there is a bug in GAZEBO and the heightmap is not loaded correctly. According to comments in forums such functionality has not been paid too much attention since it is more efficient to work with mesh files when checking for collisions.<br />
<br />
Therefore, as an alternative one can convert the heightmap into a 3D mesh file and load it in GAZEBO, which works straightforward. The conversion could be made in a program like blender, however here directions are given using open source software.<br />
<br />
The conversion process is divided in several steps:<br />
<br />
1. Convert PGM to SVG<br />
<br />
The conversion is made using the program potrace. If not installed, run:<br />
<br />
<pre><br />
sudo apt install potrace<br />
</pre><br />
<br />
Next, use the resolution of your heightmap to compute the corresponding dpi resolution. Use this formula: <br />
<br />
dpi resolution = 25.4 / #mmperpixel<br />
<br />
For the heightmap of the lab, the resolution is 25mm/pixel, thus 1.016 dpi. Next run the potrace command as follows:<br />
<br />
<pre><br />
potrace -s heightmap.pgm -a 0 -r 1.016<br />
</pre><br />
<br />
Then a file named heightmap.svg is created.<br />
<br />
2. Convert SVG to openSCAD file<br />
<br />
OpenSCAD is an open source software to create mesh files, however it works with its own file types, thus we will later export the mesh to STL file. Thus, to do that, first a conversion from SVG to openSCAD is necessary.<br />
<br />
To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step2 . For the installation of the plugin you need to copy the paths2openscad.py AND the paths2openscad.inx files.<br />
<br />
When creating the openSCAD file you can choose the height(mm) and the smoothing factor. Values of 1000 mm (Maximum allowed in the configuration) and 0.5 respectively work fine.<br />
<br />
3. Render and create STL file<br />
<br />
After installating openSCAD, follow step three from this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step3 . Thus, in openSCAD render the file generated in the previous step and export it as STL.<br />
<br />
4. Create a URDF-file<br />
<br />
Open a texteditor and create a URDF-file. Below an example is given. Important is that you refer to the STL-files generated in the previous step (here malaga_test_map) for both the collision-map and the visual-map. In the lines below it you can set the scaling in x, y and z-direction. It is IMPORTANT to scale DOWN the mesh 1000 times. This because the default units in the STL file are millimeters and in GAZEBO are meters. If you wish to have walls higher than 1000mm choose an appropriate scale in z-direction.<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<robot name="Floorplan_demo_ROPOD"><br />
<br />
<br />
<link name="map"><br />
<inertial><br />
<mass value="500"/><br />
<inertia<br />
ixx="1000.0" ixy="0.0" ixz="0.0"<br />
iyy="1000.0" iyz="0.0"<br />
izz="1000.0"/><br />
</inertial> <br />
<br />
<visual name="map_visual"><br />
<origin rpy="0 0 0" xyz="0 0 0"/><br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</visual><br />
<br />
<collision name="map_collision"> <br />
<origin rpy="0 0 0" xyz="0 0 0"/> <br />
<geometry><br />
<mesh <br />
filename="package://ed_object_models/models/malaga_test/walls/shape/malaga_test_map.stl"<br />
scale="0.001 0.001 0.002" <br />
/><br />
</geometry><br />
</collision> <br />
<br />
</link> <br />
<br />
<gazebo reference="map"><br />
<maxContacts>10</maxContacts><br />
<laserRetro>0</laserRetro><br />
<dampingFactor>0.01</dampingFactor><br />
<selfCollide>false</selfCollide><br />
</gazebo><br />
<br />
</robot><br />
</pre><br />
<br />
4. Use URDF-file in GAZEBO<br />
<br />
As a final step, you can use the generated STL file in GAZEBO. At the moment we do this by referring to the URDF-file in the "start.launch"-file of the corresponding robot.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod_Tutorials&diff=46255RoPod Tutorials2017-11-02T16:53:58Z<p>20170140: </p>
<hr />
<div><div STYLE="float: left; width:60%"><br />
</div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
During the RoPod project, you will use several tools, systems and concepts you might have (partly) seen before. Here, a general overview will be given in order to get everything up-and-running as fast as possible. <br />
<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Windows Part) | Installing Ubuntu (Windows Part)]]<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Linux Part) | Installing Ubuntu (Linux Part)]]<br />
# [[ RoPod/Tutorials/Configuring GitHub | Configuring GitHub]]<br />
# [[ RoPod/Tutorials/Matlab Installation | Matlab Installation]]<br />
# [[ RoPod/Tutorials/Matlab and ROPOD platform interface | Matlab and ROPOD platform interface]]<br />
# [[ RoPod/Tutorials/ROS installation | ROS installation]]<br />
# [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and a ROS node interface]]<br />
# [[ RoPod/Tutorials/GAZEBO installation and interface with ROS | GAZEBO installation and interface with ROS]]<br />
# [[ RoPod/Tutorials/Install SDL library | Install SDL library]]<br />
# [[ RoPod/Tutorials/Load heightmap in GAZEBO | Load heightmap in GAZEBO]]<br />
# [[ RoPod/Tutorials/Setup IDE | Setup IDE]]<br />
<br />
= Using the robot =<br />
# [[ RoPod/Tutorials/Simulation | Simulation: how to get the software running?]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWireless | Connecting to the robot (wireless)]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWired | Connecting to the robot (wired)]]<br />
# [[ RoPod/Tutorials/Gmapping | Gmapping]]<br />
# [[ RoPod/Tutorials/Localization | Localization]]<br />
<br />
= Miscellaneous =<br />
# [[ RoPod/Tutorials/C++ | Learning C++]]<br />
# [[ RoPod/Tutorials/RGBD-camera: calibration & registration | RGBD-camera: calibration & registration]]<br />
# [[ RoPod/Tutorials/Connecting to file server via samba | Connecting to file server via samba]]<br />
# [[ RoPod/Tutorials/Commands cheat sheet | Commands cheat sheet]]<br />
# [[ RoPod/Tutorials/Copying External Repositories| Copying External Repositories]]<br />
# Tutorials of our World Model, the Environment Descriptor (ED), can be found [https://github.com/tue-robotics/ed_tutorials here].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod_Tutorials&diff=45770RoPod Tutorials2017-10-26T14:24:35Z<p>20170140: </p>
<hr />
<div><div STYLE="float: left; width:60%"><br />
</div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
During the RoPod project, you will use several tools, systems and concepts you might have (partly) seen before. Here, a general overview will be given in order to get everything up-and-running as fast as possible. <br />
<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Windows Part) | Installing Ubuntu (Windows Part)]]<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Linux Part) | Installing Ubuntu (Linux Part)]]<br />
# [[ RoPod/Tutorials/Configuring GitHub | Configuring GitHub]]<br />
# [[ RoPod/Tutorials/Matlab Installation | Matlab Installation]]<br />
# [[ RoPod/Tutorials/Matlab and ROPOD platform interface | Matlab and ROPOD platform interface]]<br />
# [[ RoPod/Tutorials/ROS installation | ROS installation]]<br />
# [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and a ROS node interface]]<br />
# [[ RoPod/Tutorials/GAZEBO installation and interface with ROS | GAZEBO installation and interface with ROS]]<br />
# [[ RoPod/Tutorials/Install SDL library | Install SDL library]]<br />
# [[ RoPod/Tutorials/Load heightmap in GAZEBO | Load heightmap in GAZEBO]]<br />
# [[ RoPod/Tutorials/Setup IDE | Setup IDE]]<br />
<br />
= Using the robot =<br />
# [[ RoPod/Tutorials/Simulation | Simulation: how to get the software running?]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWireless | Connecting to the robot (wireless)]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWired | Connecting to the robot (wired)]]<br />
# [[ RoPod/Tutorials/Gmapping | Gmapping]]<br />
# [[ RoPod/Tutorials/Localization | Localization]]<br />
<br />
= Miscellaneous =<br />
# [[ RoPod/Tutorials/C++ | Learning C++]]<br />
# [[ RoPod/Tutorials/RGBD-camera: calibration & registration | RGBD-camera: calibration & registration]]<br />
# [[ RoPod/Tutorials/Connecting to file server via samba | Connecting to file server via samba]]<br />
# [[ RoPod/Tutorials/Commands cheat sheet | Commands cheat sheet]]<br />
# [[ RoPod/Tutorials/Copying External Repositories| Copying External Repositories]]<br />
<br />
Tutorials of our World Model, the Environment Descriptor (ED), can be found [https://github.com/tue-robotics/ed_tutorials here].</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/ConnectingToRobotWireless&diff=45769RoPod/Tutorials/ConnectingToRobotWireless2017-10-26T14:07:52Z<p>20170140: </p>
<hr />
<div>= Entering Pico from terminal via the network = <br />
Did you follow the [[RoPod/Tutorials/Simulation | Simulation tutorials]]? Then all you did for the simulations should work on the robot as well! We only need to be able to communicate to the robot. Connect to the ropod-network (ask for the password). Running sshpico gives you access to pico in the ropod-user account(again, ask for the password) via the ssh-protocol. If the network is connected to internet as well, you checkout the git-repository on the robot itself of checkout the branch you are working on.<br />
<br />
Once you are running some packages on the robot and you want to use the information published and topics (for visualization using rviz for example), then open a terminal and run pico-core on your own pc. Now, from this terminal (where you run the pico-core command) you can use these data on your own pc, for example to visualize them in rviz. This might be relevant as well to set the initial-pose for localization for example.<br />
<br />
<br />
= Automatic key generation =<br />
If you want to prevent using a password each time you want to log in to Pico, you need to generate a key. Therefore, you can use an automatic key generator, for example using the method copied from [https://superuser.com/questions/8077/how-do-i-set-up-ssh-so-i-dont-have-to-type-my-password | this] site running the next set of command from your local desktop system:<br />
<br />
<pre><br />
ssh-keygen<br />
</pre><br />
<br />
Make sure to use the default for the keyname. We suggest that you do set a passphrase on that key, otherwise it's a security problem. "-t rsa" wouldn't be a bad idea, but probably isn't needed.<br />
<br />
ssh-copy-id ropod@192.168.44.81<br />
<br />
That will ask you for the password you'd use to log in, and sets up the authorized_keys stuff for you. (no need to do it by hand)<br />
Then, this:<br />
<br />
<pre><br />
ssh-agent<br />
</pre><br />
<br />
or maybe this:<br />
<br />
<pre><br />
exec ssh-agent sh<br />
</pre><br />
<br />
or:<br />
<pre><br />
exec ssh-agent bash<br />
</pre><br />
<br />
That will start up an SSH agent that can hold your key. On many modern Unix variants, if you're logged in graphically, this will already have taken place. The first variant (with the backticks) puts an ssh-agent into the background and sets up the environment variables to talk to it. The second two have the agent run a shell for you, so that when you exit the shell, the agent exits.<br />
Many modern Unix variants will already have an agent running for you, especially if you logged in graphically. You might try "ps aux | grep ssh-agent" or "ps -ef | grep ssh-agent"; if something is already running, use that.<br />
Then, finally:<br />
<br />
<pre><br />
ssh-add<br />
</pre><br />
<br />
It will ask for a passphrase; give it the one you gave ssh-keygen. There's also ways to make it ask graphically. And you can put the ssh-agent and ssh-add stuff into your login scripts (setup is different depending on shell you use) to automate this, but some Unix variants (current Ubuntu Linux, for instance) do most of that automatically, so that all you really need to do is create a key and use ssh-copy-id to set it up on the remote host:<br />
<pre><br />
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host<br />
</pre><br />
which in our case should be<br />
<pre><br />
ssh-copy-id -i ~/.ssh/id_rsa.pub ropod@192.168.44.81<br />
</pre><br />
<br />
Now, "ssh ropod@192.168.44.81" (or sshpico in our case!) should work without asking for any authentication. Behind the scenes, it's using a key that the ssh-agent is holding, and asking the agent to do the magic signing tricks for it.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Simulation&diff=45768RoPod/Tutorials/Simulation2017-10-26T14:00:01Z<p>20170140: </p>
<hr />
<div>To get all the software up-and-running, first the right configuration of different bash-files should be added. Open a terminal (CTRL+SHIFT+T), go to your .bashrc and source the /src/platform/devpc/setup.bash-file:<br />
<pre><br />
vim .bashrc<br />
source ~/ropod-project-software/catkin_workspace/src/platform/devpc/setup.bash<br />
</pre><br />
Save by ESC followed by typing ":wq". Now you w(rote) and q(uitted) the file. Now, in order to have all the dependencies and aliases correct, close all your terminals and open a new one.<br />
<br />
The software can be build by navigating to the catkin_workspace of the project executing the catkin_make command:<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
In order to do this at once, e.g. after making a small change in the software, you can use the alias "buildit" as well instead of these commands. Do you want to remove the old software and re-build because there are some problems? Just run the "clean_build" command. More handy command can be found in the [[ RoPod/Tutorials/Commands cheat sheet | cheat sheet]].<br />
<br />
Basically, you are good to go now! How? Well, lets first simulate the sensor data. There is a very handy command for that (again :)), namely pstart. So open a terminal and<br />
<pre><br />
pstart<br />
</pre><br />
<br />
From another terminal you can check which topics are active (using rostopic list). What happened here? Well, we started the "start.launch"-file in the pico_bringup folder (you can roscd to it). Here, all the parameters of the sensors can be found, both for the real robot and the simulation environment. Remember, this is robot-specific, so that is why the p is there before the start command. If you run this from your own pc, the Gazebo simulator environment will start up, as well as rviz. This last program visualizes the relevant data. At the moment however, it will probably not visualize any data. Why? Because the robot has no knowledge about its environment! We can achieve this by launching the localization-package, as well as the navigation package. Both depend on the worldmodel, the [https://github.com/tue-robotics/ed Environment Descriptor (ED)], so we launch all at once. We can find the configurations in the applications-folder. The command to get this up-and-running for the first demonstrations are as follows:<br />
<pre><br />
roslaunch ropod_demo_dec_2017 ROPOD_demo_dec2017_gazebosim.launch <br />
</pre><br />
<br />
Now, you will see the environment showing up and the costmaps of the navigation package. If you want more information about this, e.g. how to set up this description and how the world-model is used for localization and navigation purposes? Check out the [https://github.com/tue-robotics/ed_tutorials ED-tutorials]. In order to navigate around with the robot, you can give it a navigation goal with the "2D Nav Goal"-command. On the real-robot, you probably have to give an initial location as well. You can do this with the "2d Pose Estimate"-button.</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Simulation&diff=45767RoPod/Tutorials/Simulation2017-10-26T13:53:12Z<p>20170140: Created page with 'To get all the software up-and-running, first the right configuration of different bash-files should be added. Open a terminal (CTRL+SHIFT+T), go to your .bashrc and source the /…'</p>
<hr />
<div>To get all the software up-and-running, first the right configuration of different bash-files should be added. Open a terminal (CTRL+SHIFT+T), go to your .bashrc and source the /src/platform/devpc/setup.bash-file:<br />
<pre><br />
vim .bashrc<br />
source ~/ropod-project-software/catkin_workspace/src/platform/devpc/setup.bash<br />
</pre><br />
Save by ESC followed by typing ":wq". Now you w(rote) and q(uitted) the file. Now, in order to have all the dependencies and aliases correct, close all your terminals and open a new one.<br />
<br />
The software can be build by navigating to the catkin_workspace of the project executing the catkin_make command:<br />
<pre><br />
cd ~/ropod-project-software/catkin_workspace<br />
catkin_make<br />
</pre><br />
In order to do this at once, e.g. after making a small change in the software, you can use the alias "buildit" as well instead of these commands. Do you want to remove the old software and re-build because there are some problems? Just run the "clean_build" command. More handy command can be found in the [[ RoPod/Tutorials/Commands cheat sheet | cheat sheet]].<br />
<br />
Basically, you are good to go now! How? Well, lets first simulate the sensor data. There is a very handy command for that (again :)), namely pstart. So open a terminal and<br />
<pre><br />
pstart<br />
</pre><br />
<br />
From another terminal you can check which topics are active (using rostopic list). What happened here? Well, we started the "start.launch"-file in the pico_bringup folder (you can roscd to it). Here, all the parameters of the sensors can be found, both for the real robot and the simulation environment. Remember, this is robot-specific, so that is why the p is there before the start command. If you run this from your own pc, the Gazebo simulator environment will start up, as well as rviz. This last program visualizes the relevant data. At the moment however, it will probably not visualize any data. Why? Because the robot has no knowledge about its environment! We can achieve this by launching the localization-package, as well as the navigation package. Both depend on the worldmodel, the Environment Descriptor (ED), so we launch all at once. We can find the configurations in the applications-folder. The command to get this up-and-running for the first demonstrations are as follows:<br />
<pre><br />
roslaunch ropod_demo_dec_2017 ROPOD_demo_dec2017_gazebosim.launch <br />
</pre></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Copying_External_Repositories&diff=45765RoPod/Tutorials/Copying External Repositories2017-10-26T13:23:30Z<p>20170140: Created page with 'If a non-standard ros-package should be added while maintaining the commits of the previous package, use the following commands (in this case, the ed_tutorials package is moved):…'</p>
<hr />
<div>If a non-standard ros-package should be added while maintaining the commits of the previous package, use the following commands (in this case, the ed_tutorials package is moved):<br />
<pre><br />
git remote add ed_tutorials_remote https://github.com/tue-robotics/ed_tutorials<br />
git fetch ed_tutorials_remote<br />
git merge -s ours --no-commit ed_tutorials_remote/master<br />
<br />
git read-tree --prefix=ed_tutorials/ -u ed_tutorials_remote/master<br />
git commit -m "Imported ed_tutorials as a subtree."<br />
git mv ~/ropod-project/ed/ ~/ropod-project/catkin_workspace/src/functionalities/ED/<br />
</pre></div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod_Tutorials&diff=45764RoPod Tutorials2017-10-26T13:23:22Z<p>20170140: </p>
<hr />
<div><div STYLE="float: left; width:60%"><br />
</div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
During the RoPod project, you will use several tools, systems and concepts you might have (partly) seen before. Here, a general overview will be given in order to get everything up-and-running as fast as possible. <br />
<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Windows Part) | Installing Ubuntu (Windows Part)]]<br />
# [[ RoPod/Tutorials/Installing Ubuntu (Linux Part) | Installing Ubuntu (Linux Part)]]<br />
# [[ RoPod/Tutorials/Configuring GitHub | Configuring GitHub]]<br />
# [[ RoPod/Tutorials/Matlab Installation | Matlab Installation]]<br />
# [[ RoPod/Tutorials/Matlab and ROPOD platform interface | Matlab and ROPOD platform interface]]<br />
# [[ RoPod/Tutorials/ROS installation | ROS installation]]<br />
# [[ RoPod/Tutorials/Matlab and a ROS node interface | Matlab and a ROS node interface]]<br />
# [[ RoPod/Tutorials/GAZEBO installation and interface with ROS | GAZEBO installation and interface with ROS]]<br />
# [[ RoPod/Tutorials/Install SDL library | Install SDL library]]<br />
# [[ RoPod/Tutorials/Load heightmap in GAZEBO | Load heightmap in GAZEBO]]<br />
# [[ RoPod/Tutorials/Setup IDE | Setup IDE]]<br />
<br />
= Using the robot =<br />
# [[ RoPod/Tutorials/Simulation | Simulation: how to get the software running?]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWireless | Connecting to the robot (wireless)]]<br />
# [[ RoPod/Tutorials/ConnectingToRobotWired | Connecting to the robot (wired)]]<br />
# [[ RoPod/Tutorials/Gmapping | Gmapping]]<br />
# [[ RoPod/Tutorials/Localization | Localization]]<br />
<br />
= Miscellaneous =<br />
# [[ RoPod/Tutorials/C++ | Learning C++]]<br />
# [[ RoPod/Tutorials/RGBD-camera: calibration & registration | RGBD-camera: calibration & registration]]<br />
# [[ RoPod/Tutorials/Connecting to file server via samba | Connecting to file server via samba]]<br />
# [[ RoPod/Tutorials/Commands cheat sheet | Commands cheat sheet]]<br />
# [[ RoPod/Tutorials/Copying External Repositories| Copying External Repositories]]</div>20170140https://cstwiki.wtb.tue.nl/index.php?title=RoPod/Tutorials/Configuring_GitHub&diff=45763RoPod/Tutorials/Configuring GitHub2017-10-26T13:22:03Z<p>20170140: </p>
<hr />
<div><div style="width: 40%; float: right;"><center>{{:RoPod_Table_Menu}}</center></div><br />
<br />
<div STYLE="float: left; width:60%"><br />
<br />
In order to keep track of the changes made within the software of the entire project (so we know who screwed up :)) and have the ability to revert a the software to a previous revision, we are using version control. We will use GitHub for this. 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 />
Get familiar first with Git repositories https://git-scm.com/doc, and the used concepts: i.e. branches, commits, push, etc.<br />
<br />
Create an account in guthub https://github.com/, it will allow you to do changes to the repository<br />
<br />
Install Git in your system: https://git-scm.com/downloads<br />
<br />
<pre>sudo apt-get install git </pre><br />
At this point you might want to follow this tutorial to get hands on experience on how a repository works: https://git-scm.com/docs/gittutorial. For now you can also continue to get a quick example on how to commit files.<br />
<br />
= Example =<br />
Send the username of your github account to the administrator of the RoPod repository (Currently César López) so that you can be added as contributor of the ropod project, you will receive a link back in your email in which you can accept the invitation to the project. Next, configure git in your laptop<br />
<br />
<pre>git config --global user.name "USERNAME used in GitHub" <br />
git config --global user.email "Mail_used_in_Git_Hub@domain.com"</pre><br />
<br />
We will create 2 folder in your home directory: ropod-project and ropod-project-software. Therefore, cd to your home directory first:<br />
<br />
<pre>cd ~</pre><br />
<br />
<pre>git init</pre><br />
<br />
Add the ROPOD test branch repository to your GIT<br />
<br />
<pre>git remote add origin https://github.com/tue-ropod/ropod-project.git</pre><br />
<br />
Then clone both repositories and, for the rest of this tutorial, switch to the testbranch of in the ropod-project directory<br />
<br />
<pre><br />
git clone https://github.com/tue-ropod/ropod-project.git<br />
git clone https://github.com/tue-ropod/ropod-project-software.git<br />
cd ropod-project<br />
git checkout InittestBranch</pre><br />
<br />
Check the online repository, for now mostly only readme files:<br />
https://github.com/tue-ropod/ropod-project/tree/InittestBranch<br />
<br />
Now, suppose you want to add a file. You can make a test by creating a test file and add it, commit it and push it into the repository:<br />
<br />
<pre>cd ropod-project/documentation/reports<br />
echo "My first test file to add, commit and push into the repository" > YOURNAME_testfile.txt</pre><br />
<br />
You have created the YOURNAME_testfile.txt, which you will add to version-control:<br />
<pre>git add YOURNAME_testfile.txt </pre><br />
<br />
Now the file is added to version control but is not committed yet, run:<br />
<br />
<pre>git status</pre><br />
<br />
and you will be able to see that the file was added and not committed yet. You can indeed add more files if desired. Next, commit the file:<br />
<br />
<pre>git commit -m "Here you can add a comment to this commit, i.e. commit test "</pre><br />
<br />
Always try to put a meaningful comment in the message field of your commit. In this way other people know what is your commit for. By the way, after three months it could be really useful for yourself as well! Now run again:<br />
<br />
<pre>git status</pre><br />
<br />
Notice that there is nothing to commit but you received the message that your branch is ahead of ‘origin/InittestBranch’, which is the branch we are using in the online repository.<br />
<br />
<pre>git push -u origin InittestBranch</pre><br />
<br />
You will be prompted the username and password created in the github website.<br />
Now, if you check the online repository at https://github.com/tue-ropod/ropod-project/tree/InittestBranch you should see your file online.<br />
<br />
= Structure of Ropod-repository: software =<br />
All packages will be placed in the catkin_workspace/src. To add more structure between all the packages, this folder contains 3 other folders:<br />
* functionalities: Here, all non-standard ros-packages are placed, such as ED, but also packages for localization, navigation, etc. <br />
* platform: Files corresponding to specific platforms located in this folder, while general files for getting the communication with the sensors to work is placed in the robot_common sub-folder<br />
* applications: In order to configure the robot for specific use-cases, all the relevant files are placed here.<br />
<br />
As it is impossible to work without Matlab, lets [[ RoPod/Tutorials/Matlab Installation | install ]] it now. <br />
</div></div>20170140