Odysseus controls the speeds of motors in each axis in order to machine parametric shapes such as a sphere. We developed and implemented algorithms to track the position and velocity of each axis over time and were able to use these state variables to dynamically control the speed and direction of each axis based on the derivatives of the position equations of each shape we wanted to machine. We are currently improving the resolution of our sphere and developing algorithms for shapes with more find radial control such as a cube.
Our discrete shapes include cylinder and cone and both have very robust implementations allowing a user to simply input the size of their stock and want Odysseus bring these shapes to life within it. Both these implementations simply require constant velocity control and a set of discrete and repeatable motions to machine a shape out of any size stock based on a maximum cut depth in each pass dictated by our bit size and stepper torque capabilities. Additionally we tune our cylindrical velocity to the feed rate of the machining process in order to get high resolution parts with clean finished. Like any professional machining operation, our cutter includes finishing passes at the end of its process to get the highest quality parts each time.
The final aspect of our machining process is the ability to manually zero the linear axes. We developed an Arduino sketch which allows a user to dynamically change the direction - and therefore the position - of each linear axis and interact with a set of instructions over serial. This allows for much greater flexiblity in our machining as we can start with parts of any height and radius and gives the user a method of interacting with our machine in a way that is characteristic of any professional CNC machine.