User Tools

Site Tools


marvin:ecp4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
marvin:ecp4 [2009/01/28 22:36] sohnmarvin:ecp4 [2009/01/29 11:00] (current) rieper
Line 4: Line 4:
 </texit> </texit>
  
-======Lab report 4 - Behaviour control======+======Lab report 4 - Behaviour Control======
 **Date:** January 16nd 2009\\ **Date:** January 16nd 2009\\
 **Duration of activity:** 8-16\\ **Duration of activity:** 8-16\\
Line 10: Line 10:
  
 =====Project Goal===== =====Project Goal=====
-Make the robot drive autonomous, avoiding obstacles, using a behaviour model.+Make the robot drive autonomously, avoiding obstacles by means of a behaviour model.
  
 =====Plan===== =====Plan=====
-  * Move balance code to a thread. +  * Move balance related code to a thread. 
-  * Make control parameters writeable from outside the motor thread to make it possible to move+  * Make control parameters writeable from outside the motor thread to make it possible to drive around
-  * Copy code from previous Behaviour project ([[marvin:lab8]]). +  * Copy code from previous Behaviour project (([[http://wiki.aasimon.org/?id=marvin:lab8|Lab 8]])). 
-  * Modify the code to make it fit the Marvin.+  * Modify the code to make it fit Marvin.
  
-=== The Ultrasonic Sensor === +=====Theory===== 
-Ultrasonic sensors work on a principle similar to radar or sonar by emitting an impulse and interpreting the echoes from radio or sound waves respectively. Ultrasonic sensors generate high frequency sound waves and evaluate the echo which is received back by the sensor. The timer interval between the emitted and received signal is then calculated in order to determine a distance to a given object. The ultrasonic sensors are also known as transducers when they both send and receive signals. The Ultrasonic Sensor (([[http://mindstorms.lego.com/overview/]])) measures distance in centimetres and in inches. It is able to measure distances from 0 to 255 centimetres with a precision of +/- 3 cm. Large sized objects with hard surfaces return the best readings. Objects made of soft fabric or that are curved [like a ballor are very thin or small can be difficult for the sensor to detect. Note that two or more Ultrasonic Sensors operating in the same room may interrupt each other’s readings.+====The Ultrasonic Sensor==== 
 +Ultrasonic sensors work on a principle similar to radar or sonar by emitting an impulse and interpreting the echoes from radio or sound waves respectively. Ultrasonic sensors generate high frequency sound waves and evaluate the echo which is received back by the sensor. The time interval between the emitted and received signal is then calculated in order to determine a distance to a given object. The ultrasonic sensors are also known as transducers when they both send and receive signals. The Ultrasonic Sensor(([[http://mindstorms.lego.com/overview/|LEGO Mindstorms]])) measures distance in centimetres and in inches. It is able to measure distances from 0 to 255 centimetres with a precision of +/- 3 cm. Large sized objects with hard surfaces return the best readings. Objects made of soft fabric or that are curved (like a ballor are very thin or small can be difficult for the sensor to detect. Note that two or more Ultrasonic Sensors operating in the same room may interrupt each other’s readings.
  
 {{ :marvin:sonic.png |The NXT Ultrasonic Sensor}} {{ :marvin:sonic.png |The NXT Ultrasonic Sensor}}
  
-=== Knowledge learned from previous lessons === +====Knowledge Learned from Previous Lessons==== 
-Prior to using a sensor for a specific purpose it is important to investigate the main use for the sensor. For example in lab session 4 (([[marvin:lab4]])) we used the light-sensor as an input for measuring tilt of the robot. Or in other words, it was not the primary use for the sensor we used it for. Another example is the ultrasonic sensor (([[marvin::lab2]])) which operates fairly precise when operated at an angle of 90 degrees to the wall, because is uses echo for measurement. When the angle was shifted to one side the sensor became increasingly inaccurate. Again you have to closely investigate the capabilities and limitations of the sensor one plans to use. As the ultrasonic sensor depends on sound, the primary limitations are echo delays and angle shifts. Therefore the best readings will be available when the sensor is positioned directly in in front of a wall. And the best readings will also be available when to sensor is close to the wall due to the fact that echoes will travel in different directions. These limitations will not be a problem in our project due to the fact that we only use the ultrasonic sensor to avoid that Marvin will hit any walls.+Prior to using a sensor for a specific purpose it is important to investigate the main use for the sensor. For example in lab session 4 (([[http://wiki.aasimon.org/?id=marvin:lab4|Lab 4]])) we used the light-sensor as an input for measuring tilt of the robot. Or in other words, it was not the primary use for the sensor we used it for. Another example is the ultrasonic sensor (([[http://wiki.aasimon.org/?id=marvin:lab2|Lab 2]])) which operates fairly precise when operated at an angle of 90 degrees to the wall, because is uses echo for measurement. When the angle was shifted to one side the sensor became increasingly inaccurate. Again you have to closely investigate the capabilities and limitations of the sensor one plans to use. As the ultrasonic sensor depends on sound, the primary limitations are echo delays and angle shifts. Therefore the best readings will be available when the sensor is positioned directly in in front of a wall. And the best readings will also be available when to sensor is close to the wall due to the fact that echoes will travel in different directions. These limitations will not be a problem in our project due to the fact that we only use the ultrasonic sensor to avoid that Marvin will hit any walls.
  
 [[http://www.youtube.com/watch?v=1gR1UL5FbTQ|{{:marvin:p_lab3_bhv.jpg?255x210}}]] [[http://www.youtube.com/watch?v=1gR1UL5FbTQ|{{:marvin:p_lab3_bhv.jpg?255x210}}]]
 {{youtube>1gR1UL5FbTQ?small}} {{youtube>1gR1UL5FbTQ?small}}
  
-=====The Behavior class and its subclasses===== +=====Implementation===== 
-====Behavior==== +====The Behavior Class====
-  * Beskriv Behavior superklassen +
-  * Prioriteter +
-  * Resurse fordeling +
- +
-===RandomDrive=== +
-The thread drives forward with different random numbers on each motor. This means that Marvin not necessarily (in fact not likely) will drive straight ahead. It will do this within a time interval. All these intervals are computed using a random function from Math library. +
- +
-===AvoidFront=== +
-Implemented using a sonic sensor. The thread activates a backward motion and do this for X seconds to get a away from the obstacle. Afterwards Marvin stops and turns left corresponding to a 90 degree turn to the left.  +
- +
-=== BTControl === +
-The thread handles blutooth communication in order to control Marvin with a remote control. The arrow keys on the computer is used instead of a remote.  +
 {{ :marvin:behavior.png?450 }} {{ :marvin:behavior.png?450 }}
-A platform for a behavior based system with a simple +A platform for a behaviour based system with a simple suppression mechanism. An actual behaviour is defined by extending the ''Behavior'' class. Each behaviour is a single thread of control. 
-suppression mechanism. An actual behavior is defined by extending  +It has access to control the Marvin by means of the control methods (forward, backward, left and right). 
-the Behavior class. Each behavior is a single thread of control. +However, access can be suppressed so that the motor commands will not be performed while the behaviour is suppressed.
-It has access to control the Marvin by means of the control methods +
-(forward, backward, left and right). +
-However, access can be suppressed so that the motor commands +
-will not be performed while the behavior is suppressed.+
  
 ^ Variable  ^ Value ^ ^ Variable  ^ Value ^
Line 73: Line 57:
     // Clone the Behavior list.     // Clone the Behavior list.
     this.behaviors = new ArrayList();     this.behaviors = new ArrayList();
 +
     for(int i = 0; i < behaviors.size(); i++) {     for(int i = 0; i < behaviors.size(); i++) {
       Behavior b = (Behavior)behaviors.get(i);       Behavior b = (Behavior)behaviors.get(i);
Line 129: Line 114:
 } }
 </code> </code>
 +The ''Behavior'' class has the following 3 subclasses:
 +====The RandomDrive Class====
 +This behaviour drives in one of four random directions for a random number of milliseconds. 
 +All of these numbers are computed using a random function from Java Math library.
  
-An example of a behavoir:+====The AvoidFront Class==== 
 +Implemented using a ultrasonic sensor. The behaviour activates a backward motion and do this for a number of milliseconds to back away from the obstacle. Afterwards Marvin stops and turns right corresponding to an approximately 90 degree turn. The code for the essential parts of the ''AvoidFront'' class can be seen below as an illustrative example of how behaviours are implemented in general.
 <code java> <code java>
 public class AvoidFront extends Behavior  public class AvoidFront extends Behavior 
Line 161: Line 151:
 } }
 </code> </code>
-The full source code for these classes can be found in the files ''Behavior.java'', ''RandomDrive.java'' and ''AvoidWall.java'' in the Marvin code tarball (([[http://wiki.aasimon.org/lib/exe/fetch.php?media=marvin:marvin-1.0.tar.gz|marvin-1.0.tar.gz]]))+====The BTController Class==== 
 +The thread handles bluetooth communication in order to control Marvin with a remote control. The arrow keys on the computer is used instead of a remote. This class will be covered in detail in the next lab report. 
 + 
 + 
 +The full source code for these classes can be found in the files ''Behavior.java'', ''RandomDrive.java'', ''BTController.java'' and ''AvoidWall.java'' in the Marvin code tarball (([[http://wiki.aasimon.org/lib/exe/fetch.php?media=marvin:marvin-1.0.tar.gz|marvin-1.0.tar.gz]]))
marvin/ecp4.1233178590.txt.gz · Last modified: 2009/01/28 22:36 by sohn