平行夹爪组件(Parallel Gripper)

平行夹爪组件。用于实现由多个平移夹爪头组成的夹爪,并进行打开和关闭的运动控制,以实现物体抓取的模拟。通过统一控制,实现夹爪的同步运动。平行夹爪能够抓取带有Assemble Component的组装体。

Parallel Gripper 组装

夹爪组件是一个复合组件,其运动模块包括夹爪组件Parallel Gripper,夹爪手指Parallel Finger以及平行运动组件Parallel Joint

组装先决条件

需要先判断一个模型是否满足组装Parallel Gripper运动组件的条件,并非所有模型都可以作为夹爪进行运动模拟。首先夹爪的手指必须是单独的模型,可独立进行运动。通常夹爪必须包含2个及以上的手指,因此手指之间也必须相互独立。不满足上述条件的模型将不能进行夹爪的运动控制。

Parallel Finger 生成

夹爪组件中可以包括多个夹爪手指对象,所有夹爪手指对象能够被Parallel Gripper组件统一调度,来实现夹爪的开启和关闭。因此需要在每个夹爪手指的物体上添加Parallel Finger组件,参考运动组件添加与相关说明。 添加完成夹爪手指组件后,平行运动组件Parallel Joint也会被自动添加。 两个组件添加完成后,参考平行运动组件部分中关于Parallel FingerParallel Joint的组装介绍进行组装。

Parallel Gripper 添加

添加该组件可参考运动组件添加与相关说明

  • 需要注意的是,强烈推荐Parallel Gripper组件挂载在夹爪手指的父物体上,方便相关功能的使用。

  • 如果完成了上一步Parallel Finger 生成,并且Parallel Gripper组件挂载在夹爪手指的父物体上,可以使用组件中Add Fingers in Children按钮快速将夹爪手指与夹爪进行组装。当然,用户也可以通过拖拽手动进行组装。

  • 点击Create New Finger可以在子级创建空物体并挂载Parallel Finger组件,后续用户再将夹爪手指网格挂载上去。该方法适用于从零开始搭建模型的情况。

Attach Anchor 自动生成

添加Parallel Gripper组件后,将会在该物体的子级创建一个空物体并挂载Attach Anchor,作为夹爪夹取物体后物体附着的锚点。

Parallel Gripper 设置

Parallel Finger/Parallel Joint 设置

可参考平行运动组件部分中关于组件设置的部分进行配置。

Parallel Gripper 设置

参数名参数内容参数说明

Close Time

Float

设置夹爪关闭/开启时间。如果夹爪与夹爪手指已经组装好,那么这个值会同步到Parallel FingerClose Time

Grip Type

限定夹爪可抓起的物体。为配合使用,被夹取的物体需要挂载Assemble Component组件,并设置为相应的Grip Type

Nothing

任何物体都不可被夹取

Everything

任何物体都可被夹取

Default/Assemble Object/ Gripper

标记为Default/Assemble Object/ Gripper的物体可被夹取

Attach Distance

Float

设置夹取距离。只有在这范围内的物体可被夹取

Attach Anchor

AttachAnchor

设置夹爪夹取物体的锚点

Gripper Finger List

Parallel Finger

统一调度的夹爪手指列表。这部分的设置可参考本章Parallel Finger 组装

Gripper State

Open/Close

显示当前夹爪的状态为打开或关闭

Close/Open Gripper

Button

用于调试夹爪开合的按钮

用户可以通过UMTConfig.asset自定义Grip Type的值,参考UMT Config 说明

Attach Anchor 设置

用户可以通过调整该锚点的位置,来模拟实际场景中夹爪夹取物体的位置。

Attach Anchor参数说明:

参数名参数内容参数说明

Is Active

True/False

设置该锚点是否活跃。用户可以自定义多个不同的锚点,并通过设置该值来确定当前活跃的锚点

Attach Type

选择锚点附着类型

UNATTACH_POSITION

该锚点不作为物体附着的锚点

ATTACH_POSITION

该锚点作为物体附着的锚点

ATTACH_POSITION_AND_ROTATION

该锚点作为物体附着的锚点,并且物体被夹取后将自动进行旋转

Parallel Gripper使用

运行原则

  • 被夹取物体必须挂载Assemble Component组件,并设置Type,同时需相应调整夹爪的Grip Type使之与被夹取物体相匹配。

  • UMT工具中的夹爪并不以Unity的物理引擎为基础来夹取物体,而是根据被夹取物体和夹爪的距离进行逻辑判断,来实现物体夹取的模拟。因此需根据实际情况,调整Attach Distance的值,并且微调被夹取物体的初始放置位置。较大的Attach Distance可以让夹爪夹取物体的准确性提高,但是可能出现物体瞬移的情况;较小的Attach Distance则会令夹取模拟更加生动,但是一旦夹爪移动不到位或物体放置位置偏差容易导致夹取失败的情况。

  • 与夹取时不同,夹爪释放物体则使用了Unity的物理引擎,令物体实现自由落体的运动。因此接住被释放物体的表面必须包含碰撞体,否则物体会直接掉出场景。

  • 由于没有使用物理引擎来夹取物体,因此夹爪夹取物体时夹爪手指闭合的程度需要预先设置好,使之与被夹取物体的宽度相匹配。可以通过在场景中拖动Parallel JointEnd Anchor或设置Parallel Joint Length来实现。

  • 工具中提供夹爪开合的调试按钮,调整夹爪参数时可以使用调试按钮来进行测试。

代码控制

ParallelGripper.SetGripperStates()

ParallelGripper.DoCloseGripper()//控制夹爪关闭

ParallelGripper.DoOpenGripper()//控制夹爪开启

UMT信号工具控制

通过UMT信号工具,将信号传入上述的函数中,实现夹爪组件的驱动。

Last updated