- 博客(14)
- 收藏
- 关注
原创 ODrive-fw-v0.5.6_Contorller源码解析
本文解析了ODrive固件v0.5.6中的控制器源码实现。主要内容包括:1) 采用turn作为角度单位(1 turn=2π rad)的符号约定;2) 控制器整体采用串级控制结构,包含位置环、速度环和扭矩输出;3) 详细分析了输入模式处理、位置误差计算(含圆周处理)、速度PI控制等核心算法;4) 解释了惯量参数作为前馈项的作用;5) 说明积分器的抗饱和处理机制。该控制器严格遵循位置→速度→扭矩的串级控制架构,所有控制算法都可直接对应源码实现。
2026-01-21 16:18:11
369
原创 ODrive Firmware v0.5.6 — MotionControl模块源码解析
本文解析了ODrive固件v0.5.6版本中MotionControl模块的架构与实现。该模块采用严格实时的多环控制链:控制器(慢环)决策力矩目标,电机对象调度执行,FOC电流环(快环)处理电流采样与变换,估计器提供位置速度反馈。文章详细介绍了各子模块职责,包括轴状态机、轨迹规划、FOC实现、编码器处理等核心组件,并阐述了实时调度机制和信号处理流程。重点分析了轴对象的构造与状态机循环,以及控制器如何实现位置/速度/力矩控制模式转换。通过组件化设计和信号源切换机制,系统实现了灵活的控制策略配置。
2026-01-20 11:31:00
550
原创 ODrive FW v0.5.6 — Board文件夹源码解析
ODrive v3.x 硬件抽象层解析摘要 本文解析了ODrive v3.x固件中的硬件抽象层实现,重点关注Board/v3/目录下的关键文件。主要内容包括: 目录结构:基于CubeMX生成骨架,核心逻辑集中在board.cpp/h和tim.c/adc.c 启动流程: 系统初始化→外设初始化→控制回路运行 实时控制依赖PWM定时器中断链,而非FreeRTOS任务 关键配置: 硬件参数随版本变化(如分流电阻值) 双轴设计(M0/M1),17个GPIO接口 定时器分工(TIM1/8用于PWM,TIM13同步,T
2026-01-20 11:27:05
384
原创 ODrive Firmware v0.5.6 源码解析文档(按模块/函数)
ODrive Firmware v0.5.6 源码解析摘要 本文档对ODrive固件v0.5.6进行了结构化解析,重点包括: 工程结构:详细梳理了固件的目录架构,包括核心控制模块、通信模块和硬件驱动等关键部分。 启动流程:从系统初始化、配置加载到硬件初始化的完整启动链路,特别说明了DFU/重启机制。 板级模块:分析了硬件绑定关系,包括电机、编码器、控制器等组件的连接方式,以及GPIO映射表。 核心控制系统:深入解析了Axis状态机模块,包括线程管理、校准流程和错误处理机制。 配置管理:详细说明了NVM配置的
2026-01-20 11:14:05
394
原创 GIT代码管理规范文档
本文档旨在规范公司项目的Git代码管理流程,确保团队协作高效、代码质量可控、版本历史清晰,降低因代码管理不规范带来的风险和成本。
2025-06-16 17:45:01
1106
原创 控制系统设计指南读书笔记-滤波器
RC低通滤波器如图1.1 所示,电阻R串联电容 C,输入电压记为 Ui ,输出电压记为 UoTs1τ∗s1截止频率f2∗π∗τ1,其中τ为时间常数,对应于RC电路中的RC。
2025-04-17 18:09:06
982
原创 抽象工厂C++示例
抽象工厂UML图://AbstractFactory.h#ifndef ABSTRACTFACTORY_H#define ABSTRACTFACTORY_Hclass AbstractProduct;class AbstractFactory{public: virtual AbstractProduct *createjipu()=0; virtua...
2019-04-29 21:32:35
699
原创 工厂方法C++示例
工厂方法UML图//AbstractFactory.h#ifndef ABSTRACTFACTORY_H#define ABSTRACTFACTORY_Hclass AbstractProduct;class AbstractFactory{public: virtual AbstractProduct* createProduct()=0;};#end...
2019-04-29 21:29:34
526
原创 简单工厂C++示例
简单工厂UML图简单工厂C++源码//AbstractProduct.h#ifndef ABSTRACTPRODUCT_H#define ABSTRACTPRODUCT_Hclass AbstractProduct{public: virtual void color()=0; virtual void shape()=0;};#endif...
2019-04-29 21:23:10
767
原创 简单工厂,工厂方法,抽象工厂的区别
对于简单工厂,工厂方法,抽象工厂比较容易混淆,在这很有必要总结一下这三种设计模式的特点、相同之处和不同之处。1 本质: 这三种设计模式的名字中都含有“工厂”二字,其含义是使用工厂(一个或一系列方法)去生产产品(一个或一系列类的实例)。 另外,有时候,我们常常会将生产产品的一个或一系列方法封装到一个类中,我习惯把这个类叫做“工厂类”;而被实例化的类称作“产品类”。...
2019-04-28 21:18:53
948
原创 用C++实现单例模式(Singleton)
单例模式是23种设计模式中比较简单和容易理解的,也是设计模式中经常用到的。单例模式定义为确保某一个类只有一个实例,而且能够自行实例化并提供给系统使用。UML图如下所示:考虑到C++默认实现构造函数、拷贝函数及赋值函数,程序需要在private成员函数中显示实现构造函数、拷贝函数及赋值函数,防止客户端误使用,并通过接口getInstance调用Singleton的构造函数。同时考虑到线...
2019-04-27 13:43:41
414
原创 CMake学习笔记
CMake学习笔记一、 CMake基础知识1.1 CMake编译原理CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)...
2018-12-02 14:47:12
548
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅