尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32+TMC2209四路步进电机驱控一体方案:从硬件设计到运动控制实践

STM32+TMC2209四路步进电机驱控一体方案:从硬件设计到运动控制实践 这次我们来看一个面向嵌入式电机控制领域的实用项目基于 STM32 微控制器和 TMC2209 步进电机驱动器的四路步进电机驱控一体方案。这个方案的核心价值在于它将高性能的微控制器与先进的步进电机驱动芯片深度集成实现了从信号处理到功率驱动的完整闭环特别适合需要多轴协调、高精度、低噪音和紧凑设计的应用场景比如桌面级3D打印机、小型CNC雕刻机、自动化检测设备或机器人关节控制。对于嵌入式开发者和硬件爱好者而言最关心的问题通常是这个方案能不能跑起来硬件门槛高不高代码和电路是否成熟稳定本文将从项目核心能力、硬件选型、软件架构、驱动配置、运动控制实现到实际调试带你完整走通一个四轴步进电机控制系统的搭建与验证流程。如果你正在为多电机同步控制、驱动噪音或丢步问题烦恼这个集成了智能驱动功能的方案值得深入一试。1. 核心能力速览能力项说明核心芯片STM32F4/F1系列微控制器 TMC2209步进电机驱动器控制路数四路步进电机独立控制支持同步运动通信接口UART配置TMC2209、GPIO步进脉冲与方向、可选SPI/I2C扩展传感器驱动特性StealthChop2静音技术、StallGuard4无传感器堵转检测、微步细分最高256细分控制模式标准脉冲方向控制、UART配置寄存器、支持电流调节与节能模式硬件集成驱控一体板设计减少外部连线提高系统可靠性适合场景多轴联动设备3D打印机、CNC、自动化装置、教育实验平台、机器人关节控制开发环境Keil MDK / STM32CubeIDE / VSCode PlatformIO基于HAL库或标准库关键优势低噪音运行、高精度微步控制、集成堵转保护、硬件成本可控2. 适用场景与使用边界这个驱控一体方案主要面向需要精确控制多个步进电机的嵌入式系统开发者。它非常适合以下场景桌面级制造设备如FDM 3D打印机X/Y/Z/E四轴、激光雕刻机、小型CNC其对运动平稳性和噪音有较高要求。自动化与机器人多自由度机械臂、XY平台、自动送料装置、相机云台等需要多轴协调运动的设备。教学与实验作为嵌入式系统、电机控制、实时操作系统课程的理想实践平台涵盖GPIO、定时器、UART、运动算法等多个知识点。原型开发在产品原型阶段快速验证多电机控制逻辑和驱动性能避免驱动板与控制器分离带来的布线复杂和干扰问题。需要注意的使用边界功率范围TMC2209典型驱动电流为2A RMS峰值约2.8A适合42/57步进电机等中小型电机。若需驱动更大电流电机如86电机需选择TMC5160等高压大电流驱动或外接MOSFET。运动复杂度对于需要极高动态性能如高速启停、复杂轨迹规划的场景需评估STM32的算力特别是浮点运算和中断响应是否足够必要时需优化算法或选用更高性能型号如STM32F4/F7。实时性要求虽然STM32能处理多路脉冲输出但若对多轴插补如直线、圆弧的实时性要求极高可能需要结合DMA或定时器从模式来减轻CPU负担甚至考虑使用专业运动控制芯片。散热设计驱控一体板需注意TMC2209的散热。连续高细分、大电流运行时芯片温度会升高PCB布局需考虑散热焊盘和风道。3. 环境准备与前置条件在开始软件开发和硬件调试前需要准备好以下环境和物料。硬件清单主控芯片STM32F103C8T6性价比高或STM32F407VET6性能更强带FPU。建议准备一个核心板或自己绘制的最小系统板。驱动芯片4片 TMC2209-LA 或 TMC2209-V3.0。注意采购正品山寨芯片性能不稳定。步进电机4个42或57步进电机根据负载选择电流和扭矩。电源24V/5A以上的开关电源用于电机驱动。同时需要一组5V或3.3V电源为STM32和TMC2209逻辑部分供电。驱控一体PCB可根据开源设计自行打样或使用模块化组合STM32核心板TMC2209模块x4。PCB设计需注意电机电源、逻辑电源的隔离以及UART走线。调试工具ST-Link V2调试器、USB转TTL串口模块用于配置TMC2209及调试输出、万用表、示波器可选用于观察脉冲波形。软件环境IDEKeil uVision5 (MDK-ARM) 或 STM32CubeIDE。两者均支持STM32的开发和调试。开发包STM32CubeMX用于图形化配置引脚和生成初始化代码及对应系列的HAL库/LL库。串口助手如SecureCRT、Putty、MobaXterm或任意一款你习惯的串口工具用于查看日志和发送指令。TMC2209配置工具TMCL-IDE 或使用第三方基于UART的配置库方便读写驱动器寄存器。知识储备熟悉STM32的GPIO、定时器特别是输出PWM/脉冲模式、UART外设的基本操作。了解步进电机的基本原理步距角、细分、电流。理解TMC2209的工作模式StealthChop, SpreadCycle和关键寄存器如电流、细分、使能、堵转检测阈值。4. 硬件设计与关键电路驱控一体设计的核心在于合理的PCB布局和电路连接确保信号完整性和电源稳定性。系统框图STM32 MCU | |--- GPIO/TIM1_CH1 - TMC2209(1) (STEP, DIR) |--- GPIO/TIM1_CH2 - TMC2209(2) (STEP, DIR) |--- GPIO/TIM1_CH3 - TMC2209(3) (STEP, DIR) |--- GPIO/TIM1_CH4 - TMC2209(4) (STEP, DIR) | |--- UART2_TX - TMC2209(1..4) (UART RX, 通过单线或总线) |--- UART2_RX - TMC2209(1..4) (UART TX, 需处理冲突) | |--- GPIO (ENABLE, MS1, MS2等如果不用UART配置)TMC2209关键电路连接要点电源分离电机驱动电源VM, 12-36V与逻辑电源VCC, 3.3V/5V必须使用磁珠或0欧电阻进行隔离并在靠近芯片处放置足够容量的滤波电容如100uF电解100nF陶瓷。UART配置网络多片TMC2209可通过单线UARTSingle Wire UART并联。将所有TMC2209的PDN_UART引脚连接在一起并连接到STM32的一个UART_TX引脚。同时每个TMC2209的UART_RX引脚需通过一个二极管如1N4148隔离后连接到STM32的UART_RX防止输出冲突。STM32的UART需配置为开漏模式并加上拉电阻。步进与方向信号STEP和DIR信号连接STM32的GPIO或定时器输出通道。建议使用定时器的PWM模式生成STEP脉冲通过调节ARR和CCR寄存器轻松控制频率速度和脉冲数位置。电流检测与设置TMC2209通过VREF引脚电压设置电机电流。通常使用一个电位器或STM32的DAC输出控制。公式I_rms VREF * 0.707 / (RS * 1.414)其中RS是采样电阻通常0.11欧姆。在驱控一体板上可以用精密电阻分压或DAC提供稳定的VREF。散热与接地TMC2209的PowerPad必须良好焊接至PCB的大面积铜皮上并尽可能多打过孔连接到底层地平面以辅助散热。5. 软件架构与驱动层实现软件部分分为三层硬件抽象层HAL驱动、TMC2209驱动层、运动控制层。5.1 硬件抽象层配置使用STM32CubeMX首先用CubeMX快速生成基础工程。选择你的STM32型号。时钟树配置系统时钟到最高频率如STM32F103到72MHzF407到168MHz。定时器配置以TIM1为例模式选择4个通道为“PWM Generation CHx”。预分频器PSC和自动重载值ARR根据所需脉冲频率计算。例如要产生10kHz的PWM若时钟为72MHz则PSC71ARR99频率72MHz / ((711)*(991)) 10kHz。脉冲宽度CCR设置为ARR/2产生50%占空比的方波STEP信号通常需要50%占空比。极性根据硬件设计选择高电平有效或低电平有效。UART配置启用一个UART如USART2。波特率设置为115200或更高TMC2209支持。字长8位。停止位1位。硬件流控制无。高级设置如果使用单线UART需要将TX引脚模式设置为“Open Drain”并在外部加上拉电阻如4.7kΩ到3.3V。GPIO配置配置4个DIR方向引脚为推挽输出模式。配置4个ENABLE使能引脚为推挽输出模式初始化为高电平禁用或低电平使能根据硬件逻辑。生成代码选择IDE为MDK-ARM或STM32CubeIDE。5.2 TMC2209驱动层实现编写一个tmc2209.c/.h文件封装与驱动器的UART通信和寄存器操作。// tmc2209.h 部分定义 typedef struct { UART_HandleTypeDef *huart; GPIO_TypeDef *en_port; uint16_t en_pin; uint8_t slave_addr; // TMC2209的UART地址默认为0 } TMC2209_HandleTypeDef; // 初始化函数 HAL_StatusTypeDef TMC2209_Init(TMC2209_HandleTypeDef *htmc); // 写寄存器函数 HAL_StatusTypeDef TMC2209_WriteRegister(TMC2209_HandleTypeDef *htmc, uint8_t reg_addr, uint32_t data); // 读寄存器函数 HAL_StatusTypeDef TMC2209_ReadRegister(TMC2209_HandleTypeDef *htmc, uint8_t reg_addr, uint32_t *data); // 设置电流函数 void TMC2209_SetCurrent(TMC2209_HandleTypeDef *htmc, uint16_t current_ma); // 设置微步细分函数 void TMC2209_SetMicrosteps(TMC2209_HandleTypeDef *htmc, uint16_t microsteps); // 启用/禁用StealthChop静音模式 void TMC2209_EnableStealthChop(TMC2209_HandleTypeDef *htmc, FunctionalState state);关键寄存器操作示例设置256细分和电流// 假设驱动器地址为0 #define TMC2209_SLAVE_ADDR 0 #define TMC2209_REG_GCONF 0x00 #define TMC2209_REG_IHOLD_IRUN 0x10 #define TMC2209_REG_CHOPCONF 0x6C void TMC2209_Init_Motor(TMC2209_HandleTypeDef *htmc) { // 1. 配置GCONF寄存器例如使能内部参考电压、设置UART地址等 uint32_t gconf_data (1 6); // 示例使能内部参考电压 TMC2209_WriteRegister(htmc, TMC2209_REG_GCONF, gconf_data); // 2. 配置CHOPCONF寄存器设置256细分 (MRES0b1000) uint32_t chopconf_data (0b1000 24); // MRES[3:0] 8 (256微步) chopconf_data | (0b01 15); // TBL[1:0]1, 选择斩波时序 TMC2209_WriteRegister(htmc, TMC2209_REG_CHOPCONF, chopconf_data); // 3. 配置IHOLD_IRUN寄存器设置运行电流和保持电流 // IRUN[4:0] 20 (约1.0A RMS, 需根据VREF和RS计算) // IHOLD[4:0] 10 (保持电流为运行电流的50%) uint32_t ihold_irun_data (20 0) | (10 8); TMC2209_WriteRegister(htmc, TMC2209_REG_IHOLD_IRUN, ihold_irun_data); // 4. 可选启用StallGuard堵转检测 // uint32_t sgconf_data ...; // TMC2209_WriteRegister(htmc, TMC2209_REG_SGCSCONF, sgconf_data); }UART通信需遵循TMC2209的单线协议计算CRC8校验。这部分代码较长核心是构造一个8字节的数据帧并发送。5.3 运动控制层实现运动控制层负责生成步进脉冲序列控制电机的速度、位置和加减速。// motor_control.h typedef struct { TIM_HandleTypeDef *htim; // 用于产生PWM的定时器句柄 uint32_t tim_channel; // 定时器通道 GPIO_TypeDef *dir_port; // 方向引脚端口 uint16_t dir_pin; // 方向引脚 int32_t current_pos; // 当前位置脉冲数 int32_t target_pos; // 目标位置脉冲数 uint32_t current_speed; // 当前速度Hz uint32_t target_speed; // 目标速度Hz uint32_t accel; // 加速度Hz/s // ... 其他状态变量 } StepperMotor_HandleTypeDef; // 初始化电机控制结构体 void StepperMotor_Init(StepperMotor_HandleTypeDef *hmotor, TIM_HandleTypeDef *htim, uint32_t channel, GPIO_TypeDef *dir_port, uint16_t dir_pin); // 设置目标位置相对或绝对 void StepperMotor_MoveTo(StepperMotor_HandleTypeDef *hmotor, int32_t position, bool is_absolute); // 设置目标速度连续旋转 void StepperMotor_SetSpeed(StepperMotor_HandleTypeDef *hmotor, uint32_t speed_hz); // 启动/停止电机 void StepperMotor_Start(StepperMotor_HandleTypeDef *hmotor); void StepperMotor_Stop(StepperMotor_HandleTypeDef *hmotor); // 定时器中断服务函数中调用实现梯形或S型加减速算法 void StepperMotor_Update(StepperMotor_HandleTypeDef *hmotor);梯形加减速算法简述在定时器中断如1kHz中根据当前速度、目标速度、加速度和剩余距离计算下一个周期的脉冲频率并动态修改定时器的ARR值。核心是管理速度曲线避免失步和过冲。6. 功能测试与效果验证完成软硬件搭建后需要系统性地测试各项功能。6.1 基础通信与驱动器配置测试目标验证STM32能否通过UART正确读写TMC2209寄存器。操作将电机电源断开只连接逻辑电源和UART。在main函数初始化后调用TMC2209_ReadRegister读取某个寄存器如GCONF。通过串口助手打印读取到的值。预期结果能读到正确的默认值例如GCONF默认值可能为0x00000000。若读回0xFFFFFFFF或0x00000000且CRC错误则检查UART接线、上拉电阻、单线模式配置。成功标准连续多次读取同一寄存器返回值稳定且符合预期。6.2 单轴电机基本运动测试目标验证单个电机能否按照指令旋转。操作连接一个电机到对应的TMC2209输出端。上电在代码中调用StepperMotor_Init初始化一个电机对象。调用StepperMotor_SetSpeed设置一个较低速度如200 Hz。调用StepperMotor_MoveTo让电机转动固定的步数如200步对应电机一转。调用StepperMotor_Start启动电机。预期结果电机平稳旋转无明显噪音和振动转动角度准确。观察点方向电机转向是否符合DIR引脚设置。噪音在低速下TMC2209的StealthChop模式应非常安静。如果噪音大检查电流设置是否过大或过小以及CHOPCONF寄存器中的TBL设置。发热运行一段时间后手摸TMC2209芯片不应烫手。如果过热降低运行电流IHOLD_IRUN或检查散热。6.3 微步细分与静音效果测试目标验证高细分下的运动平滑性和静音效果。操作通过UART将TMC2209的微步细分设置为256MRES0b1000。让电机以相同的转速如60 RPM运行。分别测试全步1细分、16细分和256细分。用耳朵听电机运行声音用手感受电机机身的振动。预期结果细分越高电机运行声音越小振动越轻微低速平稳性越好。256细分下低速应几乎听不到声音。成功标准高细分模式下电机运行明显比低细分模式更安静、平滑。6.4 四轴同步运动测试目标验证四个电机能否独立且同步受控。操作初始化四个StepperMotor_HandleTypeDef对象分别绑定到四个定时器通道和GPIO。编写一个简单的同步运动序列电机1和2同时正转10圈电机3和4同时反转5圈。使用一个全局定时器或系统滴答定时器在中断中同时调用四个电机的StepperMotor_Update函数。预期结果四个电机按照预设的轨迹同时开始、同时结束或按设定时间差运动过程协调。观察点同步性观察电机是否同时启动。由于是在同一个中断里更新理论上同步性很好。CPU负载在调试器中查看StepperMotor_Update函数的执行时间确保中断执行时间不会过长影响其他任务。电源稳定性四电机同时启停时用万用表监测24V电源电压是否有较大跌落。如有跌落需增大电源容量或增加输入电容。6.5 StallGuard堵转检测测试目标验证TMC2209的无传感器负载检测功能。操作通过UART配置SGCSCONF寄存器启用StallGuard并设置一个适当的灵敏度阈值SGT。让电机带动一个负载如一个旋钮旋转。在电机运行时用手强行阻止电机轴转动模拟堵转。在代码中循环读取DRV_STATUS寄存器检查SG_RESULT位或SG标志。预期结果当发生堵转时SG_RESULT值会急剧变化或SG标志被置位。代码可以检测到这一变化并触发停止或报警动作。成功标准系统能可靠地检测到人为制造的堵转事件响应时间在可接受范围内如100ms内。7. 接口API与上层应用集成驱控一体板通常作为执行单元需要接收上位机PC、工控机、主控制器的指令。设计一个简洁的通信协议至关重要。7.1 串口指令协议设计示例定义一个简单的ASCII码指令集通过串口与STM32通信。指令格式: [命令][轴号][参数]\n 示例: “M1 R1000\n” -- 电机1相对运动1000步 “M2 A-500\n” -- 电机2绝对运动到-500位置 “S3 500\n” -- 设置电机3速度为500 Hz “G\n” -- 开始运动触发所有已规划的运动 “STOP\n” -- 急停所有电机 “?POS\n” -- 查询所有电机当前位置在STM32端在串口中断服务函数中解析这些指令并调用对应的运动控制函数。7.2 状态反馈与错误上报除了执行指令STM32还应定时或按需向上位机反馈系统状态。// 状态反馈数据帧示例 (JSON格式便于上位机解析) { pos: [1024, -300, 0, 7800], // 四个电机当前位置 speed: [200, 200, 0, 150], // 四个电机当前速度 status: idle, // 系统状态: idle, running, error error: 0, // 错误码: 0-无错误, 1-堵转, 2-过流, 3-通信超时 temp: [45, 42, 38, 40] // 四个驱动器温度如果支持读取 }可以通过一个定时器每100ms向上位机发送一次状态信息。7.3 与GRBL/Marlin兼容性考虑如果你的项目目标是替代3D打印机主板可以考虑实现GRBL或Marlin协议的子集。这意味着需要解析G代码如G0, G1, G28, M104等并将G代码指令转换为底层电机的运动指令。这是一个更复杂的任务但生态兼容性好。8. 资源占用与性能观察在项目实际运行中需要关注MCU的资源使用情况。8.1 CPU占用率主要消耗点StepperMotor_Update函数中的加减速计算特别是浮点运算。如果使用STM32F1无FPU大量浮点运算会显著增加中断处理时间。优化建议使用定点数运算代替浮点数。简化加减速算法例如使用预计算的速度表。降低运动控制更新频率如从1kHz降到500Hz前提是能满足最高速度要求。对于F4/F7系列启用FPU并确保编译器优化选项正确-mfpufpv4-sp-d16 -mfloat-abihard。8.2 内存占用静态内存全局变量、结构体数组。四路电机控制结构体本身占用不大。栈空间注意中断嵌套的深度。如果运动控制中断中调用了其他函数如UART发送状态可能导致栈溢出。在启动文件或链接脚本中适当增加栈大小。8.3 定时器资源四路独立的PWM输出至少需要定时器的4个通道或者使用4个独立的定时器资源更紧张但编程简单。一个高级定时器如TIM1, TIM8可以同时生成4路带死区的PWM非常适合此应用。还需要一个基本定时器如TIM6, TIM7或系统滴答定时器SysTick作为运动控制的中断源。8.4 通信带宽UART配置TMC2209的通信量不大主要在初始化阶段。与上位机通信的串口波特率建议设置为115200或以上以保证状态反馈的实时性。9. 常见问题与排查方法在开发和调试过程中你可能会遇到以下问题。问题现象可能原因排查方式解决方案电机完全不转1. 电源未接通或电压不足。2. TMC2209使能(EN)引脚状态不对。3. STEP引脚无脉冲信号。4. 驱动器故障或接线错误。1. 测量VM和VCC电压。2. 用逻辑分析仪或示波器检查EN、STEP、DIR引脚电平。3. 检查电机线圈接线A, A-, B, B-是否与驱动器输出对应。1. 确保电源正常。2. 检查代码中EN引脚的初始化电平。3. 检查定时器PWM输出配置用示波器看STEP是否有波形。4. 重新焊接或更换TMC2209。电机振动大、噪音响1. 电流设置不正确过大或过小。2. 微步细分设置过低如全步。3. StealthChop模式未启用或配置不当。4. 机械负载过重或共振。1. 测量VREF引脚电压计算实际电流。2. 读取CHOPCONF寄存器确认细分设置。3. 检查GCONF寄存器中en_spreadcycle位。1. 调整VREF至合适电流通常为电机额定电流的70%。2. 将细分设置为16或以上。3. 启用StealthChop模式GCONF寄存器相关位。4. 尝试稍调整速度避开共振点。电机丢步位置不准1. 加速度设置过高电机扭矩不足。2. 电源功率不足大负载时电压跌落。3. 机械阻力过大。4. STEP脉冲频率超过电机或驱动器极限。1. 观察丢步是否发生在加速段。2. 监测电机运行时的电源电压。3. 手动转动电机轴感受阻力。1. 降低加速度参数。2. 更换更大功率电源在电源输入端并联大电容。3. 检查机械结构润滑导轨或同步带。4. 降低最高运行速度。UART无法配置TMC22091. UART引脚模式配置错误未配置为开漏。2. 单线UART网络的上拉电阻缺失或阻值不对。3. 驱动器UART地址错误。4. CRC校验计算错误。1. 用逻辑分析仪抓取UART_TX线上的波形。2. 检查原理图确认上拉电阻通常4.7kΩ已连接。3. 尝试广播地址0xFF或逐个地址测试。4. 核对CRC8算法与TMC2209手册是否一致。1. 将UART_TX引脚配置为开漏输出模式并确保外部上拉。2. 添加上拉电阻。3. 确认硬件上CFG1/CFG2引脚的电平决定了UART地址。4. 使用可靠的CRC8库或仔细调试代码。多电机同步性差1. 各电机StepperMotor_Update调用存在时间差。2. 定时器中断被高优先级中断打断。3. 电机负载差异大导致实际速度不同。1. 在中断入口和出口打点用逻辑分析仪测量各电机更新间隔。2. 检查中断优先级配置。1. 确保所有电机状态更新在同一个中断服务函数中完成。2. 将运动控制中断设置为最高优先级或足够高。3. 对负载重的电机适当增加电流。驱动器发热严重1. 电机电流设置过大。2. 散热不良PCB布局问题。3. 电机长时间处于静止但保持电流IHOLD过高。4. 工作在SpreadCycle模式且斩波频率设置不当。1. 测量VREF电压和芯片温度。2. 触摸PCB上驱动器周围的铜皮温度。1. 适当降低运行电流IRUN和保持电流IHOLD。2. 改善散热增加散热片、风扇优化PCB布局多打过孔加大铜皮面积。3. 电机停转后可以延时降低保持电流或完全关闭ENABLE高。4. 在满足性能前提下优先使用StealthChop模式。10. 最佳实践与使用建议基于项目经验总结以下几点建议可以帮助你更稳定、高效地使用这套驱控一体方案。分阶段开发与测试不要一次性焊接所有四路驱动。先焊接并调通一路包括电源、UART通信、基础运动。成功后再复制到其他三路可以有效隔离问题。重视电源设计电机驱动是噪声源。务必在24V电源入口处放置大容量电解电容如470uF和多个104陶瓷电容进行退耦。逻辑电源3.3V/5V最好使用独立的LDO或DC-DC从24V转换得到并与电机驱动电源通过磁珠隔离。保留调试接口在PCB上预留串口调试USART1的焊盘或接口方便打印日志。预留一个LED和按键用于指示状态和手动测试。软件配置参数化将电机参数最大速度、加速度、电流值、细分定义为宏或存储在Flash中便于修改和校准而无需重新编译程序。实现故障安全机制在代码中监控电源电压通过ADC过低时触发急停。启用TMC2209的StallGuard功能实现堵转保护。添加看门狗IWDG防止程序跑飞。急停按钮应能硬件切断使能信号或触发MCU的外部中断。文档与版本管理记录每次硬件改版PCB版本号和软件固件版本。特别是TMC2209的配置参数寄存器值应与固件版本对应保存。考虑扩展性在PCB上预留一些GPIO、ADC、I2C、SPI接口方便后续连接限位开关、温度传感器、显示屏等外设。这个STM32TMC2209四路驱控一体方案将高性能32位MCU的灵活性与先进步进驱动芯片的智能性相结合提供了一个高性价比、高集成度的多轴运动控制解决方案。它最大的优势在于通过软件可配置的静音、防抖和堵转检测功能显著提升了设备的用户体验和可靠性。对于开发者而言最先应该验证的是UART配置驱动器和单轴基础运动这是整个系统的基石。最容易踩的坑通常是电源噪声和UART单线通信的配置。一旦调通你可以在此基础上扩展更复杂的运动规划算法、网络接口或图形界面打造属于自己的高性能运动控制平台。
返回列表