connect() when no program is provided. The robot is the
root of a recursive component tree discovered at construction time:
robot methods are direct calls (robot.set_velocity(0.5)), and every
named subcomponent — sensors, end effector, arms, and their own
children — is a RemoteComponent reachable both via the
subcomponents mapping and as an attribute
(robot.left_arm.wrist_cam.getImage()).
Fields
Dict of child name → RemoteComponent for every top-level child of the robot.
Derived dict of the children whose remote role is sensor.
Derived RemoteComponent for the child end effector, or None.
Hardware identity (serial number, model, controller version) of the root node alone — advertised per node, so every component in the tree carries its own and none aggregates its children’s. A composite robot whose serial lives on a subcomponent reports
{} here; walk subcomponents and apply your own policy to decide which serial identifies the robot. {} also means unknown.Constructor
Signature
Properties
RemoteComponent | None
The child end effector, or
None (derived view).Prefers the child named "end_effector", else the first child
whose remote role is end effector.dict[str, str]
Hardware identity of the physical unit behind this node.The manufacturer identity the robot reported when this connection
introspected it —
serial_number, model,
controller_version — each key present only when the robot
could read it, so an empty dict means unknown. Absence is never
evidence of difference: two components that both report no serial
are not thereby the same unit, nor thereby distinct ones.Read from the introspection payload at connect time, so it costs
no round-trip and does not change for the life of the connection;
call getIdentity() on the component for a live read.Per-node, never aggregated. It reports what this node itself
advertised and nothing about its children: a composite robot
whose serial lives on its arm reports {} at the root while
robot.subcomponents["arm"].identity carries the serial. A
caller that wants “the robot’s serial” walks subcomponents
and picks by its own policy — which node’s serial counts as the
robot’s is a decision this client does not make.MonitorClient
str
dict[str, RemoteComponent]
Child components whose remote role is sensor (derived view).
RobotHandle
The underlying low-level robot handle (Zenoh session).
dict[str, RemoteComponent]
Named child components of this node (snapshot dict).
str
Methods
shutdown()
Signature