Scamper the omni directional high speed robot
Now with video, Scamper appears to be a little wobbly at slow speeds but that is because at only 6%, the motors are constantly stalling and restarting. Once the robot is moving at higher speeds it actually moves quite smoothly. I have ordered some motors with higher gear ratios to slow the robot down and prevent the motors stalling so much. The current gearboxes are only 29:1.
Update: I've updated to double omni wheels to allow the robot to roll more smoothly and I've attached the code for both the Mini Drivers and the Micro Magician. Note: one Mini Driver is on I2C address #1 and the other is I2C address #2.
I did have some trouble at first. I forgot to enable the pullup resistors for the external interrupts. The hall effect sensors used are open drain outputs. Now my biggest problem is the motors are too fast making it difficult to control in small areas.
Scamper is a small robot that uses four omni wheels with rubber rollers to move is any direction or rotate on the spot. A Micro Magician V2 is used as the master controller and controls two Mini Drivers slaves using the I2C interface.
Scamper is powered by a 7.4V (2S) 1000mAh LiPo mounted under the Mini Driver PCBs. The Micro Magician power switch is the master power switch although the Mini Driver boards can be turned off individually if required.
The two Mini Drivers are I2C slaves programmed to be "smart" motor drivers that use feedback from the encoders to drive the motors at precise speeds and measure the distance traveled in any direction. The Mini Drivers also report the battery voltage back to the I2C master. While testing, the code is uploaded to the Mini Drivers by the onboard USB port. Once the code is finalized it is uploaded directly using the ISP socket. This eliminates the bootloader allowing the Mini Drivers to initialize much quicker.
When you look underneath you can see that each of Scampers motors has a magnetic encoder disc mounted directly on the motor shaft. The encoders generate 8 state changes per motor revolution and the gearbox has a 29:1 gear ratio. This gives us 232 state changes per wheel revolution.
The Mini Drivers measure the time in μS between encoder state changes to measure the motor speeds and then adjust the PWM to each motor to maintain the correct speed. This provides 2 major advantages to simply using PWM with no feedback.
- Allows the robot to travel in a straight line by ensuring all wheels rotate at the correct speed.
- Provides much higher torque at low speeds without the motor stalling.
Scamper will now become a kit using DAGU's new ComMotion shield for Arduino. Although the shield can control 4 motors the kit has been changed to 3 motors. This is actually better if the floor is slightly uneven because all wheels are always touching the ground. The prototype ocassionally ended up with 1 wheel off the ground if the floor was not perfectly flat.
I have attached an STL file of the kit so people can 3D print robot bodies to fit the chassis. See "Scamper_Kit.zip"