V-REP教程(一)Joint

1.关节有两个坐标系一个固定,一个会根据关节的变化而变化
这里写图片描述
2.关节模式
这里写图片描述
Passive mode被动模式:关节不直接被控制,与固定连杆类似,可以通过API函数改变其位姿;
Inverse kinematics mode逆运动学模式:平时表现和被动模式相同,可以用来逆运动学求解和几何约束求解;如下图的逆运动学实现
这里写图片描述
Dependent mode依赖模式:在这种模式下,关节位置通过线性方程直接连接(依赖)到另一关节位置。
Motion mode运动模式:这种模式被弃用,也就是不应该再使用。可以使用被动模式和适当更新关节的子脚本来获得类似和更灵活的行为。
Torque or force mode转矩或力模式:在这种模式下,关节是由动力学模拟的。当动态启用时,关节可以自由运动或力/力矩、速度或位置控制。螺旋关节能在扭矩或力模式下操作(但是,通过编程连接旋转和棱柱关节可以获得类似的行为),而球形接头只能在扭矩或力模式下自由。
只有在这个模式下才能设置动力学属性:
这里写图片描述
a.当关节电机(motor)被禁用时,关节是自由关节,只受其极限的限制。
b.当关节电机被启用并且控制(control)被禁用时,关节将尝试达到所期望的目标速度,给定其能够传递的最大转矩/力。当最大扭矩/力非常高时,目标速度立即达到,并且关节在速度控制中操作,否则它以指定的扭矩/力操作,直到达到所需的目标速度(扭矩/力控制)。
c.3种控制模式
Custom control自定义控件:在按钮后面用脚本写算法控制
PID位置控制:PID控制器
这里写图片描述
Spring-damper mode弹簧阻尼控制: 通过力/力矩调制,关节将类似弹簧阻尼器系统。
这里写图片描述
注意:当关节处于被动模式、逆运动学模式或依赖模式时,也可以以混合方式操作:混合操作允许关节以规则的方式操作,在动力学计算中,关节将被处理为位置控制中的电机。
选模式的方法
写脚本来控制可以用被动模式,力矩模式(动力学环境),混合模式(hybrid),逆运动学用逆运动学模式,与其他关节相关联用依赖模式。*
3.关节控制
力矩模式和非力矩模式的区别在于:在力/力矩模式下操作的关节将由物理引擎处理。物理引擎默认的计算步骤比simulation loop高出10倍:simulation loop运行在20Hz,而物理引擎运行在200赫兹。如果需要,完全可以配置默认行为。
loose和precise控制:a loose joint controller will not be able to provide new control values in each possible regulation step,但是控制仍然是可行的。(线程脚本和仿真循环不同步)
注意看一下代码:
非力矩模式:
这里写图片描述
力矩模式的两种情况:
The joint’s motor is enabled, but the control loop is disabled:为了通过外部程序precise控制。也可以用来在力矩模式下松散控制和速度控制,
The joint’s motor is enabled, and the control loop is enabled:当你的关节需要作为弹簧/阻尼器,或者如果你想在vrep中prcise控制你的关节,或者如果你想从外部的应用中loose控制关节的位置时,使用这种模式。
举例:通过matlab控制,the control loop is disabled,实现precise控制
这里写图片描述

If your joint’s motor is enabled, but the control loop is disabled:

物理引擎会提供最大的力矩,关节会快速达到目标速度。或者力矩不够目标速度永远达不到。
编程实现:You can programmatically adjust the target velocity with simSetJointTargetVelocity (or for example, in case of the remote API, simxSetJointTargetVelocity), and the maximum force/torque with simSetJointForce (or for example, in case of the remote API, simxSetJointForce).
在编写一个精确的关节控制时,你应该非常小心,从一个子脚本中,以一个力/力矩模式来连接关节,原因如下:
默认情况下,仿真循环以50ms的时间步长(模拟时间)运行。但是物理引擎将以5ms的时间步长运行,即10倍以上。在每个模拟步骤中调用子脚本,但在每个物理引擎计算步骤中都不调用子脚本。这意味着,如果你从一个子脚本控制一个关节,你将只能为10个物理引擎计算步骤提供一个新的控制值:你将丢失9个步骤。克服这一问题的一种方法是改变默认的模拟设置并指定5ms的模拟时间步长,而不是50ms。这很好,但请记住,所有其他计算(例如视觉传感器、接近传感器、距离计算、IK等)也将运行10倍以上。通常,并最终减慢您的模拟(大多数时候,您不需要对其他计算模块具有如此高的刷新率)。但是物理引擎需要这么高的刷新率。另一个更好的选择是启用您的关节的控制循环,并在一个联合控制回调脚本中处理它的控制,这将被进一步解释。
同步问题的方法:
remote API synchronous mode operates exactly
这里写图片描述

If your joint’s motor is enabled, and the control loop is also enabled:

operate in position control (i.e. PID control), in a spring/damper mode, or in custom control 三种模式,注意同步问题。
4.实验截图:
If your joint’s motor is enabled, but the control loop is disabled:
这里写图片描述
If your joint’s motor is enabled, and the control loop is also enabled
这里写图片描述
passive mode 选择hybrid和不选择hyprid的差别:
这里写图片描述
这里写图片描述
散架
5.其他
不选周期cyclic会持续运动(没有角度限制)
这里写图片描述
Screw pitch 螺距(针对螺旋关节)
Position minimum位置最小值:非循环旋转接头、螺钉或棱柱形接头的最小允许值。
Position range位置范围:非循环旋转接头、螺钉或棱柱接头的变化范围。在位置最小和位置最小+位置范围之间限制这样的关节的位置。
Position:默认位置的旋转角度,初始位姿用这个调整。
IK calculation weight:关节在反向运动学计算中的重量。具有较小重量的关节将具有相对较小的位置变化。置为1.00即可。
Maximum step size最大步长:运动学计算一次,允许的最大位置变化。较小的步长通常会导致较长的计算,但可以更稳定。对于逆运动学计算,这个值可以在逆运动学对话框中被忽略。通常不改变。

Joint dynamics properties

Target velocity:关节目标速度,力矩越大达到越快。
这里写图片描述
Lock motor when target velocity is zero锁定目标速度为0: control loop is disabled,速度控制时使用。
Upper velocity limit:转速上限,可以默认

猜你喜欢

转载自blog.csdn.net/danieldingshengli/article/details/80536342