ODrive的梯形轨迹

从2804云台电机到桌面机械臂:一个GD32+AS5600的FOC驱动踩坑实录 本文详细记录了从2804云台电机到桌面机械臂的DIY过程,重点介绍了GD32+AS5600的FOC驱动系统搭建中的实战经验。内容包括硬件选型、驱动电路迭代、AS5600磁编码器的I2C问题解决、PID调参技巧以及机械集成优化,为创客和工程师提供了宝贵的踩坑实录和技术参考。 阅读详情
AI摘要

文章介绍了如何使用ODrive控制器实现2804云台电机和5008航模电机的梯形轨迹控制,包括速度模式与位置模式的设置,以及电机和编码器的配置,强调了电机校准和轨迹规划的重要性。


 
SimpleFOC、ODrive和VESC 教程链接汇总:请点击
 
 

一、梯形轨迹

 
实际应用中,需要电机又快又稳的转到指定位置,梯形轨迹(INPUT_MODE_TRAP_TRAJ)本质上是一个分段函数的轨迹规划,是一个先加速,再匀速,再减速的三段函数的过程。

在这里插入图片描述

 

1.1、2804云台电机

在这里插入图片描述

ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技

2804电机100kv,12V电源,最高速度为1200RPM = 20 转/秒

 
1.1.1、速度模式

先用速度模式热身,

odrv0.erase_configuration()
odrv0.config.dc_max_positive_current = 20
odrv0.config.dc_max_negative_current = -3.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.calibration_current = 2.5                      //2=0.23A,2.5=0.3A(万用表测母线电流)
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL             //默认,选择编码器类型
odrv0.axis0.encoder.config.cpr = 4000                                  //默认8192,AS5047P=4000,TLE5012B=16384
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL   //设置为速度模式
odrv0.axis0.controller.config.vel_gain = 0.02                          //默认0.167,速度环P参数
odrv0.axis0.controller.config.vel_integrator_gain = 0.2                //默认0.33333,速度环I参数
odrv0.axis0.controller.config.vel_limit = 20                           //默认2,限制最大转速
odrv0.axis0.controller.config.input_mode = INPUT_MODE_VEL_RAMP         //速度爬升模式
odrv0.axis0.controller.config.vel_ramp_rate = 10                       //默认1,非常小,加速度
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE    //电机参数校准和编码器校准
odrv0.axis0.error
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.motor.config.pre_calibrated = True                     //设置预先校准,以后上电可以用保存的参数
odrv0.axis0.config.startup_encoder_offset_calibration = True       //编码器校准,每次上电必须
odrv0.axis0.config.startup_closed_loop_control = True
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.controller.input_vel = 10
odrv0.axis0.controller.input_vel = 0
odrv0.axis0.requested_state = AXIS_STATE_IDLE   //退出闭环模式

 
1.1.2、位置模式,梯形轨迹

odrv0.erase_configuration()
odrv0.config.dc_max_positive_current = 20
odrv0.config.dc_max_negative_current = -3.0
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.motor.config.pole_pairs = 7
odrv0.axis0.motor.config.calibration_current = 2.5                        //2.5=0.3A,3=0.42A(万用表测母线电流)
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL              //选择编码器类型
odrv0.axis0.encoder.config.cpr = 4000                                  //默认8192,AS5047P=4000,TLE5012B=16384
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.vel_limit = 20
odrv0.axis0.controller.config.pos_gain = 10
odrv0.axis0.controller.config.vel_gain = 0.02
odrv0.axis0.controller.config.vel_integrator_gain = 1
odrv0.axis0.controller.config.input_mode = INPUT_MODE_TRAP_TRAJ   //梯形轨迹
odrv0.axis0.trap_traj.config.vel_limit = 5
odrv0.axis0.trap_traj.config.accel_limit = 10
odrv0.axis0.trap_traj.config.decel_limit = 10
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.error
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.motor.config.pre_calibrated = True                          //ABZ编码器上电不校准无法进入闭环
odrv0.axis0.config.startup_encoder_offset_calibration = True
odrv0.axis0.config.startup_closed_loop_control = True
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.controller.input_pos = 5
odrv0.axis0.controller.input_pos = 0

 

1.2、5008航模电机

在这里插入图片描述

ODrive 购买链接:https://item.taobao.com/item.htm?ft=t&id=644329838237,图锐科技
电机购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技

AS5047P_SPI接口,电源电压12V,24V都可以。

odrv0.erase_configuration()                                           //清除之前的配置,恢复默认配置
odrv0.config.dc_bus_overvoltage_trip_level = 56
odrv0.config.dc_max_positive_current = 30
odrv0.config.dc_max_negative_current = -5
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT         //设置电机类型
odrv0.axis0.motor.config.pole_pairs = 7                               //默认7
odrv0.axis0.motor.config.calibration_current = 8                      //默认10,12V设置为8=0.6A,24V设置为10=0.4A
odrv0.axis0.encoder.config.mode = ENCODER_MODE_SPI_ABS_AMS            //设置编码器类型
odrv0.axis0.encoder.config.abs_spi_cs_gpio_pin = 1                    //选择CS引脚
odrv0.axis0.encoder.config.cpr = 2**14                                //14bit
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
odrv0.axis0.controller.config.vel_limit = 100
odrv0.axis0.controller.config.pos_gain = 20
odrv0.axis0.controller.config.vel_gain = 0.1
odrv0.axis0.controller.config.vel_integrator_gain = 1
odrv0.axis0.controller.config.input_mode = INPUT_MODE_TRAP_TRAJ      //梯形轨迹
odrv0.axis0.trap_traj.config.vel_limit = 50
odrv0.axis0.trap_traj.config.accel_limit = 10
odrv0.axis0.trap_traj.config.decel_limit = 10
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE    //电机校准,“哔”一声,然后正反转一圈
odrv0.axis0.error                                                     //查看是否有错误
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL          //进入闭环
odrv0.axis0.motor.config.pre_calibrated = True                        //设置预先校准,以后上电可以用保存的参数
odrv0.axis0.config.startup_encoder_offset_calibration = True          //编码器必须校准,否则重启后不能闭环
odrv0.axis0.config.startup_closed_loop_control = True                 //上电直接进入闭环
odrv0.save_configuration()
odrv0.reboot()

odrv0.axis0.controller.input_pos = 5
odrv0.axis0.controller.input_pos = 0

 
 
(完)
 
 
 
 

【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制 一、电机选择 二、电机参数初始化 三、FOC初始化 四、PID初始化 五、主函数调用 move(target); 六、主函数调用loopFOC(); 七、 主函数及完整代码 八、总结 阅读详情

相关推荐

机器人路径规划算法(三)

文章目录三、复合轨迹1.梯形轨迹2.双S速度曲线轨迹2.1 vlim=vmaxv_{lim} = v_{max}vlim​=vmax​2.2 vlim<vmaxv_{lim} < v_{max}vlim​<vmax​2.3 轨迹表达 三、复合轨迹 1.梯形轨迹 为了获得连续的速度轨迹,常见的轨迹方程就是使用线性差值混合抛物线插值,以此获得具有梯形剖面的速度轨迹。 梯形轨迹可以分为三部分。假设 q0<q1q_0<q_1q0​<q1​​ ,第一部分加速度为正的常数,因此速度是

九月清晨的博客 1451

ODrive应用 #1 ODrive入门指南

ODrive 入门 文章目录ODrive 入门硬件需求需要准备以下硬件:ODrive 接线Wiring up the motorsWiring up the encodersSafety & Power UPDownloading and Installing ToolsWindowsOSXLinuxFirmwareStart `odrivetool`Configure M02. Set ...

codenocold 8万+

从PID到梯形曲线:用Python玩转Odrive的三种控制模式(位置/速度/电流环详解)

本文详细解析了Odrive控制器的三种PID控制模式(位置环、速度环、电流环)及其Python实现方法。通过梯形轨迹算法和参数调节技巧,帮助开发者掌握高精度运动控制,解决如'input_pos=50后为何不转'等典型问题,适用于机器人关节、云台稳定等场景。

weixin_27372101的博客 409

【电机参数】直流无刷电机2804电机参数测量——电感、电阻、极对数、磁链常数

【电机控制】直流有刷电机、无刷电机汇总——持续更新使用工具:1.示波器:正点原子DS100(50M)2.电桥LCR:VICIOR4090A3.电钻:博世电动工具4.直流稳压电源:GPS305D(30V/5A)提示:以下是本篇文章正文内容,下面案例可供参考本文仅仅简单介绍了【电机控制】STM32F103CXT6无刷直流电机SimpleFOC控制学习板——带电流环方面,评论区欢迎讨论。

qq_42681425的博客 2万+

Odrive梯形速度规划实战:从代码到电机平滑运动的保姆级解析

本文深入解析Odrive梯形速度规划算法,从代码实现到电机平滑运动的实战应用。通过详细讲解梯形速度规划的核心原理、工程实现步骤及与闭环控制的协同工作,帮助开发者掌握位置爬坡算法,优化电机运动性能,提升工业自动化设备的精度与寿命。

weixin_42565652的博客 211

ODrive位置环PID调参实战:用TLE5012B编码器让3508电机实现‘钉子般’的精准定位

本文详细介绍了如何通过ODrive位置环PID调参,结合TLE5012B磁编码器,实现3508电机的精准定位。从基础参数设定到分阶段优化策略,再到高级频域分析法,全面解析了调参过程中的关键技巧和常见问题解决方案,帮助工程师实现‘钉子般’的定位精度。

weixin_42647395的博客 394

Odrive源码分析(四) 位置爬坡算法

首先当需要控制电机运动到某个位置时,会调用函数,该函数会调用上面的函数planTrapezoidal。然后会在control对象中调用eval函数不断的计算出下一时刻的目标位置和速度。Odrive中自带一个简单的梯形速度爬坡算法,本文分析下这部分代码。那么关键就是两个函数planTrapezoidal和eval。

白色冰激凌的技术专栏 1261

Makerbase ODrive 霍尔电机位置环模式实战:从零配置到精准定位

本文详细介绍了Makerbase ODrive与霍尔电机在位置环模式下的实战配置技巧,涵盖硬件连接、参数设置、编码器配置及位置环调参等关键步骤。通过实际案例解析,帮助用户实现精准定位,特别适合需要高精度运动控制的AGV、自动化设备等应用场景。

weixin_29164091的博客 348

Odrive0.5.1-FOC电机控制 controller.cpp代码实现

这段代码是 ODrive 固件中的一个关键函数,用于抗齿槽效应(Anti-Cogging)校准,是高级电机控制中常用的补偿机制之一。这是 ODrive 0.5.1 中 Controller::update() 的完整实现,是控制核心逻辑的心脏部分,主要完成从输入指令 → 内部处理 → 生成最终力矩指令(torque setpoint)的全过程。这是控制器类(Controller)的函数,用于选择一个编码器作为该控制器的控制目标(如位置闭环控制时的位置反馈来源)。

MOS_JBET的博客 817

从焊接翻车到电机转起来:一个硬件小白的ODrive AP调试全记录(附完整配置参数)

本文记录了硬件新手从焊接翻车到成功调试ODrive AP板的完整过程,详细分享了焊接技巧、固件配置、电机PID调参等实战经验,并附上关键配置参数。通过三十次失败总结出的调试方法,帮助读者快速掌握ODrive AP的调试技巧,实现无刷电机的精准控制。

weixin_30412167的博客 347

【MediaPipe实战】从零构建实时人脸关键点检测与表情分析系统

本文详细介绍了如何使用MediaPipe框架从零构建实时人脸关键点检测与表情分析系统。通过Python代码实现,系统能够精准检测468个3D人脸关键点,并实时分析用户表情,适用于智能交互应用。文章包含环境配置、核心实现、可视化技巧及性能优化等实战内容,帮助开发者快速掌握深度学习在计算机视觉中的应用。

weixin_30836759的博客 73

Odrive驱动板FOC控制实战:从PID调参到多模式应用解析

本文详细解析了Odrive驱动板的FOC控制实战,从基础配置、PID参数调试到多模式应用。重点介绍了如何通过编码器反馈和PID调节实现电机的精准控制,涵盖位置、速度、力矩三种模式,并提供了实用的调试技巧和常见问题解决方案,帮助开发者高效应用FOC技术。

efc123456的博客 179

泛微OA与金蝶云星空深度集成实战:审批与表单双场景解析

本文深入解析泛微OA与金蝶云星空的深度集成实战,聚焦审批流程与表单对接两大核心场景。通过具体案例,详细阐述了如何实现业务数据与审批流程的自动联动,打破数据孤岛,提升企业运营效率与数据一致性,并分享了接口设计、安全策略及实战避坑指南。

4k5l6j7h8的博客 466

3个智能算法让你的开源电机驱动器性能翻倍

ODrive是一个开源的高性能无刷电机驱动器项目,它将复杂的运动控制技术变得触手可及,让普通开发者和机器人爱好者也能实现专业级的电机控制。通过先进的控制算法和灵活的硬件设计,ODrive让廉价的无刷电机具备了工业级的运动控制能力,为机器人、CNC机床和自动化设备提供了强大的驱动解决方案。 ## 项目全景:从电机"驯兽师"到运动"指挥家" 想象一下,无刷电机就像一匹未经驯服的野马,充满了能量但难

gitblog_00807的博客 521

无人机航拍实战:如何用Python代码精准计算目标地理坐标(附完整代码)

本文详细介绍了如何利用Python代码实现无人机航拍图像中目标点的精准地理位置计算。通过解析从像素坐标系到WGS84大地坐标系的完整转换链条,结合相机内参、无人机姿态与地球曲率处理,提供了可直接运行的实战代码,并重点分析了地理位置计算中的常见误差来源与应对策略,助力开发者解决实际项目中的定位漂移问题。

hh234的博客 356

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

ODrive Firmware v0.5.6 — MotionControl模块源码解析

本文解析了ODrive固件v0.5.6版本中MotionControl模块的架构与实现。该模块采用严格实时的多环控制链:控制器(慢环)决策力矩目标,电机对象调度执行,FOC电流环(快环)处理电流采样与变换,估计器提供位置速度反馈。文章详细介绍了各子模块职责,包括轴状态机、轨迹规划、FOC实现、编码器处理等核心组件,并阐述了实时调度机制和信号处理流程。重点分析了轴对象的构造与状态机循环,以及控制器如何实现位置/速度/力矩控制模式转换。通过组件化设计和信号源切换机制,系统实现了灵活的控制策略配置。

weixin_40767138的博客 907

Python爬虫:抓取外卖平台餐厅菜单、价格与评价数据

美团外卖:国内领先的外卖平台之一,提供餐饮外卖、超市配送等服务。饿了么:另一大主流外卖平台,覆盖广泛的餐饮品类。等:国际性的外卖平台。在本文中,我们将以美团外卖为例,展示如何抓取餐厅的菜单、价格和评价等数据。我们会使用Python的爬虫库,如Scrapy和Selenium,来解决抓取任务。本文详细介绍了如何使用Python爬虫抓取外卖平台上的餐厅菜单、价格、评价等信息。我们展示了如何使用Scrapy和Selenium抓取静态与动态网页数据,如何清洗和存储数据,并讨论了如何应对外卖平台的反爬虫机制。

2201_76125261的博客 1498

ODrive无刷电机驱动快速上手:从接线到闭环控制的完整避坑指南

无刷电机(BLDC/PMSM)的精准控制依赖FOC(磁场定向控制)技术,而ODrive作为开源驱动器,将高中低功率的机器人关节、舵轮底盘等场景的驱动方案集成在一块电路板上。上手ODrive的关键并非急于通电,而是理解编码器校准、极对数配置与三相相序等基础概念。从工程实践角度出发,梳理从接线、固件工具链到闭环控制的完整路径,并针对供电不稳、编码器跳数、电机抖动等高频故障给出排查方法,能够帮助开发者快速跨越“接上就冒烟”的坑,实现电机从点动到平滑位置控制的跃迁。

weixin_28278377的博客 211

中台战略-第五章、中台建设方法论

文章目录第五章、中台建设方法论5.1 中台架构整体策略5.2 业务顶层设计5.3 业务中台设计方法论5.3.1 能力支撑是基础5.3.2 中心自治是承载形式5.3.3 3层模型是骨架5.3.4 5步法是指导思想1. 业务抽象2. 高阶设计3. 组件建模4. 开发交付5. 持续运营5.4 数据中台设计方法论5.4.1 总体规划5.4.2 数据集成5.4.3 模型建设5.4.4 通用研发5.4.5 资产管理5.4.6 数据服务5.5 应用向中台迁移的3中途径和方法5.5.1 方法1:新应用替换旧应用5.5.2

沧海之巅的专栏 1460

【调优】OpenClaw调优之模型(tokens)篇

OpenClaw用户常遇四大痛点:规则被无视、API账单暴涨、低效模型选择、记忆丢失。通过/context list命令可解析上下文组成,包括工作区配置、引导参数限制、系统提示词等关键信息。重点需关注Token消耗来源,如核心配置文件、技能工具说明等,避免静默截断。建议精简非必要内容,优化记忆机制,平衡功能与成本。该分析帮助用户减少无效操作,合理控制API支出。

海兰 990

ODrive 关键参数配置实战指南

本文提供ODrive关键参数配置实战指南,详细解析电机类型选择、极对数设置、电流限制等核心配置步骤。通过编码器校准技巧和控制参数调优,帮助用户避免常见故障,实现高性能无刷电机的稳定运行和精确控制。

oauth7security的博客 794

CKS-CN考试之路----11

显然是alpine-b的镜像有libcrypto3-3.1.4-r5。新版本发布老版本会被回收,此时pod只剩下2个container。我们依次测试是哪个镜像里包含libcrypto3。可以看到alpine的pod有3个副本.

Q先生 652

ODrive与Arduino集成:完整代码示例与项目实战

ODrive是一款开源的高性能无刷电机驱动器,专门为机器人、CNC机床和自动化设备设计。本文将详细介绍如何将ODrive与Arduino集成,提供完整的代码示例和项目实战指南,帮助初学者快速上手无刷电机控制。 ## 🎯 为什么选择ODrive与Arduino集成? ODrive提供了精确的电机控制能力,而Arduino作为广泛使用的微控制器平台,两者结合可以快速构建原型系统。ODrive支持

gitblog_00404的博客 617

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ODrive移植keil(九)—— 抗齿槽效应算法

在永磁电机中,即使定子中没有电流通过,也会存在一个电磁转矩,这个转矩叫齿槽力矩(Cogging Torque)。用手转动电机,会感觉到它从当前点“跳跃”并“稳定”在另一个点,电机有“一格一格”的顿挫感(俗称颗粒感)。当电机低速转动时,表现为“一顿一顿”,当电机高速转动时,电机的振动和噪声会更大。某疆早期的2312电机齿槽效应非常大,后来的电机齿槽效应明显变小了。5008电机的齿槽效应小,改善效果不明显,用齿槽效应大的电机测试,改善效果还是很明显的。

loop222的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ODrive 配置 重要参数

Odrive重要参数,odrivetool,配置cpr检查所需的精度,用于在执行编码器偏移校准时编码器的实际输出计算的移动距离和电机开环步进移动距离之间允许的最大误差,超过此误差将报错 ERROR_CPR_OUT_OF_RANGE。类型为 [float],单位为 [A],电机运行的电流范围,根据此值来自动调整电流采样运放的增益,设置后需要保存配置并重启才能生效。类型为 [float],单位为 [turn/s],输入的电机目标转速,如:设置为 1 即表示电机将以 1转/秒的速度旋转。(更快地响应电机位置变化)

GKDf1sh 1870

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: ODrive的CAN通信
下一篇: VESC操作入门(二)——双轮毂电机控制和CAN通信
loop222
博客等级 码龄8年 4092粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值