lanius / tinyik

A tiny inverse kinematics solver
MIT License
120 stars 21 forks source link

proof of concept IK help for CAM application #17

Open sliptonic opened 3 years ago

sliptonic commented 3 years ago

Hi. I work on the CNC/CAM workbench in FreeCAD. I want to add basic 4th and 5th axis capability and I need a very simple inverse kinematics solver. I'd really like to have a longer conversation/chat with you about whether tinyik can meet our needs. If you'd be willing to chat, please email me at shopinthewoods 'at' gmail.com, reply here, or find me on the FreeCAD/Path gitter page at https://gitter.im/FreeCAD/Path.

To give a little context of what I'm trying to achieve, check the XYZAC-TRT diagram on this page: https://linuxcnc.org/docs/2.8/html/motion/5-axis-kinematics.html

lanius commented 3 years ago

Thanks for your interest in tinyik!

I am very interested in this topic and I hope I can help you. First of all, let me have a conversation here. I am not familiar with machine tools, so I do not fully understand them, but I took a quick look at the page you presented. What features are you looking for?

My understanding is that it is important for IK for CNC/CAM to properly determine the position of the cutter tip and the orientation of the cutter. The current implementation of tinyik is not capable of specifying the rotation and orientation of the end-effector(#6), which would require additional implementation inside or outside the library. In addition, there is no function in tinyik itself to calculate the error of the solver or to guarantee its accuracy, so we may need to keep that in mind as well.

sliptonic commented 3 years ago

As that page shows, there are a lot of different ways to build a machine to do multi-axis machining. The spindle can rotate around the part or the part can rotate under the spindle. Rotations can be done around different axes to achieve the same orientation.

What I'm hunting for is a way for the end-user to describe in his configuration file how his machine works and then use that information to calculate the specific gcode needed to rotate his machine joints in order to position the tool where we want it with respect to the work.

Knowing that TinyIK can't do rotation/orientation is probably a deal breaker since that is exactly what I need for 4th and 5th axis machining. Do you have plans to add it?