Skip to content

URML (open robot intent language): where validated actuation meets the EtherCAT master (request for comment) #410

Description

@idoco2003

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions