Archive for June, 2009

AreaRover III – Another wall following behavior

June 30, 2009 Leave a comment


While I was experimenting with the Lego Ultrasonic (US) sensor for following a wall, I thought I would create a behavior for following a wall using only the front bumper.  This serves two purposes.

  1. As a backup or augmentation to the US wall following.
  2. As an alternative to the US wall following where only the front bumper is needed to accomplish similar goals.

Download the code:

Read more…


AreaRover II – Better coverage by adding a new behavior

June 28, 2009 Leave a comment


After watching AreaRover move around  my arena, andTFR_20090624_0340 blogging about its behavior, I came up with some ideas to improve its operation.  The best part is I did not change the previous code to make this happen… I added a new behavior on top of the others!

The previous AreaRover bounced off walls and followed walls when the opportunity was presented, but really had issue with inside corners.  Because the robot implemented the Lego Ultrasonic sensor mounted to point straight left, it is blind in the front.  This is by design and offers the best method for following a wall, butInsideCorner is not good when the robot follows a wall into a corner.  The robot follows the wall into the corner until it collides at the end.  At this point, BUMP_ESCAPE takes control and spins the robot out of harms way.

Unfortunately, wall following is stopped, and the robot moves on.  In order to better cover the ground inside a corridor with an inside corner, the robot needs to learn to follow the wall better.


Download Code:

See the video here: ***COMING SOON***

Read more…

AreaRover – Adding Wall Following with the Lego Ultrasonic Sensor

June 25, 2009 3 comments

Building on our behavior-based programming concepts

I thought I better start building more robots to supportTFR_20090624_0340 my articles on behavior-based programming.  The world loves examples and there are very few in this area, if any for the Mindstorms robots.  This robot is a natural progression from the BumperBot.  It is called AreaRover (clever names!).

AreaRover’s job is to bounce around a closed area and cover as much ground as possible in the least amount of time.  In order to accomplish this task, I started with the BumperBot, and added a Lego Ultrasonic sensor on the left side of the robot facing sideways.  I then added a new behavior that triggers if a wall is in range helping the robot to follow walls for a period of time.

Download Program:
See the Video:

Read more…

Brooks’ Subsumption to the behavior-based framework

June 22, 2009 1 comment

Last week I posted an article that attempted to (in short order) explain my behavior-based implementation for the Lego Mindstorms robotics products. I published a set of RobotC code that can be used as a foundation for programming autonomous robots (NXT or RCX). My plan is to post articles, ideas, discussion, robot designs, etc… in order to create a collaborative pool of information on this topic.

A comment was started about implementing Suppression and Inhibitor nodes into my framework. I love feedback. I went back to my notes and previous research on subsumption architecture.
Read more…

BumperBot – A Detailed Behavior Primer

June 22, 2009 Leave a comment
Bumper Bot

Bumper Bot

Featuring: BumperBot

RobotC Source code for a behavior-based bumper robot:Download:

Behaviors – Defined

Behaviors are the way to implement functionality in when using the behavior framework. A behavior represents an action or reaction to events (triggers) and resulting request to control where the robot moves.
Read more…

Behavior-based Framework for Mindstorms NXT Robots

June 20, 2009 Leave a comment

Behavior-based Framework for RobotC

Download my RobotC code: :

I have created a basic framework in RobotC to implement behavior-based programming.  There are two files to start with when creating a behavior robot.

  • behRobotFramework.c – The main robot file (template).
  • behavior_robot.h – the heart of the behavior implemention.
  • Read more…

    What is Behavior-based Programming?

    June 19, 2009 2 comments

    Behavior Robot Programming Basics

    The concept of behavior-based robotics is to supply a set of behaviors that independently work to accomplish their goals, but together allow the robot to accomplish larger tasks. I have created a framework for the Mindstorms NXT robotics system in RobotC that allows a programmer to “plug-in” behaviors, rank them, and create complex tasks. There are a few concepts to grasp before diving in.
    Read more…