A holonomic robot uses omni-directional wheels to drive and turn in any direction on the spot. Agilis is an example of an early LEGO holonomic robot. My model is much simpler and robust. Essential to all holonomic robots are the use of omni-directional wheel, such as the the ones from Rotacaster. I am using a compass sensor to allow the robot to be remote controlled on an absolute grid using Connexion’s Space Navigator. This 3D input devices can be mapped to the unique movements and rotations of a holonomic robot.
The Model
My simple and lightweight holonomic robot uses a triangular frame to mount all the three motors and the LEGO Mindstorms EV3. The three wheel axles need to meet at the center of the robot.
In addition it allows for the mounting of a Gyro and/or Compass Sensor in the centre of the robot. I used Mindsensors’ AbsoluteIMU-ACG sensors that combines Gyro, Accelerometer and Compass into one sensor. The advantage of using a Compass Sensor is explained below. The models is available for download for the LEGO Digital Designer software. The model and its inventory is also available over at ReBrickable.
Here is a 3D model of my robot that you can view from any angle:
The Software
The LeJOS EV3 API has the OmniPilot Class that makes controlling a holonomic robot easy. This class has been depreciated, but the new MovePilot class does not yet include all the sophisticated movement functions of the OmniPilot class. I therefore recommend to stick with the OmniPilot class for now. My code is available at Github.
The software consists of a server running on the EV3 and a remote client on a computer, in my case a Mac. I attached the Connexion’s Space Navigator to my computer and use JInput to read the values of the Space Navigator. The Space Navigator has six degrees of freedom of which three (x,y movement, z rotation) are send to the EV3. The button toggles between the absolute and the relative control modes.
Controlling the robot
I am using the compass sensor to read the orientation of the robot. In the absolute control mode the up direction of the Space Navigator is always mapped to north direction of the robot. In the relative mode the up direction is mapped to the straight forward direction of the robot. The left button of the Space Navigator toggles between the two modes. The z-axis rotation is mapped directly to the spinning of the robot. The SpaceNavigator provides proportional control, meaning that if the Space Navigator is pushed forward just a little, the robot will drive slowly and if the Space Navigator is pushed hard, the robot will drive fast. I included an experimental feature to spin the robot while moving, but controlling it remained difficult.
Very nice, thank you for providing the build instructions. I plan on adding support for holonomic robots to the python library in ev3dev…will use your design :)
Nice Videos!…i like your informational holonomic robots video.Thanks for sharing.
How the heck did you get the USB Spacemouse to connect with the robot??