一种环扇极坐标网格,在 10 米范围内使用 5 厘米单元,在 100 米范围内使用 50 厘米单元——共 705,771 个单元,而相同覆盖面积的均匀网格需 16,000,000 个单元——保留路缘、坑洞和悬挑,二维占用网格会将其破坏。
AI 翻译
A ring-sector polar grid running 5 cm cells inside 10 m and 50 cm at 100 m — 705,771 cells against 16,000,000 for a uniform grid over the same footprint — preserving the curbs, potholes and overhangs
其他Python · TypeScriptGitHub @sam-eer12在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A ring-sector polar grid running 5 cm cells inside 10 m and 50 cm at 100 m — 705,771 cells against 16,000,000 for a uniform grid over the same footprint — preserving the curbs, potholes and overhangs a 2D occupancy grid destroys.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
NEXA — Adaptive Variable-Resolution 2.5D LiDAR Mapping
A 64-beam LiDAR produces ~120,000 points per revolution at 10 Hz — about 1.2 million
points per second. The two standard ways of consuming that stream both fail on vehicle
compute:
• Keeping the full 3D point cloud or voxel grid is rich but does not close the loop
in real time on embedded hardware.
• Flattening to a 2D occupancy grid is cheap but discards height. A curb, a pothole
and a low gantry all collapse into the same "occupied" bit, so the map cannot tell a
vehicle that the ground is drivable but the bridge above it is 3.1 m.查看完整 README ↗Live demo: https://nexa-drdo.duckdns.org
| Field | Value |
|---|---|
| Project Title | NEXA — Adaptive Variable-Resolution 2.5D LiDAR Mapping for Dynamic Environment Perception |
| PS ID | 26053 |
| PS Title | Adaptive Variable Resolution 2.5D Lidar Mapping for Dynamic Environment Perception |
| Category | Software |
| Theme | Smart Vehicles |
| Organisation | DRDO — Department of Defence Production / iDEX |
| Team Name | KANVSS |
A 64-beam LiDAR produces ~120,000 points per revolution at 10 Hz — about 1.2 million points per second. The two standard ways of consuming that stream both fail on vehicle compute:
A uniform high-resolution grid also over-samples the far field, where LiDAR beam divergence means the detail was never measured in the first place.
NEXA allocates spatial resolution the way the human eye does — finely where a braking decision is made, coarsening with range to the point where the sensor's own angular sampling runs out.
Raw scans become a semantic 2.5D map (elevation and class per cell) over a ring-sector polar grid running 5 cm cells inside 10 m and 50 cm cells at 100 m. Because each cell keeps ground height and obstacle height separately, the map represents the three hazards a 2D grid destroys: curbs, potholes and overhanging structures. A deterministic decision layer turns the map into a route, a risk level, an ETA and a stated reason.
offset[k] + j, no search, no hashing; 100.000% point
conservation asserted every framespconv, no compiled extensionInstancedMesh canvas, with
per-frame data never entering React statemake bench into
results.json and docs/RESULTS.md| Layer | Technology |
|---|---|
| Perception | Python, NumPy, SciPy, ONNX Runtime (CPU) |
| Mapping / Decision | Python, NumPy (vectorised, pre-allocated) |
| Backend | FastAPI, Uvicorn, binary WebSocket |
| Frontend | Next.js 16 (App Router), React 19, TypeScript, Three.js, Tailwind |
| Auth | Firebase Authentication |
| Database | MongoDB Atlas |
| Deployment | Docker, Docker Compose, Caddy (auto-TLS), AWS EC2 (Graviton ARM64) |
| Companion hardware | Scilab — drone LiDAR payload modelling |
See docs/IMPLEMENTATION_PLAN.md and
docs/DEPLOYMENT.md.
LiDAR scan (~120k points)
|
v
1. PERCEPTION range-image CNN (ONNX, CPU) + geometric fallback
| 19 SemanticKITTI classes -> 5 PS classes
v
2. RING-SECTOR (x,y) -> (r,theta) -> (ring k, bin j) -> flat id
PROJECTION 5 cm @ <=10 m -> 50 cm @ 100 m, closed-form O(1)
|
v
3. CELL ANALYSIS z_ground / z_obstacle / slope / roughness / clearance
+ HAZARD FLAGS OVERHANG - NEGATIVE_OBSTACLE - STEP
|
v
4. DECISION LAYER traversability -> Kalman tracker -> costmap -> A*
(deterministic) -> route, risk, ETA, reason string
|
| FrameMessage (binary WebSocket)
v
5. WEB APP Firebase auth gate - Three.js viewer - live HUD
|
v
6. MongoDB Atlas run history - decision audit log - scene ground truth
Deployed architecture
Internet -> Caddy :443 (TLS)
|-- / -> Next.js :3000
|-- /health -> FastAPI :8000
+-- /stream -> FastAPI :8000 (WebSocket, direct)
The browser reaches the WebSocket without a Next.js hop, so frame data is never proxied, buffered or re-serialised.
sih2026/
├── README.md
├── Makefile # make test | bench | scenes | finetune
├── model/ # the engine
│ ├── avr25d/
│ │ ├── core/ # grid.py, cell.py, refine.py
│ │ ├── perception/ # range_proj, onnx_infer, geometric_seg, cache
│ │ ├── decision/ # traversability, tracker, costmap, planner, explain
│ │ ├── bench/ # memory, latency, distance_bins, hazard, report
│ │ ├── synth/ # ray-cast scenes with exact ground truth
│ │ └── server/ # FastAPI app, wire protocol, fixtures
│ └── tests/ # 382 tests
├── frontend/ # Next.js app
│ ├── app/ # routes: /, /login, /dashboard, /runs, /api/*
│ ├── components/ # viewer (Three.js), hud, decision
│ └── lib/ # protocol, ws, firebase, mongo
├── backend/requirements.txt # pinned Python dependencies
├── deploy/ # Dockerfiles, compose, Caddyfile, push.sh
├── docs/ # PRD, implementation plan, RESULTS.md, DEPLOYMENT.md
├── hardware/ # companion drone LiDAR payload (Scilab)
├── tools/ # dataset fetch, ONNX export, cache build, finetune
├── submission/ # presentation + demo links
└── assets/screenshots/ # dashboard and prototype images
| Item | Location |
|---|---|
| Source code | model/, frontend/, backend/ |
| Architecture / technical documentation | docs/ |
| Screenshots / hardware figures | assets/screenshots/, hardware/figures/ |
| Final PPT | submission/PRESENTATION.md |
| Demo video link | submission/DEMO.md |
| Project overview | README.md |
See submission/PRESENTATION.md.
See submission/DEMO.md.
See assets/screenshots/. Payload figures generated by the Scilab
scripts are in hardware/figures/.
Requires Python 3.13+ and Node 22+. CPU only — no GPU, no CUDA.
git clone https://github.com/sam-eer12/sih2026.git
cd sih2026
# backend
python3 -m venv backend/.venv
backend/.venv/bin/pip install -r backend/requirements.txt
backend/.venv/bin/pip install -e model/
# frontend
cd frontend && npm install && cd ..
The frontend needs a frontend/.env.local; copy frontend/.env.local.example and fill it
in. The app runs without it — authentication and persistence simply stay switched off.
# Terminal 1 — pipeline server (no dataset needed)
cd model && ../backend/.venv/bin/python -m avr25d.server.app --fixtures
# Terminal 2 — web app
cd frontend && npm run dev
Open http://localhost:3000. Other modes:
# real scans, geometric segmenter
cd model && ../backend/.venv/bin/python -m avr25d.server.app \
--infer geometric --seq 04 --data data/kitti
# replay a recorded log — deterministic, no dataset required
cd model && ../backend/.venv/bin/python -m avr25d.server.app \
--replay data/logs/demo.log
Tests and benchmarks
make test # 382 tests
make bench # regenerates results.json and docs/RESULTS.md
make scenes # regenerates the synthetic hazard scenes
Deploy (see docs/DEPLOYMENT.md)
./deploy/push.sh all
Measured numbers live in docs/RESULTS.md, regenerated by make bench.
Structural properties, verified by the test suite:
| Property | Value |
|---|---|
| Rings to 100 m | 662 |
| Total cells, 360° × 100 m | 705,771 |
| Uniform 5 cm equivalent | 16,000,000 |
| Cell reduction | 22.67× |
| Point conservation | 100.000% |
| Pothole depth error (S2, true 0.22 m) | 0.0108 m |
| Gantry clearance error (S3, true 3.10 m) | 0.0024 m |
| Curb height error (S4, true 0.15 m) | 0.0026 m |
| False positives on flat control scene | 0 |
Latency and mIoU depend on the perception mode and the sequences evaluated; both are
stated with their configuration in docs/RESULTS.md rather than quoted bare.
z_ground
in sparse far-field cells and stabilising tracksR = f(distance, complexity, semantics, uncertainty) claimNo passwords, API keys, access tokens or .env files containing secrets are committed to
this repository. deploy/.env and frontend/.env.local are gitignored; the tracked
*.example files carry empty placeholders only.