How to build Holonomic Robot

From Lofaro Lab Wiki
Jump to: navigation, search

We have used three wheeled Holonomic robots to implement our Trilateration formation keeping method. Here we explain how we have built one from scratch. The robots have 3 Degrees of Freedom (D.O.F), they can move translations X and Y and rotation Z (i.e Yaw).

A Protype of the Holonomic Robot

Required Components

1) 1/16 in. Aluminum Frames (12 in. length x 24 in. width) for 3 frames

2) Rapberry Pi Zero

  • OTG usb hub (with atleast 2 ports for wifi dongle, L-CAS Sensor)
  • 3600 mAh portable power bank
  • 8GB MicroSD
  • Wifi Dongle

4) Arduino Pro Mini (for PWMs)

5) Pololu 200:1 Plastic Gearmotor [1]

6) Solobotic Gear Mount [2]

7) VEX IQ 63mm Omni Wheels [3]

8) L298N Motor Controller [4]

9) 2000 mAh 6V NiMH Battery (with charger) [5]

9) GY-271 Magnetometer

10) L-CAS Ranging Sensor

11) Standouts (for mounting components)

Drilling and Milling of Frames

The CAM design for the drilling and milling of frames was done with AutoDesk Inventor. Then the design was exported to AutoDesk Fusion 360 (.stp file) because Inventor was not able produce the G-code for the linux CNC machine that was available to us at the GMU workshop.

The required files can be obtained from github:

   git clone

The origin position in the design is at the bottom left corner of the frame shown above. This should be specified in the linux CNC software before running the G-Code.

Files needed:

  • design(60,60,60)_3frames.ipt - this file (inventor design file) could be used to produce the .stp file needed to export data to Fusion 360 where G-code could be generated. Changes to design are recommended to be performed in Inventor as we have found it was harder to do this directly on Fusion 360.
  • design(60,60,60)_3frames.stp (design file exported from '.ipt' through Inventor) - to be opened in Fusion 360.
  • .ngc files - these files need to be imported on the Linux CNC software controlling the CNC machine.
 - 4001.ngc is for components mount holes on top of the frame and also for the two mount holes on the sides needed for each of the motors. 
            Drill bit needed: 2.63 mm. diameter
 - 4002.ngc is for the tension support hole for motors. Drill bit needed: 1/4 in. flat drill bit
 - 4003.ngc is for the motor axles. Drill bit needed: 1/4 in. flat drill bit
 - 4004.ngc is for frame outlines. Drill bit needed: 1/4 in. flat drill bit
 - 4005.ngc is for cutting the three sharp corners for each of the frames. Drill bit needed: 1/4 in. flat drill bit

As you can see two different drill bits were needed. One was needed to drill holes for the components (the 2.63 mm. drill bit) and the other (1/4 in. flat drill bit) was needed to cut the edges of the frames, the larger 18mm. hole (for passing wires from underneath the frame), and also holes for the motors. When the .ngc files are imported it could be useful to run the tool path simulation on CNC software to double check for any errors, although the simulation could also be viewed on Fusion 360 while making the '.ngc' files.

It should be noted the Linux CNC machine in the workshop controls only the X,Y and Z position of the drill bit, and not the speed of the spindle. This is controlled independently using a different controller. When switching between .ngc files the origin for the CNC machine does not have to be re-homed as it the same for all the files therefore the origin is saved in memory. We just have to make sure that at the origin 'Z=0' position the adge of the drill bit is properly touching the top of the aluminum sheet.

Components References

[1] -

[2] -

[3] -

[4] -

[5] -