欢迎来到镇中科技机械臂控制系统文档
这里是镇中科技机械臂控制系统的官方文档。
本系统旨在提供一个灵活、高效且易于扩展的框架,用于控制机械臂进行各种任务,包括运动控制、轨迹规划、视觉识别和示教记录等。
项目结构概览
本项目的代码结构遵循 领域驱动设计 (DDD) 原则。下文将严格按照 src/controller/controller 目录下的实际文件分布进行介绍。
1. Application (应用层)
目录路径: src/controller/controller/application
业务流程的协调者。负责编排领域对象来完成具体的应用用例。
- commands (
application/commands): 封装具体的命令对象。message_display.py: 处理消息显示的命令逻辑。
- listener (
application/listener): 事件监听器。motion_listener.py: 监听运动状态变化的事件处理器。
- services (
application/services): 应用服务,封装具体的业务场景。camera_application_service.py: 协调相机连接、图像获取与视觉算法。motion_planning_application_service.py: 协调运动规划请求与轨迹生成。command_hub_service.py: 统一的指令分发中心,处理用户命令并路由到相应的领域服务。serial_application_service.py: 串口连接管理服务。message_response_service.py: 处理下位机反馈消息的服务。tools_application_service.py: 提供工具类功能(如正逆解计算)的应用服务。base_service.py: 应用服务基类。
2. Config (系统配置)
目录路径: src/controller/controller/config
存放系统运行所需的静态配置文件(YAML 格式),主要用于定义通信协议。
message_decoder_config.yaml: 定义接收消息的解码规则。message_encoder_config.yaml: 定义发送消息的编码规则。
3. Domain (领域层)
目录路径: src/controller/controller/domain
核心业务逻辑的心脏。包含纯粹的业务规则、算法和状态模型。
- entities (
domain/entities): 具有唯一标识的领域实体。motion_plan.py: 定义运动计划实体。
- services (
domain/services): 领域服务,封装核心业务能力。- algorithm: 核心算法。
kinematic_domain_service.py: 正逆运动学解算。trajectory_domain_service.py: S型速度曲线规划。curve_motion.py: 空间曲线运动规划(TOPPRA)。smooth_domain_service.py: 轨迹平滑算法。hand_eye_transform_domain_service.py: 手眼标定计算。dynamic_domain_service.py: 动力学与重力补偿计算。
- communication: 通信逻辑。
message_domain_service.py: 消息编解码服务。serial_domain_service.py: 串口数据收发逻辑。
- motion: 运动控制。
motion_constructor.py: 运动指令构造器。motion_runner.py: 运动执行器。trajectory_planning_service.py: 轨迹规划服务。
- planning: 高级规划。
motion_planning_domain_service.py: 运动计划管理。
- state: 状态管理。
robot_state_domain_service.py: 机器人运行时状态管理。teach_record_domain_service.py: 示教记录管理。
- vision: 视觉处理。
camera_domain_service.py: 相机图像流处理。recognition_domain_service.py: 视觉识别结果处理。
- algorithm: 核心算法。
- utils (
domain/utils): 领域层通用工具。message_decoder.py/message_encoder.py: 协议解析工具。kinematic_utils.py: 运动学数学工具。image_drawing_utils.py: 图像绘制工具。
- value_objects (
domain/value_objects): 不可变的值对象。robot_state_snapshot.py: 机器人状态快照。dh_param.py: DH 参数配置。hand_eye_calibration_config.py: 标定配置。
4. Infrastructure (基础设施层)
目录路径: src/controller/controller/infrastructure
与外部世界的连接器。提供技术实现细节。
- communication (
infrastructure/communication): 通信基础设施。serial_adapter.py:pyserial适配器。serial_reader.py/serial_writer.py: 串口读写线程实现。port_scanner.py: 串口扫描工具。
- persistence (
infrastructure/persistence): 数据持久化仓储 (Repository)。trajectory_repository.py: 轨迹文件存取。record_repository.py: 示教记录存取。motion_plan_repository.py: 运动计划存取。hand_eye_calibration_repository.py: 标定参数存取。
- external / hardware: (预留)外部库适配与硬件驱动。
5. Presentation (展示层)
目录路径: src/controller/controller/presentation
用户交互界面。采用 MVVM 模式。
- components (
presentation/components): 可复用的 UI 组件(按功能模块分类)。- 包含
camera,display,dynamics,effector,main,motion_planning,settings,status,tools等子目录。
- 包含
- gui (
presentation/gui): 主窗口实现。main_window.py: 应用程序主窗口组装。
- view_models (
presentation/view_models): 视图模型,连接 UI 与 Application/Domain。main_view_model.py: 主视图模型。control_view_model.py: 控制逻辑视图模型。camera_view_model.py: 相机视图模型。dynamics_view_model.py: 动力学视图模型。status_view_model.py: 状态显示视图模型。- ... (以及其他功能对应的 ViewModel)
6. Shared (共享层)
目录路径: src/controller/controller/shared
跨层通用的工具与配置。
- config (
shared/config): 全局代码配置。di_container.py: 依赖注入 (DI) 容器实现。service_registry.py: 服务注册与组装逻辑。