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.

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.  

Interesting robot. I also would like to see it in action. We need a video.

In your second to last photo I can see there's a lot of unsupported axle between the gearbox and the wheels. I'd be very concerned about bending an axle. IMO, the axles of the Rover 5 are too soft. This isn't a big problem when using the original wheels since they kind of wrap around the gearbox limiting the amount the axle can be bent. 4WD robots are more susceptible to bending an axle since other wheels don't have this additional support.

To limit the bending problem on my 4WD Rover 5, I drilled out the center of the wheels I was using so the majority of the axle was inside the wheel. The geometry of the wheel and gearbox limited the amount the axle could bend (but not as well as the original Rover 5 wheels limited the bending). I'm not sure if the Wild Thumper wheels could be modified in a similar fashion. I'm hesitant to suggest cutting the axles to a shorter length but doing so may reduce the risk of bending an axle. 

It also looks like the long axles are causing the gearboxes to bow outward a bit. I fixed the bowing problem on my treaded Rover 5 with some long machine screw and standoffs. This added support came at the cost of reduced ground clearance.

If you use the four quadrature encoders on the robot, I hope you let us know. I keep looking for Rover 5 projects which use the quadrature encoders.

Thanks for posting information about your robot. I really enjoy seeing other peoples' robot projects.

Did I mention we need a video?

Hi, Thanks for the feedback. I may try drilling out the wheels to shorten the axle length. When I was just getting started on the idea of this project I came across your "rover 5 in the snow" video and that was one of the reasons I picked this chasis. I had opted for wheels because I thought they would reduce the strain on the axels (again based on some of your track feedback). I will try and get a video posted shortly. The robot is currently immobile while I am sorting out some battery issues and adding more sensor code.

I don't have a set of Wild Thumper wheels so I really don't know what to suggest about reducing the chance of bending an axle. The WT wheels don't look like they lend themselves to adding a setscrew as I did with the Mecanum wheels.

BTW, with the machine screws and standoffs holding the gearboxes in alignment and with the gearboxes set to the optimal angle, I can't throw a tread no matter how hard I try.

I have a Raspberry Pie but I haven't done anything with it yet. I'm very interested to see what you do with your RPi Rover.

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

beautiful pic's..i want to see her in action.....

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! 

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.

 

Every member of LMR is a teacher and a student. We all have experience we can share with others and all have new things we want to learn.

The reason we want more detailed robot post is so that when someone reads about your robot they can learn something as well. I'm glad my designs helped you, maybe some aspect of your design (I have not used a Raspberry Pi yet) could help me.

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.