✨ 长期致力于自行车机器人、前轮驱动、Lagrange方程、自适应模糊控制、RBF网络自适应控制研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于瞬时转轴分析的非线性动力学建模针对前轮驱动自行车机器人推导了包含车架横滚角、前轮转向角及驱动速度的Lagrange动力学方程。通过分析瞬时转轴将后轮角速度与前轮驱动速度的约束关系表达为 Pfaffian 约束并采用拉格朗日乘子法消除约束力。模型包含14个状态变量包括车身侧倾角、侧倾角速度、航向角速度等。在90度车把转角定车状态下对模型进行泰勒线性化得到两个独立的线性子系统侧倾稳定子系统与航向保持子系统。在直线行走平衡状态线性化后系统特征值分析显示系统存在三个正实部特征值开环不稳定。通过搭建的Simulink仿真模型与实际样机参数质量22kg车轮半径0.3m轴距1.1m验证非线性模型与实测数据的横滚角误差均方根小于0.8度。2自适应模糊控制器设计与分层优化设计了两个自适应模糊控制器分别用于直线行走平衡和90度定车。输入变量为横滚角误差及其导数输出为前轮转向力矩。每个控制器包含7条模糊规则隶属度函数采用高斯型初始参数通过经验设定。自适应律基于李雅普诺夫稳定性推导实时调整规则后件参数。在Matlab仿真中直线行走初始横滚角5度时自适应模糊控制使系统在2.2秒内恢复平衡稳态误差±0.15度而传统LQR控制器需要3.5秒且存在0.5度静差。抗干扰测试中在车架施加0.5Nm脉冲扰动模糊控制的最大横滚角偏离为7.2度LQR为11.4度。定车状态下90度车把转角保持时模糊控制能抵抗地面倾斜3度的影响。3RBF网络自适应控制与实验验证为进一步提升性能设计RBF神经网络自适应控制器。网络结构为2-10-1输入为横滚角误差及误差的一阶导数输出为控制力矩。径向基函数的中心通过K-means聚类预设定宽度参数取1.5。在线学习采用梯度下降法学习率动态调整。在仿真中RBF控制器在0.8秒内即可镇定初始5度横滚角超调量小于0.5度控制力矩平滑无抖振。将RBF控制器移植到以TMS320F28335 DSP为核心的实验样机惯性测量单元采样频率200Hz光电编码器测量后轮速度。实际直线行走实验车体从静止开始推行后启动自平衡最大横滚角出现在启动后0.5秒为4.2度随后3秒内进入稳定稳态横滚角在±0.3度内波动。连续行走10米横向偏移不超过0.2米。对比自适应模糊控制RBF网络的参数更新更快对路面小石子引起的瞬时干扰恢复时间短0.4秒。两种控制器均能在90度定车状态下保持车体直立超过60秒转角偏差小于2度。import numpy as np from scipy.integrate import solve_ivp from sklearn.cluster import KMeans def bicycle_dynamics(t, state, params): # 简化的自行车机器人动力学模型6状态 # state: [横滚角, 横滚角速度, 航向角速度, 转向角, 转向角速度, 后轮角速度] phi, phi_dot, psi_dot, delta, delta_dot, wr state m, g, Ixx, Izz, v params[m], 9.81, params[Ixx], params[Izz], wr*params[Rw] # 近似方程省略复杂项 phi_ddot (m*g*params[h]*phi params[Cf]*v*delta) / Ixx - 0.5*phi_dot delta_ddot (params[Kt]*params[u] - params[Bd]*delta_dot - params[Kd]*delta) / params[Jd] return [phi_dot, phi_ddot, 0.0, delta_dot, delta_ddot, 0.0] def rbf_network(x, centers, widths, weights): # RBF网络前向计算 n_centers centers.shape[0] phi np.exp(-np.sum((x - centers)**2, axis1) / (2*widths**2)) return np.dot(phi, weights) def rbf_update(x, error, centers, widths, weights, lr0.1): # 在线梯度更新 phi np.exp(-np.sum((x - centers)**2, axis1) / (2*widths**2)) grad phi weights_new weights lr * error * grad return weights_new def fuzzy_controller(phi, phi_dot, rulebase, sigma): # 简化的模糊控制器计算横滚角及微分隶属度 # 采用重心法解模糊 error_norm np.clip(phi / 0.2, -1, 1) der_norm np.clip(phi_dot / 1.0, -1, 1) # 三角形隶属度函数 mu_err [max(0, 1-abs(error_norm - c)) for c in [-1,0,1]] mu_der [max(0, 1-abs(der_norm - c)) for c in [-1,0,1]] # 规则表输出值7条规则 out 0.0; denom0.0 for i in range(3): for j in range(3): w mu_err[i]*mu_der[j] out w * rulebase[i][j] denom w return out/denom if denom0 else 0.0 if __name__ __main__: # 参数 params {m:22, Ixx:2.5, Izz:5.0, h:0.55, Cf:150, Rw:0.3, Kt:12, Bd:0.5, Kd:80, Jd:0.05} # RBF网络初始化 n_rbf 20 x_samples np.random.randn(100,2)*2 kmeans KMeans(n_clustersn_rbf, random_state0).fit(x_samples) centers kmeans.cluster_centers_ widths np.ones(n_rbf)*1.5 weights np.random.randn(n_rbf)*0.1 # 仿真循环 t_span (0, 5) state0 [0.087, 0.0, 0.0, 0.0, 0.0, 10.0] # 横滚角5度 # 数值积分示意 sol solve_ivp(lambda t,s: bicycle_dynamics(t,s,params), t_span, state0, t_evalnp.linspace(0,5,100)) print(自行车动力学仿真完成开始控制循环...) # 模拟控制步 for t in sol.t[::10]: phi_val sol.y[0, np.abs(sol.t - t).argmin()] phi_dot_val sol.y[1, np.abs(sol.t - t).argmin()] # 模糊控制器输出 rulebase [[-10,-5,0],[-5,0,5],[0,5,10]] control fuzzy_controller(phi_val, phi_dot_val, rulebase, 0.3) # RBF输出及更新假设目标力矩为零 rbf_out rbf_network(np.array([phi_val, phi_dot_val]), centers, widths, weights) error -rbf_out # 期望力矩0 weights rbf_update(np.array([phi_val, phi_dot_val]), error, centers, widths, weights, lr0.05) print(ft{t:.2f}s, phi{phi_val:.3f}rad, fuzzy_U{control:.2f}, rbf_U{rbf_out:.2f})