平行夹爪组件(Parallel Gripper)
Last updated
Last updated
平行夹爪组件。用于实现由多个平移夹爪头组成的夹爪,并进行打开和关闭的运动控制,以实现物体抓取的模拟。通过统一控制,实现夹爪的同步运动。平行夹爪能够抓取带有Assemble Component
的组装体。
夹爪组件是一个复合组件,其运动模块包括夹爪组件Parallel Gripper
,夹爪手指Parallel Finger
以及平行运动组件Parallel Joint
。
需要先判断一个模型是否满足组装Parallel Gripper
运动组件的条件,并非所有模型都可以作为夹爪进行运动模拟。首先夹爪的手指必须是单独的模型,可独立进行运动。通常夹爪必须包含2个及以上的手指,因此手指之间也必须相互独立。不满足上述条件的模型将不能进行夹爪的运动控制。
需要注意的是,强烈推荐Parallel Gripper
组件挂载在夹爪手指的父物体上,方便相关功能的使用。
如果完成了上一步Parallel Finger 生成,并且Parallel Gripper
组件挂载在夹爪手指的父物体上,可以使用组件中Add Fingers in Children按钮快速将夹爪手指与夹爪进行组装。当然,用户也可以通过拖拽手动进行组装。
点击Create New Finger可以在子级创建空物体并挂载Parallel Finger
组件,后续用户再将夹爪手指网格挂载上去。该方法适用于从零开始搭建模型的情况。
添加Parallel Gripper
组件后,将会在该物体的子级创建一个空物体并挂载Attach Anchor
,作为夹爪夹取物体后物体附着的锚点。
Close Time
Float
设置夹爪关闭/开启时间。如果夹爪与夹爪手指已经组装好,那么这个值会同步到Parallel Finger
的Close 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
Gripper State
Open/Close
显示当前夹爪的状态为打开或关闭
Close/Open Gripper
Button
用于调试夹爪开合的按钮
用户可以通过调整该锚点的位置,来模拟实际场景中夹爪夹取物体的位置。
Attach Anchor
参数说明:
Is Active
True/False
设置该锚点是否活跃。用户可以自定义多个不同的锚点,并通过设置该值来确定当前活跃的锚点
Attach Type
选择锚点附着类型
UNATTACH_POSITION
该锚点不作为物体附着的锚点
ATTACH_POSITION
该锚点作为物体附着的锚点
ATTACH_POSITION_AND_ROTATION
该锚点作为物体附着的锚点,并且物体被夹取后将自动进行旋转
被夹取物体必须挂载Assemble Component
组件,并设置Type
,同时需相应调整夹爪的Grip Type
使之与被夹取物体相匹配。
UMT工具中的夹爪并不以Unity的物理引擎为基础来夹取物体,而是根据被夹取物体和夹爪的距离进行逻辑判断,来实现物体夹取的模拟。因此需根据实际情况,调整Attach Distance
的值,并且微调被夹取物体的初始放置位置。较大的Attach Distance
可以让夹爪夹取物体的准确性提高,但是可能出现物体瞬移的情况;较小的Attach Distance
则会令夹取模拟更加生动,但是一旦夹爪移动不到位或物体放置位置偏差容易导致夹取失败的情况。
与夹取时不同,夹爪释放物体则使用了Unity的物理引擎,令物体实现自由落体的运动。因此接住被释放物体的表面必须包含碰撞体,否则物体会直接掉出场景。
由于没有使用物理引擎来夹取物体,因此夹爪夹取物体时夹爪手指闭合的程度需要预先设置好,使之与被夹取物体的宽度相匹配。可以通过在场景中拖动Parallel Joint
的End Anchor
或设置Parallel Joint Length
来实现。
工具中提供夹爪开合的调试按钮,调整夹爪参数时可以使用调试按钮来进行测试。
ParallelGripper.SetGripperStates()
ParallelGripper.DoCloseGripper()//控制夹爪关闭
ParallelGripper.DoOpenGripper()//控制夹爪开启
通过UMT信号工具,将信号传入上述的函数中,实现夹爪组件的驱动。
夹爪组件中可以包括多个夹爪手指对象,所有夹爪手指对象能够被Parallel Gripper
组件统一调度,来实现夹爪的开启和关闭。因此需要在每个夹爪手指的物体上添加Parallel Finger
组件,参考。 添加完成夹爪手指组件后,平行运动组件Parallel Joint
也会被自动添加。 两个组件添加完成后,参考部分中关于Parallel Finger
和Parallel Joint
的组装介绍进行组装。
添加该组件可参考
可参考部分中关于组件设置的部分进行配置。
统一调度的夹爪手指列表。这部分的设置可参考本章
用户可以通过UMTConfig.asset自定义Grip Type
的值,参考。