Embedded Motion Control 2014 Group 12: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 41: Line 41:


===Function: const_hard===
===Function: const_hard===
<p>Description: Stop Pico from running into a wall by readjusting if any point in the laser data is under a threshold.
Description: Stop Pico from running into a wall by readjusting if any point in the laser data is under a threshold.
<br>Input: laser data
<br>Input: laser data
<br>Output: cmd_vel
<br>Output: cmd_vel


===Function: corridor===
===Function: corridor===
<p>Description: attempts to stay in the middle of the corridor (strafing by comparing position to left and right wall) and continue straight on.
Description: attempts to stay in the middle of the corridor (strafing by comparing position to left and right wall) and continue straight on.


===Function: t_junction (L&R)===
===Function: t_junction (L&R)===
<p>Description: drives a set distance forward, turns a set distance to left/right and again drives a set distance forward.
Description: drives a set distance forward, turns a set distance to left/right and again drives a set distance forward.


===Function: freedom===
===Function: freedom===
<p> continue moving when exited the maze to pass the finish line.
Continue moving when exited the maze to pass the finish line.


===Simplified===
===Simplified===
<p>In order to maintain simplicity for the corridor challenge, not all described situations have been added to the script that will be used for the challenge. Only using states: Either unknown (0), corridor (1), t-junction left (2), t-junction right (3) or too close to the wall (4)
In order to maintain simplicity for the corridor challenge, not all described situations have been added to the script that will be used for the challenge. Only using states: Either unknown (0), corridor (1), t-junction left (2), t-junction right (3) or too close to the wall (4)


==Revisions==
==Revisions==

Revision as of 19:55, 15 May 2014

Members of group 12

Anthom van Rijn 0737682
Jan Donkers 0724801
Jeroen Willems 0755833
Karel Drenth 0863408

Testing

  • 09-05 Initial testing to familiarize with the operation of Pico.
  • 13-05 Testing corridor_challenge on Pico.

Software architecture corridor challenge

The written file will be shortly discussed and explained here.

Function: laser data

Description: This function is called every time a message is received (as is specified by the Subscriber in the main function) and returns three orthogonal values (using pointers).
There will be created five 'vectors' averaged over 3 sensor data points each. One front vector, two 90 degrees side vectors and two 45 degrees diagonal vectors.

Function: Evaluation of situation sit_eval

Next, the situation has to be analyzed by comparing and analyzing the gathered laser data. Currently using:

- Corridor
- T-Junction (L+R)
- Crossing
- Corner (L+R)
- Dead End
- Exit


Input: laserfront, laserright, laserback, laserleft
Output: sit_number

Function: const_hard

Description: Stop Pico from running into a wall by readjusting if any point in the laser data is under a threshold.
Input: laser data
Output: cmd_vel

Function: corridor

Description: attempts to stay in the middle of the corridor (strafing by comparing position to left and right wall) and continue straight on.

Function: t_junction (L&R)

Description: drives a set distance forward, turns a set distance to left/right and again drives a set distance forward.

Function: freedom

Continue moving when exited the maze to pass the finish line.

Simplified

In order to maintain simplicity for the corridor challenge, not all described situations have been added to the script that will be used for the challenge. Only using states: Either unknown (0), corridor (1), t-junction left (2), t-junction right (3) or too close to the wall (4)

Revisions

  • 15-05 Revisited corridor_challange_v2.cpp -> renamed to corridorchallenge_v2.cpp and added some new functions:
  • Extended laser 'vision' with left- and right diagonal view and updated amount of laser data used for each 'vision' vector.
  • Extended the amount of possible situation PICO can be in to nine. Currently using:

- Corridor
- T-Junction (L+R)
- Crossing
- Corner (L+R)
- Dead End
- Exit

  • Added a function that compares the left and right laser data and 'strafes' PICO to the middle using the y coordinate.
  • Added an 'integrator'-like function that aligns the front vector of PICO to the walls of the corridor.
  • Included front laser data to this function to ensure 'backup' when PICO comes too close to a wall.
  • Added corresponding functions to new situations.
  • Tweaked variables to ensure functioning simulations. (Allowance of some initial angle with reference to wall 'disturbance'). PICO is currently able to pass corridors, T-junctions and corners, for this however, the amount of possible situations PICO can be in is reduced for the sake of simplicity.




  • 13-05 Testing corridor_challenge on Pico.

Updated the corridor_challange.cpp to corridor_challange_v2.cpp. Brought the function sit-eval withing the callback loop for sensor messages. This way, the situation is evaluated and updated whenever new laser data is present. Some minor typo's. Added a situation that when things are to close (hard constraint) pico shuts down. After testing it was revealed that pico is stuck in condition 0 (does not know where he is).