- Overview
- Use Case Motivation
- System Architecture Design
- EPS Core Subsystem
- Simulation Script Descriptions
- Data and Input/Output Values
- Assumptions
- Initial Parameter Source/Reference
- Setup Instructions
- Execution and Outputs
- Validation and Testing
- Future Work and Extensions
- Appendix
- References
The SSOS EPS Demo demonstrates the functionality of the Electrical Power Subsystem (EPS) within the Space Station Operating System (SSOS). This demo includes components such as a power generator, power sink, visualizer, critical load simulation, and the EPS core. It showcases their integration in a ROS-based framework, highlighting modularity, extensibility, and real-time data sharing capabilities.
The demo addresses critical challenges in power management for space station systems:
- Ensuring stable power generation and distribution.
- Managing dynamic load demands and prioritizing critical loads.
- Visualizing power flow and system status in real time.
- Demonstrating fault tolerance and recovery mechanisms.
-
Power Generator Node (power_generator.py):
- Simulates the power generation process.
- Publishes generated power levels to
/power_output
.
-
Power Sink Node (power_sink.py):
- Simulates power consumption by various subsystems.
- Subscribes to
/power_output
and adjusts consumption based on input.
-
Visualizer Node (visualizer.py):
- Displays power flow and system status.
- Subscribes to
/power_output
and/critical_load_status
for visualization.
-
Critical Load Simulation Node (critical_load_sim.py):
- Simulates the behavior of critical loads.
- Publishes load demands to
/critical_load_demand
and monitors status via/critical_load_status
.
-
EPS Core Subsystem (eps_core.cpp):
- Coordinates power generation, consumption, and load management.
- Provides real-time state updates via
/eps/state
. - Manages interactions with other nodes using abstraction and encapsulation principles.
- Topics:
/power_output
: Generated power levels./critical_load_demand
: Critical load requirements./critical_load_status
: Status of critical load operations./eps/state
: Current EPS status including energy stored and available power.
- Services:
/reset_fault
: Resets detected faults in the system.
The EPS core acts as the central module, coordinating power generation, consumption, and critical load management:
- Abstraction: Provides generic interfaces for power management and load handling.
- Inheritance: Enables specialized nodes to extend core functionalities.
- Encapsulation: Hides internal logic, exposing only APIs necessary for node integration.
- EPSSubsystem Class: Implements methods for handling power input, sinks, and critical loads.
- Dynamic State Updates: Uses timers to publish real-time state changes to
/eps/state
. - Noise and Variability Simulation: Introduces random noise for realistic energy consumption and baseline load variability.
- Real-time energy management with dynamic critical load handling.
- Power distribution optimization based on available energy and priorities.
- Fault detection and recovery with configurable thresholds.
-
Power Generator Script (power_generator.py)
- Simulates power generation capabilities.
- Publishes to
/power_output
topic.
-
Power Sink Script (power_sink.py)
- Models subsystem power consumption.
- Subscribes to
/power_output
to adjust load dynamically.
-
Visualizer Script (visualizer.py)
- Displays system-wide power flow.
- Processes
/power_output
and/critical_load_status
for visualization.
-
Critical Load Simulation Script (critical_load_sim.py)
- Emulates critical load requirements and operations.
- Publishes to
/critical_load_demand
and/critical_load_status
.
-
EPS Core Implementation (eps_core.cpp)
- Manages overall power system state, including energy storage, critical load prioritization, and dynamic updates.
- Handles interactions with the other nodes via defined topics and services.
- Topics:
/power_output
: Reports current power generation levels./critical_load_demand
: Specifies required power for critical loads./critical_load_status
: Provides the operational status of critical loads./eps/state
: Reports current EPS state including energy stored and available power.
- Message Types:
std_msgs/Float64
for power values.std_msgs/String
for EPS state updates.std_msgs/Bool
for critical load statuses.
- Power demand profiles are predefined.
- Nodes interact exclusively via ROS topics and services.
- Visualization updates occur at a fixed tick rate.
- Energy storage limits and decay rates are constant during simulations.
- Power generation limits and efficiency metrics are derived from ESA technical documents.
- Critical load thresholds and priorities are based on NASA mission data.
- EPS core functionality is inspired by industry-standard power management systems.
- Install dependencies:
sudo apt-get install ros-<distro>-desired-packages
- Clone the repository:
git clone <repository-url>
- Build the workspace:
cd <workspace> catkin_make
- Launch the demo:
roslaunch eps_demo eps_demo.launch
- Logs showing power generation, critical load handling, and EPS state updates.
- Real-time visualizations of power flow and load demands.
- Validation Criteria:
- Verify power levels adjust dynamically to load changes.
- Ensure critical load requirements are met under all conditions.
- Simulate faults and observe system recovery behavior.
- Example Test Case:
- Simulate a fault in power generation and observe EPS core handling.
- Integration with thermal control subsystems.
- Development of predictive models for power consumption trends.
- Hardware-in-the-loop testing for real-time applications.
- Expand EPS core to handle renewable energy sources in simulations.
- Power generator flow diagram.
- EPS state machine description.
- Critical load operation timeline.
- NASA Systems Engineering Handbook.
- ROS Documentation: https://www.ros.org
- ESA Power Management Guidelines.