EPS - space-station-os/space_station_os GitHub Wiki
The Electrical Power System (EPS) is the backbone of the space station, responsible for generating, storing, regulating, and distributing power to all onboard subsystems.
This wiki page covers two perspectives:
-
Real ISS EPS Architecture β how the system works on the International Space Station.
-
Simulation in Space Station OS β how these components are modelled in ROS 2 nodes for your EPS demo.
The ISS EPS works as a primaryβsecondary power distribution network. It ensures that solar energy is efficiently harvested, stored in batteries, and routed to station modules at regulated voltage.
-
Solar Array (PV Module)
-
Main source of power when the ISS is in sunlight.
-
Output depends on sun angle and beta angle (stationβs tilt relative to the sun).
-
-
SSU β Sequential Shunt Unit
-
Maintains array output voltage between 138β173 V.
-
Shunts excess current to keep the bus regulated.
-
-
DCSU β DC Switching Unit
-
Acts as a switching hub for solar array power.
-
Works with the BCDU to charge or discharge batteries.
-
-
BCDU β Battery Charge/Discharge Unit
-
Charges batteries during sunlight.
-
Supplies power from batteries during eclipse (when no sunlight).
-
Protects against overcurrent, overvoltage, and undervoltage.
-
-
MBSU β Main Bus Switching Unit
-
Combines inputs from multiple solar channels.
-
Selects healthy buses and routes them downstream.
-
Outputs 126β173 V primary power bus.
-
-
DDCU β DC-to-DC Converter Unit
-
Converts high-voltage primary bus to 124.5 V Β±1.5 V regulated secondary bus.
-
Ensures stable delivery to station loads.
-
-
PDU / PDB β Power Distribution Units & Boxes
-
Deliver power from DDCUs to specific loads (computers, pumps, ECLSS systems, payload racks, etc.).
-
-
In Sunlight:
Solar arrays generate power β bus regulated by SSU β DCSU/BCDU direct power + charge batteries β MBSU selects channels β DDCU regulates to 124.5 V β PDUs distribute power. -
In Eclipse:
Solar arrays inactive β BCDU discharges batteries β MBSU routes battery power β DDCU regulates β PDUs distribute.

Key voltages:
-
138β173 V from solar array via SSU.
-
126β173 V after MBSU routing.
-
124.5 V Β±1.5 V regulated secondary power.
In Space Station OS, the EPS is abstracted into ROS 2 nodes. Each node represents one subsystem in the real architecture.
-
File:
sarj_mock.cpp -
Role: Simulates Solar Alpha Rotary Joint tracking of the sun.
-
Outputs:
-
Publishes
/solar/voltage(solar array voltage estimate).
-
Equivalent to: PV Module + SSU/DCSU behavior.
-
File:
battery_health.cpp -
Role: Models each Battery ORU (Orbital Replacement Unit).
-
Interfaces:
-
Publishes
/battery/battery_bms_<ID>/health(sensor_msgs/BatteryState). -
Responds to
/chargeand/dischargeservices.
-
-
Features:
-
Simulates voltage rise/drop with charge/discharge.
-
Enforces safety rules: prevents <70 V (undervoltage) or >120 V (overcharge).
-
Equivalent to: Battery ORUs with BMS protections.
-
File:
bcdu_device.cpp -
Role: Coordinates all battery operations.
-
Interfaces:
-
ROS 2 Action Server on
/bcdu/operation. -
Subscribes to
/solar/voltageand all battery health topics. -
Publishes
/bcdu/statusand/eps/diagnostics.
-
-
Features:
-
Parallelizes
/chargeand/dischargeservice calls to all healthy ORUs. -
Fault isolation if current >127 A or voltage unsafe.
-
Automatic safe mode entry on fault detection.
-
Equivalent to: BCDU + DCSU logic.
-
File:
mbsu_distributor.cpp -
Role: Selects and routes channel power.
-
Interfaces:
-
Subscribes to
/mbsu/channel_<N>/voltage. -
Publishes
/ddcu/input_voltage.
-
-
Features:
-
selectHealthyChannels()chooses the top 2 channels with voltage >120 V. -
Averages their voltage and publishes to
/ddcu/input_voltage. -
Warns via diagnostics if <2 healthy channels.
-
Equivalent to: MBSU bus combiner and selector.
-
Future Node
-
Converts
/ddcu/input_voltage(126β173 V) β regulated 124.5 V. -
Would eventually supply loads like ECLSS, Thermal, Comms.
Equivalent to: DDCU voltage regulator.
-
All EPS nodes publish to
/eps/diagnostics(diagnostic_msgs/DiagnosticStatus).
-
BCDU: Overcurrent or out-of-range voltage.
-
Battery Manager: Overcharge or undervoltage.
-
MBSU: Insufficient healthy channels.
Diagnostics can be viewed in GUI dashboards or logged for offline analysis.
To bring up the EPS simulation:
ros2 run demo_eps sarj_mock
ros2 run demo_eps battery_health
ros2 run demo_eps bcdu_device
ros2 run demo_eps mbsu_distributor
| Real ISS Component | Simulation Node | File | Function |
|---|---|---|---|
| PV Module + SSU/DCSU | SARJ | sarj_mock.cpp | Publishes solar voltage |
| Battery ORUs | Battery Manager | battery_health.cpp | Battery health + charge/discharge |
| BCDU + DCSU | BCDU | bcdu_device.cpp | Charge/discharge control, diagnostics |
| MBSU | MBSU | mbsu_distributor.cpp | Channel selection, bus output |
| DDCU | (Future) DDCU | planned | Secondary voltage regulation |