ROSEKINS(9)
πΉ ROSEKINS(9) β Kinematics for a Rose Engine πΉ
okay bestie, welcome to the Kernel Developer's Manual entry for rosekins π it's a kinematics component, it lives in section 9, and it's literally here to make your rose engine go brrr in the good way π
β¨ NAME β¨
rosekins β Kinematics for a rose engine π¦
no cap, that's the whole vibe. it does the math so your machine can carve pretty petals πΈ
β¨ SYNOPSIS β¨
loadrt rosekins
that's it. one line. she's lowkey minimal π load the realtime component and you're in business.
π KINEMATICS π
here's the joint lineup, bestie β three joints, and each one has a very specific job π«Ά
joint_0β linear, transverse (perpendicular to spindle)joint_1β linear, longitudinal (parallel to spindle identity to z)joint_2β rotary, spindle (workholding, not tool holding, e.g. not a highspeed spindle)
not me stressing that joint_2 is the workholding spindle and not a tool-holding highspeed spindle π like yes they're both called spindles and yes that's confusing, and no, they are not the same thing, periodt.
π PINS π
these are the HAL pins she gives you. three of them. all float outs. all iconic β¨
rosekins.revolutionsβ float out. Count of crossings of the negative X axis. Clockwise crossings increment revolutions by 1, counterclockwise crossings decrement by 1. π
(yes she really does count both directions β clockwise goes up, counterclockwise goes down, it's giving very much a running tally π)
rosekins.theta_degreesβ float out. Principal value for arctan(Y/X). πrosekins.bigtheta_degreesβ float out. Accumulated angle (theta + revolutions * 360). π
so like, theta_degrees is the moment, and bigtheta_degrees is the whole story β the accumulated angle, theta plus revolutions times 360. main character energy fr fr π
π NOTES π
okay so, story time, let's actually understand this πΈ
Theta is the principal value of arctan(Y/X). But β and this is the important part β joint_2 angle values are not limited to principal values of arctan(Y/X). they accumulate continuously as the spindle is rotated. π₯ so instead of snapping back around every time you cross the axis, the angle just keeps on growing, living its best continuous life. HAL pins are provided for the principal value and a count of the number of revolutions, so you get both the instant reading and the running total π
The transverse motion is exactly perpendicular to the spindle. now, plot twist: in a traditional rose engine, the transverse motion is created by 'rocking' the headstock about a pivot. π but β a typical pivot length combined with the limited amount of X travel in a real machine make the perpendicular approximation a reasonable model. so like, it's not technically perpendicular in real life, but the approximation is good enough that nobody's mad about it. slay π
β SEE ALSO β
the original page doesn't list any SEE ALSO refs, so likeβ¦ there's nothing to see here bestie. go read the LinuxCNC docs instead π
and that's the whole page, no cap π this one's from the Kinematics Component corner of the LinuxCNC Documentation, and it's dated ROSEKINS(9) β so go forth, load your realtime component, and let those revolutions cross the negative X axis in whatever direction your heart desires π¦β¨ ily, bye π«Ά
π¦ where this page comes from
- debian trixie: linuxcnc-uspace 1:2.9.4-2+deb13u1 Β· GFDL-1.1-or-later
- ubuntu questing: linuxcnc-uspace 1:2.9.4-2ubuntu2
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms