Mobile Robot Behaviors for Battle Bots
Directions:
For this activity, you will be given a set of robot behaviors for your robot to perform. Using a basic robot or your battle bot, implement each behavior and demonstrate it. To assist you, each behavior has a diagram, a description, and sample source code. You are encouraged to write your own code and use the code samples for reference.
Behavior #1: Stop Before Collision
Description:
- Your robot will travel at some forward velocity, v0
- If the distance threshold is violated, the robot stops, forward velocity=0
Sample Code:
Sample source code for this solution can be found here..
Tips and Tricks:
Think about how you could adapt this code to prevent your robot from driving over a line on the ground using your light sensor. What parts of the code would you need to change?
Behavior #2: Single Threshold Attack
Description:
- Your robot will travel at some forward velocity, v0
- If the distance threshold, t, is violated, the robot changes its velocity to attack, v1
Sample Code:
Sample source code for this solution can be found here.
Tips and Tricks:
- Experiment with different thresholds and velocities. Some robots work better at slower speeds.
- You can have a simple evade behavior if you set v1 to a negative velocity.
Behavior #3: Dual-Threshold Attack
Description:
- Your robot will wait until something is close. If the distance sensor reports a distance greater than threshold t0, stop the robot and do nothing.
- If the distance sensor senses something closer than the far threshold, t0, the robot changes its velocity to v0
- If the distance sensor senses something closer than the near threshold, t1, the robot changes its velocity to v1
Sample Code:
Sample source code for this solution can be found here.
Tips and Tricks:
- Experiment with different thresholds and velocities. Some robots work better at slower speeds.
Behavior #4: Scan for Opponent
Description:
- In a loop, your robot will scan by rotating counter clockwise. This involves setting your left motor to a negative velocity V0 and your right motor to a positive velocity v0. Your robot will "turn on a dime".
- When the distance sensor returns a value less than a threshold, t, the loop stops.
- The robot then sets both motors to a common forward velocity, 0, to stop.
- Opponent has been found. We are facing them.
Sample Code:
Sample source code for this solution can be found here.
Tips and Tricks:
- Experiment with different thresholds and velocities for attack and turn. Some robots work better at slower speeds.
Behavior #5: Search and Destroy
Description:
- This is the same as scan for opponent. However, now the robot will attack by setting its forward velocity for both motors to V1.
- An if statement is needed to choose which action you take. Scan vs. attack.
Sample Code:
Sample source code for this solution can be found here.
Tips and Tricks:
- Experiment with different thresholds and velocities for attack and turn. Some robots work better at slower speeds.
- Think of different behaviors for your robot when attacking. Maybe a head first charge might not be the smartest solution. How would you change your code?
Behavior #6: Evade (sometimes running is the smarter solution)
Description:
- Using your bump sensor, sense to see if you have been bumped from behind.
- If your bump sensor is triggered, turn for some random amount of time.
- Then, run away.
Look at the sample code below to see how this can be done.
Sample Code:
Sample source code for this solution can be found here..
Tips and Tricks:
- Think about how you can integrate the evade behavior into a battle bot strategy. You don't always want to run.
- Wrap the evade behavior around your normal battle bot behavior. When it is not bumped from behind, everything runs as normal. It only changes behavior when bumped.