欢迎光临
我们一直在努力

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

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

四、功能模块

  • 用户模块

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

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

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

    • 统计场景数
    • 统计仿真次数
    • 计算平均碰撞风险
    • 展示最近仿真记录
  • 五、数据库/数据模型设计

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

    users 表

    字段说明
    id 用户 ID
    username 用户名,唯一
    hashed_password bcrypt 哈希后的密码
    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. 使用流程

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

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

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

    项目代码

    下载链接

    赞(0)
    未经允许不得转载:171主机测评 » Python全栈项目--基于深度学习的自动驾驶模拟系统
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址