普通网友 2024-03-31 11:47 采纳率: 0%
浏览 6

Adams六轴机械臂模型,为什么无输入力矩时,转速不是逐渐趋近于0

在做MATLAB和Adams联合仿真。
Adams导入六轴机械臂模型,设置steel材质,然后通过布尔操作简化为7个部件,添加6个转动副,不添加驱动和力矩,仿真的时候为什么不是因为重力,最后达到全部垂下来的状态,而是每个关节都在疯狂转动?
还要设置什么,才能让它在无输入驱动时,速度逐渐趋近于0?而不是每个关节疯狂乱转
(图中测量的是关节3的转角)

img

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-31 11:47
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据问题描述,可以确定存在两个问题:(1)在无输入驱动时,机械臂关节转动速度没有逐渐趋近于0,而是疯狂转动;(2)机械臂模型仿真结果与实际情况不符,每个关节应该会随着重力作用而垂下来。 问题解答: 问题1:在无输入驱动时,机械臂关节转动速度没有逐渐趋近于0,而是疯狂转动 根据问题描述,此问题可能由以下因素引起: (1)缺少摩擦力:在机械臂的转动副中,摩擦力是一个很重要的因素,缺少了这个因素可能会导致关节难以停止运动。 (2)缺少阻尼:阻尼可以将振动能量转化成热能,缺少了阻尼可能会导致关节反复振动。 (3)时间步长太大:时间步长过大会导致数值仿真过程中出现不稳定情况,关节不断震荡停不下来。 (4)初值条件问题:在机械臂某些关节位于不稳定位置时,可能会导致关节持续运动。 因此,在解决此问题时,需要考虑加入摩擦力、阻尼以及适当调整时间步长。同时,需要检查初值条件是否正确。 具体解决方法: (1)在转动副中加入摩擦力,可以使用以下形式的阻力模型:
    F = -C*V
    

    其中,F表示关节所受到的摩擦力,C为摩擦系数,V为关节转动速度。 (2)加入阻尼,可以使用以下形式的阻尼模型:

    F = -B*V
    

    其中,F表示关节所受到的阻尼力,B为阻尼系数,V为关节转动速度。 (3)调整时间步长,可以根据机械臂模型的复杂程度来确定,建议采用0.001s至0.01s的时间步长。 (4)检查初值条件,确保机械臂处于稳定状态。 下面给出使用MATLAB和Adams进行机械臂仿真的代码示例:

    % 此处假设已经导入Adams模型,并设置了材质以及建立关节
    % 在每个转动副中添加摩擦力
    C = 1;  % 摩擦系数
    for i = 1:6
        j = sprintf('joint%d',i);
        k = adams.controls.find(j);
        adams.controls.set('coulombfrc',k,'on');
        adams.controls.set('coulombfc',k,C);
    end
    % 在每个转动副中添加阻尼
    B = 0.1; % 阻尼系数
    for i = 1:6
        j = sprintf('joint%d',i);
        k = adams.controls.find(j);
        adams.controls.set('vcoulombfrc',k,'on');
        adams.controls.set('vcoulombfc',k,B);
    end
    % 调整时间步长
    adams.time.dt = 0.001;
    % 检查初值条件
    % 开始仿真
    adams.cosimulate.start();
    % 分析仿真结果,查看是否已经解决问题1
    

    问题2:机械臂模型仿真结果与实际情况不符,每个关节应该会随着重力作用而垂下来 根据问题描述,可能存在以下原因: (1)机械臂模型中重力方向有误:在模型中,需要设置重力方向与实际方向一致。 (2)初始条件设置有误:在模型中设置初始条件时,需要保证机械臂处于平衡状态。 (3)转动副模型过于简化:简化模型可能会导致丢失关键的物理性质,从而造成仿真结果与实际情况不符。 因此,在解决此问题时,需要确认重力方向、设置正确的初始条件,并尽量使用真实的转动副模型。 具体解决方法: (1)在ADAMS中设置重力方向,可以使用以下代码示例:

    adams.environment.setgravity(0, 0, -9.8);
    

    其中,重力方向为负Z轴。 (2)设置正确的初始条件,保证机械臂处于平衡状态。 (3)尽量使用真实的转动副模型,可以提高仿真结果的精度。 下面给出使用MATLAB和Adams进行机械臂仿真的代码示例:

    % 此处假设已经导入Adams模型,并设置了材质以及建立关节,同时设置了重力方向与初始条件
    % 确认模型是真实的转动副模型
    % 开始仿真
    adams.cosimulate.start();
    % 分析仿真结果,查看是否已经解决问题2
    

    总结: 本文介绍了在MATLAB和Adams联合仿真中,解决机械臂模型仿真结果与实际情况不符的问题。对于机械臂模型仿真中出现的其他问题,也可以使用类似的方法一一解决。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月31日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度