




主要架构组件和关系:
主窗口 (MainWindow): 作为应用程序的宿主和协调者。它加载并管理多个用户控件(UserControls),这些用户控件构成了应用程序的不同功能模块。它还负责建立这些模块之间的事件订阅关系。
用户控件模块 (UserControls -
Studio...):
轨迹规划部分使用
TrajectoryPlanner生成几何路径,并将其转换为关节空间数据。通过
TrajectoryData事件将轨迹发送给StudioGraphics显示。通过
Playing事件在测试轨迹时更新StudioGraphics。
动态生成UI来显示和编辑每个
Frame的参数(时长、延迟)。使用
BackgroundWorker异步模拟播放 (animate) 和部署 (deployer) 动作序列。在模拟播放时,通过
Playing事件更新StudioGraphics。在部署时,通过
Deploying事件将Frame数据发送给StudioComms。使用
FileIO进行动作文件的保存和加载。可能会使用
Animator(尽管在提供的Animate_DoWork中有自己的插值逻辑)。
StudioToolBar: 提供顶部工具栏按钮,用于在不同的主视图/模块之间切换 (通过触发
ToolClicked事件通知MainWindow)。StudioComms: 处理与机器人硬件的通信(USB 或 WIFI/UDP)。它实例化一个
ArmRobot_V_1对象来与特定机器人模型交互。它接收来自其他模块(如StudioControl,StudioCreate)的指令,并将状态更新(连接状态、电机统计)发送回其他模块。StudioControl: 提供机器人手动控制界面(关节滑块 - FK,笛卡尔坐标滑块 - IK)。它使用
Kinematics类进行运动学计算。当滑块值改变时,它触发事件通知StudioComms发送指令,并通知StudioGraphics更新3D模型。StudioGraphics: 使用
HelixToolkit.Wpf显示机器人的3D模型。它响应关节角度变化(来自StudioControl或StudioCreate的动画播放)来更新模型姿态,并能显示由StudioApplication生成的轨迹。StudioCreate: 核心的动作序列创建和管理模块。用户可以创建由多个
Frame组成的Action。它负责:StudioStatus: 显示应用程序的状态信息和警告。它接收来自其他模块的状态更新。
StudioMotorStats: 显示从
StudioComms获取的电机统计数据(温度、电池、错误、扭矩)。StudioApplication: 包含特定应用程序逻辑,如井字棋游戏和轨迹规划。
StudioCourseView&CourseViewer: 用于课程内容导航和显示。
StudioCourseView(目录) 触发TopicChanged事件,CourseViewer(内容显示) 响应此事件来加载图片。
核心逻辑与数据模型类:
RobotCom: 底层通信基类,处理USB(
SerialPort)和WIFI/UDP(TcpClient,UdpClient)的原始数据包构建和收发。实现了Dynamixel协议1.0和2.0以及一个自定义的"Luci"协议的细节。Robot(继承RobotCom): 更高级的机器人抽象。管理动作(
Action)和LED序列的异步播放(使用BackgroundWorker)。处理Frame的记录、归中、使能/禁用机器人等。使用FileIO。ArmRobot_V_1(继承Robot): 特定机器人模型的实现,定义了其舵机ID、类型、波特率、中立位、通信分组等配置。
Action(继承List<Frame>): 表示一系列机器人运动帧。管理总时长、有效性验证等。
Frame: 代表机器人动作的一个关键帧或运动段,包含目标位置、速度、时长、延迟等。包含验证逻辑。
Sequence: 包含一个
Action列表和一个LED效果列表,用于编排更复杂的序列。LED&eye: 定义LED的状态(颜色、时长)和数据包生成逻辑(可能针对PCA控制器)。
Kinematics: 实现正向运动学(FK)和逆向运动学(IK)计算,以及齐次变换矩阵运算。
TrajectoryPlanner: 生成预定义的几何轨迹(直线、圆等),并使用
Kinematics将其转换为关节空间坐标。Animator: (根据其代码)用于将一个
Action(一系列Frame) 插值为更平滑的动画数据点。FileIO: 提供对象的二进制序列化和反序列化功能,以及深拷贝。
配置文件与入口:
App.cs: WPF应用程序入口点,启动
MainWindow。app.config: 配置应用程序支持的 .NET Framework 版本。
架构特点总结:
- WPF应用
: 基于Windows Presentation Foundation。
- 模块化设计
: 功能被划分到不同的
UserControl中,主窗口MainWindow进行组装。 - 事件驱动
: 模块间通信主要通过C#事件和委托实现,实现了一定程度的解耦。
- 分层结构 (隐式)
:
UI层 (XAML 和 UserControls 的C#后台)。
应用逻辑/控制层 (UserControls 中的业务逻辑,如
StudioCreate的动作管理)。机器人抽象与控制层 (
Robot,ArmRobot_V_1)。通信层 (
RobotCom)。数据模型层 (
Action,Frame,Sequence,LED)。工具/算法层 (
Kinematics,TrajectoryPlanner,Animator,FileIO)。
- 异步处理
: 使用
BackgroundWorker处理耗时的操作(如动作播放、部署),保持UI响应。 - 硬件抽象
:
RobotCom和Robot类封装了与特定硬件(Dynamixel舵机、可能的LED控制器)的通信细节。 - 依赖外部库
: 使用
HelixToolkit.Wpf进行3D图形显示。 - 面向对象
: 代码组织在类中,利用继承(如
Robot->RobotCom)和组合。

Mermaid 架构图 (简化版,突出主要交互)
WPF应用控制桌面机械臂架构解析
820

被折叠的 条评论
为什么被折叠?



