fa5e5e7c23faaaf542f03280fb182bbfdc6b0a16
无人机自然语言控制项目 (DronePlanning)
本项目提供一个基于 FastAPI + LLM + RAG 的无人机任务规划后端。输入自然语言指令,输出严格 JSON 的行为树计划(py_tree)。
当前版本已与 ROS2 解耦。
推荐直接使用start_all.sh/start_all_vllm.sh启动。
1. 当前代码结构
backend_service/src/
├── main.py
├── py_tree_generator.py
├── models.py
├── websocket_manager.py
├── pipeline/ # 编排层(stage1~stage4)
├── llm/ # 模型网关/响应解析/工具运行时
├── retrieval/ # 多知识库检索(Location/Pattern/Rules)
├── prompting/ # prompt manifest + 动态注入
├── validation/ # schema provider + validator
├── prompts/
└── tools/
2. 环境准备(完整命令)
在项目根目录执行:
cd /home/huangfukk/DronePlanning
# 1) 创建并激活 venv
python3 -m venv backend_service/venv
source backend_service/venv/bin/activate
# 2) 安装依赖
pip install -r backend_service/requirements.txt
# 3) 可选:设置设备地址(本地默认 localhost)
export ORIN_IP="localhost"
3. 启动服务(推荐)
3.1 llama.cpp 路线
cd /home/huangfukk/DronePlanning
./start_all.sh start
常用命令:
./start_all.sh stop
./start_all.sh restart
./start_all.sh vl
./start_all.sh restart-vl
./start_all.sh status
3.2 vLLM 路线
cd /home/huangfukk/DronePlanning
./start_all_vllm.sh start
常用命令:
./start_all_vllm.sh stop
./start_all_vllm.sh restart
./start_all_vllm.sh status
4. 构建与入库(RAG)
cd /home/huangfukk/DronePlanning
source backend_service/venv/bin/activate
# 1) 从 map 生成知识文本(可选,已有知识可跳过)
python tools/rag/build_knowledge_base.py
# 2) 入库到 ChromaDB(Location/Pattern/Rules + 兼容集合)
python tools/rag/ingest.py
运行
ingest.py前,请确保 embedding 服务(8090)已启动。
5. 快速接口验证
cd /home/huangfukk/DronePlanning
# 健康检查
curl -s http://localhost:8000/docs >/dev/null && echo "fastapi ok"
curl -s http://localhost:8081/v1/models && echo "llm ok"
# 生成计划
curl -s http://localhost:8000/generate_plan \
-H "Content-Type: application/json" \
-d '{"user_prompt":"无人机当前在地面,到广场查找绿色公交车,找到就拍照"}'
6. 测试命令
cd /home/huangfukk/DronePlanning
source backend_service/venv/bin/activate
# API 回归
python tools/test_api.py
# 直接测试 8081 的 OpenAI 兼容推理接口
python tools/test_llama_server.py \
--system-file backend_service/src/prompts/system_prompt_vllm.txt \
--user "起飞到10米然后降落" \
--base-url "http://127.0.0.1:8081/v1" \
--verbose
# 交互式/批量验证
python tools/test_validate/run_tests.py
7. 关键 API
POST /generate_planPOST /execute_mission(当前返回 execution_disabled)WS /ws/statusGET /static/py_tree.png
8. 日志与排障
cd /home/huangfukk/DronePlanning
tail -f logs/*.log
常见日志:
logs/inference_model.log(llama.cpp 推理)logs/vllm_inference_model.log(vLLM 推理)logs/embedding_model.loglogs/fastapi.log
如果 tools/rag/ingest.py 在 Chroma 初始化时报错,优先确认:
- 是否使用项目 venv 运行
tools/rag/vector_store/是否损坏(可备份后重建)- embedding 服务是否可访问(
http://localhost:8090/v1/embeddings)
Description
Languages
C
34.8%
C++
23.5%
Makefile
17.1%
CMake
12.7%
Python
9.5%
Other
2.4%