Python全栈项目--基于深度学习的自动驾驶模拟系统

一、项目简介

自动驾驶系统通常包含环境感知、路径规划、行为决策和车辆控制等环节。本文实现一个面向学习和课程设计的 Python 全栈项目:基于深度学习的自动驾驶模拟系统。项目不是只停留在算法概念,而是提供完整的后端接口、SQLite 数据库存储、用户注册登录、Token 鉴权、Vue 3 前端交互页面和可运行源码。

系统允许用户注册登录后创建自动驾驶测试场景,例如城市道路、高速道路、雨天、雾天、夜间、不同交通密度与速度限制。后端使用一个轻量化深度学习推理模拟器,对场景进行车道线置信度、障碍物评分、碰撞风险评估,并给出驾驶建议。

二、技术栈

  • 后端:Python 3、FastAPI、SQLAlchemy、Pydantic
  • 数据库:SQLite
  • 认证鉴权:passlib bcrypt 密码哈希、python-jose JWT Token
  • 前端:Vue 3 + Vite
  • 接口通信:Fetch API、Bearer Token
  • 打包部署:uvicorn、npm、zip 源码归档

三、系统架构

Vue 3 前端
  ├─ 注册/登录页
  ├─ 自动驾驶场景创建
  ├─ 仿真结果看板
  └─ Token 鉴权请求
        │ HTTP JSON
FastAPI 后端
  ├─ auth:注册、登录、当前用户
  ├─ scenarios:场景管理
  ├─ runs:仿真运行与历史结果
  └─ dashboard:统计看板
        │ SQLAlchemy ORM
SQLite 数据库
  ├─ users
  ├─ scenarios
  └─ simulation_runs

整体采用前后端分离架构。前端只负责页面展示和交互,后端负责业务逻辑、鉴权、数据持久化和仿真推理。

四、功能模块

  1. 用户模块

    • 用户注册
    • 用户登录
    • bcrypt 密码哈希
    • JWT Token 签发
    • 登录状态恢复与退出登录
  2. 自动驾驶场景模块

    • 创建测试场景
    • 设置道路类型、天气、交通密度、最高速度
    • 查询当前用户的场景列表
  3. 深度学习模拟模块

    • 模拟车道线识别置信度
    • 模拟障碍物评分
    • 计算碰撞风险
    • 生成驾驶动作建议
    • 保存虚拟传感器时序数据
  4. 数据看板模块

    • 统计场景数
    • 统计仿真次数
    • 计算平均碰撞风险
    • 展示最近仿真记录

五、数据库/数据模型设计

项目使用 SQLite,核心表如下。

users 表

字段说明
id用户 ID
username用户名,唯一
hashed_passwordbcrypt 哈希后的密码
created_at注册时间

scenarios 表

字段说明
id场景 ID
name场景名称
road_type道路类型
weather天气
traffic_density交通密度,0 到 1
max_speed最高速度
description场景描述
owner_id所属用户

simulation_runs 表

字段说明
id仿真记录 ID
scenario_id关联场景
owner_id所属用户
model_name模型名称
lane_confidence车道线置信度
obstacle_score障碍评分
collision_risk碰撞风险
suggested_action建议动作
telemetry_json虚拟传感器时序数据

六、后端接口设计

方法路径说明是否鉴权
GET/api/health健康检查
POST/api/auth/register注册并返回 Token
POST/api/auth/login登录并返回 Token
GET/api/auth/me获取当前用户
POST/api/scenarios创建场景
GET/api/scenarios查询场景列表
POST/api/scenarios/{id}/run运行仿真
GET/api/runs查询历史仿真结果
GET/api/dashboard查询看板统计

七、前端页面设计

前端使用 Vue 3 + Vite 实现单页应用,核心页面包括:

  • 登录/注册卡片:根据状态切换登录与注册表单。
  • 顶部 Hero 区:展示系统名称、项目定位和退出登录按钮。
  • 仪表盘:展示场景数、仿真次数、平均风险。
  • 场景表单:创建道路类型、天气、交通密度、最高速度等参数。
  • 场景列表:对已创建场景执行仿真。
  • 结果表格:展示车道置信度、障碍评分、碰撞风险和建议动作。

登录成功后,前端将 Token 保存到 localStorage,并在后续请求中自动携带 Authorization Bearer Token。

八、核心代码讲解

1. FastAPI 应用入口

backend/app/main.py 创建 FastAPI 应用,并挂载注册、登录、场景、仿真和看板接口:

app = FastAPI(title="自动驾驶深度学习模拟系统", version="1.0.0")

@app.post("/api/scenarios/{scenario_id}/run", response_model=schemas.RunOut)
def run_scenario(scenario_id: int, db: Session = Depends(get_db), current_user: models.User = Depends(get_current_user)):
    scenario = crud.get_owned_scenario(db, scenario_id, current_user.id)
    if not scenario:
        raise HTTPException(status_code=404, detail="场景不存在")
    return crud.run_simulation(db, scenario, current_user.id)

这里通过 get_current_user 保护业务接口,确保用户只能运行自己的场景。

2. 密码哈希与 JWT 鉴权

backend/app/auth.py 使用 passlib 进行 bcrypt 哈希,使用 python-jose 生成 JWT:

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

def get_password_hash(password: str) -> str:
    return pwd_context.hash(password)

def create_access_token(data: dict, expires_delta: timedelta | None = None) -> str:
    to_encode = data.copy()
    expire = datetime.utcnow() + (expires_delta or timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES))
    to_encode.update({"exp": expire})
    return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)

3. 自动驾驶仿真推理

backend/app/crud.py 中的 simulate_autodrive 模拟深度学习模型推理过程。真实工程中可替换为 PyTorch 或 TensorFlow 模型,这里为了保证项目轻量可运行,使用可解释的评分公式模拟模型输出:

lane_confidence = max(0.35, min(0.99, 0.96 - weather_penalty - road_penalty / 2 + noise))
obstacle_score = max(0.01, min(0.99, scenario.traffic_density * 0.72 + weather_penalty + random.uniform(0, 0.12)))
collision_risk = max(0.01, min(0.99, obstacle_score * 0.48 + (1 - lane_confidence) * 0.32 + speed_factor * 0.2))

风险越高,系统给出的动作越保守,例如紧急减速或增大跟车距离。

4. Vue API 封装

frontend/src/api.js 统一处理接口请求和 Token:

const token = getToken()
if (token) headers.Authorization = `Bearer ${token}`
const res = await fetch(`${API_BASE}${path}`, { ...options, headers })

5. Vue 主页面

frontend/src/App.vue 使用组合式 API 管理登录状态、场景表单、仿真列表和看板数据。用户点击“运行仿真”时,前端调用 /api/scenarios/{id}/run,随后刷新结果表格。

九、部署与运行步骤

1. 启动后端

cd project/backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

后端默认地址为 http://127.0.0.1:8000

2. 启动前端

cd project/frontend
npm install
npm run dev

前端默认地址为 http://127.0.0.1:5173

3. 使用流程

  1. 在前端注册新账号。
  2. 创建一个自动驾驶测试场景。
  3. 点击运行仿真。
  4. 查看风险评分和建议动作。
  5. 多次调整天气、道路和交通密度,对比模型输出。

十、项目总结

本文完成了一个完整的自动驾驶模拟类 Python 全栈项目。它具备后端接口、数据库模型、认证鉴权、Vue 3 前端页面、业务数据流和可运行源码。虽然示例中的深度学习推理采用轻量化模拟公式,但系统架构已经预留了模型替换空间:后续可以接入真实的车道线检测、目标检测、轨迹预测或强化学习决策模型。

该项目适合作为课程设计、毕业设计原型或全栈项目练习。通过它可以同时掌握 FastAPI 接口开发、SQLite 数据建模、JWT 鉴权、Vue 3 前端工程化和自动驾驶业务建模思路。

项目代码

下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天进步2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值