|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged space_station_thermal_control at Robotics Stack Exchange
|
space_station_thermal_control 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.0.0 |
| 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
Space Station Thermal Control Subsystem
This package simulates the Active Thermal Control System (ATCS) of a space station. It models how heat is generated, accumulated in station nodes, transferred to coolant loops, and finally vented into space through radiators.
The system is built on ROS 2 using actions, services, and topic publishers/subscribers to mimic the real flow of thermal energy inside a space station.
🌍 How It Works
The thermal control simulation runs as a closed loop, with the following steps:
-
Solar Heating
- The
sun_vectornode publishes the position of the Sun. - The
solar_heat_nodeconverts this into heat input for the station’s thermal nodes.
- The
-
Thermal Nodes Heat Up
- The
thermals_solvernode integrates heat flow across all nodes and links (defined in a YAML config). - It publishes each node’s temperature on
/thermal/nodes/state. - If average temperature exceeds a threshold, it triggers cooling.
- The
- Coolant Loop Activated
-
-
thermals_solversends an action goal to/coolant_heat_transferhandled bycooling.cpp(CoolantActionServer). - The coolant absorbs heat based on:
\(Q = m \cdot C_p \cdot \Delta T\) * Internal water loop temperature is updated and published on
/tcs/internal_loop_heat. -
-
Heat Transferred to Ammonia Loop
- The coolant loop transfers heat to the ammonia loop with efficiency losses.
- This is published on
/tcs/external_loop_a/status.
-
Radiator Venting
- If ammonia heat exceeds a threshold, the
CoolantActionServercalls the/tcs/radiator_a/vent_heatservice. - The
radiators.cpp(RadiatorController) handles this by commanding solar joints (via/solar_controller/commands) to rotate and dump heat to space.
- If ammonia heat exceeds a threshold, the
-
Water Recycling
-
After several cooling cycles, the coolant server automatically:
- Requests fresh water (
/wrs/product_water_request). - Dumps used water into
/grey_water.
- Requests fresh water (
-
-
Diagnostics
- Throughout the process, nodes publish to
/thermals/diagnosticsto flag overheating, failed cooling, or service issues.
- Throughout the process, nodes publish to
Nodes Overview
-
thermals_solverCore simulator: integrates node temps, detects overheat, triggers cooling. -
cooling(CoolantActionServer) Action server for cooling: absorbs heat, transfers to ammonia, vents via radiator. -
radiators(RadiatorController) Handles radiator venting: rotates panels if excess heat > threshold. -
sun_vectorPublishes Sun position for orbital heating. -
solar_heat_nodeConverts Sun position into actual heat load on nodes. -
on_demand_publisherDiagnostic publisher for one-off checks.
Launch
All nodes can be started together:
ros2 launch space_station_thermal_control thermals.launch.py
This will bring up:
- Thermal solver
- Coolant action server
- Radiator controller
- Sun vector + solar heating
Key Interfaces
Topics
-
/thermal/nodes/state→ Node temperatures
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| rosidl_default_generators | |
| ament_index_cpp | |
| ament_cmake | |
| rosidl_default_runtime | |
| ament_lint_auto | |
| ament_lint_common | |
| sensor_msgs | |
| std_msgs | |
| std_srvs | |
| space_station_interfaces | |
| rclcpp | |
| urdf | |
| rclpy |