Files
jsbsim-service/service/README.md
2026-04-28 17:53:29 +08:00

99 lines
3.0 KiB
Markdown

# Local Flight Simulation Service
Offline mock service for the first milestone.
## Run
```powershell
npm run service
```
The default URL is:
```text
http://127.0.0.1:4317
```
## Endpoints
- `GET /health`
- `GET /aircraft`
- `POST /trim`
- `POST /simulate`
- `POST /cancel`
## Coordinate and Heading Conventions
- Local position is `[east, up, north]` in meters.
- True heading `0 deg` points north.
- Clockwise heading is positive.
- Counter-clockwise heading is negative.
## Rates
- `sampleRateHz` controls the output sample frequency returned to the web client.
- `integrationRateHz` controls the internal JSBSim integration frequency and defaults to `120`.
- The web client currently requests `sampleRateHz: 30` and `integrationRateHz: 120`.
- `trim: false` skips pre-simulation trim. This is useful for F-22 maneuver research because the bundled F-22 model can run from initial conditions even when longitudinal trim fails.
The mock service currently supports:
- `straight`
- `climb`
- `descent`
- `level-turn`
- `control-script`
- `cobra`
## Maneuver Research Path
This project treats special maneuvers as reusable control-input studies:
1. Use `control-script` for raw elevator/aileron/rudder/throttle timelines.
2. Build named maneuver templates, such as `cobra`, on top of those timelines.
3. Compare mock output against the JSBSim backend.
4. Improve or replace aircraft XML models when high-alpha/post-stall data is not credible.
`control-script` parameters:
```json
{
"timeline": [
{ "t": 0.0, "elevator": 0, "aileron": 0, "rudder": 0, "throttle": 0.85 },
{ "t": 0.5, "elevator": 0.8, "aileron": 0, "rudder": 0, "throttle": 1.0 },
{ "t": 1.6, "elevator": 0, "aileron": 0, "rudder": 0, "throttle": 1.0 }
]
}
```
`cobra` is currently an experimental template. It is useful for plumbing and visualization, but physical credibility depends on the selected JSBSim aircraft model having high-alpha and post-stall aerodynamic tables.
The default F-22 research path uses `f22cobra-jsbsim`, a project-local copy of the bundled F-22 model with manual TVC command support. The current stable near-cobra baseline uses the closed-loop Cobra controller:
```json
{
"aircraftId": "f22cobra-jsbsim",
"durationSec": 5,
"initialState": { "position": [0, 3000, 0], "velocityMps": 120, "headingDeg": 0 },
"trim": false,
"maneuver": {
"type": "cobra",
"parameters": {
"controlMode": "closed-loop",
"pullDurationSec": 0.7,
"recoveryDurationSec": 2.0,
"targetAlphaDeg": 80,
"pitchRateLimitDegS": 80,
"maxElevatorCmd": -0.45,
"recoveryElevatorCmd": 0.65,
"pullTvcCmd": -0.05,
"recoveryTvcCmd": 0.85,
"throttleCmd": 1,
"speedbrakeCmd": 0
}
}
}
```
This baseline reaches roughly 70-72 degrees alpha in the current model, keeps peak pitch rate around 120-125 deg/s, and recovers to low alpha by the end of the run. Higher-alpha open-loop settings can still be tested with `"controlMode": "open-loop"`, but they tend to deep-stall or over-rotate with the current F-22 aerodynamic tables.