|
Download README.md from gianexe/leo-collision-avoidance-mappo: direct link, hf CLI and curl.
- Browser
- Download file 4.01 kB
-
https://huggingface.co/gianexe/leo-collision-avoidance-mappo/resolve/main/README.md
- Command line
-
hf download hf://gianexe/leo-collision-avoidance-mappo/README.md
-
curl -L -o README.md https://huggingface.co/gianexe/leo-collision-avoidance-mappo/resolve/main/README.md
4.01 kB
| library_name: pytorch | |
| tags: | |
| - reinforcement-learning | |
| - multi-agent-reinforcement-learning | |
| - mappo | |
| - collision-avoidance | |
| - orbital-mechanics | |
| - low-earth-orbit | |
| - orbitzoo | |
| # LEO collision avoidance with MAPPO | |
| One shared actor, trained with MAPPO, that decides when and how a satellite in low Earth orbit should maneuver to avoid a close approach. Each satellite sees only its single most threatening neighbour. There is no communication and no priority rule between satellites. | |
| Built on [OrbitZoo](https://arxiv.org/abs/2504.04160) (PettingZoo API with an Orekit propagation backend) as part of a thesis. | |
| Code: https://github.com/gian-gg/marl-mappo-leo-collision-avoidance | |
| ## Files | |
| | File | What it is | | |
| | --- | --- | | |
| | `v4_stage3_seed42.pt` | Final checkpoint (SHA-256 `98bba412582ba669…`, training seed 42) | | |
| | `eval_stage3.json` | Frozen evaluation and training configuration at 150 agents | | |
| ## Model | |
| - Algorithm: MAPPO, shared actor (parameter sharing), centralized critic used in training only. | |
| - Actor: 22 inputs, hidden layers 128 and 64, 7 discrete actions (no burn, prograde, retrograde, radial out, radial in, cross-track either way), about 11,700 weights. | |
| - Perception: `k = 1`, the single most threatening neighbour. | |
| - Maneuver: 0.5 m/s per action at up to 7 N (Isp 300 s, burn up to 60 s). | |
| - Decision interval 120 s, 25 decisions per episode. | |
| - Training: curriculum of 16, then 64, then 150 agents, each stage starting from the previous actor. About 4 h on an Apple M1 MacBook Air (8 GB). No collisions in training. | |
| Station-keeping is out of scope: the policy only learns to avoid. Drift and the return delta-v are measured, not flown. | |
| ## Results | |
| Evaluated on a frozen benchmark of 20 held-out episodes per size. All policies play the same episodes and the actor runs deterministically. A close approach is a pass inside 1 km. | |
| Close approaches per episode (share resolved relative to coasting): | |
| | Agents | No-op | Rule | This model | | |
| | ---: | ---: | ---: | ---: | | |
| | 16 | 8.55 | 0.45 (94.7%) | 0.40 (95.3%) | | |
| | 64 | 43.60 | 4.30 (90.1%) | 3.00 (93.1%) | | |
| | 150 | 101.20 | 10.40 (89.7%) | 7.45 (92.6%) | | |
| - At 64 and 150 agents the improvement over the physics-based rule is significant (paired Wilcoxon p = 0.0021 and 0.0003). At 16 it is not. | |
| - No policy caused a collision at any size. | |
| - Cost: the model spends about 26% more total delta-v than the rule (1.76 against 1.40 m/s at 150 agents, including the calculated return to the slot). | |
| - A second training seed (7) resolves 93.0%. The spread between seeds is about 0.4 close approaches per episode, so smaller differences are not separable from training noise. | |
| - Remaining weakness: of 142 conjunctions at 150 agents where neither satellite maneuvered, 15 were not resolved. | |
| ## Usage | |
| The checkpoint loads through the thesis code, not a standalone library: | |
| ```sh | |
| git clone https://github.com/gian-gg/marl-mappo-leo-collision-avoidance | |
| # download v4_stage3_seed42.pt and eval_stage3.json from this repo, then: | |
| oz evaluate --config configs/eval_stage3.json \ | |
| --policy noop --policy rule --policy v4=v4_stage3_seed42.pt --episodes 20 | |
| ``` | |
| Python 3.10 or 3.11 is required (Python 3.11 recommended); no GPU is needed. The scenario data (`data/full/`, TLE catalog) is not included here and must be provided as described in the repository. | |
| The `.pt` file is a PyTorch checkpoint and loading it unpickles data. Only load it with the code above and from this repository. | |
| ## Limitations | |
| - Trained and evaluated on generated conjunction scenarios built from TLE catalog data, not on real operational events. | |
| - Assumes short-notice-capable propulsion (7 N class, 0.5 m/s per action). | |
| - Discrete maneuver primitives (0.5 m/s, burns of up to 60 s) with a fixed decision interval of 120 s. | |
| - Variation reported is between episodes and across two training seeds only. | |
| ## Citation | |
| OrbitZoo: Oliveira, Dyreby, Caldas and Soares, "OrbitZoo: Real Orbital Systems Challenges for Reinforcement Learning", arXiv:2504.04160. | |