技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
control-physics-traffic【数据与研究】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.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this sub-skill for the three simulation components that close the motion loop:
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.
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.
Run the bundled, read-only probe before debugging imports or optional backends:
Read backend compatibility, then run the bundled backend checker before debugging imports or optional backends:
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.
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.
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.
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 before installing optional packages and troubleshooting when a check fails.
[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.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.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.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.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.
Give the physics service a scene artifact glob ending in .usdz and select
a scene whose ground mesh is available. The command shape is:
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.
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.
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.
Start the service only after its Hydra config resolves. A documented local shape is:
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.
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).
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.
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.
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 for the request sequence, config fields, batching semantics, and status mapping.
FAILED_PRECONDITION after handover. The expected answer
must name the validation signal and must not invent a fallback.