feathersdk.robot.manipulation_platform Module

class feathersdk.robot.manipulation_platform.BimanualManipulationPlatform(motors_manager: MotorsManager, config: dict, power: BatterySystem = None, manipulator_config: dict = {})

Bases: SteppableSystem

Coordinates left/right arms, optional hands/grippers, and shared stepping.

subsystems lists arms first, then any initialized manipulators, for start() and _step().

disable_arms()

Disable left and right arms (compliance/stop via each ArmSystem.disable()).

enable_arms()

Enable left and right arms (operation mode, with retries per ArmSystem.enable()).

freeze_current_arm_state(kp: float = 500, kd: float = 5)

Hold both arms at their current pose using the given operation gains.

Parameters:
  • kp – Position gain forwarded to each ArmSystem.freeze_current_arm_state().

  • kd – Damping gain forwarded to each arm.

get_state() dict

Merge ArmSystem.get_state() for the right and left arms.

Returns:

Motor name → per-motor snapshot (temp, torque, angle, velocity) as returned by each arm.

Return type:

dict

is_calibrated(check_right: bool = True, check_left: bool = True) bool

Check if arms are calibrated.

Parameters:
  • check_right – Check right arm calibration state

  • check_left – Check left arm calibration state

Returns:

True if all specified arms are calibrated

on_abort()

Disable both arms and tear down RH56F1 hands if they were initialized.

RH56F1 EtherCAT masters are released via destroy() so a new robot instance can claim them after abort.

start()

Start this platform and call start() on any subsystem that defines it.