Embedded Motion Control 2014 Group 1: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 141: Line 141:
function: transformation of raw data to lines by use of hough-transform <br>
function: transformation of raw data to lines by use of hough-transform <br>
output: lines consisting out of start and end point (x_1,y_1),(x_2,y_2) etc. <br>
output: lines consisting out of start and end point (x_1,y_1),(x_2,y_2) etc. <br>
<br>
convert laser data to points (x,y)<br>
use hough transform<br>
filter lines<br><br>
data output format: (richard + sander)<br><br>
topic: /pico/lines<br><br>
msg: lines<br><br>


'''Position'''<br>
'''relative distance - Richard'''<br>
inputs: line coordinates <br>
input topic: /pico/lines<br>
function: Determine distance to wall to left, right and front wall. Also determines angle theta with respect to the corridor. <br>
function: Determine distance to wall to left, right and front wall. Also determines angle theta with respect to the corridor. <br>
output: (X_left, X_right, Y, theta) also named 'relative position' <br>
output: (Y_left, Y_right, X, theta)<br>
output topic: /pico/dist<br><br>
msg: dist<br><br>
<br>
<br>
The angle theta can be calculated with the next fomula:<br><br>
The angle theta can be calculated with the next fomula:<br><br>
Line 152: Line 161:
<math>X_r = x2 - ((y2-y1)/(x2/x1))*y2*sin(\theta_1)</math><br><br>
<math>X_r = x2 - ((y2-y1)/(x2/x1))*y2*sin(\theta_1)</math><br><br>
<math>X_l = x4 - ((y4-y3)/(x4/x3))*y4*sin(\theta_2)</math><br><br>
<math>X_l = x4 - ((y4-y3)/(x4/x3))*y4*sin(\theta_2)</math><br><br>
theta is average of left and right or only left or right depending on situation<br><br>


'''Drive - Marc''' <br>
'''Drive - Marc''' <br>
Line 158: Line 169:
outputs: (Moving pico) <br>
outputs: (Moving pico) <br>


'''state recognition - Joep''' <br>
'''Situation - Wouter''' <br>
inputs: lines, vision, relative position <br>
inputs: lines, vision, relative position <br>
input topic: /pico/lines and /pico/arrow<br><br>
function: recognize situation and transform this to one of the states. <br>
function: recognize situation and transform this to one of the states. <br>
output: situation number<br><br>
output topic: /pico/sit<br><br>
msg: sit<br><br>
For the corridor challenge the following states are defined: <br>
For the corridor challenge the following states are defined: <br>


Line 170: Line 185:
6. exit (stop with the program). <br>
6. exit (stop with the program). <br>


'''setpoint generator - Wouter''' <br>
'''State generator - Joep''' <br>
input: state, relative position <br>
input: Situation, relative position <br>
input topic: /pico/sit<br><br>
function: Create setpoint for position of pico by use of state. (determine wanted position and speed). <br>
function: Create setpoint for position of pico by use of state. (determine wanted position and speed). <br>
output: speed and position <br>
output: <br>
output topic: /pico/<br><br>
msg:


== PICO states corridor challenge ==
== PICO states corridor challenge ==
For the robot, the internal states can be visualized as in the following figure:<br />
For the robot, the internal states can be visualized as in the following figure:<br />
[[File:Automaton_corridor01.png|500px]]
[[File:Automaton_corridor01.png|500px]]

Revision as of 13:57, 16 May 2014

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

  1. Meeting - 2014-05-02


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)

Software architecture

We decided to use a architecture as seen as the following figure:
Software-architecture.png

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 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:
Automaton corridor01.png