1.MIT cheetah源码业务层逻辑简介
2.干货|开源MIT Min cheetah机械狗设计(二十三)运动控制器源码解析---控制和优化思想
3.干货|开源MIT Min cheetah机械狗设计(十四)运动控制器源码解析---四足机器人浮动基动力学模型创建
4.干货|开源MIT Min cheetah机械狗设计(十二)电机控制器FOC算法剖析
5.干货|开源MIT Min cheetah机械狗设计(二十)运动控制器源码解析---Locomotion程序架构
6.了解常见的开源协议(BSD, GPL, LGPL,MIT)
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手柄才能进行仿真。因未配备手柄,源代码被相应修改,以便实现仿真运行。干货|开源MIT Min cheetah机械狗设计(二十三)运动控制器源码解析---控制和优化思想
本文将深入探讨开源MIT Min Cheetah机械狗设计的控制与优化策略,重点关注MPC控制和QP优化。尽管WBC辅助MPC的内容在前文已有详述,这里主要聚焦控制理论的应用。
控制的核心在于通过状态方程描述物体运动规律,如牛顿第二定律,将连续问题离散化以适应计算机处理。状态空间表达式,如[公式],免费保存源码揭示了物理定律,如位移与速度的关系和电容与电流的关系。控制策略的优化在于选择最适合的路径,如LQR关注整个时间的最优,而MPC关注当前时刻对过去的影响。
优化问题涉及代价函数和权重设置。LQR的代价函数[公式],权重为[公式],而MPC更复杂,如[公式],可加入不等式约束。MPC通过QP求解器,如Matlab或C++,实现开环优化,允许灵活设置约束条件。
与传统PID控制相比,现代控制理论如状态空间模型更精确,但在实际应用中,复杂项目如MIT机械狗,可能仍需依赖传统控制如PD,配合现代理论以提升性能。控制算法在无人机、机器人和汽车行业广泛应用,尤其在动力学模型成熟的情况下。
机器学习和强化学习在参数辨识和环境适应方面提供了补充,但强化学习对于规则明确的环境表现较好,未来有望在机器人领域有更多发展。接下来,我们将转向机械狗的仿真实现,以及后续的扩展功能,如路径规划和激光雷达扫描。
干货|开源MIT Min cheetah机械狗设计(十四)运动控制器源码解析---四足机器人浮动基动力学模型创建
干货MIT Min Cheetah机械狗设计详解(十四):动力学模型创建 对于机器人爱好者和初入机器人领域的专业人士,开源MIT Min Cheetah系列设计无疑是一份宝贵资源。本文将深入探讨RobotRunner核心模块,包括数据更新、步态规划、控制算法和命令发送,尤其是关键的浮动基动力学模型构建。 首先,我们从单刚体动力学模型开始,新mud源码简化机械狗的复杂动态,计算足底反作用力,但此方法在高速运动时并不适用。为解决高速情况下的适应性,浮动基动力学模型引入,它在单刚体基础上优先满足动态响应,如WBC控制器的需要。模型创建包括:浮动基动力学模型参数设置:定义机械狗整体的配置空间和关节自由度,引入6个表示身体浮动基的自由度。
广义惯量和空间惯量:每个连杆和关节电机的广义惯性张量(包括质量、质心位置和旋转惯量)是动力学计算的基础。
连杆位置向量:这些参数用于后续的运动旋量计算。
浮动基动力学模型:以拉格朗日单腿动力学为基础,考虑机械狗整体的运动状态和力矩映射。
动力学方程的构造:包括动力学方程组、约束方程和构型角度约束,以及外力和转矩的关系。
代码中,通过`forwardKinematics()`函数计算关节和连杆的空间变换,为求解质量矩阵、非惯性力矩阵和接触雅可比矩阵做准备。在冗余自由度的系统中,浮动基动力学模型与WBC结合,最终计算出关节的控制参数。 总结,浮动基动力学模型的创建是实现高精度控制的关键步骤,它为后续的动力学方程求解提供了关键参数。理解这些核心概念,将有助于深入理解四足机器人动态控制的奥秘。干货|开源MIT Min cheetah机械狗设计(十二)电机控制器FOC算法剖析
电机控制器FOC算法详解 在开源MIT Min cheetah机械狗设计系列的第十二部分,我们将深入探讨电机控制器的固件源码。核心部分包括四个关键环节:编码器数据处理:滤波和偏差消除,确保编码器数据的准确性和稳定性。
FOC算法:焦点(FOC)算法用于精确控制电机,通过Park和Clark变换,结合PID控制,实现高效、精确的电机驱动。
PID控制算法:基于位置和速度指令,进行实时电流调整。魔力签源码
系统通信:电机控制器接收和上传状态,与SPIne固件通过特定命令和反馈进行交互。
电机控制涉及逆变器、无刷电机、磁编码器等组件,核心算法通过将期望速度和转矩转换成电机能理解的控制信号,确保机械狗按照预期运行。 编码器校准涉及相序判断和零位对齐,通过校正消除误差,确保位置信息的精确。编码器值误差消除则是通过滤波和线性化,将机械误差转换为可管理的电气误差。 FOC算法部分,包括两相电流采样、DQ0变换、反变换,以及PID控制器的应用,保证了电机在各种条件下的稳定性能。整个控制流程在定时器驱动下运行,体现出了精细的算法设计与调试的重要性。 后续章节将转向UPboard运动算法程序的解析,这个部分包含动力学模型、步态规划等复杂内容,将逐步揭示机械狗动力系统背后的精密构造。干货|开源MIT Min cheetah机械狗设计(二十)运动控制器源码解析---Locomotion程序架构
开源MIT Min cheetah机械狗设计第篇,讲解Locomotion程序架构。
本文集中解析机械狗的运动模式,涵盖种模式,包括被动、关节运动、阻抗控制、站立、平衡站立、奔跑、恢复站立、视觉辅助、后空翻、前空翻。每种模式继承自FSM_State,实现状态转移与控制。
程序核心在于FSM_StatesList中的运动模式调度,runFSM()函数对模式进行管理。
重点介绍奔跑模式,它依赖MPC(ConvexMPCLocomotion)与WBC(WBC_Ctrl)控制器。MPC部分已前文讨论,本篇聚焦于WBC实现。
首先,初始化MPC,作为WBC的一部分。WBC运行于FSM_State_Locomotion的run()函数,通过循环调用控制步骤LocomotionControlStep()。
控制步骤中,MPC预测足端反作用力Fr_des[i],WBC求解关节扭矩、加速度、速度与位置。腿部控制器LegController据此发送关节扭矩、速度与位置。
核心在于运行WBC控制器WBC_Ctrl::run()与计算过程的_WComputeWBC()函数,通过公式进行计算。
欲详细了解WBC控制器设计原理,可参考相关文章。
本篇至此,下篇将深入探讨WBC控制器的程序实现。
了解常见的开源协议(BSD, GPL, LGPL,MIT)
理解常见的开源协议:BSD、GPL、LGPL与MIT 在开源领域,不同的协议定义了软件的使用、修改和分发的规则。下面详细介绍四种常见的开源协议:BSD、GPL、LGPL与MIT。1. BSD开源协议
BSD协议赋予了使用者极大的自由,允许用户自由使用、修改源代码,并以开源或专有软件的形式再次发布。发布使用了BSD协议代码时,需要满足以下三个条件:在源代码中包含原始代码的BSD协议、在二进制类库/软件的文档和版权声明中包含原始代码的BSD协议、不可用开源代码的作者/机构名字和原始产品的名字进行商业推广。这个协议鼓励代码共享,同时尊重代码作者的著作权。2. Apache Licence 2.0
Apache Licence是Apache基金会采用的开源协议,允许代码共享、尊重原作者的著作权,允许代码修改和再发布(作为开源或商业软件)。使用者需要遵守以下规则:给代码的用户一份Apache Licence、如果修改了代码,在被修改的文件中说明、在衍生的代码中(修改和有源代码衍生的代码中)需要带有原始代码中的协议、商标、专利声明和其他原作者规定需要包含的说明。这个协议也是对商业应用友好的许可。3. GPL (General Public License) Version 2.0
GPL协议是Linux的核心开源协议,鼓励代码的开源/免费使用以及修改/衍生代码的开源/免费使用,但不允许修改后的代码作为闭源的商业软件发布和销售。这意味着我们能够免费获取各种Linux版本及其由个人、组织或商业软件公司开发的免费软件。GPL协议要求,只要在一个软件中使用了GPL协议的产品,该软件必须也采用GPL协议,并且必须是开源和免费的。这种“传染性”规则确保了在GPL协议保护下的产品不受其他协议或授权的约束。4. LGPL (Lesser General Public License)
LGPL是为类库设计的开源协议,与GPL不同,允许商业软件通过类库引用方式使用LGPL类库而无需开源商业软件的代码。这意味着采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。然而,修改LGPL协议的代码或衍生版本必须采用LGPL协议。5. MIT协议
MIT协议与BSD协议一样,作者仅保留版权,无其他限制。这意味着,使用者必须在发行版中包含原许可协议声明,无论是以二进制还是源代码形式发布。 这些开源协议为开发者提供了多样化的选择,以适应不同的项目需求和商业策略。选择合适的协议对于确保代码的共享、修改和分发的透明性和兼容性至关重要。x/mit许可协议的简介
MIT许可协议简介 MIT许可协议,全称为“麻省理工学院许可协议”,是一种开源软件许可协议。其主要特点是自由、开放和免费,允许软件开发者在无需支付任何费用的情况下使用、修改和分发基于该许可协议的软件。 详细介绍 MIT许可协议是一种宽松的软件许可协议,其核心内容主要包括以下几个方面: 1. 自由使用:在MIT许可协议下,软件的使用是完全自由的。用户可以自由地下载、安装和使用软件,无需获得任何形式的授权或许可。 2.源代码开放:该协议鼓励开放源代码的共享。软件开发者可以在遵循协议规定的前提下,查看、使用和修改软件的源代码。 3.自由分发:根据MIT许可协议,用户有权将软件分发给其他人,无论是免费还是收费。这意味着开发者可以在商业产品中使用基于MIT许可协议的开源软件,而无需担心版权问题。 4.责任豁免:此协议明确了软件提供者在特定情况下不承担法律责任。这意味着软件开发者在遵循协议规定的前提下,无需为软件的使用后果承担法律责任。 MIT许可协议在开源软件和自由软件领域得到了广泛应用。由于其条款简单明了,且在促进软件开发和共享方面表现出极大的灵活性,因此受到了众多开发者和企业的青睐。这种许可协议为软件的创新和发展提供了一个开放的平台,促进了技术的不断进步。 总的来说,MIT许可协议是一种鼓励软件自由使用、开放源代码共享、自由分发以及责任豁免的开源软件许可协议。它为软件开发者提供了一个灵活的法律框架,促进了开源软件和自由软件的发展。干货|开源MIT Min cheetah机械狗设计(二十一)运动控制器源码解析---刚体动力学建模
本篇内容深入探讨了开源MIT Min cheetah机械狗设计系列文章中的刚体动力学模型。刚体动力学模型是机械狗设计的核心,是麻省理工团队独立开发的动力学算法的重要基础。动力学算法的理论依据参考了Roy Featherstone的文章《Rigid Body Dynamics Algorithms》,该文章提出了一种新的六维运动空间和力空间,概念类似于运动旋量和力旋量。
商业动力学运算库如CoppeliaSim的Bullet 2.和单独的动力学求解库pinocchio、frost、drake等在机械狗设计中得到了广泛应用。机械狗设计所用的动力学算法设计思想包含牛顿欧拉方程、坐标系选取问题、六维运动空间等核心概念。牛顿欧拉方程是力学基础,描述了力与加速度和扭矩之间的关系,包括了定点和定轴转动的公式。坐标系的选择对动力学和运动学分析至关重要,不同坐标系的设计使计算变得更加高效。Pl¨ucker坐标系的引入实现了平动和转动的统一表示,简化了动力学方程,方便了后续程序的编写。
在六维运动空间中,刚体的速度和空间力被统一表示,使得动力学分析更加简洁。动力学模型编程中,动力学公式和运动学树的概念被整合进代码中,以方便处理和编程。文章最后指出,动力学知识的探讨还将继续,后续计划将增加视觉感知、激光雷达扫描等机械狗的智能功能,以提升其性能。
MIT6.S/6.手把手教你搭建开发环境
MIT6.S/6.带你亲手搭建操作系统开发环境
为了提升操作系统实践能力,秋招后我决定深入学习,选择了实践导向的MIT 6.S课程,通过内核源码开发来理解操作系统工作原理。这门课程由理论介绍和个实验组成,涵盖了page table、network driver等核心功能,以xv6为基础进行内核扩展。
课程计划是跟随官网进度,先研读讲义和手册,然后动手做实验。通过边学边做,理论与实践相结合,能更好地掌握知识。值得注意的是,课程的授课者之一是Robert Morris,一位有着传奇背景的学者,他的贡献有助于理解微内核OS,如鸿蒙系统。
我的搭建环境从Ubuntu .开始,相比.版本,它简化了Riscv工具链的安装,避免了耗时和错误。首先,需要更换为国内镜像源,如中科大源,以提升软件安装速度。安装SSH服务并启用SSH访问,使用SecureCRT连接时可能需要调整配置。静态IP设置为桥接模式以适应虚拟机环境。
接下来,安装RISC-V交叉编译工具和QEMU,它们在模拟RISC-V架构执行时至关重要。搭建过程包括下载xv6源码,编译并测试,确保工具链和调试工具都能正常工作。只要看到xv6 kernel is booting的提示,就表明环境搭建完成,可以开始实验之旅了。
整个过程参考了多个学习资源,现在万事俱备,是时候深入探索操作系统的世界了!
来源:公众号-嵌入式与Linux那些事
作者:仲一
原文链接:
侵权请联系作者删除!