Let's Make Robots!

RPi Rover

This project is my first foray into robotics and electronics for that matter. My goal is to end up with a platform for AI experiementation. I plan to add GPS and a camera for use with OpenCV shortly. I'd like to have the robot remember locations internally and externally where it has been and remember people with whom it has interacted. Lofty goals! I am using 2 MSP430s to control power management and the motor controller. The Raspberry Pi communicates with the MSPs over i2c for power management and SPI for the motor controller. 

I opted to build the robot on the Dagu Rover 5 chassis with 4 motors/enoders and swapped out the tracks for WildThumper wheels. I had intended to build a motor controller circuit from scratch, but after figuring out what was involved, I made picked up the dagu motor controller (on the lower plate in the image above). 

I used a Lynxmotion pan/tilt bracket combination and took a dremel to a parts bin for the head. As luck would have it the dividers that came with the parts bin proved useful in mounting the head in such a way that it can be easily removed for adding additional sensors and wiring. For sound, I used 3" speakers and a class D amplifier board from adafruit.com and wired that directly to the audio output of the Raspberry PI. I am currently using the espeak api for text to speech.















The "face" of the robot is 7 10mm RGB LEDs controlled by PWM. As I wanted to control the LEDs individually, I needed 21 pins of PWM. Since the Raspberry PI only has a single PWM pin, I mounted two 16 channel, I2C controlled,  PWM breakout boards from adafruit.com on the back of the head to support the face and pan/tilt servos. 



The following image shows the Raspberry Pi mounted on the top proto plate with the audio out running to the class D amp, mounted inside the head. I mounted a GPIO breakout PCB on top of the RPi and added an MCP23017 for additional GPIO.



I have been writing and debugging the majority of GPIO specific code on the Raspberry Pi directly, as opposed to cross compiling and copying over. In order to avoid constantly having to swap in batteries, I added a 2.1mm power jack for an external DC power supply, as well as a connector for the battery. I added a DPDT switch (visible in the image below) to the chassis to switch between the battery and external power supply. I have a PCB with 5v and 3.3v linear regulators and intend to add an MSP430 to switch the power on and off and then connect the motion sensor to the MSP so that the robot will sleep after a period of inactivity and wake when it detects motion. While it is possible to power the RPi over the 5v GPIO pin, I cut up a mini-usb cable to power the RPi over usb in order to keep the fuse and onboard power conditioning in the circuit.













The Dagu Rover 5 chassis has room between the motors for a fairly large battery. I am using a 7.4v 3600 ma/h LiPo and wanted a quick release method of getting at the battery. I don't have metal working abilities, so I opted for 2 pieces of Purple Heart wood at each end of the proto plate and a couple of box latches for attaching to the chassis. I haven't gone over very rough terrain yet, but when attached it is quite solid, and gives easy access to the battery for charging. 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Some more of those beautiful pictures would be nice. Also how well does the IR sensor on the top of the head handle sunlight? Looks great for your first robotic/electronics project. The parts bin as a head housing was a good idea. If your first robot only took 200 hours and you're this far, you got off easy. :D Looking forward to more information. Keep it up.

Yes I will add more photos and details. I had held off posting until the robot was in a later stage of completion based on the posting guidelines (perhaps I misunderstood). I will add back details ASAP. The success of this project has been due in no small part to your work OddBot. I had read a lot of your projects and made the chassis and wheel choice based on what you had done. I had intended to build my own motor controller, but after designing a schema and learning the ins and outs of it, decided to opt for the dagu motor controller.


JerZ, I will be taking some more photos shortly to accompany a detailed writeup of the layout and approach. I stumbled on the parts bin for a head idea while walking around the hardware store actively looking for a "robot head". 4 bins for $4! The dividers worked out great for mounting the head to the pan/tilt mechanism so that it can be easily removed. I haven't done any IR testing in the sunlight yet. Part of the reason for the shortended development time of the bot, was that I had prototyped a lot of ideas out on the breadboard while learning basic electronics and wrote some proof of concept code in python. I'm not in the process of porting that code to C++ to include in the overall "autonomous project". I suspect the other reason is that I had read a lot of LMR projects so I had learned from other folks before I got started on my own project! 

Way to go man!

I'm making a similar robot 4WD robot, but a the moment it's still a shell with nothing inside.

Mine will have (eventually!) gps, bluetooth, voice recognition, laser guns, jet pack etc. ;)

I've collected your robot, will look forward to any updates ! :)

Here's my robot : http://letsmakerobots.com/node/38504

I have it "up on blocks" at the moment while I make some changes to the MSP code that controls the motor driver.
But I have added a video of the startup routine which indicates network connectivity and validates the PWM drivers from the Raspberry Pi.  

I am also into the same/similar combination.
RaspberryPi plus
Dagu Rover 5

But I do not see postings after 2013 so how did you finish that

My plan is to make:
Raspberry Pi <---> SpiderControllerDagu <---> Dagu 4 channel motor ctrl
Raspberry shall make higher logics like camera,  picture (object?) recognition, ultrasonic measurement,
      command the Spider/Arduino Mega (1280), GPS? position calcs

Spider/Arduino Mega (1280) shall make middle logics like translating
movement commands from Raspberry into actual PWM, direction commands

The Dagu 4 channel motor Ctrl (
shall just do the low level stuff.