feathersdk.robot.battery_system Module

class feathersdk.robot.battery_system.BatterySystem

Bases: SteppableSystem

Base class for battery monitoring and power event management.

add_power_event_listener(listener)

Add a power event listener.

Parameters:

listener (PowerEventListener) – Listener to receive power event notifications

get_battery_voltage()

Get current battery voltage.

Returns:

Battery voltage in volts

Return type:

float

last_powered_up_time()

Get the last time the system was powered up.

Returns:

Timestamp of last power-up event

Return type:

float

notify_power_event_listeners(event: PowerEvent)

Notify all registered listeners of a power event.

Parameters:

event (PowerEvent) – The power event to notify listeners about

remove_power_event_listener(listener)

Remove a power event listener.

Parameters:

listener (PowerEventListener) – Listener to remove

class feathersdk.robot.battery_system.DualBatterySystem(config: dict = {})

Bases: BatterySystem

Battery system implementation for dual battery configuration with I2C monitoring.

ADS1115_ADDR = 72
CONFIG_REG = 1
CONV_REG = 0
ESTOP_VOLTAGE_THRESHOLD = 45
I2C_DEV_BUS = 1
__init__(config: dict = {})

Initialize dual battery system.

Parameters:

config (dict) – Configuration dictionary with optional keys: - rated_voltage: Battery rated voltage in volts (default: 48) - capacity_amp_hours: Battery capacity in amp-hours (default: 50) - num_batteries: Number of batteries (default: 2)

Raises:

Exception – If battery monitoring is not healthy

get_battery_voltage()

Get current battery voltage from I2C ADC.

Reads voltage from ADS1115 ADC via I2C and applies scaling factors.

Returns:

Battery voltage in volts

Return type:

float

get_estimated_battery_percentage()
is_estop_pressed()

Check if emergency stop is pressed based on battery voltage.

Returns:

True if battery voltage is below ESTOP threshold, False otherwise

Return type:

bool

last_powered_up_time()

Get the last time the system was powered up.

Returns the maximum of current boot time and last estop release time.

Returns:

Timestamp of last power-up event

Return type:

float

update_power_state()

Update power state from system state file.

Reads power state from JSON file and updates internal state variables.

Raises:

Exception – If battery monitoring is not healthy

class feathersdk.robot.battery_system.DualBatterySystemPico

Bases: object

Battery system implementation for dual battery configuration with Pico monitoring.

close()

Close the serial port when done.

get_battery_voltage()

Get current battery voltage from Pico.

class feathersdk.robot.battery_system.PowerEvent(*values)

Bases: Enum

Power system events.

POWER_OFF = 1
POWER_RESTORED = 2
class feathersdk.robot.battery_system.PowerEventListener

Bases: ABC

Abstract base class for power event listeners.

abstractmethod on_power_event(event: PowerEvent)

Handle power event notification.

Parameters:

event (PowerEvent) – The power event that occurred

feathersdk.robot.battery_system.binary_search_max_above(value, list)
feathersdk.robot.battery_system.find_pico_port()

Find the Raspberry Pi Pico port.

feathersdk.robot.battery_system.i2c_read(bus, addr, reg, length)

Read data from I2C device register.

Parameters:
  • bus – SMBus instance

  • addr – I2C device address

  • reg – Register address to read from

  • length – Number of bytes to read

Returns:

List of bytes read from the register

Return type:

list

feathersdk.robot.battery_system.i2c_write(bus, addr, data)

Write data to I2C device.

Parameters:
  • bus – SMBus instance

  • addr – I2C device address

  • data – Data bytes to write