PDA

View Full Version : REX the robot



lnxfergy
05-15-2009, 09:46 PM
I've uploaded quite a few pictures over the past 2 months, and discussed this quite a bit in the chatroom, but I thought I would finally post about my latest robot, REX.
http://forums.trossenrobotics.com/gallery/files/1/7/6/8/00-rex.jpg
REX is my first PC-based bot. He is built on a Zagros Robotics REX-14 base, a 14" square base with differential drive and a caster. The motors are capable of about 20cm/sec, and have ridiculously high-count encoders (resolution with a 6" wheel is about 2900 counts/cm). On top of a 2ft neck, he has a two-axis pan and tilt head, atop which his eyes are mounted. I'm currently only using one of his cameras. His vision is currently very limited, almost non-existant.

Since the bot is so big, and has lots of cabling, I tried to make the wiring easy on myself. Most of the sensors use Servo-style connections, and the main power is all handled by a little distribution box I made using some home electric panel grounding bars:
http://forums.trossenrobotics.com/gallery/files/1/7/6/8/01-power.jpg

REX uses a Dell Mini 9 for his main processor. His code is written in Python, running under Ubuntu. I'm calling the system Pybotix. It's really not ready for serious use yet though. Current code can be found on my SVN server.

In addition to his encoders and cameras, REX has 5 sonar sensors, and 3 IR. Of course, PC bots require extra hardware to interface with the real world. This is where I got to play with my embedded controls. I've spent a good amount of time this semester reworking these boards for the best reliability. The current version uses two microcontrollers.

I'm using a Roboduino as a sensor streamer. This board reads in sensor values, and streams them up to the main PC at a 20Hz frame rate. The main loop handles serial communcations, the instruction set includes starting/stopping the sensor streaming, board identification, and a few other goodies. There is a background interrupt running at 20Hz, that rotates through pinging the sonars, and sending out data packets. I'm currently not using the sonar in the head, so the other sonars update at 5Hz, and the IRs update at the full 20Hz rate. I like biologically inspired names, so the sensor streamer is called a Pons board. Source code can be found here: http://svn.blunderingbotics.com/listing.php?repname=Projects&path=%2Farduino%2FPons%2F#_arduino_Pons_ (http://svn.blunderingbotics.com/listing.php?repname=Projects&path=%2Farduino%2FPons%2F#_arduino_Pons_)

http://forums.trossenrobotics.com/gallery/files/1/7/6/8/02-roboduino.jpg

The second board is the motor/servo controller (cerebellum). Splitting the sensor streaming from the motor/servo control vastly improved the reliability of the system, since the two system have very different frame rates. The motor controller uses a pololu motor driver board, FTDI usb converter, and an atmega324P. The cerebellum has a few simple commands for setting the motion commands. It then reads the encoders back and does a closed-loop control. Both speed and endpoint controls are just propotional controllers right now (it's been working mostly... but eventually I'll be implenting a fuller PID control, especially on endpoint control). The next revision will be based on an atmega644P, and will be sanguino compatible, for ease in others re-using this system. The current code is available here, although I haven't put together a real schematic yet: http://svn.blunderingbotics.com/listing.php?repname=Projects&path=%2Fpybotix%2Fhardware%2Fcerebellum%2F#_pyboti x_hardware_cerebellum_

http://forums.trossenrobotics.com/gallery/files/1/7/6/8/03-cerebellum.jpg

My eventual plans for this robot/system is both use as an educational platform, and as a really cool robot with some real high level intelligence. My end goal for REX is that he be able to autonomously navigate in the real world, and carry out tasks given to him. Now that the sensory/motion systems are mostly complete, I'm working on moving the mapping/localization code I've been using on smaller bots onto REX. Of course, I also need to make the algorithms more general purpose to deal with the non-niceness of the real world. Over the next year or so, I plan to also be adding the speech recognition/parser, and higher level control...

-Fergs

darkback2
05-17-2009, 12:08 AM
Ok...this robot is awesome...

I'm most impressed with all of board work...and the inclusion of a terminal block. Why no box for the second board?

Heard you were planning on mounting a tool box in that thing..Awesome.

Can't wait to see more.

DB