Control Authority (Lease)#
P7 uses a time-limited exclusive lease to manage ordinary control commands. For the same robot-arm resource, only the current lease holder can submit ordinary motion requests at a given time; state retrieval does not require a lease. Acquiring a lease does not automatically switch control modes or move the robot arm.
Registration and Lease#
| Condition | Meaning |
|---|---|
| Client registered | The service can identify the current client instance; does not mean that it has control authority |
| State readable | A getter can return a current snapshot; does not mean that the client has control authority |
acquire_control() returns True |
The lease was acquired successfully for this call; it can subsequently expire, fail to renew, or be preempted |
release_control() called |
The SDK clears its local lease and attempts to release the server-side resource; does not stop an accepted trajectory |
The SDK renews the lease automatically after acquiring control authority. The local lease is cleared when the registration heartbeat fails, renewal continues to fail until the lease expires, a higher-priority client preempts it, or the application releases control and closes. The SDK does not expose a property that queries whether the current lease remains valid. If motion commands are suddenly rejected, include lease loss in the investigation.
Common Interfaces#
client.acquire_control(
lease_ms=15000,
renew_period_s=5.0,
*,
preempt=False,
) -> bool
client.release_control() -> None
client.handover_to_previous() -> bool
preempt=True is only a preemption request and remains subject to source priorities and non-preemptive rules in the product
configuration. Do not infer priority from client names, and do not retry without a limit or force preemption when the current
owner is unknown.
Coordinate before acquiring or handing over control
Acquiring, preempting, and handing over control authority affects other control programs on the same robot arm. Confirm on-site safety, ensure the physical emergency stop is available, and coordinate with the current task before acting. A control-authority change does not automatically stop motion already accepted by the service.
Handling Failures#
acquire_control()returnsFalse: check the current owner, source configuration, lease duration, renewal interval, and transport logs.- A command is rejected after control is acquired: stop sending new targets and check for lease loss and whether the FSM remains in the target mode.
- Control is temporarily unavailable after a process exits abnormally: wait for the old lease to expire; do not hide a persistent fault with unlimited retries.
- Handover fails: the current caller usually still holds the lease; explicitly choose either to retry the handover or to release it.
See API Reference for client and control-authority entry points, and Examples for the complete call and cleanup sequence.