Monthly Archives: January 2013

Simple BeagleBoard-xM Based Robot

In my quest to start building smarter robots, I wanted to explore some concepts using parts I had lying around. I bought a BeagleBoard-xM  over a year ago for this very purpose but never got to it. When I got my CNC router though, I figured this would be the perfect first project.

At minimum I wanted this robot to have a camera (for OpenCV experiments), a “2-wheel plus caster” configuration similar to my cartographer robot, and a computer capable of running OpenCV (plus any necessary connections for controlling the motors). With the BeagleBoard-xM, I get 4 USB ports, a RS-232 port, a GPIO header, and a whole bunch of other stuff.

I went hunting through my collection of robotics parts for things I could use and ended up finding some good stuff I bought throughout the years but never used:

Because these things all had nice mounting holes, I didn’t have to make any weird brackets. I bought some sheets of HDPE from Amazon and designed a simple 2-layer chassis to cut on the router.

A few pictures to show the process:

Just finished cutting a prototype robot chassis

Just finished cutting a prototype robot chassis

Chassis after cutting on router

Chassis after cutting on router

Pieces punched out

Pieces punched out

Beaglebot prototype

Beaglebot prototype

From the side showing BeagleBoard-xM

From the side showing BeagleBoard-xM

I had to make a wire harness with a built in regulator to bring the 7.2v from the NiCd battery tamiya connector down to 5v at a barrel jack for the BeagleBoard-xM. The harness also provides 7.2v through the proper power connector for the servos.

For now, I just have a simple python socket server running on the BeagleBoard-xM which sends any data it receives directly to the servo controller. This allows a Processing program running on a PC to issue commands to the servo controller directly so that the robot can be driven around. The video from the camera is streamed over WiFi using Motion, which gives the user the ability to see. In the future this robot will be my testbed for object tracking experiments.

Zenbot 1216 CNC Router for Rapid Prototyping

When I’m developing a new project, my biggest obstacle is making all of the custom pieces. I try to design my projects so that complex custom brackets and things are unnecessary, but certain things are unavoidable. In the past I have used Ponoko for making parts because they are affordable, easy to use, and the parts are always perfect. But there are some inherent limitations to a laser-cutting service:

  • It takes time to get your order. This is alright in most cases, but if I’m just trying to prototype something quickly it’s wasted development time.
  • Laser cutting can only produce parts of uniform thickess all the way through (with the exception of engravings). In most cases this can be worked around, but being able to create 3D features is a huge gain in design flexibility.
  • You are limited to Ponoko’s materials catalog. Don’t get me wrong, there are TONS of materials available. But if you want to work with a specific wood, plastic, composite, etc. you are out of luck (until they add it) and you are limited to only a few material thicknesses.

These are the main reasons I decided to buy a Zenbot 1216 CNC router. It allows me to make just about anything I could make using Ponoko, but almost instantly and with greater flexibility. Of course there are some limitations to a CNC router as well:

  • It can be loud. Because I have neighbors, I have to be mindful of when I run this thing. And although most of my jobs run for less than 30 minutes, any complex 3D relief work could take hours.
  • The size of the part you can make is limited to the travel of the axes. In the case of this router, that’s 12″ wide by 16″ long by 4″ high. It’s not bad, but it doesn’t compete with Ponoko’s 31″ by 15″ capabilities. Of course larger routers can produce larger parts, but the cost goes up and you need to have the space for it.
  • you need different tools for different jobs. Drill bits for holes, end mills/router bits for cutting out shapes, engravers for engraving, ball nose mills for 3D relief, etc. And to do things right you need an array of different sizes. This can add up.
  • It’s not difficult, but it is a learning process. Different materials need to be cut at different speeds and different feed rates, tool changes need to be done in the middle of the job, your design needs to be converted to gcode for the CAM software to interpret, etc. Ponoko takes care of ALL of this for you.

But despite the limitations, it’s a fun hobby and a great way to make parts quickly. I ordered my end mills, drill bits, and engraving bits from PreciseBits and I am using LinuxCNC on my laptop with this parallel port adapter card as my CAM solution.

Here are a few pictures of my setup:

Zenbot1216

Zenbot 1216 with 1/2″ MDF spoil board

Just finished cutting a prototype robot chassis

Just finished cutting a prototype robot chassis

Engraving the sample included with LinuxCNC

Engraving the sample included with LinuxCNC