1.【干货|开源MIT Min cheetah机械狗设计(十二)】电机控制器FOC算法剖析
2.Spine界面与Unity组件代码直观对应(未完待续)
3.MIT cheetah源码业务层逻辑简介
【干货|开源MIT Min cheetah机械狗设计(十二)】电机控制器FOC算法剖析
电机控制器FOC算法详解 在开源MIT Min cheetah机械狗设计系列的码分第十二部分,我们将深入探讨电机控制器的码分固件源码。核心部分包括四个关键环节:编码器数据处理:滤波和偏差消除,码分确保编码器数据的码分准确性和稳定性。
FOC算法:焦点(FOC)算法用于精确控制电机,码分通过Park和Clark变换,码分领袖源码结合PID控制,码分实现高效、码分精确的码分电机驱动。
PID控制算法:基于位置和速度指令,码分进行实时电流调整。码分
系统通信:电机控制器接收和上传状态,码分与SPIne固件通过特定命令和反馈进行交互。码分
电机控制涉及逆变器、码分无刷电机、码分员工小程序源码磁编码器等组件,核心算法通过将期望速度和转矩转换成电机能理解的控制信号,确保机械狗按照预期运行。 编码器校准涉及相序判断和零位对齐,通过校正消除误差,确保位置信息的精确。编码器值误差消除则是通过滤波和线性化,将机械误差转换为可管理的电气误差。 FOC算法部分,包括两相电流采样、DQ0变换、反变换,以及PID控制器的应用,保证了电机在各种条件下的底板拉升指标源码稳定性能。整个控制流程在定时器驱动下运行,体现出了精细的算法设计与调试的重要性。 后续章节将转向UPboard运动算法程序的解析,这个部分包含动力学模型、步态规划等复杂内容,将逐步揭示机械狗动力系统背后的精密构造。Spine界面与Unity组件代码直观对应(未完待续)
对于不太熟悉Spine制作流程的开发者,理解源码可能会感到困惑。下面,我们将通过直观的和代码对应来帮助理解。
首先,让我们看下Spine的层级结构图,它清晰地展示了整个骨架的组织层次,就像一个树状结构,混炼胶指标源码每个骨骼(Bone)都有多个子骨骼。
在代码中,骨骼与Spine中的槽(Slot)概念相对应。槽记录了其关联的骨骼,它们之间的关系在代码中体现得一目了然。
至于骨骼上的视觉元素,"占位符 + 带网格的"在代码中表现为MeshAttachment,它是图形数据的承载者。
动画控制是Spine的核心部分。面板中的所有动画动作都集中在这个区域。动画动作由多个Timeline构成,这些Timeline记录了美术设计的每一帧关键帧,控制着对象属性的变化过程。
举个例子,樱花飘落源码大全如果美术在动画中对网格顶点位置进行了关键帧设计,那么在代码中对应的子类就是DeformTimeline,它专门负责处理这类几何变形的动画变化。
MIT cheetah源码业务层逻辑简介
MIT Cheetah机器人源码揭示了其业务层逻辑的全面体系结构。自从MIT公开了Cheetah Mini的完整资料,包括主控源代码、电机驱动源代码、控制板硬件PCB设计以及本体结构资料后,这款腿部型机器人的研发在国内受到了广泛关注,从而催生了多个基于此平台的机器人研发团队。 整体系统由个电机驱动单元、一个数据转接板SPIne、一台主控电脑、一个手柄以及一个缺省状态的IMU组成。个电机驱动单元通过CAN总线和数据转接板SPIne连接,分别控制着Cheetah腿部的关节电机,每条腿由三个关节组成。SPIne模块由两个STM芯片构成,负责主控数据的分发到驱动以及驱动反馈数据的打包。主控部分采用开源ethercat协议栈soem,支持两种通信方式:spi通信频率为Hz,ethercat通信频率为Hz。目前推测SPIne上可能仅支持spi通信。主控部分是一个计算机,通过USB连接手柄,实现手动控制,并包含上位机软件及仿真器代码,用于配置主控单元的控制参数和下发指令信息。 主控部分业务逻辑主要通过多态设计实现多种控制类型,包括MIT_Controller、MiniCheetahSpi_Controller、JPos_Controller等。用户可根据已有功能模块继承基类RobotController,在Cheetah Software/user目录下创建自定义控制器。JPos_Controller提供参考示例,算法完整实现则需参考MIT_Controller模块调用。 程序运行模式分为仿真模式和实际控制模式,通过main_helper函数进行加载启动。HardwareBridge实现加载实际控制程序流程,从Cheetah3HardwareBridge.run()开始,执行控制器硬件初始化、配置参数加载以及算法功能模块初始化,随后启动多个任务,包括可视化线程、日志线程、手柄通信线程、IMU通信线程、关节电机通信线程和周期回调主控线程。 主控线程周期回调执行关键操作,包括更新数据、步态规划、外部输入转换、状态机运行以及控制数据更新。具体操作如下:更新数据:通过运动学和雅可比计算,将电机传回的关节角度和角速度信息转换为机器人腿部末端的速度和位置信息。
步态规划:对机器人步态进行规划,内容涉及算法细节,后续将单独分析。
外部输入转换:将外部指令转换为机器人本体的位姿控制信息,包括机器人位姿和位姿速度,共计组外部控制量。
状态机运行:执行机器人集成动作的状态机,进行动力学、步态规划、MPC控制等核心算法计算,周期性更新legController中command信息,通过调用legController中的updateCommand更新电机控制相关通信数据寄存器。
控制数据更新:将机器人控制核心的输出控制数据写入相关寄存器,通过spi接口输入到电机驱动,控制电机运行。
对于仿真部分,由于需要接入罗技F手柄才能进行仿真。因未配备手柄,源代码被相应修改,以便实现仿真运行。