Skip to content
Back to skills

Control Physics Traffic

ASecurity

"Use when an AlpaSim task concerns vehicle state, controller or MPC

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
devopspythongobashdebuggingapibackend

Works with

  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill control-physics-traffic --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Control Physics Traffic?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Control Physics Traffic
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-control-physics-traffic/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-control-physics-traffic)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: control-physics-traffic
description: "Use when an AlpaSim task concerns vehicle state, controller or MPC
  selection, ground-mesh physics, CATK traffic sessions, handover behavior, or
  backend/data requirements for these services."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Control, physics, and traffic

Use this sub-skill for the three simulation components that close the motion
loop:

- **Controller:** planar dynamic-bicycle vehicle state, linear/nonlinear MPC,
  trajectory tracking, and the controller gRPC session.
- **Physics:** Warp ground-mesh intersection that corrects vehicle/object poses;
  it is not a collision engine or a replacement for vehicle dynamics.
- **Traffic:** the CATK-backed traffic gRPC service, including session history,
  logged replay, handover, prediction batching, and failure statuses.

Do not use this sub-skill to compose a wizard deployment, choose a driver policy,
or edit protobufs. Route those to `simulation-wizard`, `drivers-and-plugins`, or
`grpc-and-developer-tools`, respectively. Use `runtime-services` for the
runtime's event loop and service orchestration, and `evaluation-and-logs` for
post-run logs and metrics.

## Start with a capability and backend check

1. Identify the service being changed or queried. Record the simulation time
   unit, coordinate frame, scene identifier, and whether the request is replay
   or closed-loop inference.
2. Run the bundled, read-only probe before debugging imports or optional
   backends:

   Read [backend compatibility](references/backend-compatibility.md), then run
   the bundled [backend checker](scripts/check_backend.py) before debugging
   imports or optional backends:

   ```bash
   python scripts/check_backend.py
   python scripts/check_backend.py --usdz-folder /data/scenes \
       --model-config /models/catk/config.yaml \
       --checkpoint /models/catk/latest.ckpt \
       --token-dir /models/tokens
   ```

   The second form only inspects supplied paths; it never downloads or changes
   them. Treat warnings about CUDA, PyG extensions, USDZ, or model assets as
   capability limits, not as proof of a working CATK service.
3. For a controller-only CPU smoke test, use the package's focused tests or
   instantiate `LinearMPC` with an 8-element state and a time-stamped
   `Trajectory`. For a nonlinear smoke test, ensure `do_mpc` and CasADi are
   importable before the first `compute_control` call.
4. For physics, use a small valid PLY ground mesh and positive AABB dimensions.
   `PhysicsBackend` constructs Warp mesh data and launches CUDA kernels during
   `update_pose`; a successful Python import is not a physics execution test.
5. For CATK, verify the scene directory contains `.usdz` files and that the
   model config, checkpoint, token directory, CUDA device, and matching PyG
   compiled extensions are all available. Never substitute a static traffic
   trajectory for a failed post-handover prediction.

See [backend compatibility](references/backend-compatibility.md) before
installing optional packages and [troubleshooting](references/troubleshooting.md)
when a check fails.

## Choose and use the controller

1. Represent the current vehicle state in the documented order
   `[x, y, yaw, vx_cg, vy_cg, yaw_rate, steering, accel]`. The position and yaw
   are for the rig origin in the temporary inertial frame; `vx_cg` and `vy_cg`
   are body-frame CG velocities. Do not silently treat rig-frame lateral speed
   as CG lateral speed.
2. Use **linear MPC** (`mpc_implementation: linear`) as the normal fast choice.
   It linearizes the bicycle model about the current state and solves an OSQP
   QP. Use **nonlinear MPC** for aggressive maneuvers or tight turns when the
   slower do_mpc/CasADi/IPOPT solve is acceptable. This is a modeling trade-off,
   not a claim that nonlinear is always more stable.
3. Keep `n_horizon` and `dt_mpc` consistent with the trajectory sampling. The
   defaults are 20 steps and 0.1 seconds. Tracking cost begins at
   `gains.idx_start_penalty` (default 10), while actuator regularization applies
   to command changes.
4. In a service session, call `start_session` before the first run, provide a
   non-empty planned trajectory, advance to a strictly later `future_time_us`,
   and close the session exactly once. The first run lazily constructs the
   system and creates a CSV controller log.
5. Set `coerce_dynamic_state` when current ground-truth dynamic state should
   replace the model's velocity, yaw rate, and acceleration before solving. The
   system converts rig-frame velocity to CG-frame velocity and preserves the
   integrated pose origin.

The exact dataclasses, solver bounds, frame conversion, service invariants, and
standalone server flags are in [controller API](references/controller-api.md).

## Apply ground constraints

1. Give the physics service a scene artifact glob ending in `.usdz` and select
   a scene whose ground mesh is available. The command shape is:

   ```bash
   physics_server --artifact-glob '/data/artifacts/*.usdz' \
       --host 0.0.0.0 --port 8080 --cache-size 16
   ```

   `--use-ground-mesh`, `--visualize`, and the cache size affect artifact/backend
   loading; visualization is optional and may require extra packages.
2. For every pose, physics samples the bottom of the AABB, casts ±Z rays into
   the Warp mesh, fits a plane, and applies bounded translation/rotation
   corrections. It deliberately preserves predicted X/Y after correction and
   returns a status for each pose.
3. Handle `SUCCESSFUL_UPDATE`, `INSUFFICIENT_POINTS_FITPLANE`, `HIGH_TRANSLATION`,
   and `HIGH_ROTATION` as distinct observations. Repeated high corrections are
   usually a scene, AABB, timestamp, or upstream pose problem; do not hide them
   by retrying indefinitely.

Physics does not model collisions, full vehicle dynamics, or arbitrary lateral
motion. See [physics and traffic](references/physics-and-traffic.md).

## Run a CATK traffic session

1. Start the service only after its Hydra config resolves. A documented local
   shape is:

   ```bash
   catk_trafficsim_server \
       --config-path=/path/to/config-dir \
       --config-name=server.yaml \
       server.port=6200 \
       catk.loader.usdz_folder=/data/scenes
   ```

   The model paths and timing settings belong in the resolved config. The
   wizard normally writes this config for a container deployment; do not make a
   second deployment recipe here.
2. `start_session` requires a session UUID, scene ID, at least one logged object
   trajectory including `EGO`, and a positive `handover_time_us`. The service
   builds a fixed history window (`num_history_steps`, default 16) sampled at
   `time_step` (default 0.1 s).
3. At or before handover, `simulate` resamples logged trajectories and returns
   replay. After handover, it resamples the latest history, fills the ego future
   from the request/update, runs CATK, and merges predicted agent trajectories.
   Requests are serialized per session but different sessions may reach the
   inference batcher concurrently.
4. Respect the configured `prediction_steps` (default 5). A request beyond the
   fixed prediction horizon is `INVALID_ARGUMENT`; missing usable map/model
   predictions after handover are `FAILED_PRECONDITION`. An unexpected model
   exception is `INTERNAL`. These statuses are actionable distinctions.
5. Close sessions and retry only after fixing the reported scene, trajectory,
   horizon, map, model, or backend issue. There is no valid CPU/static fallback
   for CATK's required post-handover prediction path.

Use [physics and traffic](references/physics-and-traffic.md) for the request
sequence, config fields, batching semantics, and status mapping.

## Verification and handoff

- Run parser/help checks for the bundled script and server commands without
  starting a daemon or downloading assets.
- Run controller system, linear-MPC, nonlinear-MPC, physics-utils, and traffic
  service/batching tests according to their backend markers. Keep CATK
  integration tests skipped unless CUDA, matching PyG extensions, USDZ scenes,
  and model weights are all present.
- Test the difficult cases in the review artifact: aggressive-turn controller
  selection and a CATK `FAILED_PRECONDITION` after handover. The expected answer
  must name the validation signal and must not invent a fallback.
- If a service contract or protobuf message is the issue, hand off rather than
  duplicating generic message definitions. Record unresolved backend/data gaps
  explicitly in the verification report.

Files in this skill

  • SKILL.md8.4 KB
  • references/backend-compatibility.md4.4 KB
  • references/controller-api.md6.2 KB
  • references/physics-and-traffic.md6.4 KB
  • references/troubleshooting.md6.2 KB
  • scripts/check_backend.py2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.