Embedded Motion Control 2013: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
 
(123 intermediate revisions by 27 users not shown)
Line 1: Line 1:
<div align="center">
<div align="center">
<font size="5">Guide towards the assignment</font><br />
<font size="5">Guide towards the assignment</font><br />
<font size="4">'A-MAZE-ING JAZZ'</font>
<font size="4">'A-MAZE-ING PICO'</font>
</div>
</div>
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]
[[File:Gostai-Jazz-500x500.jpg|center|thumb|350px]]
Line 10: Line 10:
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 in which [http://www.ros.org ROS] will be the standard software framework.
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 in which [http://www.ros.org ROS] will be the standard software framework.


== Course Schedule ==
== Course Schedule and Lecture Slides ==


Lectures will be given on Mondays from 10.45 - 12.30 in Gemini-Zuid 3A12. The course schedule is as follows:
Lectures will be given on Wednesdays from 10.45 - 12.30 in Gemini-Zuid 3A08. The course schedule is as follows:


{| border="3" style="margin-left: 3em;"
{| border="3" style="margin-left: 3em;"
|-
|-
| September, 4th
| width="150" | September, 4th
| Introduction
| width="325" | Introduction
| Assignment and basic computer setup
| width="325" | [[Media:Emc-2013-assignment-intro.pdf | Assignment and basic computer setup ‎]]
|-
|-
| September, 11th
| September, 11th
| Localization
| [[Media:localization-handouts.pdf | Localization]]
| C++ and ROS Concepts
| [[Media:Emc-cpp-ros.pdf | C++ and ROS Concepts]]
|-
|-
| September, 18th
| September, 18th
| Navigation
| Navigation ([[Media:Lecture_motion_planning_1.pdf |slides]],[[Media:Motion_Planning_for_Mobile_Robots_-_A_Guide.pdf |survey]])
| Software design
| [[Media:Emc-2013-software-design.pdf | Software design]]
|-
|-
| September 25th
| September 25th
| Corridor competition
| colspan="2" | Corridor competition
|
|-
|-
| October, 2nd
| October, 2nd
| Separation of Concerns: the 5 C's
| colspan="2" |[[Media:20131002-Eindhoven-ECS-nup.pdf‎ | The “5Cs” and other meta-models for Embedded Control Systems (Herman Bruyninckx)
|
]]
|-
|-
| October 9th
| October 9th
| State estimation
| [[Media:06-opencv.pdf | Image processing using OpenCV]]
| Whole-body motion planning and control
| [[Media:AMIGOsArchitecture.pdf | AMIGO's software architecture: performing a RoboCup Challenge]]
|-
|-
| October 16th
| October 16th
| Intelligent agents
| colspan="2" | [[Media:Intelligent_Agents_In_Robotics_Final.pdf |Intelligent Agents In Robotics]]
|
|-
|-
| October 23th
| October 23th
| Final competition
| colspan="2" | Final competition
|
|-
|-
|}
|}


== Pico test schedule, maze ==
== Pico test schedule ==


In order to test your software on the Pico robot, each group has one one hour time slot a week available, on either '''Wednesday''' or '''Thursday'''. You can reserve your test slot in the table below. Make sure to keep at least one hour in between you slot and the previous and next ones, since Pico needs some time to recharge in between the time slots!
In order to test your software on the Pico robot, each group has one one hour time slot a week available.
You can reserve your test slot in the table below. There is a one hour break in between the slots, since Pico and its laptop need some time to recharge.


{| border="3" style="margin-left: 3em;"
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left"
|+ '''Week 38'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 18-09-2013 || 16.00-17.00 || Group 11 (battery not charged)
|-
| 19-09-2013 || 9.00-10.00 || Group 8
|-
| 19-09-2013 || 13.00-14.00 || Group 3
|-
| 19-09-2013 || 16.00-17.00 || Group 7
|-
| 20-09-2013 || 9.00-10.00 ||
|-
| 20-09-2013 || 11.00-12.00 ||
|-
| 20-09-2013 || 13.00-14.00 || Group 2
|-
| 20-09-2013 || 15.00-16.00 || Group 9 (pico down)
|-
|}
{| class="TablePager" style="width: 260px; min-width: 260px; margin-left: 2em; float:left"
|+ '''Week 39 (corridor competition)'''
|-
! scope="col" style="width: 80px" | '''Date'''
! scope="col" style="width: 80px" | '''Time'''
! scope="col" | '''Group'''
|-
| 23-09-2013 || 10:00-11:00 || Group 5
|-
| 23-09-2013 || 12:00-13:00 || Group 3 (network down)
|-
| 23-09-2013 || 14:00-15:00 || Group 9 (Pico down)
|-
| 23-09-2013 || 16.00-17.00 || Group 11 (Pico down)
|-
| 24-09-2013 || 11.00-12.00 || Group 10
|-
| 24-09-2013 || 13.00-14.00 || Group 3
|-
| 24-09-2013 || 15.00-16.00 || Group 9
|-
| 24-09-2013 || 17.00-18.00 || Group 11
|-
| 26-09-2013 || 9.00-10.00 ||
|-
| 26-09-2013 || 11.00-12.00 || Group 2 (Pico down)
|-
| 26-09-2013 || 13.00-14.00 ||
|-
| 26-09-2013 || 15.00-16.00 ||
|-
| 27-09-2013 || 9.00-10.00 || Group 2 (Problems with Laser)
|-
| 27-09-2013 || 11.00-12.00 ||
|-
| 27-09-2013 || 13.00-14.00 ||
|-
| 27-09-2013 || 15.00-16.00 || Group 8
|-
|}
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left"
|+ '''Week 40'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 03-10-2013 || 9.00-10.00 || Group 3
|-
| 03-10-2013 || 11.00-12.00 || Group 2
|-
| 03-10-2013 || 13.00-14.00 || Group 5
|-
| 03-10-2013 || 15.00-16.00 || Group 11
|-
| 04-10-2013 || 9.00-10.00 ||
|-
| 04-10-2013 || 11.00-12.00 || Group 9
|-
| 04-10-2013 || 13.00-14.00 || Group 7
|-
| 04-10-2013 || 15.00-16.00 || Group 8
|-
|}
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left"
|+ '''Week 41'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 11-10-2013 || 9.00-10.00 || Group 2
|-
| 11-10-2013 || 10.00-11.00 || Group 5
|-
| 11-10-2013 || 11.00-12.00 || Group 11
|-
| 11-10-2013 || 12.00-13.00 || Group 7
|-
| 11-10-2013 || 13.00-14.00 || Group 9
|-
| 11-10-2013 || 14.00-15.00 || Group 3
|-
| 11-10-2013 || 15.00-16.00 || Group 8
|-
| 11-10-2013 || 16.00-17.00 || Group 1
|-
|}
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left"
|+ '''Week 42'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 16-10-2013 || 11.00-12.30 || Group 11
|-
| 16-10-2013 || 13.00-14.30 ||
|-
| 16-10-2013 || 15.00-16.30 ||
|-
| 17-10-2013 || 9.00-10.30 ||
|-
| 17-10-2013 || 11.00-12.30 || Group 3
|-
| 17-10-2013 || 13.00-14.30 || Group 10
|-
| 17-10-2013 || 15.00-16.30 || Group 7
|-
| 18-10-2013 || 9.00-10.30 || Group 2
|-
| 18-10-2013 || 11.00-12.30 || Group 5
|-
| 18-10-2013 || 13.00-14.30 || Group 9
|-
| 18-10-2013 || 15.00-16.30 || Group 8
|-
|}
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left"
|+ '''Week 43'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 21-10-2013 || 9.00-10.00 ||
|-
| 21-10-2013 || 10.30-11.30 || Group 1
|-
| 21-10-2013 || 12.00-13.00 || Group 9
|-
| 21-10-2013 || 13.30-14.30 || Group 2
|-
| 21-10-2013 || 15.00-16.00 || Group 7
|-
| 22-10-2013 || 9.00-10.00 || Group 8
|-
| 22-10-2013 || 10.30-11.30 || group 10
|-
| 22-10-2013 || 12.00-13.00 || Group 5
|-
|-
| '''Date'''
| 22-10-2013 || 13.30-14.30 || Group 3
| '''Time'''
| '''Group'''
|-
|-
| Wednesday June, 13th
| 22-10-2013 || 15.00-16.00 || Group 11
| 09:00 - 10:00
| Group 9
|-
|-
|}
|}
 
<div style="clear:both"></div>
== Slides ==
The slides of the various lectures will be available a.s.a.p.


= Goal =
= Goal =
{{:Embedded_Motion_Control_2012/Goal}}
{{:Embedded_Motion_Control_2013/Goal}}


= Hardware =
= Hardware =


The moving Jazz robot with monocular camera and laser range finder with a working ROS interface. In addition, we provide a Jazz simulator for offline testing.
The mobile PICO robot with monocular camera and laser range finder with a working ROS interface. In addition, we provide a Jazz simulator for offline testing.
 
= Installation =
{{:Embedded_Motion_Control_2012/Installation}}


<!--
= Simulator =
{{:Embedded_Motion_Control_2013/Simulator}}
-->
=Getting Started=
=Getting Started=


To get started, please do the following tutorials:
To get started, please do the following tutorials:
* [[Embedded_Motion_Control_2013/Installation | This manual]] describes how to the install the necessary and sufficient software to start programming the PICO robot.
* C++ tutorials:
** [http://www.cplusplus.com/doc/tutorial cplusplus.com]
** [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++]
** [http://www.glenmccl.com/glos.htm C++ Glossary]
* [http://wiki.ros.org/ROS/Tutorials ROS tutorial]
** Note that you have already installed and configured your ROS environment, so you can skip the first tutorial.
** Skip tutorials about '''Catkin''' and choose the '''rosbuild''' version of a tutorial when possible
** It is advised to work in your group folder, i.e., ''~/ros/emc/emc?''.
<!--* [[Jazz_Simulator | Getting started with the Jazz simulator]]-->
* [[Embedded_Motion_Control_2013/Simulator | Getting started with the Jazz simulator]]
* [[Using Pico]]
= FAQ =
[[Embedded_Motion_Control_2013/FAQ | Here]] you can find a collection of Frequently Asked Questions. Please check this page before contacting Yanick 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.
=Group Wiki Pages=
{{:Embedded_Motion_Control_2013/Groups}}
=Group Final Presentations=


* [http://www.cplusplus.com/doc/tutorial C++ tutorial]
{| class="wikitable" style="width: 300px"
* [http://www.ros.org/wiki/ROS/Tutorials ROS tutorial] Note that you have already installed and configured your ROS environment, so you can skip the first tutorial. It is advised to work in your group folder, i.e., ''~/ros/group_?''.
|-
* [[Jazz_Simulator | Getting started with the Jazz simulator]]
| [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group01.pptx Group 01] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group02.ppt Group 02] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group03.ppt Group 03]
* [[Using Jazz]]
|-
| [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group05.ppt Group 05] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group07.ppt Group 07] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group08.pptx Group 08]
|-
| [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group09.pdf Group 09] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group10.pptx Group 10] || [http://cstwiki.wtb.tue.nl/servicerobot/Presentations/EMC2013/group11.pdf Group 11]
|}


= FAQ =
=Contact Details=
{{:Embedded_Motion_Control_2012/FAQ}}
{{:Embedded_Motion_Control_2013/Contact_Details}}

Latest revision as of 08:34, 29 October 2013

Guide towards the assignment
'A-MAZE-ING PICO'

Gostai-Jazz-500x500.jpg

Introduction

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 in which ROS will be the standard software framework.

Course Schedule and Lecture Slides

Lectures will be given on Wednesdays from 10.45 - 12.30 in Gemini-Zuid 3A08. The course schedule is as follows:

September, 4th Introduction Assignment and basic computer setup ‎
September, 11th Localization C++ and ROS Concepts
September, 18th Navigation (slides,survey) Software design
September 25th Corridor competition
October, 2nd The “5Cs” and other meta-models for Embedded Control Systems (Herman Bruyninckx)

October 9th Image processing using OpenCV AMIGO's software architecture: performing a RoboCup Challenge
October 16th Intelligent Agents In Robotics
October 23th Final competition

Pico test schedule

In order to test your software on the Pico robot, each group has one one hour time slot a week available. You can reserve your test slot in the table below. There is a one hour break in between the slots, since Pico and its laptop need some time to recharge.

Week 38
Date Time Group
18-09-2013 16.00-17.00 Group 11 (battery not charged)
19-09-2013 9.00-10.00 Group 8
19-09-2013 13.00-14.00 Group 3
19-09-2013 16.00-17.00 Group 7
20-09-2013 9.00-10.00
20-09-2013 11.00-12.00
20-09-2013 13.00-14.00 Group 2
20-09-2013 15.00-16.00 Group 9 (pico down)
Week 39 (corridor competition)
Date Time Group
23-09-2013 10:00-11:00 Group 5
23-09-2013 12:00-13:00 Group 3 (network down)
23-09-2013 14:00-15:00 Group 9 (Pico down)
23-09-2013 16.00-17.00 Group 11 (Pico down)
24-09-2013 11.00-12.00 Group 10
24-09-2013 13.00-14.00 Group 3
24-09-2013 15.00-16.00 Group 9
24-09-2013 17.00-18.00 Group 11
26-09-2013 9.00-10.00
26-09-2013 11.00-12.00 Group 2 (Pico down)
26-09-2013 13.00-14.00
26-09-2013 15.00-16.00
27-09-2013 9.00-10.00 Group 2 (Problems with Laser)
27-09-2013 11.00-12.00
27-09-2013 13.00-14.00
27-09-2013 15.00-16.00 Group 8
Week 40
Date Time Group
03-10-2013 9.00-10.00 Group 3
03-10-2013 11.00-12.00 Group 2
03-10-2013 13.00-14.00 Group 5
03-10-2013 15.00-16.00 Group 11
04-10-2013 9.00-10.00
04-10-2013 11.00-12.00 Group 9
04-10-2013 13.00-14.00 Group 7
04-10-2013 15.00-16.00 Group 8
Week 41
Date Time Group
11-10-2013 9.00-10.00 Group 2
11-10-2013 10.00-11.00 Group 5
11-10-2013 11.00-12.00 Group 11
11-10-2013 12.00-13.00 Group 7
11-10-2013 13.00-14.00 Group 9
11-10-2013 14.00-15.00 Group 3
11-10-2013 15.00-16.00 Group 8
11-10-2013 16.00-17.00 Group 1
Week 42
Date Time Group
16-10-2013 11.00-12.30 Group 11
16-10-2013 13.00-14.30
16-10-2013 15.00-16.30
17-10-2013 9.00-10.30
17-10-2013 11.00-12.30 Group 3
17-10-2013 13.00-14.30 Group 10
17-10-2013 15.00-16.30 Group 7
18-10-2013 9.00-10.30 Group 2
18-10-2013 11.00-12.30 Group 5
18-10-2013 13.00-14.30 Group 9
18-10-2013 15.00-16.30 Group 8
Week 43
Date Time Group
21-10-2013 9.00-10.00
21-10-2013 10.30-11.30 Group 1
21-10-2013 12.00-13.00 Group 9
21-10-2013 13.30-14.30 Group 2
21-10-2013 15.00-16.00 Group 7
22-10-2013 9.00-10.00 Group 8
22-10-2013 10.30-11.30 group 10
22-10-2013 12.00-13.00 Group 5
22-10-2013 13.30-14.30 Group 3
22-10-2013 15.00-16.00 Group 11

Goal

The goal of the assignment is to get the real-time concepts in embedded software design operational.

The concrete task that has to be solved is to let the PICO robot find his way out of a maze. The final demonstration by each participating group of 4-5 students will be performed during a contest, the winner of which is the group that exits the maze in the shortest amount of time. To prepare for this competition the following guidelines have to be considered:

  • to test with PICO and to prepare for the final contest, a simulator will be made available that mimics the in and outputs to the real robot. Specifics of this simulator will be presented in the first lecture on September 4th
  • the maze of the final competition will be constructed just before the competition. The maze presented in the simulator is therefore different from the real one used in the final contest.
  • both on the real and simulated PICO robot, three sources of sensor information will be available to perceive the environment and to derive the state of the robot:
    • laserdata provided by the forward pointing laser scanner,
    • images captured by the monocular camera,
    • odometry provided by the base controller
  • the robot can be actuated by sending information to the base controller
  • during the final contest, it is highly imperative that the PICO robot refrains from colliding with the walls in the maze. Colliding with the walls will result in severe time-penalties.
  • the walls of the maze will contain several types of pointers to the exit, which can potentially help PICO to speed up execution of the task Click here for a pdf file containing the arrow we will use. We also captured PICO's camera topics in a bag file while the robot was looking at the arrow. You can play this bag file as follows:
    rosbag play 2013-10-08-15-35-04.bag
    The topics /pico/camera and /pico/camera_info should then become available. For example, while playing the bag file, use
    rosrun image_view image_view image:=/pico/camera
    to view the camera images.


Corridor Competition

An intermediate review will be held on May 16th, during the corridor competition. During this challenge the students have to let the robot drive through a corridor and then take the first exit. The precise location of this exit will not be given in advance. Some facts:

Corridor example.jpg
  • The exit can be either left or right
  • It is not known beforehand how far the exit is located from the start (somewhere between 1 and 10 meters)
  • It is not known beforehand if the opposing end wall (on the far end) will be open or closed
  • The walls are approximately parallel to each other
    • Note: the walls might not be perfectly straight
  • The distance between the walls is not known in advance, but will be reasonable (somewhere between 0.5 and 1.5 meters).
    • The distance between the walls will be fairly constant throughout the corridor, 'fairly' meaning that we build the corridor by hand, and the distance may change a little along the corridor.
  • PICO will start with its laser range finder between the walls
  • PICO will be approximately facing the end of the corridor. (Notice: approximately, so don't just drive forward for n seconds!)
  • At the exit, the finish line is located approximately 30 cm from the side of the corridor (Notice: approximately, so don't just drive forward for 30 cm!). The walls that can be used to align PICO will be a little bit longer.
  • You have finished the assignment if PICO did not drive into walls, took the correct turn, the castor wheels are across the finish line.
  • Hitting the wall will result in 0 points!

During the final contest, the groups are expected to give a short (5 minute) presentation about their progress and design decisions. During the corridor competition no presentation is expected.

Hardware

The mobile PICO robot with monocular camera and laser range finder with a working ROS interface. In addition, we provide a Jazz simulator for offline testing.

Getting Started

To get started, please do the following tutorials:

FAQ

Here you can find a collection of Frequently Asked Questions. Please check this page before contacting Yanick 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.

Group Wiki Pages

Group 01 - Visit Wiki - Tutor: Jos Elfring -

Group 02 - Visit Wiki - Tutor: Rob Janssen -

Group 03 - Visit Wiki - Tutor: Janno Lunenburg -

Group 04 - Visit Wiki - Tutor: - -

Group 05 - Visit Wiki - Tutor: Sjoerd van den Dries -

Group 06 - Visit Wiki - Tutor: - -

Group 07 - Visit Wiki - Tutor: Jos Elfring -

Group 08 - Visit Wiki - Tutor: Rob Janssen -

Group 09 - Visit Wiki - Tutor: Janno Lunenburg -

Group 10 - Visit Wiki - Tutor: Sjoerd van den Dries -

Group 11 - Visit Wiki - Tutor: Jos Elfring -

Group Final Presentations

Group 01 Group 02 Group 03
Group 05 Group 07 Group 08
Group 09 Group 10 Group 11

Contact Details

In case of questions related to working with the real Jazz robot or general ROS/C++ questions, please contact Yanick. For questions regarding the simulator or the svn, please contact Sjoerd.

Student Assistent

Yanick Douven - y dot g dot m dot douven at student dot tue dot nl

Tutors

Sjoerd van den Dries - S dot v dot d dot Dries at tue dot nl

Luis Ferreira - L dot F dot Bento dot Ferreira at tue dot nl

Janno Lunenburg - J dot J dot M dot Lunenburg at tue dot nl