Let's Make Robots!

ROB3 - Rover 5 base experiment

ROB3, my third robot started out using my ROB1 base, as I wanted to play around with the gyro again using a 2 wheeled robot, but alas, one of the servos died. So what’s a robot builder to do? Use a Rover 5 base of course! I have the 4 motor / 4 encoder version. I wired up everything except the encoders to my Arduino. That’ll be one of my next steps.

So now this turned into an experiment to learn to use encoders to maintain a constant speed and relearn the gyro to maintain a rotation rate. As well as flesh out my communication code using 2 way communication. I am once again making use of my ICE2 controller.

I also have a gyro, xbee and oled display wired up. I’m using Xbee’s again since it lets me have 2 way communication. Not only does the remote tell the robot what to do, the robot can also tell the controller to display things about itself. For example, the robot knows how much current each motor is drawing, and sends that information to the controller, which in turn displays it on the OLED for me to see. I can also have sonar readings, battery voltage etc.

The video is showing him in an early stage. Basically has drive and 2 way communications working. I had the gyro code hooked up and was able to drive with the joysticks, but there was a bug I needed to ferret out so I dumbed the code down and didn't’ have a chance to re implement it before posting to LMR.

Comment viewing options

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

Your bot is sweet. My nerdy side really enjoyed the little screens!

I've been trying to use the Rover 5 motor driver board for a uROV. Works perfectly under Arduino control, but I see that motor outputs 1 and 4 are reversed by comparison to outputs 2 and 3. Did you notice this behaviour? I'm 100% confident in my code and wiring: I've checked it with a scope. If I set all direction pins high and all PWM pins to 25% PWM, motors 2 and 3 go backwards.

I was thinking it sort of makes sense to have two outputs reversed: So, if you had motors 2 and 3 on the same side of your vehicle and 1 and 4 on the other side and you set the motors all forward, then the veh. would go forward. I just don't see anything to thta effect in the documentation.

Any ideas?

I don't think having the wires reversed is uncommon. The metal part of the connectors can be removed from the housing and then you can replace them in any order you want. I generally just use a direction variable which lets me change the direction of the motor in software.

I do the same software correction for the encoders in case they aren't wired the way I expect.

If I set all four motors to output 50% forward, then connect one single motor to each of the four outputs in turns, outputs 2 and 3 are reversed in comparison to 1 & 4. I've scoped my Arduino PWM outputs and they're 500Hz 1:1 mark to space. I've scoped my direction outputs and they're all low.


I don't think the people assembling the motor connectors care much which way the motors turn. As this thread points out, there's either the hardware fix of swapping the wires in the connector or a software fix of reversing the direction settings for two motors.

IMO, it would be polite to continue this discussion in the forum thread rather than in AXORiON's robot page.

We built a similar project.  However, we installed an Android device onto a RC car and used an IOIO board instead to control it autonomously. Here is the preliminary result:


Is the smaller type on purpose? 

For some reason the text on this page is smaller than other LMR pages. I'm guessing this is done with some html setting. It sure makes it harder to read. If possible, I'd like to see the page in full sized text.

Odd, must have copied font settings when I did a copy paste from Pages. Should be better now

Yes, much better. Thank you.

I've done a fair bit of experimenting with using encoders to control speed for my Service Droid OB1. My first experiments and code are here: http://letsmakerobots.com/node/38636

Later I changed to the Rover 5 chassis and wrote code using the Rover 5 encoders here: http://letsmakerobots.com/node/39098

Although I was only using a 2 motor version of the Rover 5 and a Mini Driver for the motor controller you can use similar code with the 4ch version. Just use the same PWM and DIR signals for front and rear motors. I used a timer to monitor the encoder inputs but the 4ch controllers encoder mixers will let you monitor a left and right encoder using just 2 external interrupts (you don't need 4 encoders with treads).


Thanks, that should save me a boat load of time. Glad to see you using interrupts as well. Any idea why it is so important to put power to the logic before the drive power on the 4ch motor controller? I have followed that, but have occationally turned off logic power, and left the drive power hooked up. No damage yet, luckily.

I may be tempted to still monitor all 4 motors. If I am only monitoring 2, the other two may end up turning faster/slower. Not a huge deal in the scheme of things, doubtful it would controbute to tossing treads or anything. Thoughts?