Embedded Motion Control 2014 Group 12

From Control Systems Technology Group
Revision as of 11:01, 16 May 2014 by S099430 (talk | contribs)
Jump to navigation Jump to search

Members of group 12

Groupmembers (email all)
Name: Student id: Email:
Anthom van Rijn 0737682 e-mail Anthom
Jan Donkers 0724801 e-mail Jan
Jeroen Willems 0755833 e-mail Jeroen
Karel Drenth 0863408 e-mail Karel

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).