Embedded Motion Control 2014 Group 12

From Control Systems Technology Group
Jump to navigation Jump to search

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

Initially, six functions are to be written to perform specific tasks to complete the corridor challenge.

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
Syntax:

Function: readlaser

Description: Reduce the set of laser data to a managable set of variables by only taking the the data from the front, sides and back (from the frame of reference attached to Pico).
Input: laser data
Output: laserfront, laserright, laserback, laserleft
Syntax:

Function: sit_eval

Description: Use the laser data to determine the situation the robot is currently in, corridor (1), T junction left (2) or T junction right (3).
Input: laserfront, laserright, laserback, laserleft
Output: sit_number
Syntax:

Function: corridor

Description: sit_number = 1, attempts to stay in the middle of the corridor and continue straight on.
Input: laserright, laserleft
Output: cmd_vel
Syntax:

Function: t_junction_left

Description: sit_number = 2, drives a set distance forward, turns left and again drives a set distance forward.
Input:
Output: cmd_vel
Syntax:

Function: t_junction_right

Description: sit_number = 3, drives a set distance forward, turns right and again drives a set distance forward.
Input:
Output: cmd_vel
Syntax:


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