Thank you for all the input guys, will be looking in detail when Beziers time come, but arcs will remain arcs, beziers are to smooth out point clouds and sharp corners which are not arcs to begin with.

For phase 1.2 Joint limit pre-calculation, the joint limits, I already did a small component that can predict if the executing gcode will reach joint limits at gcode load time, I was thinking, this can be used to remove the need to set AXIS limits, axis limits IMO should be inherited from joint limits + IK, you set joint limits (they are the hardware reality), and axis limits become derived from that through inverse kinematics. For trivkins it's trivial, for non-trivkins the "axis limits" concept doesn't even make sense in Cartesian terms anyway - the reachable workspace is a complex volume depending on the pose.

I also want to implement something in the gcode, to check if a position is reachable before actually going there. Thinking of G1.1 G2.1 G3.1 etc as "dry run" variants of motion commands - same syntax, same path planning through the TP and IK, but instead of commanding motion, it returns what would happen.

Something like:

|G1.1 X100 Y50 Z-10 A30 B45 F1000 |

After execution, named parameters get set:

|#<_motion_ok> ; 1=would succeed, 0=would hit limit #<_motion_x> ; final X position (target if ok, last safe if not) #<_motion_y> #<_motion_z> #<_motion_a> #<_motion_b> #<_motion_c> #<_limit_joint> ; which joint hit limit (0=none) |

The nice thing is no tolerance parameter needed - the trajectory planner already knows the servo cycle time, so "position one cycle before hitting limit" is inherent from how the TP works. Same code path as real motion, runs through kinematics and limit checking, just doesn't command the drives.

This would be useful for:

 * Complex 5-axis where you want to know if a position is reachable
   before committing
 * Probing cycles that need to plan escape routes
 * Adaptive toolpaths that make runtime decisions
 * Recovery after faults

For 5-axis non-trivkins you'd get which actual joint would fail, not some meaningless "axis" number, because the IK ran and found joint 4 would hit +175° for example.

Not sure if this fits in the TP2 scope or should be a separate PR, wanted to get your thoughts before going further



On 1/27/2026 1:42 AM, Robert Schöftner wrote:
On Mo, 2026-01-26 at 16:29 +0100, Bertho Stultiens wrote:
On 1/26/26 4:18 PM, Robert Schöftner wrote:
you can't exactly represent conic sections like circles / arcs
Quadratic Beziers cannot represent circles or circular arcs
correctly.
However, using Cubic Beziers can (extensively used in SVG).

you are right of course, here is how to construct a circle out of cubic
beziershttps://spencermortensen.com/articles/bezier-circle/



_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to