Skip to main content

Upper Body Teleoperation Task State

The Upper Body Teleoperation Task state runs upper_body_tele_task and forwards external joint, end-effector, and wheeled-base commands to GR-W.

State Details​

State NameTask NameJoystick MappingDDS MappingFrequency
UserController_Bupper_body_tele_taskRB+B4500Hz
Available when HangingAvailable when StandingAutomatic Protection Switch
YesYesNo

Joystick Control​

Enter Upper Body Teleoperation Task State​

After initializing AuroraCore, press the shoulder button RB and button B simultaneously.

Client Control​

Velocity ControlStand Pose ControlJoint ControlJoint Parameter Control
YesNoWaist, head, arms, end effectorsNo

Enter Upper Body Teleoperation Task State​

A True return from set_fsm_state() only means the request was accepted; confirm by reading back. In state 4, get_upper_fsm_state() stays 0 (Default); set_upper_fsm_state() returns False in both states 3 and 4 — do not use it as a replacement for the whole-body switch.

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # required on the robot

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0)
print(f"before: {client.get_fsm_state()} ({client.get_fsm_name()})")
if not client.set_fsm_state(4):
raise RuntimeError("state change request not accepted")
deadline = time.monotonic() + 4.0
while client.get_fsm_state() != 4:
if time.monotonic() >= deadline:
raise RuntimeError("did not switch to upper_body_tele_task")
time.sleep(0.05)
print(f"after: {client.get_fsm_state()} ({client.get_fsm_name()})")
finally:
client.close()

Joint Control​

Use set_group_cmd to send position, velocity, and torque commands. Every command must include all joints in the target control group.

Commands must be streamed continuously

upper_body_tele_task expects a continuous joint command stream (100 Hz recommended). Once you stop sending, uncommanded joints slowly droop under gravity (up to 0.09 rad within 1 s): either keep streaming target positions for all controlled groups, or switch back to state 3 promptly. get_group_motion_state() stays 0 (idle) during streaming and cannot be used to detect motion completion.

Available control groups: waist, head, left_manipulator, right_manipulator

End effectors: left_end_effector, right_end_effector

danger

The waist has five degrees of freedom. Its safe default position is [-1.25, 2.15, -0.918, 0, 0]; never command all waist joints to zero.