Hi KickCAT community,
URML (urml.dev) is a small, Apache-2.0 language for describing robot intent: an intent becomes a typed primitive, validated against the robot's declared capabilities and a safety envelope, then dispatched. EtherCAT is the fieldbus beneath the actuation layer in many industrial and legged systems, and KickCAT is an open master/slave stack for it. I wanted to describe how URML layers above that and ask whether it is the right altitude.
Nothing here asks the project to adopt, host, or maintain anything. This is a request for comment.
The layering: URML's actuation primitives are validated statically (pre-dispatch); the realized motion reaches the servo drives over EtherCAT, where KickCAT is the master doing the cyclic exchange. URML is the typed, pre-dispatch-validated intent; KickCAT is the deterministic transport to the drives. This mirrors URML's existing ros2_control hardware-abstraction mapping, one layer lower. (KickCAT is CeCILL-C; this proposes no code reuse, only a layering description.)
Two real questions: (1) is "URML validates actuation intent above, KickCAT carries it to the drives over EtherCAT" an accurate description? (2) Is a fieldbus master the right altitude to engage, or is the integrator / ros2_control layer the better seam?
Full write-up: https://github.com/URML-MARS/URML/blob/main/docs/rfcs/0507-kickcat-outreach.md
Thanks for KickCAT; an open EtherCAT master is a clean reference point for where the validated-intent layer ends and the deterministic bus begins.
Ido Yahalomi (URML, greenvh@gmail.com)
AI-assisted prose, maintainer-reviewed before posting (see https://github.com/URML-MARS/URML/blob/main/VIBE.md). Human-only correspondence available on request.
Hi KickCAT community,
URML (urml.dev) is a small, Apache-2.0 language for describing robot intent: an intent becomes a typed primitive, validated against the robot's declared capabilities and a safety envelope, then dispatched. EtherCAT is the fieldbus beneath the actuation layer in many industrial and legged systems, and KickCAT is an open master/slave stack for it. I wanted to describe how URML layers above that and ask whether it is the right altitude.
Nothing here asks the project to adopt, host, or maintain anything. This is a request for comment.
The layering: URML's actuation primitives are validated statically (pre-dispatch); the realized motion reaches the servo drives over EtherCAT, where KickCAT is the master doing the cyclic exchange. URML is the typed, pre-dispatch-validated intent; KickCAT is the deterministic transport to the drives. This mirrors URML's existing ros2_control hardware-abstraction mapping, one layer lower. (KickCAT is CeCILL-C; this proposes no code reuse, only a layering description.)
Two real questions: (1) is "URML validates actuation intent above, KickCAT carries it to the drives over EtherCAT" an accurate description? (2) Is a fieldbus master the right altitude to engage, or is the integrator / ros2_control layer the better seam?
Full write-up: https://github.com/URML-MARS/URML/blob/main/docs/rfcs/0507-kickcat-outreach.md
Thanks for KickCAT; an open EtherCAT master is a clean reference point for where the validated-intent layer ends and the deterministic bus begins.
Ido Yahalomi (URML, greenvh@gmail.com)
AI-assisted prose, maintainer-reviewed before posting (see https://github.com/URML-MARS/URML/blob/main/VIBE.md). Human-only correspondence available on request.