Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/pykwalify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Validate YAML with PyKwalify

on:
push:
branches:
- master
paths:
- 'dane_symulacji_rocketpy.yaml'
- 'tools/schema.yml'
pull_request:
paths:
- 'dane_symulacji_rocketpy.yaml'
- 'tools/schema.yml'

jobs:
validate_yaml:
runs-on: ubuntu-latest

steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install pykwalify
run: pip install pykwalify

- name: Validate symulation data
run: pykwalify -d dane_symulacji_rocketpy.yaml -s tools/data_schema.yml
- name: Validate sensors config
run: pykwalify -d sensors.yaml -s tools/sensors_schema.yaml

35 changes: 35 additions & 0 deletions .github/workflows/yamllint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# .github/workflows/yamllint.yml
---
name: YAML Lint

on:
push:
branches:
- master
paths:
- '**/*.yaml'
- '**/*.yml'
pull_request:
paths:
- '**/*.yaml'
- '**/*.yml'

jobs:
lint:
name: Run yamllint
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Install yamllint
run: pip install yamllint

- name: Run yamllint
run: yamllint -c ./tools/.yamllint .
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.venv
209 changes: 208 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,208 @@
# Simulations
# Simulations

## Korzystanie z projektu

### Instalacja

1. Utwórz środowisko Pythona:
```bash
python -m venv .venv
````

2. Zainstaluj zależności:

```bash
pip install -r tools/requirements.txt
```

## 🧩 1. Plik YAML: **dane_symulacji_rocketpy.yaml**

**Zawiera: parametry fizyczne i środowiskowe rakiety**

### 🎯 Cel:

Umożliwia przeprowadzenie realistycznej symulacji lotu rakiety — zawiera wszystkie **fizyczne parametry wejściowe**. Plik ten jest bezpośrednio przetwarzany przez symulator.

> 🔧 Użytkownik: inżynier mechanik lub osoba wykonująca symulację

---

## 📈 2. Plik YAML: **Konfiguracja wyświetlania / wizualizacji**
> ⚠️ NOW NOT IMPLEMENTED

**Zawiera: informacje o tym, co chcemy zobaczyć po symulacji**

### 📌 Przykładowe dane:

* które wykresy mają być wygenerowane (ciąg vs czas, wysokość vs czas, prędkość)
* które dane mają być eksportowane do pliku CSV

### 🎯 Cel:

Steruje **wizualizacją wyników symulacji**, ale nie wpływa na sam przebieg symulacji. Umożliwia dostosowanie widoku wyników do potrzeb konkretnego testu.

> 🔧 Użytkownik: operator symulacji, osoba analizująca dane

---

## 📡 3. Plik YAML: **Konfiguracja sensorów i formatów danych awioniki**

> ⚠️ WORK IN PROGRESS

**Zawiera: ustawienia wymagane przez avionike**

### 📌 Przykładowe dane:

* jakie sensory są aktywne (np. akcelerometr, barometr, GPS)
* częstotliwość zapisu każdego sensora (np. 100 Hz, 10 Hz)
* format danych do zapisu (np. CSV)
* offsety, kalibracje

### 🎯 Cel:

Ten plik jest używany przez awionikę do poprawnego zbierania i zapisywania danych z misji. **Nie wpływa na symulację**, ale pozwala zintegrować ją z prawdziwym systemem pokładowym.

> 🔧 Użytkownik: elektronik / programista awioniki

---

## 🧠 Podsumowanie: jak to wszystko działa razem

| Plik YAML | Co zawiera? | Kto go używa? | Główne zastosowanie |
| ---------------------- | ------------------------------- | ------------------------ | ----------------------------- |
| `simulation.yaml` | Parametry rakiety i środowiska | Mechanik | Symulacja fizyczna lotu |
| `visualization.yaml` | Co i jak wyświetlić | Analityk / operator | Wizualizacja wyników |
| `avionics_config.yaml` | Ustawienia sensorów i logowania | Elektronik / programista | Zbieranie danych na pokładzie |


---

# 📘 Instrukcja formatowania plików YAML

## 📄 Co to jest YAML?

YAML to prosty format plików tekstowych używany do zapisywania danych w sposób czytelny dla człowieka i maszyny. W naszym projekcie służy np. do definiowania parametrów symulacji rakiety.

---

## ✅ Zasady formatowania YAML w naszym projekcie

Poniżej znajdują się zasady, których należy przestrzegać przy edycji lub tworzeniu plików `.yaml`:

---

### 1. **Maksymalna długość linii: 120 znaków**

* Staraj się, aby każda linia miała **maksymalnie 120 znaków**.
* Przekroczenie tego limitu nie przerwie działania, ale jest oznaczone jako **ostrzeżenie**.
* Ułatwia to czytanie plików w edytorze i przeglądarce kodu.

---

### 2. **Wcięcia: 2 spacje**

* Używaj **dokładnie 2 spacji** do wcięć (nie używaj tabulatorów).
* Przykład:

```yaml
rakieta:
masa: 25.0
silniki:
- typ: stały
- typ: ciekły
```

---

### 3. **Listy: spójne wcięcia**

* Każdy element listy (`-`) powinien być **wcięty zgodnie z poprzednimi**.
* Przykład poprawny:

```yaml
silniki:
- typ: stały
- typ: ciekły
```

---

### 4. **Brak zbędnych spacji na końcu linii**

* Nie zostawiaj **spacji na końcu linii** – powoduje to błędy lintowania.
* Twój edytor może mieć opcję automatycznego ich usuwania.

---

### 5. **Wartości logiczne: tylko `true` lub `false`**

* Do wyrażania wartości logicznych używaj **wyłącznie `true` lub `false`** (nie `yes/no`, `on/off` itd.).
* Przykład poprawny:

```yaml
symulacja:
zapis_logu: false
```

---

### 6. **Komentarze: 2 spacje po znaku `#`**

* Komentarz powinien być oddzielony **dwoma spacjami** od treści:

```yaml
masa: 25.0 # masa startowa w kilogramach
```

---

### 7. **Puste linie: maksymalnie 1 z rzędu**

* Nie używaj więcej niż **1 pustych linii pod rząd** w pliku.
* Przykład poprawny:

```yaml
rakieta:
masa: 25.0

symulacja:
czas: 10.0
```

---

### 8. **Nie powtarzaj nazw kluczy**

* Każda nazwa (klucz) może wystąpić tylko **raz w danym bloku**.
* Błąd (to nadpisuje wcześniejszą wartość!):

```yaml
rakieta:
masa: 25.0
masa: 30.0 # ❌ błąd: powtórzony klucz
```

---

## 🛠️ Narzędzia wspomagające

* Używaj edytora, który podświetla składnię YAML i automatycznie usuwa końcowe spacje (np. VS Code z rozszerzeniem **YAML**).
* Pliki są automatycznie sprawdzane przez system CI na GitHub – błędy formatowania zablokują zatwierdzenie zmian.

---

## ℹ️ Potrzebujesz pomocy?

Jeśli nie jesteś pewien, czy plik jest poprawny – zapytaj osobę techniczną z zespołu lub uruchom komendę:
```bash
yamllint -c tools/.yamllint <nazwa_pliku>.yaml
```
```bash
pykwalify -d dane_symulacji_rocketpy.yaml -s tools/data_schema.yml
```


przed 1 uruchomieniem wymagane zainstalowanie yamllint:
```
pip install yamllint
```
File renamed without changes.
236 changes: 121 additions & 115 deletions R7_Simulation_RocketPy.ipynb → archive/R7_Simulation_RocketPy.ipynb

Large diffs are not rendered by default.

94 changes: 94 additions & 0 deletions dane_symulacji_rocketpy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
Env:
latitude: 35.34723084964506 # S -> -, N -> +
longitude: -117.81006429132387 # E -> +, W -> -
elevation: 624.0
atmospheric_model: standard_atmosphere

Tank:
oxidizer_liq:
name: nitrous oxide
density: 790.0
oxidizer_gas:
name: nitrous oxide
density: 180.0
height: 0.087
width: 0.7
name: oxidizer_tank_r7
flux_time: 4.0
initial_liquid_mass: 9.87
initial_gas_mass: 0.13
liquid_mass_flow_rate_out: 2.0
position: 1.42

Motor:
thrust_source: ./in_data/SimLE_SimBa_R7_Rocket.eng
dry_mass: 12.5
dry_inertia: [1.1, 0.04, 1.1]
center_of_dry_mass_position: 0.58
burn_time: 9.0
grain_number: 1
grain_separation: 0.0
grain_outer_radius: 0.063
grain_initial_inner_radius: 0.035
grain_initial_height: 0.5
grain_density: 947.0
nozzle_radius: 0.03845
throat_radius: 0.0185
grains_center_of_mass_position: 0.5
coordinate_system_orientation: nozzle_to_combustion_chamber
tank_position: 0.0

Rocket:
radius: 0.087
mass: 50.0
inertia: [40.0, 40.0, 40.0]
power_off_drag: ./in_data/power_off_drag.csv
power_on_drag: ./in_data/power_on_drag.csv
center_of_mass_without_motor: 1.94828
coordinate_system_orientation: tail_to_nose

RailButtons:
upper_button_position: 1.91455
lower_button_position: 0.94021
angular_position: 10.0

Nose:
length: 0.75
kind: powerseries
bluffness: null
power: 0.8
position: 3.917

Tail:
top_radius: 0.087
bottom_radius: 0.072
length: 0.095
position: 0.095

Fins:
n: 4.0
root_chord: 0.204
tip_chord: 0.136
span: 0.1016
sweep_length: 0.034
cant_angle: 0.0
position: 0.353

Parachutes:
main:
cd_s: 10.706
trigger: 550
sampling_rate: 100.0
lag: 3.0
noise: [0.0, 0.0, 0.0]
drogue:
cd_s: 1.43
trigger: "apogee"
sampling_rate: 100.0
lag: 3.0
noise: [0.0, 0.0, 0.0]

Flight:
rail_length: 8.0
flight_day: "2025-05-15"
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading