This demo implements the Active Thermal Control System (ATCS) and Passive Solar Thermal Modeling for the HAVEN-2 space station configuration (inspired by VAST). It simulates thermal conduction between spacecraft joints, heat absorption by internal coolant loops, and rejection via radiators (currently visualized via solar array motion).
Thermal nodes = spacecraft joints Thermal links = conduction paths between joint-connected links Heat transfer = simulated using physical RK4 integration and control logic
- ROS 2 Humble
colcon
,tmux
- Recommended: Gazebo Harmonic and RViz
This package depends on Gazebo Harmonic (gz-sim8).
If not already installed, add the OSRF Gazebo repository and install it using the steps below:
# Add OSRF GPG key
sudo apt install curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://packages.osrfoundation.org/gazebo.key | gpg --dearmor | sudo tee /etc/apt/keyrings/gazebo-archive-keyring.gpg > /dev/null
# Add the repository
echo "deb [signed-by=/etc/apt/keyrings/gazebo-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo.list > /dev/null
# Update and install
sudo apt update
sudo apt install gz-harmonic
Make sure the following command is available after installation:
gz sim
Assuming you work in ~/ssos_ws,
mkdir -p ~/ssos_ws/src
cd ~/ssos_ws/src
git clone -b v1 https://github.com/space-station-os/demo_thermal_control.git
cd ..
colcon build --symlink-install
If not already present:
cd ~/ssos_ws/src
git clone --recurse-submodules -b v0.8.4 https://github.com/space-station-os/space_station_os.git
cd ..
colcon build --symlink-install
This demo consists of:
- A thermal solver node that parses joints from the URDF and simulates heat conduction
- Coolant control loops (2 internal, 1 external) that remove heat when thresholds are crossed
- Sun vector and solar heat input nodes for passive solar heating
tmux new -s space_station -d "ros2 launch space_station_description display.launch.py"
tmux new -s thermal_network -d "ros2 launch thermal_control thermals.launch.py"
The following nodes simulate solar flux based on spacecraft position and orientation, and apply solar thermal input to specific panels:
tmux new -s demo1c -d "ros2 run space_station_gnc demo1c_small_incident"
tmux new -s gnc_core -d "ros2 launch space_station_gnc gnc_core.launch.py"
tmux new -s sun_nodes -d "ros2 launch thermal_control solar_absorbitivity.launch.py"
-
demo1c_small_incident
publishes spacecraft position and attitude (used for sun vector calc) -
gnc_core.launch.py
includes full dynamics and control system nodes -
solar_absorbitivity.launch.py
:- Computes solar incidence angle
- Applies solar power as heat input to thermal nodes connected to
lsa_*
andrsa_*
solar panels - Will later contribute to radiator heating logic and thermal budget in mission control
-
Thermal plugin reads joints as thermal nodes and creates a conduction network between links.
-
If the average node temperature exceeds 1300K:
- Internal coolant loops (loop A & B) absorb heat from nodes.
-
When internal loop water reaches a threshold:
- It calls the external loop to reject heat via ammonia and radiator panels.
-
Radiators are visually animated by rotating solar arrays (to be replaced with heat indicators).(NOTE FOR VISUALIZATION YOU NEED GAZEBO)
-
Sun vector and flux computation simulates solar heating based on orientation.
This simulates the full Active Thermal Control System like on the ISS, with future plans for heater activation, fault injection, and mission dashboard visualization.
- Integration with Open MCT mission control dashboard