From The Blackfin Handy Board

RoboticsIFall2007: Lab1

Lab 1: Introduction to the Blackfin Handy Board, LabVIEW Embedded, and Braitenberg Vehicles

Assigned: Friday, September 7, 2007.
Due: Monday, September 15, 2007, at the start of class.


Read the book excerpt Vehicles by Valentino Braitenberg that was handed out in class. You have been given the first 2/3 of the book itself, the main section that presents a series of 14 hypothetical vehicles. The subsequent section of the book describes the neurophysiology that motivates the stories.

Please be prepared to talk about the readings in class on Friday September 12. Thank you.

Implementation Projects

Build a base out of LEGO that can carry your Blackfin Handy Board. It should have two motors: a left-side drive and a right-side drive. You can use LEGO gear motors, DC motors, or servo motors (these will be explained).

Project 1.1: LabVIEW Hello World. LabVIEW will be new to most (or all) of you, and the Handy Board will be as well. For this reason we have prepared a tutorial to get you started in creating programs on the Handy Board using LabVIEW. In the tutorial, you will learn how to connect from the PC desktop to the Handy Board, and run a program that allows you to set the power of a motor output. Please go through the tutorial.

Project 1.2: Vehicle 2 with LabVIEW Embedded. Having read Braitenberg, and also the presentation of his work in my text, mount two photocell light sensors on your robot and program it to drive in response to light sources per the Braitenberg Vehicle 2.

You should make a LabVIEW VI that performs the equivalent of the "normalize" function presented in my text. This VI should take as input a raw light sensor reading (from 0 to 1023), and provide as output a motor power level (from 0 to 100). Note that a bright light level yields a reading close to 0. This should result in a normalized output near 100.

Then, using your Normalize VI, create a LabVIEW loop. Inside the loop, wire each light sensor through an instance of the Normalize VI and then onto an output motor. Set the motor to Sign-Magnitude PWM (not Locked Antiphase).

Your LabVIEW wiring diagram should look like the Braitenberg Vehicle 2 schematic. Does your vehicle seek and avoid the light, depending on whether the wiring is crossed?

Project 1.3: Touch sensors. Read through the discussion of building an obstacle-avoidance program in my text. (Well, actually, the robot won't avoid obstacles; it will merely back up and turn away after it has hit them.) Add two touch bumpers to your robot, and implement equivalent programs using LabVIEW.

Project 1.4: Touch sensors + Braitenberg. Figure out how to combine your obstacle-avoidance program with your Braitenberg light-seeking program. When touch sensors are not pressed, the robot should perform light seeking. When a touch sensor goes off, the robot should back up and turn away. After a little while, it should continue with light seeking.

EXTRA CREDIT Project 1.5: Vehicle 4s – Non-monotonic relations. In your Vehicle 2, you created a Normalize VI, which essentially inverted and scaled the light reading. In Braitenberg's Vehicle 4 chapter, Values and Special Tastes, he proposes non-monotonic (i.e., not continuously increasing) relationships between stimulus and output. Add a 3rd or 4th light sensor to your robot and see if you can get some interesting behaviors going with multiple sensors feeding into each motor, and non-monotonic normalizers.


Projects 1.2 and onward should be documented on the Invention Database. Each member of your team should create an account for yourself. Then create a team page (naming your robot, for example). Whoever creates the page should list the other team members as co-authors so that you each can edit the pages.

Upload the VIs as source files for each of your projects. Make sure they are clearly named.

Also make screen-captures of a close-up of the VI program (eliminate empty space as possible). Upload these screen-snaps as images that show up in the main image area of your team's page. Describe a bit about them in the caption area.

Use the InventionDB's blog feature to describe your results for each of the projects (1.2, 1.3, 1.4, and 1.5 if you did it). Describe how your implementation works. Describe the performance of the robot. Explain what you tried that failed. Lead the reader through the process you used to come up with your implementation

Also, make at least 1 movie of your robot doing its thing. Use Quicktime Player or VLC to reduce the size of the MPG movie that's captured by the lab camera (InventionDB has an attachment size limit). Upload to your team's site.

Student Links to InventionDB Writeups

Link to your InventionDB cubes here.

Retrieved from
Page last modified on December 13, 2007, at 03:37 PM