平行夹爪组件(Parallel Gripper)
平行夹爪组件。用于实现由多个平移夹爪头组成的夹爪,并进行打开和关闭的运动控制,以实现物体抓取的模拟。通过统一控制,实现夹爪的同步运动。平行夹爪能够抓取带有Assemble Component
的组装体。
Parallel Gripper 组装
夹爪组件是一个复合组件,其运动模块包括夹爪组件Parallel Gripper
,夹爪手指Parallel Finger
以及平行运动组件Parallel Joint
。
组装先决条件
需要先判断一个模型是否满足组装Parallel Gripper
运动组件的条件,并非所有模型都可以作为夹爪进行运动模拟。首先夹爪的手指必须是单独的模型,可独立进行运动。通常夹爪必须包含2个及以上的手指,因此手指之间也必须相互独立。不满足上述条件的模型将不能进行夹爪的运动控制。
Parallel Finger 生成
夹爪组件中可以包括多个夹爪手指对象,所有夹爪手指对象能够被Parallel Gripper
组件统一调度,来实现夹爪的开启和关闭。因此需要在每个夹爪手指的物体上添加Parallel Finger
组件,参考运动组件添加与相关说明。 添加完成夹爪手指组件后,平行运动组件Parallel Joint
也会被自动添加。 两个组件添加完成后,参考平行运动组件部分中关于Parallel Finger
和Parallel 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 | 设置夹爪关闭/开启时间。如果夹爪与夹爪手指已经组装好,那么这个值会同步到 |
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 Joint
的End Anchor
或设置Parallel Joint Length
来实现。工具中提供夹爪开合的调试按钮,调整夹爪参数时可以使用调试按钮来进行测试。
代码控制
ParallelGripper.SetGripperStates()
ParallelGripper.DoCloseGripper()//控制夹爪关闭
ParallelGripper.DoOpenGripper()//控制夹爪开启
UMT信号工具控制
通过UMT信号工具,将信号传入上述的函数中,实现夹爪组件的驱动。
Last updated