十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

四足机器人ADAMS与MATLAB联合仿真:建模、控制与调试全流程

四足机器人ADAMS与MATLAB联合仿真:建模、控制与调试全流程 简介一份基于ADAMS与MATLAB的四足机器人联合仿真毕业论文PDF面向机器人、机械工程及自动化方向的学生、研究人员与毕业设计者。论文以ADAMS完成四足机器人三维建模与运动仿真获取步态运动特性与动力学响应再借助MATLAB对仿真数据进行处理与分析提炼出运动学与动力学参数并围绕结果展开讨论。文中构建了从仿真建模、数据处理到结论分析的完整闭环尤其是对ADAMS与MATLAB联合仿真流程的细致展示可为机器人机构设计、控制器开发及性能验证提供可供参考的方法与思路。资源为单个PDF文档大小约10.95MB内容结构清晰、章节完整适合作为课程设计、毕业论文写作或相关课题预研的参考。目前已有234人学习下载可供需要系统了解四足机器人仿真流程的读者直接借鉴。1. 为什么四足机器人项目先做 ADAMS 和 MATLAB 联合仿真最省成本试验机刚通上电四条腿还压在地面上程序里第一次下发正弦摆腿轨迹机身在第二个周期就朝右侧倒下去髋关节力矩曲线直接撞上电机限幅。这是我在四足机器人调试现场见过最多的开局。把这套流程放回 ADAMS 和 MATLAB 联合仿真里情况会完全不同。ADAMS 负责足端接触、关节摩擦和刚性多体动力学求解MATLAB/Simulink 负责步态规划、关节控制律和参数辨识两边每隔一个通信间隔交换关节角度与关节力矩就能在样机通电之前先验证控制器是否稳定。对四足机器人来说髋关节限位、膝关节碰撞、足底打滑这些非线性因素太多单靠简化模型很难暴露问题联合仿真恰恰是成本最低的验证手段。把建模、接口、控制、排错这条路径从零走通能覆盖本科毕业设计、研究生课题也适合准备转机器人控制算法的工程师参考。下面直接按可复现的顺序展开。2. ADAMS 和 MATLAB 联合仿真的分工与四足机器人的接口设计2.1 把动力学求解器交给 ADAMS把控制算法交给 Simulink 的分工逻辑在四足机器人这类包含足端接触、关节限位和大范围转动的系统中单一工具很难覆盖从步态规划到动力学仿真的全部环节。把全身动力学方程用 Simulink 从头搭一遍不是不能做但地面接触、摩擦锥、膝关节限位这些约束一旦叠加模型规模和数值稳定性都会迅速失控。ADAMS 的价值在于把多体动力学当作约束优化问题求解牛顿-欧拉方程、拉格朗日乘子、接触罚函数都由求解器统一处理四足机器人模型的几何、质量、惯量和转动副只需要以物理参数形式给出。MATLAB/Simulink 这侧承担的不是动力学计算而是四足机器人控制算法步态相位表、关节轨迹规划、位置环 PID、重力补偿和力矩限幅。控制器在每个控制周期读取 ADAMS 返回的关节角度和角速度计算完关节力矩再回传给 ADAMS形成一个闭环。这个闭环决定了联合仿真本质上采用 co-simulation 架构ADAMS 与 Simulink 各自维护独立的求解过程每隔一个固定的通信间隔交换一次数据而不是把 ADAMS 模型编译成 Simulink 的连续模块。co-simulation 的优点是两边可以独立调试ADAMS 端不关心控制器内部逻辑Simulink 端也不关心小腿与地面接触到底是怎么计算的缺点则是通信步长如果设置过大零阶保持的力矩指令会让关节响应出现高频抖动。所以要动手先要理解接口上传递的到底是什么。这也是下面状态变量设计的出发点。2.2 用 ADAMS 状态变量定义 plant input 与 plant output把关节力矩和转角精确对上ADAMS 与 MATLAB 之间的接口通过状态变量完成。每一个状态变量在 ADAMS 中对应一个可被表达式引用的量比如关节驱动力矩、关节角度、角速度。联合仿真导出的 ADAMS 模型会把这组变量分成 plant input 和 plant output 两类plant input 从 Simulink 接收力矩指令并施加到铰链上plant output 把 ADAMS 的积分结果送回 Simulink。四足机器人的每条腿如果配置髋 pitch 和膝 pitch 两个驱动关节一个 adams_sub 模块的输入端口数应为 8输出端口数至少应为 16即角度加角速度的完整组合如果还要观察足端接触力输出端口数会继续增加。创建输入状态变量时函数表达式可以先写成常数再把创建好的作用力矩引用它输出状态变量则直接读取两个 marker 之间的相对角不需要再走测量环节。这两个动作在 ADAMS/View 里都可以用命令完成以左后腿为例# 定义左后腿髋关节的力矩输入状态变量初始为 0 state variable create state_variable_name.quad.tau_lh_hip \ function0.0 commentleft hind hip torque input # 将上面的状态变量挂到髋关节转动副上的单作用力矩 force create direct single_component \ single_component_name.quad.force_lh_hip \ i_part_name.quad.thigh_lh \ j_part_name.quad.torso \ action_onlyon \ functionVARVAL(.quad.tau_lh_hip)这段命令的含义是先在状态变量里预留一个名为 tau_lh_hip 的存储位再用 VARVAL 函数把它读入单作用力矩Simulink 端写进来的数值会直接变成这个力矩的实际大小。需要注意 i_part_name 和 j_part_name 的顺序顺序直接决定力矩正方向如果写反四足机器人在仿真开始后几秒内就会出现腿部弯折方向相反的现象。输出侧的变量可以用类似方式创建但真实项目里更常见的做法是从 Joint 的测量中直接生成因为测量值自带坐标系和单位不容易把符号搞错。命名建议采用“变量类型_腿编号_关节名”的格式例如 tau_fl_hip 表示左前髋关节力矩输入q_fr_knee 表示右前膝关节角度输出。这样在配置 ADAMS/Controls 导出的变量列表时端口顺序会清楚很多。2.3 通信间隔怎么取从关节带宽反推 ADAMS 求解器步长通信间隔是联合仿真里最重要的时间参数它决定 ADAMS 求解器每积分多长时间把状态交给 Simulink 一次。四足机器人的髋膝关节经过减速器后闭环带宽通常在 50 到 150 Hz 之间按采样定理反推通信间隔取 1 到 2 ms 就能覆盖大多数控制需求。间隔越小力矩指令的更新越接近连续但 ADAMS 端会被频繁中断仿真总时长明显变长。实际工程中可以从下面这张经验表起步。通信间隔适用场景仿真开销常见现象0.5 ms关节带宽 ≥300 Hz、关注冲击响应的实验极大仿真速度下降明显适合短时程验证1–2 ms电机加减速器后的常规关节50–150 Hz中等初调首选2 ms 起步比较稳5 ms 以上慢速行走、只验证步态时序较小零阶保持明显髋关节可能出现锯齿状力矩曲线判断通信间隔是否偏大的方法很直接在 Simulink 里同时记录关节力矩指令和 ADAMS 返回的关节角度如果角度曲线在力矩切换点附近出现周期性与通信间隔同步的毛刺就把通信间隔减半再跑一次。毛刺消失说明原设置偏大保留减半后的值如果减半后仍然存在问题更可能在 ADAMS 端的接触刚度或摩擦系数不应继续压缩时间步长。通信间隔还需要与 Simulink 的求解器步长保持 1:5 到 1:10 的关系否则采样点错位会引入额外相位延迟这一点到第四章配置求解器时会再次用到。3. 在 ADAMS 里搭四足机器人动力学模型坐标系和状态变量一次到位3.1 按“躯干-髋-大腿-小腿”的顺序创建模型从一条腿复制出另外三条四足机器人的运动链是固定的躯干作为基座四个髋关节分布在躯干的四个角每条腿由髋、大腿、小腿三段组成。ADAMS 建模顺序建议沿着“先躯干、再髋、再大腿、再小腿”的链条方向进行避免创建转动副时 i_part 和 j_part 选错对象。具体操作上先在 ADAMS/View 中新建模型用 rigid body 创建躯干几何体再把四个髋关节安装点放在躯干坐标系下对称的位置。一条腿搭好并验证关节转动方向后再复制是效率最高的做法。以左前腿为例创建躯干和第一个髋关节时要注意躯干位置应离开地面一段距离让后续的小腿末端能够落在足底接触平面上。命令行等价操作如下。# 创建四足机器人模型与躯干 model create model_namequad_robot part create rigid_body name_and_position part_name.quad_robot.torso \ adams_id1 \ location0.0,0.40,0.0 \ orientation0.0,0.0,0.0 # 创建左前髋的旋转副Z 轴作为转轴方向 marker create marker_name.quad_robot.fr_hip_marker \ location0.16,0.37,0.13 \ orientation0.0,0.0,0.0 joint create joint_name.quad_robot.fr_hip_hinge \ adams_id11 \ i_part_name.quad_robot.torso \ j_part_nameground \ location0.16,0.37,0.13这段命令只完成了躯干和髋关节的建立后面的大腿、小腿还需要分别创建 rigid body 并用旋转副连接到髋关节上。创建旋转副时ADAMS 会根据 marker 方向确定转轴如果转轴没有和后续力矩方向对齐仿真中会出现大腿绕错轴旋转。建议在创建 Joint 后打开信息窗口核对转轴坐标系标号确保与状态变量中 AZ 函数使用的 marker 完全一致。复制腿会带来隐藏成本。复制后要逐个修改 body 名称、marker 名称和 joint 的 i_part、j_part否则状态变量表达式会引用到同一个对象上。联调阶段端口数正确但四条腿曲线完全重复绝大多数是漏改了复制对象的名称。3.2 质量、惯量、限位和摩擦参数给四足机器人取一组能稳定跑通的初始值模型参数直接决定仿真能不能跑得动。质量太小足底接触力不足步态像在悬浮质量太大关节力矩会过早撞上限幅。一组从 6 kg 级四足样机简化下来的参数可以作为起点。部件质量 kgIxx kg·m²Iyy kg·m²Izz kg·m²躯干5.80.0450.120.10大腿0.550.00080.00120.0012小腿0.320.00060.00090.0009关节限位要按实际机械结构给出防止仿真中出现膝关节反关节。四足惯性工程中一组常用限位如下。关节最小角度最大角度初始角度髋 pitch-45°50°0°髋 roll-15°15°0°膝 pitch-120°0°-30°摩擦参数不能一开始就给到真实值。真实关节摩擦往往比模型大很多如果用实测值启动仿真拧紧力矩会造成高频颤振。我一般把关节铰链的摩擦转矩设为 0.05 N·m阻尼设为 0.05 N·mm·s/deg等模型跑通后再逐步加大。足底与地面采用 ADAMS 里的 Solid 到 Solid 接触接触刚度取 1e5 N/m、阻尼 20 N·s/m、静摩擦系数 0.8、动摩擦系数 0.6。刚度 1e5 对应单腿约 60 N 载荷时产生 0.6 mm 穿透量这个量级下稳定较好继续增大刚度通信间隔往往得缩到 1 ms 以下仿真会明显变慢。3.3 把输出角度和输入力矩写成状态变量规避联合仿真中的符号错误状态变量的函数表达式直接决定 ADAMS 送给 Simulink 的数据是什么。输出角度优先用 AZ 函数在两个 marker 之间取值不要直接用 Part 的全局旋转角这样得到的是相对角抗坐标系漂移能力更强。以左前髋 pitch 为例# 左前髋 pitch 输出角度单位度 state variable create state_variable_name.quad.q_fr_hip \ functionAZ(.quad.fr_hip_i, .quad.fr_hip_j) \ guess0.0 # 左前髋 pitch 角速度输出 state variable create state_variable_name.quad.dq_fr_hip \ functionWZ(.quad.fr_hip_i, .quad.fr_hip_j, .quad.fr_hip_i) \ guess0.0AZ 返回从 marker i 的局部坐标看 marker j 的方位角WZ 返回两者沿当地 Z 轴的相对角速度。使用这两个函数时marker 名字要写完整不要多空格模型里如果有两个相近的名字先打开 Marker 列表确认对象防止 ADAMS 自动补全到错误的 marker 上。角度单位也要统一ADAMS 默认输出角度单位是度MATLAB 控制算法里几乎都用弧度。建议在 ADAMS 端直接换算成弧度或者在 MATLAB Function 块的第一行统一乘以 pi/180二选一不要两边各做一次。输入力矩变量的创建和 2.2 节一致初始值写 0 即可。建议把四条腿的输入变量集中建在一个组里使用相同前缀这样第四章 ADAMS/Controls 导出界面里变量列表按名称排序后一眼就能区分输入和输出。4. 用 ADAMS/Controls 导出可被 MATLAB 调用的 adams_sub 联合仿真插件4.1 controls 插件加载与 Plant Export 参数设置ADAMS 的联合仿真接口由控件工具栏提供正式名称是 ADAMS/Controls。打开 ADAMS/View 后先进入 Plugins Plugin Manager确认 Controls 处于 Load 状态如果没有加载选中并点击 Apply。这一步经常被跳过后果是右键菜单里找不到 Plant Export 选项后续所有配置无从开始。确认插件加载后在 Plugins Controls Toolkit 中选择 Plant Export弹出对话框中的参数按下表填写。参数推荐值说明File Prefixquad_plant生成文件统一前缀MATLAB 脚本也叫这个名字Target SoftwareMATLAB联合仿真的目标平台Analysis Typenon_linear四足带接触和摩擦必须选非线性Platformx64与操作系统和 MATLAB 位数保持一致Adams/Solver ChoiceCWindows 下优先选 C兼容性更好Communication Interval0.005单位秒即 5 ms初调后按需缩小C 与 Fortran 的选择会影响 ADAMS 与 MATLAB 之间的数据通道形式。C 生成的 adams_sub 编译文件在常见 Windows MATLAB 版本下更容易识别Fortran 在部分编译器环境中会出现找不到动态库的报错。实验室里如果只有 Fortran 编译器选 Fortran 也能跑只是排查问题时参考资料更少。Communication Interval 与 2.3 节的表格对应初次跑步态建议填 0.005先确认曲线形态正常再往 0.001 方向压缩。提示Communication Interval 的单位是秒0.005 就是 5 ms。初次跑通前不要追求 0.001先把整条链路验证完再缩小。4.2 在 MATLAB 中执行 .m 文件把 adams_sub 模块拖进 Simulink导出完成后工作目录下会出现 quad_plant.m、quad_plant.adm、quad_plant.cmd 以及若干编译文件。其中 quad_plant.m 是 MATLAB 脚本作用是把 ADAMS 模型注册到当前工作区并提供 adams_sub 模块的调用环境。打开 MATLAB把当前目录切到导出文件夹按顺序执行两行命令。%% 启动四足机器人联合仿真的 MATLAB 端 cd(C:\sim\quad_export); quad_plant; % 运行脚本在工作区装载 ADAMS plant adams_sys; % 打开 ADAMS 官方给出的参考模型里面有 adams_subquad_plant 脚本运行成功后命令行会提示 ADAMS plant 已初始化。adams_sys 打开的是一个参考模型里面已经带好了 adams_sub 模块直接复制或拖动到自己的 Simulink 模型即可。如果执行 quad_plant 时提示找不到函数先检查当前目录是否在 MATLAB 路径中再确认 ADAMS 安装目录下的 controls 文件夹里 matlab 子目录已加入 MATLAB 路径。常见安装布局是 C:\MSC.Software\Adams\2020\controls\matlab不同版本号略有差异按实际安装位置添加。%% 将 ADAMS controls 目录加入 MATLAB 搜索路径按实际安装路径调整 addpath(genpath(C:\MSC.Software\Adams\2020\controls\matlab)); savepath;这段命令把 ADAMS 控制接口永久保存到 MATLAB 路径中下次打开 MATLAB 不用重复添加。addpath 之后要重新运行 quad_plant否则刚添加的路径不会立即生效。部分 Windows 系统还需要把 ADAMS 安装目录中的 win64 文件夹加入系统 PATH 环境变量否则启动仿真时 MATLAB 能找到 mex 文件但仍无法定位 ADAMS 求解器。4.3 adams_sub 的端口数量、通信步长与求解器设置核对表把 adams_sub 拖入 Simulink 后第一步不是连信号线而是双击模块查看掩码参数里的端口数量和变量名列表。四足模型如果定义了 8 个输入状态变量和 16 个输出状态变量adams_sub 上应当出现 8 个输入端口和 16 个输出端口。端口数量与状态变量列表不一致时回到 ADAMS/Controls 导出界面重新勾选变量不要在 Simulink 端强行改端口宽度那解决不了根本问题。通信间隔在 adams_sub 掩码中也需要再次确认。导出时填入的 0.005 会写进模型但 Simulink 端仍然可以修改。Simulink 求解器建议设置为 fixed-step discrete基础步长取 0.0005 或 0.001仿真时长按步态周期设置一般 2 到 2.5 秒足够观察两个完整步态周期。求解器步长与通信间隔的比例维持在第 2 章说的 1:5 到 1:10采样错位对控制环路的相位影响就可以忽略。检查项数值或要求说明adams_sub 输入端口数与 plant input 数量一致8 个力矩输入adams_sub 输出端口数与 plant output 数量一致16 个角度/角速度输出Simulink 求解器fixed-step discrete与通信间隔配合Simulink 基础步长0.0005–0.001 s取通信间隔的 1/5 到 1/10Communication Interval0.002–0.005 s初期用 0.005收敛后改小这张表可以作为每次新建联合仿真模型的模板。比对照表更实用的校验方法是先在 Simulink 里给所有 adams_sub 输入端口接一个常量阶跃信号让所有力矩初始为零仿真 0.5 秒检查输出端口角度是否维持在初始姿势附近。这一步确认通信链路已经打通再开始接控制器可以把“模型没连对”和“控制律写错”两类问题完全分开。5. Simulink 编写四足 trot 步态控制律闭环接回 ADAMS 动力学模型5.1 用 MATLAB Function 块生成 trot 步态四腿相移表四足机器人通常先用 trot 步态验证因为 trot 在低速下对静态稳定要求最低对角腿同步让控制程序只需要区分两组相位。trot 的相位关系为左前腿和右后腿同相位右前腿和左后腿同相位两组之间相差半个周期。腿编号名称相位偏移同步对象1左前 LF0腿 42右前 RF0.5腿 33右后 RH0.5腿 24左后 LH0腿 1在 Simulink 中用 MATLAB Function 块实现步态生成器函数输入是仿真时间和腿编号输出是该腿在当前时刻的目标关节角。下面这个函数按 0.5 的摆动占比生成髋关节和膝关节轨迹。function q_des trot_trajectory(time, leg_id, gait_period, hip_amp, knee_amp) % trot 步态目标轨迹生成器 % time: 仿真时钟, leg_id: 1~4 % gait_period: 单步周期, hip_amp/knee_amp: 髋/膝摆动幅度(rad) if leg_id 1 || leg_id 4 phase 0.0; else phase 0.5; end t_local mod(time phase * gait_period, gait_period); swing_ratio 0.5; q_des zeros(2, 1); if t_local swing_ratio * gait_period s t_local / (swing_ratio * gait_period); % 0-1 摆动相 q_des(1) hip_amp * sin(pi * s); % 髋关节前摆 q_des(2) -knee_amp * sin(pi * s) - 0.2; % 膝关节抬起 else s (t_local - swing_ratio * gait_period) / ((1 - swing_ratio) * gait_period); q_des(1) -hip_amp * sin(pi * s); % 支撑相髋关节后蹬 q_des(2) -0.2; % 膝关节支撑 end end这段代码的核心逻辑是把一个步态周期切成摆动相和支撑相。摆动相中髋关节按正弦从零摆到正幅值再回到零膝关节先抬起再放下支撑相中髋关节反向摆动模拟向后蹬地。mod 函数负责把时间折叠到周期内phase 让两组腿错开半个周期。hip_amp 和 knee_amp 是弧度值如果在 ADAMS 端没有做单位换算先乘以 pi/180。q_des 是 2 行 1 列向量顺序固定为髋、膝与 adams_sub 输出端口的排列顺序保持一致。5.2 位置 PID 加重力前馈的关节力矩控制器有了目标轨迹还需要一个能跟踪它的关节控制器。四足机器人的髋膝关节经过减速器后位置环用 PD 再加静态重力前馈属于最稳妥的初始方案。重力前馈可以从 ADAMS 静态分析中获取也可以先不加单纯用 PD 控制试跑观察静置状态下关节角度是否出现明显下垂再补上补偿项。function tau leg_controller(q_d, q, dq_d, dq, g_est) % 关节位置 PD 重力前馈 % q_d,dq_d: 2x1 目标角/角速度; q,dq: 2x1 实际角/角速度 % g_est: 2x1 重力补偿力矩 Kp [140; 110]; Kd [3.0; 2.2]; tau Kp .* (q_d - q) Kd .* (dq_d - dq) g_est; end代码中 Kp 和 Kd 是按 6 kg 级四足样机估出的一组初始值。含义是髋关节位置误差 1 弧度需要 140 N·m 的回复力矩膝关节为 110 N·mKd 给角速度误差 1 rad/s 提供约 3 N·m 的阻尼。向量乘法用 .* 是为了让两个关节使用各自独立的增益。四足模型自由度多端到端整定增益容易顾此失彼初调时建议先把髋和膝的 Kp 设成同一组值再用表格逐项调整。关节KpKd调整方向髋 pitch1403.0出现高频振铃时同时降 Kp 和 Kd膝 pitch1102.2支撑相下沉则提高 Kp上限不宜超过 200控制器输出的是 2 行 1 列关节力矩向量后续要展开并接到 adams_sub 对应输入端。如果扭矩方向与 ADAMS 中的力矩正方向相反整个闭环会变成正反馈表现为轨迹越追越偏。遇到这种现象先别改控制器回第 3 章检查状态变量里的 AZ 函数顺序。5.3 配置固定步长求解器、通信区间与仿真时长得到可复现的曲线控制器搭好后把 Simulink 求解器显式设为固定步长 discrete仿真步长优先选 0.001 s仿真结束时间设为 2 到 2.5 s。在模型配置参数里打开信号存储方便在 Simulink 端直接观察关节角度曲线。adams_sub 掩码中的 Communication Interval 保持 0.005 s使仿真步长与通信间隔的比值稳定在 1:5。运行仿真后优先检查三个信号髋关节角度跟随是否有明显滞后、膝关节在摆动相是否出现抖动、四条腿的力矩曲线是否符合 trot 相序。adams_sub 端口较多可以在 Simulink 里给信号线增加标注减少排查时长。仿真结束后切到 ADAMS PostProcessor查看机体横滚角、俯仰角和足端接触力。这几个量反映整机稳定性不适合放在 Simulink 里重建。若横滚角在支撑相快速发散多半是足端落地位置和期望轨迹不匹配先去调 5.1 里的 hip_amp 和相位偏移不要上来就加大 Kp。注意adams_sub 掩码中的 Communication Interval 可以单独修改不需要重新运行 ADAMS/Controls 导出流程但修改后要重新启动仿真才生效。6. 联合仿真实战初始化失败、轨迹对不齐和仿真太慢的排查技巧6.1 “无法启动 adams_plant”和端口维度不一致的排查顺序联合仿真最常见的报错集中在第一次运行时。“无法启动 adams_plant”通常不是 MATLAB 的问题而是 ADAMS 的 controls 编译文件没被找到。依次检查系统 PATH 是否包含 ADAMS 安装目录下的 win64 文件夹、MATLAB 搜索路径是否加入 controls\matlab 子目录、当前 MATLAB 位数与平台参数 x64 是否一致。端口维度不一致则回到状态变量列表用 adams_sub 掩码里的变量名和导出时的 plant input/output 列表逐项比对先看数量后看顺序。顺序错了表现为角度曲线在腿间互相串线这种错误在曲线图上很隐蔽数值上却会越跑越偏。6.2 用单腿摆动代替整机调试先检查坐标系和力矩方向不要一上来就让四条腿同时跑步态。把除左前腿以外的三组关节力矩全部置零只在 Simulink 里给左前髋发振幅 10 度、周期 1 秒的正弦指令运行 2 秒。左前腿会顺势摆动观察角度输出是否存在 180 度反相若反相回到 ADAMS 修改 AZ 函数的 marker 顺序不要只在 Simulink 里乘负号。单腿验证通过后依次验证右后腿、右前腿、左后腿确保四条腿各自独立。这条步骤看起来慢实际省下的是整机发散后无法定位来源的时间。6.3 仿真速度拉不回来的三个裁剪手段以及一个减少噪声的变量接法仿真速度不足一般有三个原因足底接触采用 Solid 到 Solid 求解、输出变量列表过多、通信间隔过小。接触类型改成平面到实体的单面接触求解效率会明显上升穿透稍大但在步态验证阶段可以接受。输出列表中不观察的关节变量全部取消尤其不要导角加速度。通信间隔从 1 ms 放大到 5 ms 能换来近一个量级的提速但要重新检查力矩曲线是否出现高频毛刺。如果这些都排查过仍然慢再检查 adams_sub 的进程通信方式共享内存通常比 TCP/IP 快切换后要重新启动整个仿真才生效。角速度信号尽量在 ADAMS 端用 WZ 函数直接输出而不是在 Simulink 里对角度做差分。把角度差分的滤波节点去掉后整条步态曲线的相位延迟会减少大约一个控制周期后面再调 Kd 时不会被滤波拖后腿也就不用再因为噪声大而反复压低关节增益。本文还有配套的精品资源点击获取
返回列表