Archive for the ‘Behavior-based Theory’ Category

9735 Robotics Discovery Set

August 6, 2010 Leave a comment

9735-Robotics Discovery Set While visiting the grandparents last weekend, I got a pleasant surprise.  It turns out the neighbor found an old Robotics Discovery Set in his storage and decided to donate it to me.  We were talking about robots over a year ago and somehow it clicked for him when cleaning and the set showed up that I might want it.  How cool is that.

My daughter is almost seven, so this is a good starter set for her to try out.  Ok, I think it is cool too.  After getting things working again (the case was loose and the battery kept loosing connection), I found out Lego implemented a pretty cool behavior-based set of tasks for the SCOUT robot.  You “program” the robot by selecting the desired behavior for the motors, touch sensors, and built-in light sensor.  There are many options, and different combinations yield different emergent behaviors from the robot.

I just played with the bug robot in book one, but you can make the robot move around in patterns, explore a room by bouncing off walls,  find light or dark, and other combinations that are cool.  The robot beeps and blips during the process and flashes indicator lights by the ports for forward, reverse, light sensor triggered, and each touch sensor triggered.  Lego should have carried the indicator lights forward with RCX and NXT.  There is also a light on the front that flashes as well.  I assume is is actually doing that for a reason, but I am not sure.

Read more…


Behavior-Based Programming vs. Precision Moves

April 13, 2010 1 comment

question Here is an interesting dilemma.  In the behavior-based world, we strive to make our robots responsive to the real world.  They act and react to changing stimulus, solve complex problems, and sometimes surprise us in their ability to succeed.  Here are a couple of tasks I have not been able to accomplish very easily.

  • Move forward two feet
  • Turn 90 degrees

What if you wanted to build a robot that could drive in a square pattern by driving forward two feet, turning 90 degrees and repeating…  Can a behavior be created to do this?

Here is the problem.

Normally, a program has complete control over the motors throughout a maneuver.  With behavior-based systems, each behavior is may or may not have control of the robot for any given timeslice.  Each cycle of the arbitrator is a new look on the world.  As factors change, so too does the robots control.

Anyone out there have any ideas for implementing a way to turn x-degrees or measuring n-ticks of distance accurately?  While we are here; Anyone have any fancy math for calculating a 90-degree turn when not spinning (motors at different speeds)?

I have a couple of ideas I am going to try, so let me know your thoughts.

Behavior-Based Robot Framework 3.0

April 11, 2010 1 comment

I released a new version of my behavior-based robot framework today.  It includes inhibit and enable functionality.  Let me know what you think.

Download it here: Behavior-Based Robot Framework 3.0

I included a sample robot that extends the basic CRUISE robot by adding a new behavior SPIN that periodically inhibits CRUISE and takes control. 

Read more…

Framework Extension – Behavior Suppression I

April 9, 2010 Leave a comment

I have been thinking about adding suppression nodes to my behavior framework for some time, but mostly have been able to avoid it by creating new behaviors for special cases.  Anyway, I decided to take a crack at it.  This functionality adds a level of complexity, but also allows for some freedom to handle special cases where the straight hierarchical model does not produce the results intended.  I will be releasing an updated Framework soon.


In theory, a behavior has a node on its output that if triggered inhibits its control message from being selected for control of the robot.  The behavior’s functionality is unaffected; it output is just discarded in the arbitration process.

Read more…

Homing Behavior – Home in on a Light Source

CollectorLight My next robot is taking some time to build, code and  debug, so I thought I would create some quick posts about some of the behaviors I am implementing along the way.  Homing in on a target is a very useful behavior that can be broadly applied to many types of situations.

  • Finding a beacon
  • Finding a light source
  • Following a line

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…

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…