尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Rjtdeo/warp-av
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Warp AV — Autonomous Vehicle Software Platform
Autonomous cargo vehicle software stack running in CARLA simulation.
The stack is plain Python: one process holding a ~10 Hz autonomy loop and a Flask + SocketIO
API that also serves the operator console. There is no ROS 2 in this repository — no
rclpy, no launch files, no message definitions, no colcon workspace. The boundary a future
vehicle sits behind is src/warp_av/vehicle_interface.py, not a ROS topic. (Earlier versions
of this file described a ROS 2 setup that was never built; corrected 2026-09-15.)查看完整 README ↗Autonomous cargo vehicle software stack running in CARLA simulation.
The stack is plain Python: one process holding a ~10 Hz autonomy loop and a Flask + SocketIO
API that also serves the operator console. There is no ROS 2 in this repository — no
rclpy, no launch files, no message definitions, no colcon workspace. The boundary a future
vehicle sits behind is src/warp_av/vehicle_interface.py, not a ROS topic. (Earlier versions
of this file described a ROS 2 setup that was never built; corrected 2026-09-15.)
# Download CARLA
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1527DE64CB8D9
sudo add-apt-repository "deb [arch=amd64] http://dist.carla.org/carla focal main"
sudo apt update
sudo apt install -y carla-simulator
# Or download tar.gz from https://github.com/carla-simulator/carla/releases/tag/0.9.15
# Extract to ~/carla
cd warp-av
pip install -r requirements.txt
(requirements-working.txt is a frozen pip freeze from an older machine that happened to
have ROS 2 installed. Nothing in this repository reads it and nothing here imports those
packages — install requirements.txt.)
# Terminal 1: start CARLA
cd ~/carla && ./CarlaUE4.sh
# Terminal 2: start the autonomy stack
cd warp-av && python3 run.py
run.py puts src/ and CARLA's PythonAPI/carla on the path — set CARLA_PYTHONAPI if
CARLA lives somewhere unusual — then runs the autonomy loop at 10 Hz and serves the API and
the operator console together on port 5000. There is no separate console server to start.
Open the operator console at http://localhost:5000 and click START MISSION, or call the API directly:
# pick a destination from the town's spawn points
curl -s http://localhost:5000/api/spawn_points | python3 -m json.tool | head
# then drive to it (x and y are CARLA world coordinates)
curl -X POST http://localhost:5000/api/mission/start \
-H 'Content-Type: application/json' \
-d '{"x": <X>, "y": <Y>}'
GET /api/state reports what the van is doing at any moment — pose, behaviour and why,
the planner's verdict, perception, and sensor health.
PYTHONPATH=src python3 -m pytest -q tests
A stub carla module is injected by tests/conftest.py, so the whole suite runs on a laptop
with no simulator.
A classical multi-sensor perception stack, CARLA-validated, designed so each stage can be
replaced independently when real hardware arrives. camera_lidar is the boot default;
ground_truth remains an automatic fallback so the stack starts without a model file.
Sensors
| Front camera | 800×600, 90° FOV, 10 Hz, at (2.0, 0, 1.8) m, pitched 10° down |
| Left / right cameras | 480×360, 100° FOV, ~7 Hz, at (0, ∓1.1, 1.7) m, yawed ∓90°, pitched 15° down |
| Rear camera | 480×360, 90° FOV, ~7 Hz, at (−2.6, 0, 1.8) m, yawed 180° |
| Top-down camera | 420×420 at 22 m — operator dashboard only, never used for perception |
| Roof LiDAR | 32 channels, 150k points/s, 50 m range, 10 Hz, at (0, 0, 2.5) m |
| GNSS, IMU | attached and published, not fused — see KNOWN_ISSUES.md |
Processing
(road_id, lane_id) and by actually reaching the stop line, with the colour
queried at 4 Hz beyond 25 m and 10 Hz within it.unknown, which means stop.World model (world_model.py) — tracked objects with position, world velocity, size,
heading, confidence and clearance radius; free / occupied / unknown space; kerb geometry;
traffic-control state; and sensor health.
Note that occupancy and free space validate and slow the van; they do not generate trajectories. Planning still works from the route polyline and a corridor test.
python3 scenarios/generate_catalog.py # regenerate catalog (deterministic)
python3 scenarios/run_scenario.py --status implemented # run what should pass today (needs CARLA + stack running)
python3 scenarios/run_scenario.py WAV-0200 --dry-run # print a plan without CARLA
python3 scenarios/report.py # aggregate -> scenarios/results/REPORT.md
See scenarios/README.md and docs/SCENARIO_STRATEGY.md.
Catalog browser (static, deployed on Vercel from web/public/): see web/README.md.
pip install pytest
python3 -m pytest tests/ -q # 700+ offline tests, no CARLA needed
python3 tools/full_check.py # 28 live checks: needs a running CARLA + stack
Offline tests cover perception maths, ground filtering, clustering, tracking, occupancy,
prediction, planner geometry, behaviour priority, safety and the traffic-light lookahead.
tools/full_check.py places real objects in CARLA and reads the answer back through the
van's own interfaces — nothing is mocked. Scenario execution
(scenarios/run_scenario.py) also needs a live CARLA + stack and is not in CI.
| Endpoint | Purpose |
|---|---|
GET /api/route | planned route waypoints (used by the scenario runner to place actors along the real route) |
POST /api/config/speed_limit {cruise_speed_mps} | live speed-limit change |
POST /api/test/inject {component, action, ...} | fault injection: perception/localization/camera/lidar/gnss/imu/controller/planner/vehicle_connection/tick_latency × disable/enable/freeze/stale/latency/low_confidence/noise/crash/nan_command/drop |
GET /api/state | now also carries timestamp, tick, autonomy_state, active_faults, last_tick_error, cruise_speed_mps, localization.confidence, destination |
Warp AV includes a Camera + LiDAR perception mode for more realistic autonomous driving and validation in CARLA.
CARLA Environment
↓
Front RGB Camera + LiDAR
↓
YOLOX Object Detection
↓
Camera + LiDAR Perception
↓
Behavior Planning
↓
Safety Supervisor
↓
Vehicle Controller
↓
CARLA Cargo Van
The goal is to keep sensing, perception, behavior, safety, control, and vehicle communication separated so each part can be tested and replaced independently.
A simulated front-facing RGB camera is attached to the CARLA cargo van. It is the sharpest and fastest of the four perception cameras and is given first say when naming an object; the left, right and rear views speak for what it cannot see. See Perception Stack for the full sensor layout.
The camera provides real image frames from the simulated environment.
The image is passed to:
RGB Camera
↓
YOLOX-S
↓
OpenCV DNN
↓
Object Classification
The current perception system focuses on important road users such as:
The YOLOX model runs through OpenCV DNN using an ONNX model.
The vehicle also uses a simulated 32-channel LiDAR.
LiDAR produces 3D point-cloud measurements around the vehicle.
Per-frame wedges are accumulated into a full 360° sweep, ground points are removed with a local per-tile height estimate, and what remains is clustered into objects with a measured footprint, height and heading.
LiDAR provides object geometry and position; the camera provides the class.
The simulated LiDAR has approximately a 50-meter sensing range, although the perception logic intentionally filters the data to focus on useful driving hazards.
The camera and LiDAR provide different information.
The camera helps answer:
What is the object?
For example:
PERSON
VEHICLE
LiDAR helps answer:
How far away is the object?
For example:
12 meters
The current perception system combines this information using a lightweight forward association.
Example:
Camera → PERSON
\
→ PEDESTRIAN approximately 12 m ahead
/
LiDAR → 12 m
For a vehicle:
Camera → VEHICLE
\
→ VEHICLE approximately 18 m ahead
/
LiDAR → 18 m
If LiDAR detects a relevant physical obstacle but the camera does not confidently classify it, the system can still report:
OBSTACLE
This provides a safety fallback instead of completely ignoring an unknown object.
Perception output is passed to the behavior layer.
The behavior system decides whether the vehicle should:
CONTINUE
SLOW DOWN
STOP
based on information such as:
Example:
Camera + LiDAR
↓
Vehicle detected ahead
↓
Distance decreases
↓
Behavior slows vehicle
↓
Hazard becomes too close
↓
Vehicle stops
Warp AV includes a dedicated Safety Supervisor separate from normal behavior planning.
The Safety Supervisor monitors conditions such as:
If an unsafe condition occurs, the Safety Supervisor can prevent normal driving commands and command the vehicle to stop.
This provides a separate safety layer instead of relying only on the behavior planner.
Camera and LiDAR data are timestamped.
The system checks whether sensor information has become stale.
Examples include:
CAMERA_STALE
LIDAR_STALE
This prevents the autonomy system from blindly trusting old sensor information if a sensor stops updating.
During development, LiDAR initially detected parts of the cargo van itself as very close obstacles.
The perception pipeline includes filtering to remove these near-field vehicle-body returns so they are not treated as external hazards.
Pedestrians and other narrow objects may produce inconsistent LiDAR returns between consecutive scans.
The perception system therefore keeps a recently confirmed hazard for a short period instead of immediately deleting it after a single missed scan.
This helps reduce unstable:
DETECTED
NOT DETECTED
DETECTED
NOT DETECTED
behavior.
Warp AV supports two perception modes:
ground_truth
camera_lidar
ground_truth
uses CARLA actor information directly.
This provides a stable simulation fallback and is useful for validating the rest of the autonomy stack independently of computer vision.
camera_lidar
uses:
CARLA RGB Camera
+
CARLA LiDAR
↓
YOLOX + LiDAR Processing
↓
Perception Output
This mode provides a more realistic sensor-based perception path.
With Warp AV running:
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"mode":"camera_lidar"}' \
http://localhost:5000/api/perception/mode | python3 -m json.tool
The same RGB camera used by the perception system can also be viewed live in the browser.
Open:
http://localhost:5000/camera
This allows the operator to compare:
What the camera sees
↓
What YOLOX detects
↓
What Camera + LiDAR perception reports
↓
How the vehicle responds
The camera viewer uses lightweight JPEG frame requests so it can run alongside Mission Control and the autonomy stack without creating a second CARLA camera sensor.
The operator dashboard is available at:
http://localhost:5000
Mission Control provides information about the autonomous system including:
A CARLA traffic validation tool is included for testing the perception system with moving vehicles and pedestrians.
Start the autonomous mission first.
Then run:
python3 tools/dense_validation_traffic.py
The validation script creates controlled traffic around the Warp vehicle, including:
This allows the Camera + LiDAR perception pipeline to be observed under more realistic dynamic conditions.
The traffic terminal also reports distances and vehicle speeds to help compare the simulation state with the perception system.
Press:
Ctrl+C
in the traffic terminal to remove the validation actors created by the script.
The current Warp AV software flow is:
CARLA
│
┌───────────┴───────────┐
│ │
RGB Camera LiDAR
│ │
YOLOX 3D Points
│ │
└───────────┬───────────┘
│
Camera + LiDAR
Perception
│
▼
Behavior
│
▼
Safety Supervisor
│
▼
Controller
│
▼
Vehicle Interface
│
▼
CARLA Cargo Van
│
▼
Mission Telemetry
│
▼
Mission Control
Warp AV is a CARLA research prototype. It has never driven a real vehicle, and it is not a production autonomous-driving system.
The architecture is deliberately modular so each stage can be replaced when hardware arrives. What follows is what the code actually does and does not do today — the full list lives in KNOWN_ISSUES.md.
These are the paths that will not transfer, and what replaces each on a real van:
| Depends on CARLA today | Replaced on the real van by |
|---|---|
Ego pose from vehicle.get_transform() | RTK GNSS + IMU + wheel-odometry fusion |
| Sensor pose used for LiDAR sweep de-skew | the same on-board localization estimate |
| Map topology for route planning | HD map or an on-board map service |
| Traffic-light stop lines and lane association | HD map signal layer |
| Exact lamp-housing geometry for the camera ROI | HD-map lamp prior, or an image-space signal-head detector |
Traffic-light colour (ground_truth mode and WARP_CAMERA_LIGHTS=0 only) | the camera classifier, which is already the default in camera_lidar mode |
| Per-sensor arrival timestamps | hardware-triggered / PTP-synchronized clocks |
| Collision sensor | test instrumentation only — no on-vehicle equivalent |
| Scenario ground-truth labels | offline annotation for scoring only |