自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Google C++ 编码规范(中文版)下载

下载地址:

2025-06-18 11:15:41 455

原创 GIT代码管理规范文档

本文档旨在规范公司项目的Git代码管理流程,确保团队协作高效、代码质量可控、版本历史清晰,降低因代码管理不规范带来的风险和成本。

2025-06-16 17:45:01 1106

原创 基于Anaconda的Keras开发环境搭建,开发工具Pycharm

小白零基础搭建基于Anaconda及Keras以及Pycharm开发环境

2025-04-24 11:00:48 1514

原创 控制系统设计指南读书笔记-滤波器

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关注的人

提示
确定要删除当前文章?
取消 删除