Fratres-X-AI/JamBoy

GitHub: Fratres-X-AI/JamBoy

JamBoy 是一个无人机 GPS 拒止环境下的视觉导航层,通过光流、离线地图地理配准与 EKF 融合实现无 GPS 定位。

Stars: 40 | Forks: 12

# JamBoy [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Fratres-X-AI/JamBoy/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 适用于消耗型无人机的**抗干扰无 GPS 导航**:光流 + 离线地图地理配准 + EKF 融合 + 气压高度。 JamBoy 是一个**导航层**,而不是瞄准或武器系统。它已通过合成数据在仿真中得到验证;它**尚未通过飞行认证**。 ## 功能 在提供向下摄像头、预加载的 GeoTIFF 地图、IMU 角速率和气压计高度的情况下,JamBoy 可以在没有 GPS 的条件下估算本地位置和速度: 1. 带有陀螺仪去旋转的 Lucas–Kanade 光流 → 地面速度 2. ORB(可选 SIFT)+ RANSAC 单应性矩阵与分块地图匹配 → 绝对地理定位 3. 带有气压高度的状态数为 6 的 EKF 融合 4. 状态机:巡航 (Cruise) → 航位推算 (DeadReckon) → 终端 (Terminal) (存根) → 终止 (Abort) 5. MAVLink 输出:`VISION_POSITION_ESTIMATE`(首选)或位置重置降级方案 强烈推荐使用全局快门;卷帘快门在降级模式下也受支持。 ## 安装(本地 / CI) 要求 Python 3.10+。 ``` python -m venv .venv # Windows: .venv\Scripts\activate # Linux/macOS: source .venv/bin/activate pip install -e ".[dev]" ``` 仅 CPU 运行环境(无 CUDA wheels): ``` pip install -r requirements.txt pip install -e ".[dev]" ``` 可选 GPU 加速(CuPy / PyTorch): ``` pip install -r requirements-gpu.txt # 或者:pip install -e ".[gpu,dev]" ``` ## 快速仿真门控 ``` export PYTHONPATH=src # Windows: $env:PYTHONPATH = "src" python scripts/generate_dummy_data.py pytest -q python scripts/run_simulation.py --cpu --profile python scripts/validate_sim.py ``` 一次性辅助脚本(如果可用则使用 CUDA,否则使用 CPU): ``` bash scripts/run_sim_confident.sh ``` 真实感 / 振动数据: ``` python scripts/generate_dummy_data.py --realism python scripts/run_simulation.py --cpu --profile --realism ``` 通过标准和指标:[`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md)、[`docs/SIM_TEST_GUIDE.md`](docs/SIM_TEST_GUIDE.md)。 ## 硬件 | 方案 | 文档 | |------|-----| | 直接接入清单(任意 FC + 摄像头) | [`docs/HARDWARE_DEPLOY.md`](docs/HARDWARE_DEPLOY.md) | | 约 250 美元的 COTS BOM(Pi 5 + IMX296 + Pixhawk) | [`docs/COTS_PROTOTYPE.md`](docs/COTS_PROTOTYPE.md) | | 硬件权衡研究 | [`docs/HARDWARE_TRADE_STUDY.md`](docs/HARDWARE_TRADE_STUDY.md) | ``` python scripts/calibrate_camera_imu.py --camera 0 # 对于真实的 FC,设置 mavlink.sim_mode: false python scripts/main_navigator.py --config config/pi5_pixhawk.yaml ``` ## 架构 | 模块 | 作用 | |--------|------| | [`src/jamboy/optical_flow.py`](src/jamboy/optical_flow.py) | LK 光流 + 陀螺仪去旋转 | | [`src/jamboy/geo_match.py`](src/jamboy/geo_match.py) | ORB/SIFT + FLANN/RANSAC 地图匹配 | | [`src/jamboy/ekf.py`](src/jamboy/ekf.py) | 状态数为 6 的 EKF | | [`src/jamboy/navigator.py`](src/jamboy/navigator.py) | 融合 + 状态机 | | [`src/jamboy/mavlink_bridge.py`](src/jamboy/mavlink_bridge.py) | 仿真日志或 MAVLink SITL/硬件 | | [`src/jamboy/gpu_backend.py`](src/jamboy/gpu_backend.py) | 可选 CUDA (CuPy) 匹配器 | 详情:[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) · 路线图:[`docs/ROADMAP.md`](docs/ROADMAP.md) ## 可选云端 GPU 任何 CUDA 主机均可运行。请使用您自己的云服务商控制面板中的 SSH endpoint —— **请勿提交主机名、端口或密钥**。 ``` ssh root@ -p -i ~/.ssh/ cd /workspace/JamBoy # or your clone path source .venv/bin/activate export PYTHONPATH=src CUDA_VISIBLE_DEVICES=0 pip install -e ".[gpu,dev]" bash scripts/run_sim_confident.sh ``` ## 免责声明 JamBoy 是用于无 GPS 导航实验的研究 / 仿真软件。它不提供瞄准、交战规则 (ROE) 或动力学自主功能。在飞行前,请在您自己的硬件上进行验证。请在符合适用法律和出口管制规定的情况下使用。 ## 贡献 请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md)。安全报告:[`SECURITY.md`](SECURITY.md)。 ## 许可证 [MIT](LICENSE) — 版权所有 (c) 2026 Fratres-X AI
标签:EKF融合, MAVLink, 光流定位, 凭据扫描, 地理配准, 无GPS环境导航, 无人机导航, 视觉里程计, 逆向工具