Skip to main content
The Online Controller Lifecycle (online_controller_lifecycle) node starts or stops the online controller assigned to a twin. On a manual (or any) trigger it deploys the twin’s primary controller policy, optionally auto-stopping after a set duration.
Palette category: Actuation. Uses the twin’s assigned controller policy — assign one on the twin first.

Steer an RL policy toward an object pose

For RL-task policies you can have the node collect a target object’s pose at trigger time and pass it to the policy as its startup goal (inference command). This is the “pose → policy” pattern: run the workflow and the policy is steered toward the target. Point the node at the object whose pose is the goal:
  • target_object_external_id — a scene object (e.g. a procedural primitive) in the workflow’s environment, or
  • target_twin_uuid — a twin whose world pose is the goal.
The node reads that entity’s authored pose each run (the scene object’s authored primitive position, or the twin’s stored world pose) and starts the policy with an object_position inference command. This requires the policy’s RL task to declare an object_position inference command; set command_name when the task declares more than one.
When resolved inside this node, the target_* params use the authored pose, not the live simulator pose. To seed the policy with a target’s live sim pose, use a Get Pose node upstream (it prefers the live streamed pose) and wire its position output into object_position.

Or wire the pose from a Get Pose node

Instead of resolving the pose inside this node, you can keep the pose-reading step as a separate, visible node: put a Get Pose node between the trigger and this node, and wire its position output into this node’s object_position input. The mapped pose takes precedence over the target_* params.

Live vs. simulation starts

The node does not take a mode input — it follows the workflow’s execution target (the Live/Simulation toggle on the workflow), the same convention the recorder and navigation nodes use. When the workflow runs live, the controller drives the physical robot on the twin’s bound edge; a live start against a twin whose edge is online requires confirm_live to be true, otherwise the safety gate rejects it. For live RL-task dispatches you can also pick the controller↔plant transport (mqtt default, or zenoh for the low-latency edge DataBus when the driver declares it); simulation runs ignore transport and confirm_live.

Inputs