外部移动
参数说明
移动步骤基本参数
发送路径点
默认勾选,即向接收者(如:机器人)发送移动目标位姿。取消勾选后,将不发送移动目标位姿,但此目标位姿仍在路径规划之中。
尝试平滑通过其后的非移动类步骤
默认不勾选,即当 移动类步骤 之间连接 非运动步骤 时,比如 “视觉识别” 、“设置” 、“检查DI”等,会打断机器人的路径规划,真实机器人运行时会出现短暂的停顿,导致机器人运行动作不流畅。
勾选后,不需要等待当前移动步骤运行结束就可以继续往下执行,以此规避机器人停顿的问题,保证机器人运行动作流畅,但可能会导致步骤提前结束。
为何会导致步骤提前结束?
Mech-Viz 软件运行时会同时发给机器人多个位姿,软件只判断发送给机器人的最后一个位姿是否与机器人当前返回的关节角相同,如果相同则认为机器人已经移动到最后一个位置。
比如一段路径由 10 个移动步骤组成,路径中的移动步骤 5 与最后一个移动步骤的位姿相同。在机器人运行速度较慢时,机器人移动到移动点 5 后并把当前关节角发给 Mech-Viz ,因为路径中的移动步骤 5 与最后一个移动步骤位姿相同,Mech-Viz 软件会误判为路径步骤完成而提前结束指令。
不检查与已放置工件的碰撞
默认不勾选,即检查与已放置工件的碰撞;勾选后,将不检查机器人本体、末端工具与已经放置的工件之间的碰撞。
在码垛应用中有以下两种情况:
-
码放纸箱时,机器人本体可能会轻微接触已放置纸箱(不会出现纸箱挤压变形的情况),Mech-Viz 检查到这个碰撞后规划其他纸箱放置点,导致无法满垛。
-
一般吸盘设置的 TCP 不在吸盘表面,在模型内部,这样抓取物体时末端工具与被抓取的纸箱模型存在嵌套的情况(软件不检查末端工具与已抓取工件的碰撞),当机器人放下纸箱后,被抓取的纸箱模型改变为场景模型,此时软件会检查到末端工具与场景中的纸箱模型发生碰撞,软件发出碰撞报警,无法完成码垛步骤。
勾选此参数,软件不再检查机器人本体、末端工具与已经放置的工件模型之间的碰撞关系,从而解决上述问题。
点云碰撞检查模式
根据现场实际情况来设置参数,一般使用默认 自动 。机器人抓取物体前的移动步骤可选择 从不 模式,抓取物体后的移动步骤可选择 总是 模式。
自动 |
默认值。仅对“视觉移动”步骤及依赖于“视觉移动”步骤的“相对移动”步骤检查点云碰撞,其他的移动类步骤不检查。 |
不检查 |
全部移动类步骤均不检查点云碰撞。 |
检查 |
全部移动类步骤均检查点云碰撞。 |
当打开 | 功能时,Mech-Viz 软件在做路径规划时会检查机器人模型、末端工具模型与点云的碰撞情况。 一般点云碰撞的设置是检查机器人抓取过程中是否会与工件发生碰撞,当空间中有噪点时,软件在做抓取物体前的路径规划时噪点与机器人模型、末端工具模型接触,造成与点云碰撞的误检测,导致软件规划错误。
忽略工件对称性
该参数仅对 目标类型 为 工件位姿 的移动生效,如:目标类型为工件位姿的移动类步骤、码垛类步骤等,而目标类型为关节角、工具位姿的移动类步骤不生效。
无 |
默认值,不关闭任何对称性; |
绕工件坐标系 Z 轴 |
仅关闭 Z 轴对称性; |
绕工件坐标系 X 和 Y 轴 |
仅关闭 X&Y 轴对称性; |
绕所有轴 |
关闭所有对称性,机器人将严格按照工件位姿放置工件。 |
遇到某些特殊情况而导致物体不可抓取时,可以设置 | 中的 旋转对称 。 针对识别出的物体设置物体对称性,根据对称性角度,工件可具有多个候选位姿。 Mech-Viz 软件在规划物体抓取时,若默认位姿无法抓取,会尝试候选位姿是否可抓。 物体对称位姿与 Mech-Vision 输出的原始位姿不一致,无法保证机器人放置物体的一致性。
规划失败出口
勾选此参数后,步骤将增加“规划失败”出口。
规划过程中,沿“成功”出口后的分支进行规划;若当前步骤规划失败,将执行“规划失败”出口后的分支流程。
已持有工件碰撞检测设置
不检查与场景物体/机器人的碰撞
默认不勾选,勾选后将不检查 已持有工件 与 场景模型、机器人 的碰撞,减少软件碰撞检查计算量,优化 Mech-Viz 规划的速度,提升整体节拍。一般应用在机器人抓取物体后的 1~2 个移动类步骤。
不检查碰撞可能会有碰撞风险,谨慎使用该功能。
当打开
中的检测已持有工件与其他物体的碰撞功能时,会检查已持有工件模型与场景模型&机器人是否碰撞。码垛场景中视觉计算出的纸箱尺寸大小与实际大小存在毫米级偏差,抓取过程中存在纸箱间的摩擦情况,不会发生碰撞。 一些明显不会碰撞的移动,检查此类碰撞增加了软件计算量,增加 Mech-Viz 规划时间,浪费节拍。 开启不检查与场景物体的碰撞功能,不影响码垛场景中已持有工件与已放置箱子的碰撞检测。 当码垛下方有场景物体的时候可以使用该功能,避免码垛选解失败的问题。
不检查与点云的碰撞
默认不勾选,勾选后将不检查 已持有工件 与 场景中的点云 是否碰撞,减少软件碰撞计算量,优化 Mech-Viz 规划时间,提升整体节拍,避免已持有工件与点云信息碰撞误检测问题。
-
当同时打开
中的检测已持有工件与其他物体的碰撞和 点云配置 ‣ 检测点云与其他物体的碰撞功能时,会检查已持有工件模型与场景中的点云是否碰撞。 -
Mech-Vision 把点云信息和物体模型信息发给 Mech-Viz 时,点云与物体模型是贴合状态,机器人抓取物体时,模型随机器人路径移动,出现已持有工件模型与点云碰撞的情况。
-
已知已持有工件肯定会和物体点云发生误碰撞,检查此碰撞将增加软件计算量,进而增加 Mech-Viz 规划时间。
使用外部服务提供的关节角
默认不勾选,软件规划路径的初始位置将使用上次规划结束的位置。 勾选后,软件规划路径的初始位置将更新为从外部获取的机器人关节位置,通常在 Mech-Viz 不完全控制机器人运动的情况下使用。
接口示例
class CustomOuterMoveService(OuterMoveService):
def gather_targets(self, di, jps, flange_pose):
self.add_target(self.move_target_type, [0.189430,-0.455540,0.529460,-0.079367,0.294292,-0.952178,0.021236])
CustomOuterMoveService类继承自OuterMoveService类。self.move_target_type表示移动点类型,取值为0、1或2,其中0表示JPs,1表示TCP,2表示物体位姿。Mech-Viz 运行到外部移动步骤时就会调用 getMoveTargets()。不同外部移动步骤之间通过服务名称进行区分。
def _register_service(self):
self.outer_move_service = CustomOuterMoveService()
self._outer_move_server, port = register_service(outer_move_service, port)
当self.move_target_type为2(表示物体位姿)时,外部移动步骤前面需要有一个步骤表示抓取,否则会报错误:“- 未持有物体时物体姿态无效!” 。 |