feathersdk.robot.robot Module¶
- exception feathersdk.robot.robot.ActuatorNotFoundError¶
Bases:
ExceptionRaised when accessing a non-existent actuator, or when an actuator cannot be found on any CAN endpoint.
- class feathersdk.robot.robot.FeatherRobotConfig(*, version, set_atexit_handler=True, set_signal_handlers=True, kill_on_failed_abort=True, skip_find_actuators=False, skip_initialization=False, urdf_path=None, logging_config, comms_manager_config, data_monitor_service_config=None, battery_service_config=None, camera_service_config=None, odometry_service_config=None, neck_system_config=None, torso_system_config=None, navigation_system_config=None, arms_system_config=None, manipulation_system_config=None, custom_actuator_system_configs=<factory>, custom_robot_module_configs=<factory>)¶
Bases:
PyDFrozenBaseModelConfiguration for a full FeatherRobot.
- Parameters:
version (str)
set_atexit_handler (bool)
set_signal_handlers (bool)
kill_on_failed_abort (bool)
skip_find_actuators (bool)
skip_initialization (bool)
urdf_path (Path | None)
logging_config (LoggingConfig | None)
comms_manager_config (CommsManagerConfig | None)
data_monitor_service_config (DataMonitorServiceConfig | None)
battery_service_config (BatteryServiceConfig | None)
camera_service_config (ZedCameraServiceConfig | None)
odometry_service_config (Annotated[IMUOdometryServiceConfig | WheelOdometryServiceConfig, FieldInfo(annotation=NoneType, required=True, discriminator='odometry_source')] | None)
neck_system_config (TwoDOFRobstrideNeckSystemConfig | None)
torso_system_config (LinearEZMotionTorsoSystemConfig | None)
navigation_system_config (ThreeWheelHolonomicRobstrideNavigationSystemConfig | None)
arms_system_config (ArmsSystemConfig | None)
manipulation_system_config (ManipulationSystemConfig | None)
custom_actuator_system_configs (List[ActuatorSystemConfig])
custom_robot_module_configs (List[RobotModuleConfig])
- kill_on_failed_abort: bool¶
Whether to kill the process if the robot fails to abort cleanly, to avoid hanging processes.
- skip_find_actuators: bool¶
Whether to skip the finding of actuators. This is useful for debugging purposes, flashing the motor firmware, etc. The robot will not attempt to find any actuators or initialize them.
- skip_initialization: bool¶
Whether to skip the initialization of the robot. This is useful for debugging purposes, flashing the motor firmware, etc. The robot will stop initialization after finding all motors, but not initializing them.
- urdf_path: Path | None¶
The path to the URDF model for the robot, or None to not load a model. If not loaded, any kinematics-related functionality will not be available.
- comms_manager_config: CommsManagerConfig | None¶
The configuration for the comms manager.
- data_monitor_service_config: DataMonitorServiceConfig | None¶
The configuration for the data monitor service, or None to disable
- battery_service_config: BatteryServiceConfig | None¶
The configuration for the battery service, or None to disable
- camera_service_config: ZedCameraServiceConfig | None¶
The configuration for the camera service, or None to disable
- odometry_service_config: Annotated[IMUOdometryServiceConfig | WheelOdometryServiceConfig, FieldInfo(annotation=NoneType, required=True, discriminator='odometry_source')] | None¶
IMU or wheel-encoder odometry, or None to disable. IMU requires a camera service; wheel requires navigation.
- neck_system_config: TwoDOFRobstrideNeckSystemConfig | None¶
The configuration for the neck system, or None to disable
- torso_system_config: LinearEZMotionTorsoSystemConfig | None¶
The configuration for the torso system, or None to disable
The configuration for the navigation system, or None to disable
- arms_system_config: ArmsSystemConfig | None¶
The configuration for the arms system, or None to disable
- manipulation_system_config: ManipulationSystemConfig | None¶
The configuration for the manipulation system, or None to disable
- custom_actuator_system_configs: List[ActuatorSystemConfig]¶
Allows users to add custom actuator systems to the robot.
- custom_robot_module_configs: List[RobotModuleConfig]¶
Allows users to add custom robot modules to the robot.
- model_config: ClassVar[ConfigDict] = {'frozen': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class feathersdk.robot.robot.FeatherRobot(config, *args, **kwargs)¶
Bases:
Abortable,Configurable[FeatherRobotConfig]A Feather robot.
- Parameters:
config (FeatherRobotConfig) – The configuration for the robot.
_client (Optional["FeatherClient"] = None) – Do not set manually! Only used internally by the FeatherClient. Initializes the robot instance assuming it is just meant for data storage and API interfacing instead of controlling the physical robot.
- data_monitor_service: DataMonitorService | None¶
Manages the data monitoring and robot telemetry gathering, if using.
- battery_service: BatteryService | None¶
Manages the battery state and detects power events like hitting the estop, if using.
- camera_service: ZedCameraService | None¶
Manages the ZED camera, if using.
- odometry_service: IMUOdometryService | WheelOdometryService | None¶
Dead-reckons base pose from the ZED IMU or wheel encoders, if using. Only one source can be enabled.
- neck_system: TwoDOFRobstrideNeckSystem | None¶
Manages the neck, if using.
- torso_system: LinearEZMotionTorsoSystem | None¶
Manages the torso lift, if using.
Manages the navigation, if using.
- arms_system: ArmsSystem | None¶
Manages the arms, if using.
- manipulation_system: ManipulationSystem | None¶
Manages the manipulation, if using.
- global_telemetry: FeatherTelemetry¶
Stores all telemetry data for the robot.
- custom_actuator_systems: List[ActuatorSystem[TActuatorSystemConfig, TActuator]]¶
Allows users to add custom actuator systems to the robot.
- custom_robot_modules: List[RobotModule[TRobotModuleConfig]]¶
Allows users to add custom robot modules to the robot.
- modules: Dict[str, RobotModule[TRobotModuleConfig]]¶
Dictionary of module name to module.
- actuator_systems: Dict[str, ActuatorSystem[TActuatorSystemConfig, TActuator]]¶
Dictionary of actuator system name to actuator system.
- actuators_by_id: Dict[int, Actuator[TActuatorConfig, TActuatorTelemetry, TTelemetryParamCode]]¶
Dictionary of actuator integer ID to actuator.
- actuators_by_name: Dict[str, Actuator[TActuatorConfig, TActuatorTelemetry, TTelemetryParamCode]]¶
Dictionary of actuator name to actuator.
- comms_manager: CommsManager¶
Handles lower-level communication within the robot.