Archive for April, 2010

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.


Fun with Math – Returning plus or minus a Value

April 11, 2010 Leave a comment

Have you ever wanted to add or subtract a number from another at random?  This might come in handy when programming a robot to add randomness to otherwise predictable movement or decision making.  I checked out the web to see what the math world had done to help out.

I found a cool formula:

n = n + 2f(random(1) – 0.5)

Read more…

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…

Joystick Control – Differential Drive

April 7, 2010 Leave a comment

I think I am the last person on the planet to buy a Logitech joystick for use with my Mindstorms NXT robots.  Anyway, I did buy one of these cool devices a few weeks back and finally had some time to play with it.  With a simple RobotC program, you can use a joystick to control your robot.  It was almost too easy.  I did not like the “Tank Drive” samples.  They were difficult to control.  I wrote some code to utilize only one joystick to control movement for the same differential drive robot.

Read more…

Code Downloads FIXED

April 5, 2010 Leave a comment

I guess when you don’t keep up with your services, they change on you.  My links to download framework and robot code were corrected today in the “My Framework Code” pages.  Sorry for any confusion this may have caused.

Let me know what you think of the framework, and definitely let me know if you make modifications and improvements.


Categories: Information