docs: expand README for Forgejo visibility and cross-links
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
a8d40b466b
commit
bb89490f5e
1 changed files with 47 additions and 12 deletions
59
README.md
59
README.md
|
|
@ -1,22 +1,57 @@
|
||||||
# ato
|
# ATO — Automatic Train Operation
|
||||||
|
|
||||||
Standalone **Automatic Train Operation** (no ETCS, no ATP). Lean Rust controller talking to [TrainSim](../trainsim).
|
Standalone **Automatic Train Operation** for railway-style speed control.
|
||||||
|
**No ETCS. No ATP.** Lean Rust, safety-oriented style.
|
||||||
|
|
||||||
## Layout
|
Companion simulation: **[TrainSim](https://git.italiatts.online/rwsholdem/trainsim)**
|
||||||
|
|
||||||
| Path | Role |
|
| | |
|
||||||
|------|------|
|
|---|---|
|
||||||
| `crates/ato-core/` | Pure control logic (zero deps, no I/O) |
|
| **Forgejo** | https://git.italiatts.online/rwsholdem/ato |
|
||||||
| `crates/ato-app/` | HTTP client + control loop |
|
| **Language** | Rust |
|
||||||
| `config/` | Replaceable parameters (`ato.default.json`) |
|
| **Role** | Reads train state, outputs traction/brake commands |
|
||||||
| `spec/` | Interface examples (`interface.md`, JSON samples) |
|
|
||||||
|
|
||||||
## Run (via CodeView ato-lab DinD)
|
## What it does
|
||||||
|
|
||||||
|
1. Load parameters from `config/ato.default.json` (replaceable file, no rebuild needed for tuning).
|
||||||
|
2. Connect to TrainSim over HTTP (`spec/interface.md`).
|
||||||
|
3. **Cruise mode:** from standstill → hold target speed on a loop track.
|
||||||
|
4. Core also supports stop-at-position / brake-curve helpers (`ato-core`).
|
||||||
|
|
||||||
|
## Repository layout
|
||||||
|
|
||||||
|
| Path | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `crates/ato-core/` | Pure control logic — **zero dependencies**, no I/O, `#![forbid(unsafe_code)]` |
|
||||||
|
| `crates/ato-app/` | Control loop + minimal HTTP client (`http.rs`, std only) |
|
||||||
|
| `config/` | Runtime parameters (`ato.default.json`) |
|
||||||
|
| `spec/` | Shared interface contract + JSON message examples |
|
||||||
|
| `Dockerfile` | Multi-stage build, runs tests during image build |
|
||||||
|
|
||||||
|
## Interface (summary)
|
||||||
|
|
||||||
|
See [`spec/interface.md`](spec/interface.md). TrainSim implements the server; ATO is the client.
|
||||||
|
|
||||||
|
- `GET /train/state` — speed, position, track length
|
||||||
|
- `POST /train/actuate` — `{ "traction_pct": 0–100, "brake_pct": 0–100 }`
|
||||||
|
- `POST /sim/start` · `POST /sim/stop`
|
||||||
|
|
||||||
|
## Build & test
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo test --workspace
|
||||||
|
docker build -t ato .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run with TrainSim (CodeView lab, nested Docker)
|
||||||
|
|
||||||
|
On the CodeView VPS, integration runs **inside DinD** (not on the host):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /root/code-view/profiles/ato-lab
|
cd /root/code-view/profiles/ato-lab
|
||||||
chmod +x run-e2e.sh
|
|
||||||
./run-e2e.sh
|
./run-e2e.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Detailed ATO design notes — *TODO*.
|
---
|
||||||
|
|
||||||
|
*Detailed ATO design and SIL notes — to be expanded in a later README revision.*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue