Beagleboard - Arduino hybrid robot

The Beagle-Arduino robot will use a Beagleboard for high-level robot functions:

  • image processing
  • artificial intelligence
  • speech synthesis
  • voice recognition
  • internet connectivity
And an Arduino for low-level functions:
  • motor / servo control
  • sensor input & output
  • battery monitoring

The two microcontrollers will be connected by USB, along with a USB webcam mounted on a servo pan/tilt mechanism, and a USB wifi dongle for internet connectivity. Basic tank treads will provide movement, possible being replaced by servo-based legs for a humanoid or dog form.

It’s a work-in-progress at the moment. I’ve got the tracked base running with the Arduino using the Ardumoto controller, and I’ve got a webcam and USB wifi working with the Beagleboard. More details on my build log at: http://mechomaniac.com/robots


 

Update (2009-10-04)

I’ve now got the Beagleboard talking to the Arduino by serial, so that it can control the motors and servos. I’ve started to experiment with some computer vision, identifying and tracking a pink ball from an Aibo. See http://mechomaniac.com/node/72 for details.

There pictures form the webcam seem to be delayed by about 2 seconds which makes the tracking a bit odd, and only the pan servo is connected (I need to extend the cable for the tilt servo), but the Beagleboard does seem to have enough performance for image processing.

 

Powerful union of a Beagleboard and Arduino to navigate using computer vision from a webcam

  • Actuators / output devices: 2 servos, speaker, Tamiya dual gearbox
  • Control method: autonomous, WiFi
  • CPU: Arduino, Beagleboard
  • Operating system: Linux
  • Programming language: C++, C, Python
  • Sensors / input devices: Sharp IR, USB webcam
  • Target environment: indoor

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/beagleboard-arduino-hybrid-robot

looks promising
keep us posted, this looks like it has a lot of potential.

Internet connectivity
Does the mobile robot really need the internet connectivity?

While a connection to the

While a connection to the internet isn’t strictly necessary, a wireless network connection is very useful. It allows:

  • remote uploading and debugging of software
  • manual override (remote control)
  • image capture or video streaming from the webcam for surveillance
  • offloading computationally demanding tasks like speech recognition to a more powerful computer

Pan - tilt camera mount

I’ve now made a pan-tilt mount for the webcam. Basically it’s the guts of a Playstation Eye webcam mounted to two home made aluminium brackets, driven by a mini and micro servo. Details of the construction are at http://mechomaniac.com/node/57

|x

 

 

 

 

Nice work on the home made
Nice work on the home made servo brackets.

Nifty

I saw some OpenCV pictures of code on your site. I love opencv - will you be sending the pictures to a computer? I don’t know many micro-controllers that can preform “much” meaningful processing on a image stream.

Great work.

Keep it up !

Thanks! They’re not
Thanks! They’re not pretty, but seem to be functional at least. I considered getting some Lynxmotion brackets, but the cost and time to get them to Austraia wasn’t worth it for now.

I’m actually running OpenCV
I’m actually running OpenCV on the Beagleboard itself. With 256Mb RAM and a 600MHz CPU it should be able to handle the image processing on-board, though I don’t think that OpenCV has been very well optimized for the ARM architecture. The Beagleboard also has a DSP core and some people are working on using that for accerlerating image processing tasks, so there’s a lot of potential.

Mini Micro Pico ATX

Interesting - what benefits would using a beagleboard vs a mini/micro/pico/ atx ? I am not really familiar with ARM architecture, although I remember seeing it as one of the possible kernel builds when I recompile my kernel.

Initially I see $145 for the beagleboard vs $66 for a mini atx - Is the beagleboard mor catered to digitial & analog io? DSP Core? Digitial Signal Processing?

I found a link once where a group has optimized OpenCV to run 10 X faster on a playstation since it has hardware catered to graphics processing (Awesome!)

Very interested in seeing your progress.

I have been working on a java robot framework - with a JNA implementation (some very smart guy (Samuel Audet) wrote) to opencv. I found this just recently. Previously I was using JNI which has been a pain in the rear.

Anyhoo,

keep up the good work !

GroG

Good to see another LMRite

Good to see another LMRite from down under ^^b

Also cool robot! Was there a specific reason you chose the playstation cam over others, or was it just on hand?

There are a lot of good

Thanks :slight_smile: I wish Robot parts were easier and cheaper to get here in Australia though…

There are a lot of good aspects to the Playstation Eye, my artcile here describes them: http://mechomaniac.com/node/32

They include:

  • low cost (US$40)
  • high-framerate uncompressed video
  • good low-light performance (it’s designed for observing people in front of a tv)
  • built-in array microphone
  • cross-platform driver support

This camera is now fairly popular for hacking, with people using it for augmented reality and multitouch projects: http://createdigitalmotion.com/2009/08/06/trick-out-your-ps3-eye-webcam-best-cam-for-vision-augmented-reality/

 

The Beagleboard has a number

The Beagleboard has a number of advantages over a PC-based system:

  • much lower power (about 3W for the entire system)
  • Small size (and if the Beagleboard is too big, the same hardware is availible in a tiny package at http://gumstix.com/)
  • Direct access to IO ports (I2C, SPI, serial, GPIO etc)

The TI OMAP chip on the Beagleboard includes the ARM Cortex A8 core (also used in the latest mobile phones like the iPhone 3GS and Palm Pre), a graphics chip and the digital signal processor core.

Of course there are also a few issues:

  • cost (though compared to many ARM development board this is very cheap)
  • Linux support is somewhat bleeding-edge

Microphone array

It all looks very interesting. Have you hacked into the array microphone? Does the driver have some API which allows localization of incoming sound signals? Is it just on two or four channels and you do a little disparity calculation/triangulation?

Here’s that link I was talking about… kindof clever I thought

OpenCV on the Playstation

 

Thanks for the OpenCV link -

Thanks for the OpenCV link - the performance gains are impressive. While the ARM core on the Beagle can’t approach the power of the Cell chip in the Playstation, it does have a vector floating point unit and I’m hoping that someone will come up with some optimizations to OpenCV to take full advantage.

I haven’t tested the array microphone yet. All the processing has to be done in software, I beleive that it’s just 4 channels of audio.

Nice! I guess this is the
Nice! I guess this is the first robot I see using a Beagleboard!! It looks very promising!
Keep it going, because I will look forward to see more progress!! :wink:

What power source?

What power source does it use?

I’m still working on the
I’m still working on the power source… For now, I’m using a 6V (4 * AA batteries) pack to drive the motors and servos, and a 12V 2AH NiMh pack for everything else. The NiMh pack is old though and seems to have lost too much capacity, so I may move to a 7.2V pack for everything. The electronics are run from a 5V switchmode DC to DC converter.

Beagle/Arduino
I’ll have a Rev C3 BeagleBoard this week! I’m planning to use two Arduino type boards for some motor control and sensor processing, and the Beagle will be the master controller.

I just got my Rev C3

I just got my Rev C3 BeagleBoard from Sparkfun. :slight_smile: I will also be using it as a master controller on a robot, either ASTRID or WALTER 2.0, along with at least two Arduino compatible boards connected via USB. I still have to get an SDHC compatible card reader/writer and a serial cable adapter for my BeageBoard. I already have a WiFi dongle I have used with a Samsung based ARM9 board, so it should work with the BeagleBoard also.

I’ll be following your development closely and perhaps we can share some code at some point. :slight_smile: I still have a long way to go and a lot to learn about the BeagleBoard though.