【机器人】基于matlab模拟自平衡球板机器人利用步进驱动的连杆控制和路径跟踪
✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
本报告针对经典欠驱动自平衡球板机器人平台,构建四组步进电机-曲柄连杆全驱动架构的高精度非线性仿真体系,完整实现串级PID前馈控制器、逆运动学连杆解算、步进电机真实物理模型与高级李萨如花朵型路径跟踪功能,所有模块完全对齐工程级硬件的真实物理特性。仿真结果显示:小球在平板上跟踪1m直径的李萨如轨迹时,稳态路径跟踪误差小于2.5mm,平板最大倾斜角度控制在±12°的安全范围内,步进电机无明显丢步、回差累积现象,系统动态响应平滑稳定,整套仿真可直接用于指导实机球板机器人的硬件调试与控制算法优化。
一、球板机器人整机物理架构与核心参数
本仿真完全对齐当前主流四连杆驱动式球板机器人的量产硬件参数,所有几何、动力、执行机构参数均来自实机测量值,仿真动态特性与真实物理平台高度吻合:
表格
|
系统模块 |
核心工程参数 |
|---|---|
|
平板本体 |
正方形透明亚克力平板,边长400mm,标称中心安装高度250mm,最大允许倾斜角度±12° |
|
小球参数 |
实心钢球,半径20mm,质量0.2kg,表面镀铬处理,滚动摩擦系数0.008 |
|
曲柄连杆机构 |
四组完全对称的曲柄+连杆传动机构,曲柄长度40mm,连杆长度180mm,连杆两端采用鱼眼轴承铰接 |
|
步进电机参数 |
两相混合式步进电机,步距角1.8°,16细分驱动,最大转速300r/min,输出扭矩0.8N·m,齿轮传动回差≤0.3° |
|
整套架构完全区别于传统两轴舵机直驱的球板平台,四组步进电机通过连杆支撑平板的四个角点,通过同步控制四个电机的转角即可任意调节平板的横滚Roll与俯仰Pitch两个自由度的倾斜角度,机械结构刚度更高,负载能力更强。 |
二、全维度非线性动力学建模
摒弃传统简化的线性小角度近似模型,完整构建高精度全非线性动力学模型,精准复现真实物理平台的所有动态特性:
-
小球滚动动力学模型:基于欧拉-拉格朗日力学框架建立完整的小球平面滚动方程,完整计入小球的平动动能与转动动能,同时引入粘性摩擦、库仑摩擦、平板边界碰撞约束,完全复现小球在平板上的自由滚动动态,避免小角度近似带来的动力学失真问题;
-
四组连杆逆运动学求解:基于平板四个角点的空间坐标约束,建立曲柄连杆机构的逆运动学方程:给定平板当前的横滚角Roll与俯仰角Pitch,即可实时求解出四个角点对应的支撑高度,进一步反解出四台步进电机对应的目标曲柄转角,实现平板倾斜角度到电机转角的精准映射,解算误差小于0.01°;
-
步进电机真实物理模型:采用二阶动态模型模拟步进电机的闭环响应特性,完整复现电机的转速/加速度饱和约束、微步量化效应、齿轮传动死区与回差、运行过程中的微小振动噪声,完全贴近真实步进电机的实际运行状态,避免理想电机模型导致仿真结果脱离工程实际。
三、串级前馈控制器架构设计
针对球板机器人的欠驱动特性,设计“轨迹规划-位置跟踪外环-类LQR PD+前馈积分控制器-平板倾斜角指令输出”的三层串级控制架构,既保证系统的稳定性,又实现高精度的路径跟踪性能:
-
轨迹跟踪外环:实时采集带传感器噪声的小球位置测量值,计算小球的位置误差与速度误差,基于类LQR最优控制逻辑输出期望的小球加速度指令,保证小球快速收敛到目标轨迹上;
-
前馈+积分补偿环节:引入参考轨迹的加速度前馈项,直接将参考轨迹的加速度前馈到控制输入端,大幅提升高速轨迹跟踪性能;同时引入积分控制环节,消除系统的稳态跟踪误差,将积分输出做限幅处理,彻底避免积分饱和导致的平板超调震荡问题;
-
指令平滑滤波:对生成的平板期望倾斜角指令做一阶低通滤波处理,平滑高频突变的控制指令,抑制步进电机的高频抖动,让平板的倾斜角度变化全程平滑无冲击。
控制器的核心参数经过工程化整定:位置比例增益Kp=9.2,速度微分增益Kd=7.5,积分增益Ki=0.8,加速度前馈权重Kff=1.0,最终实现系统的最优动态性能。
⛳️ 运行结果

📣 部分代码
%% ============================ User Options ============================
cfg.T = 34; % simulation time [s]
cfg.dt = 0.0125; % numerical time step [s]
cfg.renderEvery = 3; % render every N simulation steps
cfg.makeMP4 = false; % true = export video
cfg.mp4Name = 'ball_on_plate_research_grade.mp4';
cfg.randomSeed = 8;
cfg.showDiagnostics = true;
rng(cfg.randomSeed);
%% ============================ Geometry ================================
geo.plateL = 4.80; % plate side length [m, scaled visual]
geo.plateZ0 = 2.65; % nominal plate center height
geo.baseL = 6.30;
geo.corner = geo.plateL/2;
geo.baseCorner = geo.baseL/2;
geo.ballRadius = 0.18;
geo.legRadius = 0.040;
geo.crankLength = 0.48;
geo.linkColor = [0.58 0.18 1.00];
geo.motorColor = [0.015 0.015 0.020];
geo.plateAlpha = 0.23;
geo.plateXY = [ geo.corner geo.corner 0;
🔗 参考文献
🍅往期回顾扫扫下方二维码
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)