Printer Geometry results in Error in get_mcu_position - rotary_delta

Basic Information:

Printer Model: Self Made, Rotary Delta
MCU / Printerboard: Arduino Mega 2560 ( with motordrivers and motors only, just a kinematics demonstrator)
Host / SBC Raspi 4
klippy.log klippy_G28_error.log (56.2 KB)

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:

Hello everyone,

For a university project, I need to build a small kinematics demonstration to convert a custom printer from Beckhoff/TwinCAT to Klipper. The reason for this is that nobody in the whole facility knows how to program with TwinCAT, and the printer hasn’t produced a decent print since 2011. The geometry of the joints isn’t a concern because these will be different in the final version. The demonstrator should essentially fit in your hand and be fairly portable, as it’s meant to be a quick and dirty temporary solution.

I’ve made a simple mockup with the following geometry:

  • Shoulder Length: 75mm
  • Elbow Length: 75mm
  • Base Radius (where the motor shaft is mounted): 75mm
  • Effector Radius: 40mm
  • Shoulder Radius (Using the formula in the documentation): 10.10mm
  • Shoulder Height: I’m unsure about this parameter, and this is where the trouble starts.

The following error appears in the log: "ValueError: cannot convert float NaN to integer" when trying to perform any moves—specifically when executing G28. Klipper crashes after that and requires a firmware restart.

I believe this might be a basic oversight on my part regarding the geometry itself. I don’t fully understand why this geometry would result in an error, even if this specific configuration isn’t practical for real-world use. A simple sketch illustrating the measurements would be greatly appreciated if anyone is willing to provide that. In my opinion, adding such a sketch to the documentation for rotary delta kinematics would be a valuable addition.

The solution is probably straightforward, but I would appreciate any help in identifying the error in my reasoning. I suspect I may not fully understand what the values “delta_f” and “delta_e” represent in the following context:

"
shoulder_radius:

Radius (in mm) of the horizontal circle formed by the three

shoulder joints, minus the radius of the circle formed by the

effector joints. This parameter may also be calculated as:

shoulder_radius = (delta_f - delta_e) / sqrt(12)

This parameter must be provided.

"

Regards,
Philipp

P.S.: I hope I have attached everything correctly as this is my first post in any forum.

Not a lot of people use the rotary_delta kinematics. The comments for shoulder_radius were based on descriptions of printers available at the time the implementation was first written, but it doesn’t seem like that information has aged well.

At a quick glance, the values you’ve chosen for shoulder/elbow/etc. don’t look realistic to me. If you’ve got an actual printer, can you provide a picture of it along with its key measurements?

There was a long thread on the rotary delta implementation at https://github.com/Klipper3d/klipper/issues/1610 - you may want to read through it to see if any of the info helps.

-Kevin

Hi Kevin,

i have read about the original implementation but couldn’t get any information out of it that would solve my problem. But i have to thank you for implementing the rotary_delta kinematics anyway because it will probably help my project in the long run.

Your intuition about the geometric values is right. I was stuck with that problem and had to find a solution. So i read more about that specific kinematic and found out that my configuration results in an extremely small workspace. I got around that by changing the lenghts to something more sensible as shown in the picture:


This was definitely a big oof on my part but now it works as intended. The Link to the website visualizing a rotary_delta is: Delta Robot Forward/Inverse Kinematics Calculations

The real deal is much larger and currently has some major problems which would be solved by using Klipper. Here is some information about that machine if anyone has interest in it: 3DPXL: Versuchsplattform Additive Fertigung/3D-Druck
It is/should be capable of printing parts over 1m in diameter and about the same in height.

It’s really nice of You to write back and i will try to stay in touch. Who knows how this odd-ball-project of mine could be useful for this community in the future. I’m currently working on implementing a granulate extrusion system which is being developed/reworked at Uni. I’ll probably share some scripts because this might be a good addition to the knowledgebase. Maybe even some calculations regarding plastic massflow for any given extrusion-screw-geometry.

Thanks and best regards,
Philipp

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.