Embedded Motion Control 2014 Group 12: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 57: Line 57:
==Software Architecture==
==Software Architecture==
The initial choice was made to first create a robust, well working robot that could:
The initial choice was made to first create a robust, well working robot that could:
* Successfully recognize a situation
=== Successfully recognize a situation ===


[[File:recognition_1.png]]  
[[File:recognition_1.png]]  
Line 70: Line 70:




* Be robust against deviations in corruption in the input data
=== Be robust against deviations in corruption in the input data ===


[[File:Robustness.png]]
[[File:Robustness.png]]
To protect against imperfections in the wall (a small crack can lead  to a very high line point), several line points are taken.


* Take the appropriate action
=== Take the appropriate action ===


==Experiments==
==Experiments==

Revision as of 14:52, 22 May 2014

Introduction

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

Corridor Challenge

The goal of the corridor challenge is to make pico drive autonomously trhough a corridor, recognize succesfully a T-junction and have him/her take this corner.

Planning

Week 1

  • Lecture

Week 2

  • C++ tutorials
  • ROS tutorials
  • SVN tutorials
  • Run the first test on pico (safe_drive.cpp) to get some hands-on experience.

Week 3

  • Start the actual coding, based on the safe_drive.cpp file. Paying special attention to robustness and exceptions.
  • Have pico recognize situations (corridor, corner, t-junction,dead-end, etc.) and act accordingly
  • Have the script succesfully run in simulation

Week 4

  • Fine tuning of script
  • Corridor Competition

Software Architecture

The initial choice was made to first create a robust, well working robot that could:

Successfully recognize a situation

Recognition 1.png Recognize if it is a corridor (if so, keep on driving), if it is a T-junction (if so, make a turn).

Recognition 2.png Recognize if it is a corner (if so, make a turn), if it is a crossing (if so, make a turn).

Recognition 3.png Recognize if it is an exit (if so, keep on driving), if it is nearing an exit (if so, keep on driving)


Be robust against deviations in corruption in the input data

Robustness.png To protect against imperfections in the wall (a small crack can lead to a very high line point), several line points are taken.

Take the appropriate action

Experiments

  • 09-05-2013

Tested the provided safe_drive file, making small alteration to see the effects on Pico. Tested how hard constrains are handeld and some different safety protocols.

  • 13-05-2013

Tried, and failed, to run corridor_challenge_v2 due to numerous bugs in the script (most importantly: stuck in situation zero, unsure what to do). Received help from tutor regarding tips and tricks regarding Qt creator for debugging, building/making C++ in ROS and running simulations. Information was used to create a "how to start: Pico" tutorial. Remainder of time spent on bugfixing.

Change log

09-05

Created scipt corridor_challenge.cpp with basic siteval to recognize conditions

13-05

  • Testing corridor_challenge on Pico.

With new input from experiments: updated the corridor_challenge.cpp to corridor_challenge_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).


15-05

  • Revised corridor_challenge_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.

Final Design

The final design that was used was corridor_challenge_v2. It's goal was to use the laser data to recognize one of 9 conditions (ranging from freedom, corridor) and act in a preprogrammed way (outside of the loop) on how to handle these, and then turn on the loop again.

Result

Due to unforseen circumstances, corridorchallenge v3 failed to load on pico. We resorted back to v2, which, while less robust, was still able to find the t-junction and act accordingly. The result was first place in the limited speed catagory, with a time of around 20 seconds.

Maze Challenge

Test1

Planning

Changelog

Experiments

Final Design

Final result

We became first in the slow catogory.