Video 3, Basic Robot Behavior

Here’s the next installment in R1 videos: Video 3, Basic Robot Behavior.

Learn about how motion control is implemented as a hierarchy of behaviors of increasing sophistication.

Advertisements

R1 Embedded Source Code 1.0

Here is the source code for R1 version 1.0. It’s just the embedded half – I still have to license the host code.

It’s Open Source under the GNU General Public License. This means that you can do anything you like with the code but, if you distribute copies (even compiled copies burned on to chips) you must also distribute the source code with it. Including your modifications.

If you want it with a different license, contact me.

The code compiles and runs fine with Cygwin make. It would take some skill to get it to compile under a different environment such as the Arduino IDE.

I’ll try to explain what’s going on in the code in later postings. For now, Click Here to download.

– Ralph

Why Use XBee Communication Modules in R1

A Facebook friend of mine asked me why I chose the XBee modules for the R1 system. I’ll answer here so others might benefit.

There were basically three classes of wireless link technology in the running: Low cost digital radio, XBee and WiFi. I ruled out WiFi without really testing it because I was afraid the robot communications might get bogged down if someone else in the house was watching Netflix or doing a download. I don’t really have any evidence that there would be such a problem but, I didn’t want to put down the money and find out later. That left the choice between radio and XBee.

Pros for XBee

  • No special software is needed on the host computer. The PC “sees” nothing but a standard serial port.
  • No special software needed on the Arduino. Just connect the Tx and Rx pins and it’s off and running.
  • Two way communication. Many of the cheaper radio modules are one-way. R1 needs to “talk” back to the host as well.
  • Error detection and correction. I’ve seen dropped messages but, never an incorrect message.
  • XBee “looks” like a standard serial link so, I can download new Arduino firmware through the wireless link – no need to connect a programming cable. I do, however, need to press the reset button on the Aruduino – there are articles on the internet about how to do it without pressing reset.
  • More than two nodes can be involved in an XBee network. It would be possible to control multiple robots from one host computer.

Cons against XBee

  • Expensive – considering the cost of two XBee modules and two adapter boards, it’s the most expensive “part” of the system.
  • The 1mW “regular” XBee modules are unreliable when the robot is in a different room than the host computer. Several retries are often required when doing a sensor scan because of dropped data. The Pro modules may be better in this regard – I’m not sure.

That’s all. Thank You!

– Ralph

Brain Teaser

As shown in this bottom view, R1 has two drive wheels (the yellow wheels) and a caster wheel (the silver looking thing). The only way the software can drive the robot around is by setting the speed and direction (forward or reverse) of each wheel. The left speed and direction can be different from the right.

Controlling only the speed and direction of each wheel, how would you make R1:

  • Go forward in a straight line?
  • Turn toward the left?
  • Spin clockwise in place without really going anywhere?

My answers will be disclosed in a new video coming soon to ralphsrobots!