Embedded Motion Control 2013 Group 1: Difference between revisions
m (→Line detection) |
m (→Line detection) |
||
Line 176: | Line 176: | ||
# ''float32[] ranges'' a array with every element being a range, in meters, for a measurement | # ''float32[] ranges'' a array with every element being a range, in meters, for a measurement | ||
Using the above data we can apply the Probabilistic [http://en.wikipedia.org/wiki/Hough_transform Hough Line Transform] to detect lines. The detected lines are then published to the topic ''/pico/line_detector/lines''. | Using the above data we can apply the Probabilistic [http://en.wikipedia.org/wiki/Hough_transform Hough Line Transform] to detect lines. The detected lines are then published to the topic ''/pico/line_detector/lines''. | ||
Each line is represented by 2 points in the [http://en.wikipedia.org/wiki/Cartesian_coordinate_system Cartesian coordinate system] which is in centimeters. In the coordinate system Pico is located in the center i.e. at (0,0) and the world (coordinate system) moves along with Pico. The x-axis is defined to be front to back while the y-axis is defined to right to left. | Each line is represented by 2 points in the [http://en.wikipedia.org/wiki/Cartesian_coordinate_system Cartesian coordinate system] which is in centimeters. In the coordinate system Pico is located in the center i.e. at (0,0) and the world (coordinate system) moves along with Pico. The x-axis is defined to be front to back while the y-axis is defined to right to left. |
Revision as of 13:46, 25 September 2013
Group Info
Name: | Abbr: | Student id: | Email: |
Groupmembers (email all) | |||
Paul Raijmakers | PR | 0792801 | p.a.raijmakers@student.tue.nl |
Pieter Aerts | PA | 0821027 | p.j.m.aerts@student.tue.nl |
Wouter Geelen | WG | 0744855 | w.geelen@student.tue.nl |
Frank Horstenbach | FH | 0792390 | f.g.h.hochstenbach@student.tue.nl |
Niels Koenraad | NK | 0825990 | n.j.g.koenraad@student.tue.nl |
Tutor | |||
Jos Elfring | n.a. | n.a. | j.elfring@tue.nl |
Meetings
(Global) Planning
Week 1 (2013-09-02 - 2013-09-08)
- Installing Ubuntu 12.04
- Installing ROS Fuerte
- Following tutorials on C++ and ROS.
- Setup SVN
Week 2 (2013-09-09 - 2013-09-15)
- Discuss about splitting up the team by 2 groups (2,3) or 3 groups (2,2,1) to whom tasks can be appointed to.
- Create 2D map using the laser scanner.
- Start working on trying to detect walls with laser scanner.
- Start working on position control of Jazz (within walls i.e. riding straight ahead, turning i.e. 90 degrees).
- Start thinking about what kind of strategies we can use/implement to solve the maze (see usefull links).
Week 3 (2013-09-16 - 2013-09-22)
- Start work on trying to detect openings in walls.
- Start working on code for corridor competition.
- Continue thinking about maze solving strategy.
Week 4 (2013-09-23 - 2013-09-29)
- Decide which maze solving strategy we are going to use/implement.
Week 5 (2013-09-30 - 2013-10-06)
- To be determined.
Week 6 (2013-10-07 - 2013-10-13)
- To be determined.
Week 7 (2013-10-14 - 2013-10-20)
- To be determined.
Week 8 (2013-10-21 - 2013-10-27)
- To be determined.
Progress
Week 2
State diagram made of nodes Localisation and Situation
Software architecture
IO Data structures
# | Datatype | Published by | Topic | Description |
A | LaserScan | Pico | /pico/laser | Laser scan data. For info click here |
B | Int32MultiArray | pico_line_detector | /pico/line_detector/lines | Every 4 elements represent a line element i.e. [x,y,x',y',...] with a maximum of n lines. Hence the array will at most contain 20 elements. The coordinates represent a line in the cartesian coordinate system with Pico being the center e.g. (0,0). The x- and y-axis in centimeters and the x-axis is in front/back of Pico while the y-axis is left/right. Further the coordinate system turns along with Pico. |
C | Int32MultiArray | |||
D | Custom message (3x booleans, 1x Float32) | |||
E | ||||
F | Custom message (3x Float32) | |||
G | Custom message (2x Float32) |
Line detection
The pico_line_detection node is responsible for detecting lines with the laser scanner data from Pico. The node retrieves the laser data from the topic /pico/laser. The topic has a standard ROS sensor message datatype namely LaserScan. The datatype includes several variables of interest to us namely;
- float32 angle_min which is the start angle of the scan in radian
- float32 angle_max the end angle of the scan in radian
- float32 angle_increment the angular distance between measurements in radian
- float32[] ranges a array with every element being a range, in meters, for a measurement
Using the above data we can apply the Probabilistic Hough Line Transform to detect lines. The detected lines are then published to the topic /pico/line_detector/lines.
Each line is represented by 2 points in the Cartesian coordinate system which is in centimeters. In the coordinate system Pico is located in the center i.e. at (0,0) and the world (coordinate system) moves along with Pico. The x-axis is defined to be front to back while the y-axis is defined to right to left.
Probabilistic Hough Line Transform
Situation sketch
Localisation
Reasoning
Motion
Software development
localisation code
(matlab generated)
clc %%x is driving direction!
Y1_1=-5; X1_1=-2;
Y1_2=-6; X1_2=6;
Y2_1=6;
X2_1=-5;
Y2_2=5; X2_2=-6;
rc1=(X1_1-X1_2)/(Y1_1-Y1_2) %%of left-hand line
rc2=(X2_1-X2_2)/(Y2_1-Y2_2) %%of right-hand line
%%##determine relative driving angle
Theta=tan(rc1+rc2)/2
%%##determine distance to left wall
offset1=X1_1-Y1_1*rc1;
Y1=-offset1/rc1
%%##determine distance to right wall
offset2=X2_1-Y2_1*rc2;
Y2=-offset2/rc2
Theory
include hough transform here