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) |
|
||||
| `crates/ato-app/` | HTTP client + control loop |
|
||||
| `config/` | Replaceable parameters (`ato.default.json`) |
|
||||
| `spec/` | Interface examples (`interface.md`, JSON samples) |
|
||||
| | |
|
||||
|---|---|
|
||||
| **Forgejo** | https://git.italiatts.online/rwsholdem/ato |
|
||||
| **Language** | Rust |
|
||||
| **Role** | Reads train state, outputs traction/brake commands |
|
||||
|
||||
## 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
|
||||
cd /root/code-view/profiles/ato-lab
|
||||
chmod +x 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