SCRC:Indoor Robot-Magellan:Propulsion

Jump to: navigation, search

Propulsion for the robot will be handled by the Devantech RD02 - 12 Volt Robot Drive System, suitable for robots up to 22lbs. The two EMG30 electric motors with quad motor encoders provide speed and rotation direction information to the MD25 motor driver controller.

Software will be built to interface either with an Arduino or directly with the Raspberry Pi on its I2C bus. The Arduino would be tied into the ROS network with the rosserial_arduino node. Alternatively, ROS integration could be baked directly into the node working over I2C with the MD25.

The hardware will be mounted to a rigid base that will form the base of the overall robot. The motors will provide both locomotion and will be mounted such that the vehicle can be steered differentially with casters for support.

MD25 Motor controller

The MD25 is a 12.8V dual H-bridge motor driver that can supply up to 2.8A per motor channel. Designed for motors with encoders, such as the packaged EMG30 gear-motors, it can measure both speed and direction directly from the motor and feed that to a built-in PID controller to maintain the desired speed. It has both a serial interface that operates at 5V TTL logic as well as an I2C interface that works at 3.3v (and 5v?). The input is 12.8V, which means that it's tolerant of voltages from ~14V down to ~9V.

The motors and wheels have been tested on the current club base and it was powerful enough to open the test mini fridge door.

A sealed 12V lead acid battery powers the motor system.


  • Reads motors encoders and provides counts for determining distance traveled and direction .
  • Drives two motors with independent or combined control.
  • Motor current is readable.
  • Only 12v is required to power the module.
  • Onboard 5v regulator can supply up to 1A peak, 300mA continuously to external circuitry
  • Steering feature, motors can be commanded to turn by sent value.
  • Variable acceleration and power regulation also included

EMG30 Motors

The EMG30 (encoder, motor, gearbox 30:1) is a 12v motor fully equipped with encoders and a 30:1 reduction gearbox. It is ideal for small or medium robotic applications, providing cost effective drive and feedback for the user. It also includes a standard noise suppression capacitor across the motor windings.


Rated voltage 12v
Rated torque 1.5kg/cm
Rated speed 170rpm
Rated current 530mA
No load speed 216
No load current 150mA
Stall Current 2.5A
Rated output 4.22W
Encoder counts per output shaft turn 360

Measured Shaft Speed when used off-load with MD23 and 12v supply.

Minimum Speed 1.5 RPM
Maximum Speed 200 RPM

Direct Interfacing

TODO: reformat this

The serial interface is described here [1]. Using the mode 3 control where speed and turning speeds are signed bytes (-128 to 127). Speed of zero is considered forward. The speed is applied to both the left and right motor. The turning speed is added to one motor and subtracted from the other depending on where the speed is forward or backward.

ROS Integration



  • Build software interface
    • Define software node requirements
    • Build basic interface with controller specs
    • Integrate with ROS
  • Estimate weight and required power
  • Estimate speeds and power consumption


Because we need to get started somewhere, I'm making this our motor system. Please contact me if you have ideas to the contrary. Front and back casters: I like these because they are small and sort of match the drive wheels.

I like these motors, as did everyone I believe. I'm behind the choice of this motor system and will adjust the power supply to provide enough for stall current for both motors. I really like that they have built in encoders. - Chas