Exercise: Braitenberg Vehicles with 3pi Robots

Objective

To create a Braitenberg Vehicle useing the Pololu 3pi platform. "A Braitenberg vehicle is an agent that can autonomously move around based on its sensor inputs. It has primitive sensors (measuring some stimulus at a point) and wheels (each driven by its own motor) that function as actuators or effectors. A sensor, in the simplest configuration, is directly connected to an effector, so that a sensed signal immediately produces a movement of the wheel." (from wikipedia). What makes Braitenberg Vehicles an interesting experiment is the way in which our perceived interpretation of the robots behavior is affected by the transfer function that relates a sensor value (input) to a motor speed (output). In the image blow, the semi-circles in front of the vehicle represent light sensors, the two vertical rectangles in the bottom of each vehicle represent the wheels, and the dotted lines represent the mapping. The left vehicle (2a) escapes from light, whereas the one on the right (2b) chases the light source.

 

Steps and observations

  1. Study the diagram above and convince yourself that you understand why the left one escapes and the right one chases
  2. Augment a 3pi robot with two AMBI light sensors or two photo-resistors; use two of the 3pi's open analog input pins; according to the 3pi pin mappings table, these pins are: {PC5, ADC6, ADC7} which respectively map to arduino pins {5, 6, 7}
  3. Write a program that maps sensor values to motor speed like the left vehicle above (2a); vary this program for a mapping like the vehicle on the right (2b). Make sure to write a lighting calibration routine in your program that forces the robot to be still when there's no additional light-source in its view.
  4. Verify the robots behavior by using a hand-held light source
  5. Experiment with non-llinear mappings between sensors and motors
  6. Experiment with non-symmetric mappings between sensors and motors

Comments

 

Other Files

  1. Pololu 3pi Components and Pin Assignment Table