在本人实际测试ROS Noetic与Franka Emika Panda的过程中,经历过因力控而抖得如同筛子一般的情况,遇到过这样的坑,对于新手而言,只要依照步骤一步步去进行操作,便能够……
在本人实际测试ROS Noetic与Franka Emika Panda的过程中,经历过因力控而抖得如同筛子一般的情况,遇到过这样的坑,对于新手而言,只要依照步骤一步步去进行操作,便能够较为轻松地躲开这类比较常见的问题。
1. 刚度矩阵K值暴力拉满导致系统振荡
操作的路径是,去机器人的描述文件,像是franka_controller.yaml这个文件,然后找到阻抗控制节点,接着对其中的stiffness参数进行修改。实际测量之后推荐的数值是K等于500N/m,并且笛卡尔坐标系下的三个轴是保持一致状态的。给出这样推荐的理由是,当数值低于300的时候,响应会显得过于柔软了,而当数值高于800的时候,就会出现高频 oscillations的情况。在关节空间当中,数值是可以调整到800的,不过这需要配合着阻尼才行。
在此为新手提供避坑提示,经常会出现报错情况,比如“控制周期超限”,或者电机发出异常响声。其核心原因在于,K值过高从而把编码器噪声放大了。快速解决办法是,把K值削减一半,与此同时将阻尼比设定为0.8至1.0倍的临界值。
2. 阻尼矩阵D与刚度K的匹配计算
操作的路径是,在终端那里执行rosparam set这个操作,将其设置为 /impedance_controller/damping_ratio 0.7 ,接着要调用compute_damping.py脚本,使其能够自动生成对角矩阵,另外还有配比公式,其内容为D = 2 阻尼比 sqrt(K 等效质量)。等效质量选取末端那重达1.2千克的负载之际,K等于500。由此,D约等于20.7乘以根号下500与1.2的乘积,其结果为34.3牛·秒/米。
【新手需防入坑】,呈现的状况是:力的跟踪显得迟缓,或者出现反弹且超出调节范围。致使出现差错根源在于:仅仅对K进行调整,却未改动D。给出的解决方式是:运用脚本以批量方式进行设置,对于阻尼比而言,推荐取值范围在0.7至1.2之间,处于重载场景时选取下限值,处于精密装配场景时选取上限值。
3. 两种实操方案对比与场景取舍
方案A,也就是基于力的阻抗这一方案,它会实时把六维力传感器进行读取,适用于装配以及打磨的情况,其具有带宽高的特点,然而容易受到噪声的污染。方案B,即基于位置的阻抗方案,它会利用编码器来反推力矩,适用于轨迹跟踪,具备稳定性好的特性,但是响应会慢3至5毫秒。
【新手防错】,高频率出现的完整错误提示:“ Force sensor saturation”,也就是力达到饱和状态 → 一套完整流程:1. 马上立刻进行急停操作;2. 查看检查力传感器的量程范围(是不是超过了±30N);3. 把期望达成的接触力降至10N;4. 开启启用低通滤波功能(截止频率设定为20Hz);5. 临时采用改用方案B作为替代手段。
针对超高动态场景(像搏击机器人冲击大于200N/s这种情况)此方法并不适用 ,建议更换成直接力控以及加速度环。你的阻抗控制器是不是还存在“隔夜抖”的状况呢?在评论区给出报错截图 ,我会帮你进行一对一的诊断。
微信扫一扫
还没有评论呢,快来抢沙发~