# 数据预处理系统 (Data Preprocessing System) ## 1. 项目概述 本项目是一个用于处理车辆数据的预处理系统,目前主要包括: - 路测内置数据处理 (merge_data_process_LST.py) - 仿真内置数据处理 (后续扩展) - 插件式自定义数据处理 ## 功能特点 - 支持多种数据源处理: CAN、GNSS、雷达等 - 插件系统支持扩展自定义数据处理 - 并行处理优化 - 灵活的配置管理 - 完整的错误处理机制 ## 安装要求 - Python 3.6+ - 依赖包: - pandas - numpy - cantools (CAN数据处理) - bagpy (ROS包处理) - pyproj (坐标投影) ## 安装步骤 1. 克隆或下载代码库 2. 安装依赖: ```bash pip install -r requirements.txt ``` ## 使用方法 ### 基本用法 ```bash python run.py --zip-path <数据ZIP文件路径> --output-dir <输出目录> ``` ### 完整参数说明 ```bash python run.py \ --zip-path <数据ZIP文件路径> \ --trafficlight-json <交通灯JSON文件路径> \ --output-dir <输出目录> \ --utm-zone \ --x-offset \ --y-offset \ --plugins-dir <插件目录> \ --resources-dir <资源目录> \ --config <配置文件路径> \ --use-parallel \ --batch-size 10000 ``` ### 打包发布 使用 PyInstaller 打包: ```bash pyinstaller --onedir --name merge_data_process_LST --clean \ --add-data="$(python -c 'import bagpy; from pathlib import Path; print(f"{Path(bagpy.__file__).parent}:bagpy")')" \ --add-binary="/path/to/engine:." \ --add-data="./data_map:data_map" \ --add-data="VBox.dbc:." \ merge_data_process_LST.py ``` ## 文件结构分析 必要的核心文件: ``` /core/ - 核心模块目录 __init__.py plugin_interface.py - 插件接口 plugin_manager.py - 插件管理器 resource_manager.py - 资源管理器 error_handler.py - 错误处理 config_manager.py - 配置管理 /plugins/ - 插件目录 __init__.py radar_data_processor.py - 雷达数据处理插件 主要文件: merge_data_process_LST.py - 主要数据处理逻辑 run.py - 命令行入口程序 config.json - 配置文件 README.md - 项目文档 建议移除的文件: merge_data_process.py - 功能已被整合到 merge_data_process_LST.py data_pipeline.py - 未被实际使用 ``` ## 项目结构 ``` dataPreProcess_LST_new_win/ ├── core/ # 核心模块 │ ├── init.py │ ├── plugin_interface.py # 插件接口定义 │ ├── plugin_manager.py # 插件管理器 │ ├── resource_manager.py # 资源管理器 │ ├── error_handler.py # 错误处理 │ └── config_manager.py # 配置管理 ├── plugins/ # 插件目录 │ ├── init.py │ └── radar_data_processor.py # 雷达数据处理插件示例 ├── resources/ # 资源文件目录 │ ├── radar_config.xml # 雷达插件配置 ├── merge_data_process_LST.py # 主要数据处理逻辑 ├── run.py # 命令行入口程序 ├── config.json # 系统配置文件 └── README.md ``` ## 数据处理流程 ### 数据加载和预处理 - ZIP文件解压 - 配置加载 - 插件发现和初始化 ### 主要处理阶段 - CSV数据处理 - ROS包数据提取 - C++引擎处理 - 数据质量检查 - 数据合并和后处理 ### 插件数据处理 - 数据合并 - 结果验证和保存 ## 插件开发 查看 plugins/radar_data_processor.py 作为示例插件。新插件需要: - 继承 CustomDataProcessorPlugin - 实现必要方法: - can_handle() - get_required_columns() - _process_extracted_files() ## 配置说明 系统配置文件 (config.json) 包含: - 处理参数 (并行、批处理等) - 数据库配置 - 插件设置 - 日志配置 - 坐标系参数 - 文件路径配置 ## 系统架构 1.编译代码 ```bash pyinstaller --onedir --name merge_data_process_LST --clean --add-data="$(python -c 'import bagpy; from pathlib import Path; print(f"{Path(bagpy.__file__).parent}:bagpy")')" --add-binary="/home/MapToCsv/build/engine:." --add-data="./data_map:data_map" --add-data="VBox.dbc:." --add-binary="/usr/lib/libstdc++.so.6:." --add-binary="/usr/lib/libgcc_s.so.1:." --add-binary="/lib/ld-musl-x86_64.so.1:." merge_data_process_LST.py ``` 2.运行代码 打开python文件,修改路径 ```python input_zip = '/home/cicv/zhaoyuan/data/dataprocess_python/LeftTurnAssit.zip' output_dir = '/home/cicv/zhaoyuan/data/dataprocess_python/output' shpdata_path = "./modules/map/data" engine_dir = "./engine" ``` 请根据用户本地存放位置进行修改 ```bash ./your_packed_app --zip_path V2I_CSAE53-2020_LeftTurnAssist_PGVIL_01_VR.zip --output_path ./output ```