Hi. Disclosure up front: AI-assisted prose I reviewed before posting (https://github.com/URML-MARS/URML/blob/main/VIBE.md); human-only is fine if you prefer.
I maintain URML (https://urml.dev), a small Apache-2.0 language that checks an intended action against a robot's declared capability manifest and safety envelope before it runs.
I will be honest about where this sits, because controllerclientcpp is the client to the Mujin controller rather than the planner itself. Code that uses the client decides a motion and sends it to the controller; URML can declare the cell's envelope (reach, payload, keep-out, speed) and validate a commanded motion against it before the client sends it. It is a static admissibility check on the outgoing command, not a controller and not a re-implementation of the Mujin planner. The controller keeps the planning and the real safety logic, so URML's role here is narrower than for an autonomy layer that generates actions, which is why I am asking rather than asserting.
Two questions:
- For a controller client, is a declared-capability and envelope check on the outgoing command a useful addition for the integrations built on it, or does that belong inside the controller rather than in front of the client?
- Would a small worked example mapping a command sent through the client onto a URML manifest, validated with no execution, be worth having?
Nothing here asks you to adopt, host, or maintain anything. Thanks for keeping the client libraries open.
Ido Yahalomi (greenvh@gmail.com)
Hi. Disclosure up front: AI-assisted prose I reviewed before posting (https://github.com/URML-MARS/URML/blob/main/VIBE.md); human-only is fine if you prefer.
I maintain URML (https://urml.dev), a small Apache-2.0 language that checks an intended action against a robot's declared capability manifest and safety envelope before it runs.
I will be honest about where this sits, because controllerclientcpp is the client to the Mujin controller rather than the planner itself. Code that uses the client decides a motion and sends it to the controller; URML can declare the cell's envelope (reach, payload, keep-out, speed) and validate a commanded motion against it before the client sends it. It is a static admissibility check on the outgoing command, not a controller and not a re-implementation of the Mujin planner. The controller keeps the planning and the real safety logic, so URML's role here is narrower than for an autonomy layer that generates actions, which is why I am asking rather than asserting.
Two questions:
Nothing here asks you to adopt, host, or maintain anything. Thanks for keeping the client libraries open.
Ido Yahalomi (greenvh@gmail.com)