CoppeliaSim笔记(3):关于关节的三种模式

本文详细介绍了CoppeliaSim中力矩/力模式下控制LBR/iiwa机械臂的方法。在力矩模式下,机械臂依据动力学模拟运动,涉及三种情况:电机禁用、电机启用且控制环关闭、电机启用且控制环打开。通过设置目标速度和最大力矩,可以实现速度控制和力矩控制。此外,还探讨了PID控制和弹簧—阻尼控制,并指出了解决仿真步长与物理引擎步长不一致的两种策略。
摘要由CSDN通过智能技术生成

参考资料:

在CoppeliaSim中,关节有三种不同的模式可以选择:

  1. Passive mode:在该模式下,用户可以直接通过设置关节角度(sim.setJointPositonor sim.setSphericalJointMatrix)来控制关节位置。在这个过程中,CoppeliaSim不会考虑任何动力学特性。设置关节角度后,CoppeliaSim会直接显示结果,不需要考虑任何的中间过程(比如速度和力矩)。

在这里插入图片描述

  1. Dependent mode:在该模式下,关节不能主动控制其位置。

  2. Torque or force mode:在该模式下,关节依靠动力学模块实现仿真。与第一种模式不同,力矩/力模式下,CoppeliaSim需要考虑中间过程,即关节是在存在力矩和速度的情况下实现运动的,关节位置是通过力矩和速度的计算间接获得的。

在这里插入图片描述

前两种关节模式比较简单,这里不再讨论。本文主要研究如何在力矩/力模式下,控制机械臂的运行。

在力矩/力模式下,存在三种情况:

  1. Motor disabled :在该情况下,关节是自由的,仅受到其自身约束。也就是说,我们无法通过设置力矩和速度来控制它(毕竟电机没有工作)。

  2. Motor enabled && Control loop disabled :在该情况下,需要设置两个参数,分别为目标速度和最大力矩。关节在会在最大力矩下,尝试达到期望的目标速度。但是当关节达到目标速度后,关节力矩就不一定是最大力矩了。 当关节力矩很大时,目标速度会很快到达。

在这里插入图片描述

在该情况下,关节可以使用两种控制方式:

  • 速度控制:设置好关节最大力矩,目标速度可在编程时调用sim.setJointTargetVelocity设置。 相当于在给定最大力矩的情况下,在每个控制周期内设置需要的关节速度,从而控制机械臂的运行。

  • 力矩控制:编程时通过调用sim.setJointTargetVelocitysim.setJointMaxForce来控制关节的最大力矩和速度。需要注意,力矩的设置值必须为正。若要实现相反方向的力矩,只需要设置负的速度即可。

    注:新版本没有sim.setJointForce

  1. Motor enabled && Control loop enabled :CoppeliaSim内置了两种控制算法,分别为PID控制和弹簧—阻尼控制,也可以通过Joint callback functions设计自己的控制算法。在这种情况下,我们可以很简单的实现位置控制,只需要调用sim.setJointTargetPosition即可。 力矩和速度会根据控制算法自动计算。

在这里插入图片描述

  • PID控制:速度由PID算法计算,力矩为常值。

    在这里插入图片描述

  • 弹簧—阻尼控制:速度为常值,力矩通过算法计算。
    在这里插入图片描述

另外需要注意,CoppeliaSim的仿真步长默认是50ms,但是物理引擎的步长是5ms,即两者的步长是不一致的。子脚本是在CoppeliaSim仿真时被调用的,即调用周期为50ms。这就意味着子脚本被调用一次时,物理引擎可以计算10次。

有两种方法解决这个问题:

  • 将CoppeliaSim的仿真步长修改为5ms,与物理引擎的步长保持一致。
  • 使用Joint callback functions

官方推荐使用第二种方法,但是当使用远端API时,只能使用第一种方法。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值