本项目是一个用于处理车辆数据的预处理系统,支持多种数据源和格式,包括CAN数据、GNSS数据、雷达数据等。系统采用插件架构,允许用户扩展自定义数据处理功能。
+------------------+ +------------------+ +------------------+
| | | | | |
| 数据源(ZIP) +----->+ 数据处理管道 +----->+ 输出(CSV) |
| | | | | |
+------------------+ +------------------+ +------------------+
|
v
+------------------+
| |
| 插件系统 |
| |
+------------------+
系统由以下主要组件构成:
数据处理器(DataProcessor):负责协调整个处理流程,包括ZIP文件解析、数据提取、格式转换等。
插件系统:
数据处理管道:
所有插件必须实现以下接口:
def can_handle(self, zip_path: Path, folder_name: str) -> bool:
"""判断插件是否可以处理指定文件夹中的数据"""
pass
def process_data(self, zip_path: Path, folder_name: str, output_dir: Path) -> Optional[Path]:
"""处理数据并返回处理后的CSV文件路径"""
pass
def get_required_columns(self) -> Dict[str, Any]:
"""返回插件将提供的列及其数据类型"""
pass
系统已包含以下插件:
python run.py --zip-path <数据ZIP文件路径> --output-dir <输出目录>
python run.py \
--zip-path <数据ZIP文件路径> \
--trafficlight-json <交通灯JSON文件路径> \
--output-dir <输出目录> \
--utm-zone <UTM区域> \
--x-offset <X偏移量> \
--y-offset <Y偏移量> \
--plugins-dir <插件目录> \
--resources-dir <资源目录>
python run.py --list-plugins
plugins
目录下创建新的Python文件。CustomDataProcessorPlugin
基类。can_handle
、process_data
、get_required_columns
)。resources
目录下。示例插件模板可参考 plugins/data_processor_template.py
。
使用PyInstaller打包为可执行文件:
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