Ball Drive

Introduction

Designed and built in the summer of 2018, ball drive is a new type of drive base for FIRST Tech Challenge robots.

Ball drive’s use of balls instead of wheels presents a unique combination of simplicity, maneuverability and power not found in any other FTC-legal drive base.

Design

Ball drive uses only three motors: two for forwards/backwards movement and turning, and one for side-to-side movement.

Omni wheels on top of the drive balls allow the drive base to strafe, while colson wheels on the sides of the balls move forwards and backwards.

Frequently Asked Questions (FAQ)

Most of this question can be answered by the second question, which talks about advantages that ball drive has over other drive bases.

As to why we chose to build a ball drive: our team focuses on creating innovative and new robots, but not ones without merit. Ball drive is unconventional, but it also has definite advantages over other drive bases.

Ball drive combines simplicity and reliability with the maneuverability of mecanum or X-drive and the pushing power and traction of a tank or swerve drive. It also has the unique ability to have two different drive ratios with equal traction on each axis so one drive train can be both powerful and fast without using a transmission.

Here’s a few examples of advantages over other drivebases:

  • Simpler and more reliable than swerve drive or tank with a two-speed transmission
  • More maneuverable than tank drive
  • Faster than an X-drive
  • More traction, pushing power, and terrain climbing ability than any roller-based holonomic drive system (eg: Mecanum, H-drive)

This depends on the task presented in Rover Ruckus, but we are hoping to use it in competition if possible! If not, we will be using it at outreach events and potentially in future seasons.

Currently our first iteration of ball drive is completely designed and built, however it is still a work in progress and we may release improved versions in the future.

To our knowledge, our ball drive is the first to have four balls, however FRC team 45, the TechnoKats released a ball drive back in the 2003 FRC season that used two bowling balls on half of the drivetrain and omni wheels on the other half.

You can click here to view the complete CAD assembly in Fusion 360, and it can also be downloaded from there. Our CAD files are provided free and without license, however we ask that you give credit where it’s due and provide a link to this page in documentation.

The drive base weighs 18 lbs in total, which includes electronics and a battery.

Off-the-shelf rubber balls of the precision we needed were not available for a reasonable cost. By custom-making our own balls we were able to reduce weight to less than 1 lb per ball while spending less on fabrication.

Here is a quick explanation. Our balls contain 3 inch foam cores that help keep weight and material costs low. We cast a ¼ inch layer of hard plastic around these cores, then cast an ⅛ inch layer of 70A hardness rubber to make a final ball with a 4 inch diameter. For more details on our manufacturing process feel free to contact us!

As a stress test, we took ball drive to our local Maker Faire, a two day/14 hour event. The drive base had no problems being driven for 7 hours a day on rough asphalt, and the only maintenance that was needed was tightening screws. We aren’t sure about reliability in competition environments yet, but the drive base seems to be very reliable mechanically.

UPDATE: Ball Drive, while still very reliable, does have issues with the polycarbonate plate retaining the Colsons that drive the wheels. Watch out for cracks in this part.

Extraordinarily simple. Ball drive’s three motors are configured as two motors in a standard tank drive (one of the easiest drives to code), with an third motor which strafes exactly perpendicular to the tank drive. It requires none of the complex trigonometry of most holonomic drives. Your drive code can be only this:

leftMotor.setPower(gamepad1.right_stick_x – gamepad1.left_stick_y);

rightMotor.setPower(gamepad1.right_stick_x + gamepad1.left_stick_y);

strafeMotor.setPower(gamepad1.left_stick_x);

Any Questions?