|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_eps at Robotics Stack Exchange
|
space_station_eps package from space_station_os repospace_station space_station_communication space_station_eclss space_station_eps space_station_gnc space_station_interfaces space_station_thermal_control |
ROS Distro
|
Package Summary
| Version | 0.8.7 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Space Station OS. A future where anyone can develop space stations. |
| Checkout URI | https://github.com/space-station-os/space_station_os.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-16 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- siddarth
Authors
Primary Electrical Power System (EPS) – Space Station OS
Overview
The Electrical Power System (EPS) is responsible for collecting, managing, and distributing power across the space station. It mimics the real ISS power architecture, including solar tracking, battery charge/discharge regulation, fault protection, and dynamic routing of power to downstream systems.
The primary components implemented include:
- SARJ (Solar Alpha Rotary Joint)
- Battery Manager
- BCDU (Battery Charge/Discharge Unit)
- MBSU (Main Bus Switching Unit)
- DDCU (Direct Current-to-Direct Current Converter Unit)
1. SARJ – Solar Array Tracking
- The SARJ node (
sarj_mock.cpp) simulates rotation of the solar arrays to track the sun. - It outputs a solar voltage estimate (
/solar/voltage) that depends on the beta angle and sun position. - This voltage serves as input to the BCDU to decide whether to charge batteries or switch to discharge mode (e.g., during eclipse).
2. Battery Manager
- Each channel (1–12) has two ORUs (Orbital Replacement Units), each with a
BatteryManagementSystem(BMS). -
The
battery_health.cppnode:- Publishes per-ORU
sensor_msgs/BatteryStateon/battery/battery_bms_<ID>/health. - Responds to
/chargeand/dischargeservice calls (simulated trigger-based). - Applies voltage drop/gain based on activity.
- Rejects unsafe commands based on voltage limits (e.g., over 120 V or under 70 V).
- Publishes per-ORU
3. BCDU – Charge/Discharge Controller
- Implemented as a ROS 2 action server in
bcdu_device.cpp. -
Listens to:
- Action goals on
/bcdu/operation(charge or discharge with target voltage). -
/solar/voltagetopic to determine when to switch between charge/discharge. - Battery status from all 24 BMS instances.
- Action goals on
- Parallelizes charge/discharge commands to all healthy ORUs via
/battery/battery_bms_X/chargeand/discharge. - Publishes status to
/bcdu/statusand diagnostics to/eps/diagnostics.
Key features:
- Fault isolation if current > 127 A or voltage outside safe range.
- Automatic safe mode entry on fault detection.
4. MBSU – Channel Selection and Routing
- Implemented in
mbsu_distributor.cpp. -
Subscribes to:
-
/mbsu/channel_<N>/voltage— one per EPS channel (voltage derived from BCDU-dispatched ORUs).
-
- Maintains a live mapping of channel voltages.
-
Periodically calls
selectHealthyChannels():- Picks top 2 healthy channels (voltage > 120 V).
- Publishes combined voltage average to
/ddcu/input_voltage(simulating DDCU supply). - Publishes warning diagnostics if fewer than 2 healthy channels available.
Note: MBSU does not subscribe to BMS health directly anymore — it only relies on channel voltage published by BCDU.
System Flow
```
[SARJ]
│
+───────▼────────+
│ Solar Power │
│ Estimate │
+───────┬────────+
│ /solar/voltage
[BCDU Action Server]
/bcdu/operation
┌────────┬────────┐
│ │ │
/charge /discharge Monitor all ORUs
│ │
┌──────▼──┐ ┌────▼────┐
│ Battery │ │ Battery │ …
│ BMS 0 │ │ BMS 1 │ etc.
└─────────┘ └─────────┘
│ │
/health /health
▼ ▼
[MBSU Node]
└─ Subscribes to:
/mbsu/channel_
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| space_station_interfaces | |
| rosidl_default_generators | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common |