# car **Repository Path**: wu_yangyang_admin/car ## Basic Information - **Project Name**: car - **Description**: 大三夏季学期做的一个实践项目。一个基于 Python 的自动驾驶小车控制系统,旨在实现智能车辆的自主导航和控制。该项目结合了计算机视觉、深度学习和嵌入式系统技术,能够进行车道跟随、交通标志检测和实时控制。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-02 - **Last Updated**: 2026-05-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Car-Master: 自动驾驶小车控制系统 ## 项目简介 Car-Master 是一个基于 Python 的自动驾驶小车控制系统,旨在实现智能车辆的自主导航和控制。该项目结合了计算机视觉、深度学习和嵌入式系统技术,能够进行车道跟随、交通标志检测和实时控制。 ## 主要功能 - **手动控制**: 通过键盘输入实现对小车的直接控制 - **车道跟随**: - 基于 PID 控制的车道跟随 (LF_PID) - 基于传统计算机视觉的车道跟随 (LF) - **交通标志检测**: 使用 YOLOv5 模型检测交通标志(左转、右转、停止、掉头) - **实时图像处理**: 通过相机广播和多进程架构实现高效的图像处理和控制 ## 技术栈 - **编程语言**: Python - **计算机视觉**: OpenCV - **深度学习**: PyTorch, YOLOv5, LFNet - **硬件通信**: 串口通信 (ESP32) - **并发处理**: 多进程架构 - **其他**: NumPy, multiprocessing ## 项目结构 ``` car-master/ ├── main_1.py # 主程序入口 (使用 LF_PID 场景) ├── main_2.py # 主程序入口 (使用 LF 场景) ├── src/ │ ├── actions/ # 动作控制模块 │ │ ├── base_action.py # 动作基类 │ │ ├── complex_actions.py # 复杂动作 │ │ └── __init__.py │ ├── models/ # 深度学习模型 │ │ ├── yolov5.py # YOLOv5 交通标志检测 │ │ ├── lfnet.py # LFNet 车道检测 │ │ ├── bsae_model.py # 基础模型类 │ │ └── __init__.py │ ├── scenes/ # 场景管理 │ │ ├── base_scene.py # 场景基类 │ │ ├── lane_following.py # 车道跟随场景 │ │ ├── lane_following_pid.py # PID 车道跟随 │ │ ├── manual.py # 手动控制场景 │ │ ├── helper.py # 辅助场景 │ │ └── __init__.py │ └── utils/ # 工具模块 │ ├── controller.py # 控制器 (ESP32 通信) │ ├── cv_utils.py # 计算机视觉工具 │ ├── camera_broadcaster.py # 相机广播 │ ├── logger.py # 日志工具 │ ├── constant.py # 常量定义 │ └── ... ├── weights/ # 模型权重文件 │ ├── lfnet.om │ └── yolo.om ├── capture/ # 捕获数据目录 ├── logs/ # 日志目录 └── *.whl # 依赖包 ``` ## 安装和运行 ### 环境要求 - Python 3.x - ESP32 开发板 - 相机模块 - 电机和舵机硬件 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 运行程序 1. 确保硬件连接正确 2. 运行主程序: ```bash python main_1.py # 使用 PID 车道跟随 # 或 python main_2.py # 使用传统车道跟随 ``` 3. 使用键盘控制: - ESC: 退出程序 - 其他按键: 发送控制指令 ## 架构说明 项目采用多进程架构: - **主进程**: 处理用户输入和进程管理 - **相机进程**: 负责图像捕获和广播 - **场景进程**: 执行具体的控制逻辑(车道跟随、手动控制等) - **控制器**: 通过串口与 ESP32 通信,控制电机和舵机 ## 模型说明 - **YOLOv5**: 用于检测交通标志,支持 4 类标志:左转、右转、停止、掉头 - **LFNet**: 用于车道线检测和跟随 ## 开发和贡献 欢迎对项目进行改进和扩展。请遵循以下步骤: 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 发起 Pull Request