Skip to content

feat(sim): add SimulationControl + VehicleSimulatorControl interfaces#161

Merged
luisheres merged 2 commits into
mainfrom
feat/simulation-control-interfaces
Jun 17, 2026
Merged

feat(sim): add SimulationControl + VehicleSimulatorControl interfaces#161
luisheres merged 2 commits into
mainfrom
feat/simulation-control-interfaces

Conversation

@freol35241

Copy link
Copy Markdown
Contributor

Real-time v1 of the simulation control surface, split by axis:

  • SimulationControl: domain-agnostic lifecycle (start/pause/stop), served per-entity on the simulated entity's own id. Per-RPC empty response messages so each command can grow return fields without a breaking type change. State machine + INVALID_STATE error contract documented inline.
  • VehicleSimulatorControl: vehicle-specific set_initial_pose(InitialPose), placing a statically-declared entity. No spawn/despawn — identity is static config so downstream connectors can bind to entity_ids up front.

Entity creation (dynamic spawn) and faster-than-real-time scenario control are deliberately out of scope; both are additive future interfaces that leave this contract unchanged.

Also fix the lone camelCase field in SimulationStatus (timestampSimulation -> simulation_timestamp; wire tag unchanged).

Namespace/collision concerns for interface wrappers tracked in #159.

Real-time v1 of the simulation control surface, split by axis:

- SimulationControl: domain-agnostic lifecycle (start/pause/stop), served
  per-entity on the simulated entity's own id. Per-RPC empty response
  messages so each command can grow return fields without a breaking type
  change. State machine + INVALID_STATE error contract documented inline.
- VehicleSimulatorControl: vehicle-specific set_initial_pose(InitialPose),
  placing a statically-declared entity. No spawn/despawn — identity is
  static config so downstream connectors can bind to entity_ids up front.

Entity creation (dynamic spawn) and faster-than-real-time scenario control
are deliberately out of scope; both are additive future interfaces that
leave this contract unchanged.

Also fix the lone camelCase field in SimulationStatus
(timestampSimulation -> simulation_timestamp; wire tag unchanged).

Namespace/collision concerns for interface wrappers tracked in #159.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@freol35241 freol35241 requested a review from luisheres June 17, 2026 10:08
Reordered SimulationState values for clarity.

@luisheres luisheres left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good now.

@luisheres luisheres merged commit e0d15de into main Jun 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants