Embedded Motion Control 2014 Group 1
Group Info
Name: | Student id: | Email: |
Groupmembers (email all) | ||
Sander Hoen | 0609581 | s.j.l.hoen@student.tue.nl |
Marc Meijs | 0761519 | m.j.meijs@student.tue.nl |
Wouter van Buul | 0675642 | w.b.v.buul@student.tue.nl |
Richard Treuren | 0714998 | h.a.treuren@student.tue.nl |
Joep van Putten | 0588616 | b.j.c.v.putten@student.tue.nl |
Tutor | ||
Sjoerd van den Dries | n/a | s.v.d.dries@tue.nl |
Meetings
Time Table
Fill in the time you spend on this course on Dropbox "Time survey 4k450.xlsx"
Planning
Week 1 (2014-04-25 - 2014-05-02)
- Installing Ubuntu 12.04
- Installing ROS
- Following tutorials on C++ and ROS.
- Setup SVN
- Plan a strategy for the corridor challenge
Week 2 (2014-05-03 - 2014-05-09)
- Finishing tutorials
- Interpret laser sensor
- Positioning of PICO
Week 3 (2014-05-10 - 2014-05-16)
- File:Presentatie week 3.pdf
- Starting on software components
- Writing dedicated corridor challenge software
Software architecture
We decided to use a architecture as seen as the following figure:
The components with their respective functions and in and outputs are listed here + who wil work on it:
node | subscibes topic: | input | publishes on topic: | output | Description |
Line detection - Sander | - | laser scan | /pico/line_detection | lines consisting out of start and end point (x_1,y_1),(x_2,y_2) etc. | transformation of raw data to lines by use of hough-transform |
Position - Richard | line coordinates | (X_left, X_right, Y, theta) also named 'relative position' | Determine distance to wall to left, right and front wall. Also determines angle theta with respect to the corridor. | ||
Arrow detection | camera | Arrow left of right | determine if pico sees an arrow and in what direction. | ||
state recognition - Joep | lines, vision, relative position | an integer of whitch state is recognized | recognize situation and transform this to one of the states. | ||
setpoint generator - Wouter | state, relative position | speed and position | Create setpoint for position of pico by use of state. (determine wanted position and speed). | ||
Drive - Marc | setpoint, relative position | x,y,thata (Moving pico) | make sure that pico is positioned centered if this is needed and turn when needed.
|
Line detection - Sander
inputs: --
function: transformation of raw data to lines by use of hough-transform
output: lines consisting out of start and end point (x_1,y_1),(x_2,y_2) etc.
convert laser data to points (x,y)
use hough transform
filter lines
data output format: (richard + sander)
topic: /pico/lines
msg: lines
relative distance - Richard
input topic: /pico/lines
function: Determine distance to wall to left, right and front wall. Also determines angle theta with respect to the corridor.
output: (Y_left, Y_right, X, theta)
output topic: /pico/dist
msg: dist
The angle theta can be calculated with the next fomula:
[math]\displaystyle{ \theta = atan((y2-y1)/(x2-x1)) }[/math]
the position perpendicular to the line/wall is calculated with the next formula:
[math]\displaystyle{ X_r = x2 - ((y2-y1)/(x2/x1))*y2*sin(\theta_1) }[/math]
[math]\displaystyle{ X_l = x4 - ((y4-y3)/(x4/x3))*y4*sin(\theta_2) }[/math]
theta is average of left and right or only left or right depending on situation
Drive - Marc
inputs: setpoint, relative position
function: make sure that pico is positioned centered if this is needed and turn when needed.
outputs: (Moving pico)
Situation - Wouter
inputs: lines, vision, relative position
input topic: /pico/lines and /pico/arrow
function: recognize situation and transform this to one of the states.
output: situation number
output topic: /pico/sit
msg: sit
For the corridor challenge the following states are defined:
1. initialization
2. exit left
3. exit right
4. straight driving
5. collision
6. exit (stop with the program).
State generator - Joep
input: Situation, relative position
input topic: /pico/sit
function: Create setpoint for position of pico by use of state. (determine wanted position and speed).
output:
output topic: /pico/
msg:
PICO states corridor challenge
For the robot, the internal states can be visualized as in the following figure: