机器人逆运动学 (Pro)

ℹ️

此逆运动学求解器仅包含在 realvirtual Professional 中。

ℹ️

机器人逆运动学在 realvirtual 6.3 LTS 中进行了重大更新。新功能包括区域混合(Zone Blending)、场景视图辅助线(Gizmos)、重新设计的 IK 解界面以及协作机器人支持(Beta)。

通过逆运动学,您可以使用工具中心点(TCP)控制机器人。到达工具中心点位置的可能解由逆运动学计算得出。

通过逆运动学,机器人可以沿着路径以点到点模式(PTP)或线性运动模式移动。区域混合允许在目标之间实现平滑过渡而无需停止。

Robot IK 位于包目录 Packages/io.realvirtual.professional/Runtime/IK/ 中。演示场景可通过演示场景浏览器在 Professional > Robotics 下打开。主要的 IK 演示场景包含一个标准 6 轴机器人(ABB IRB2400,球形手腕)和一个协作机器人(FANUC CRX,非球形手腕),因此您可以并排比较两种求解器类型。

RobotIK 演示模型

Autonox 演示模型和 Prefab

通过我们专门的演示模型探索 Autonox 机器人的功能,在一个演示场景中展示了三种不同的机器人类型。可直接作为 Prefab 访问这些机器人,以便无缝集成到您的项目中。

演示场景位置:

  • 场景路径: 可通过演示场景浏览器在 Professional > Autonox Robots 下获取

Prefab 目录:

  • Prefab 位置: Packages/io.realvirtual.professional/Runtime/IK/AUTONOX
Autonox 演示模型和库

限制

  • 标准逆运动学使用解析求解器,适用于具有球形手腕的 6 轴工业机器人。
  • 具有非球形手腕的协作机器人通过数值求解器以 Beta 形式支持(参见协作机器人 IK)。
  • 只有能够使 TCP、轴 6、轴 5 和轴 4 对齐在一条直线上的机器人才是可能的(球形手腕要求)。对于有手腕偏移的协作机器人,请使用非球形手腕类型(NonSpherical)。
  • 目前仅支持线性加速度,机器人轴的平滑(正弦)加速度暂不支持。
  • Robot IK 不支持 WebGL 构建。
  • 必须能够通过以下参数定义机器人轴的位置:

机器人准备

机器人必须按照以下要求进行逆运动学准备:

  • 机器人的零点必须使 Unity X 轴指向前方,Z 轴向上,Y 轴指向左侧(在下图中您可以看到一个额外的右手坐标系——通常用于工业机器人——Unity 的坐标系是左手系)
  • RobotIK 脚本本身必须连接到零点位置的游戏对象。
  • 第一个旋转轴也必须位于零点位置。
  • 所有其他轴不得相对于零点旋转(即同样是 X 朝前,Z 朝上,Y 朝左)
  • TCP(标准 TCP 以及可能的自定义工具偏移 TCP)在伸展位置也必须使 Z 朝上,Y 朝左,X 朝前。
  • 每个轴上都需要附加一个 Drive。对于驱动器,需要定义限制和加速度。上限和下限在计算可能解时会被考虑。
  • 所有 6 个轴都需要在 RobotIK 的 Axis 列表中分配。

预配置的机器人运动学 Prefab

使用我们的预配置机器人运动学 Prefab 简化定义新机器人的过程。此 Prefab 通过包含 RobotIK 脚本、带有驱动器的轴层次结构和预定义的拾放路径等基本组件来简化设置。您只需添加机器人网格的 3D 数据即可。

准备好的机器人运动学预制体

空机器人运动学 Prefab:

  • Prefab 路径: Packages/io.realvirtual.professional/Runtime/IK/EmptyRobotKinematic.prefab

自定义机器人的步骤:

  1. 添加 Prefab 到场景: 将 Prefab 拖入 Unity 场景以开始自定义。
  2. 解包 Prefab: 在场景中解包 Prefab 以访问其各个组件进行调整。
  3. 调整轴位置: 修改轴 1 到轴 6 的位置以匹配机器人数据表中的规格。
  4. 导入 CAD 数据: 使用 CADLink 以 STEP 格式导入机器人的 CAD 数据以实现精确表示。
  5. 导出为 FBX: 使用 FBX 导出器基于导入的 CAD 数据创建 FBX 资源。
  6. 添加 FBX 到模型: 将导出的 FBX 文件放入 Unity 场景中。
  7. 组织组件: 将轴 1 到轴 6 的组件移动到解包后的 Prefab 层次结构中对应的 Axis 下。
  8. 计算运动学参数: 在 RobotIK 脚本中启动"Calc Kinematic Parameters"(计算运动学参数)以自动计算参数(见下文)。
  9. 开始测试: 进入播放模式开始测试机器人在 Unity 环境中的功能和行为。

计算运动学参数

当机器人准备好后需要计算一次运动学参数。上图中显示的所有参数(a1, a2, b, c1, c2, c3, c4)都会自动计算,并用于后续计算逆运动学解。

在计算参数之前,您还需要定义机器人在编辑器模式下的姿态。如果肘部朝向 Unity X 方向,您需要选择 Elbow in Unity X。激活"Do not follow in Edit Mode"以覆盖所有当前Target位置上的"Follow in Edit Mode"参数。一切准备好后,可以点击 Calc Kinematic Parameters,您将在 RobotIK 检查器窗口中看到所有参数。

定义路径

机器人路径通过排列目标(Targets)来定义。目标是机器人在定义位置上的 TCP 对准方式。机器人路径和目标必须在 RobotIK 脚本(机器人的零点)下作为子游戏对象创建。

要创建路径,首先必须创建一个空的 GameObject 并添加一个 IKPath 脚本。可以通过点击 IKPath 检查器窗口中的 Add new target 添加新目标。一旦目标激活,机器人在编辑器中也会跟随到定义的位置。如果位置不可达,目标周围会出现一个红色球体。

如果路径被激活,路径下的所有目标都可以在编辑器窗口中移动。按住 CTRL 键可以旋转目标。

路径序列可以通过更改目标列表中的顺序来排列。

场景视图辅助线(Gizmos)

ℹ️

此功能在 realvirtual 6.3(Professional)中添加

IK 系统提供全面的场景视图可视化,帮助您理解和调试机器人运动学。所有辅助线通过 RobotIK 组件上的开关属性进行控制。

RobotIK 辅助线开关:

  • Draw Gizmos(主开关)——在场景视图中启用或禁用所有 IK 辅助线。启用后始终显示一个 TCP 标记(橙色线框球体,带有 XYZ 轴线)。
  • Show Elbow Direction——在机器人底座处显示一个指示肘部方向的箭头(X 或 Z,在机器人本地坐标系中)。
  • Show Kinematic Chain——绘制从底座通过各轴到 TCP 的白色连接线,并在各段中点显示 DH 参数标签。对于非球形手腕机器人,还会显示额外的偏移指示线。
  • Show Joint Positions——在每个轴处渲染彩色弧线,显示关节范围和当前位置。当前位置指针按颜色编码:范围中心为绿色,接近限制为黄色,在限制处为红色。
  • Show Axis Frames——在每个轴处显示小型 XYZ 坐标系框,并带有旋转方向标签。
  • Show Wrist Type——对于球形手腕:在 A4/A5/A6 周围显示绿色线框球体。对于非球形手腕:显示带有距离标签的橙色虚线偏移线。

路径辅助线(IKPath / IKTarget):

当选择 IKPath 或 IKTarget 时,会绘制额外的辅助线:

  • 路径线——线性(Linear)段为绿色线,PTP 段为黄色线。
  • 方向箭头——在段中点处显示锥形箭头,指示行进方向。
  • 目标标签——在每个目标上方显示索引和名称(例如,"0: PickPos")。
  • TCP 方向——在每个目标处显示小型 XYZ 轴线,指示 TCP 方向。
  • StartNextPath 连接——从最后一个目标到下一个路径第一个目标的虚线连接。
  • 混合区域——启用混合时可视化(参见区域混合)。

区域混合(Ueberschleifen)

ℹ️

此功能在 realvirtual 6.3(Professional)中添加

区域混合允许机器人在不停止在当前目标处的情况下平滑过渡到下一个目标。机器人不会减速到完全停止,而是在进入由 Blend Radius 定义的混合区域时开始向下一个目标移动。

线性路径上的区域过渡 —— 橙色弧线显示机器人在各段之间平滑过渡的过渡区
PTP 过渡 —— 蓝色球体表示目标周围的过渡区半径

IKTarget 上的属性:

  • Enable Blending(布尔值)——为此目标启用区域混合。启用后,机器人会在距当前目标 BlendRadius 距离处过渡到下一个目标,而不是在此目标处精确停止。
  • Blend Radius(浮点数,毫米)——混合区域的半径。当 TCP 在当前目标此距离范围内时,机器人开始向下一个目标移动。最小值:1 mm。

混合行为取决于运动类型组合:

从 → 到混合行为场景辅助线
PTP → PTP平滑关节角重定向——所有轴被重定向到下一个目标的关节角蓝色透明球体
PTP → Linear在进入混合区域时切换到笛卡尔线性运动蓝色透明球体
Linear → Linear连接两个线性段的几何精确圆弧混合带有切点标记的橙色弧线
Linear → PTP停止线性运动并将关节角重定向到下一个目标蓝色透明球体

跨路径混合: 混合也适用于通过 Start Next Path 连接的路径之间。一条路径的最后一个目标可以直接混合到下一条路径的第一个目标,而 TCP 完全不停。

约束: 当目标出现以下情况时,混合自动禁用:

  • 设置了 Wait For Signal——机器人必须停止等待信号
  • Wait For Seconds > 0——机器人必须停止并等待
  • 目标是未设置 Start Next Path 的非循环路径的最后一个目标

Debug Blending(布尔值,在 IKPath 上)——将详细的混合状态转换记录到控制台以进行调试。

路径属性

Speed Override(速度覆盖)

覆盖速度,0 到 1 之间,用于减慢路径。标准值为 1。

Set new TCP(设置新 TCP)

可选。为机器人设置一个新 TCP 用于此路径。

Draw Path(绘制路径)

在编辑器窗口中绘制路径为一序列的线段。线性运动以绿色绘制,PTP 运动以黄色绘制。

Draw Targets(绘制目标)

在编辑器窗口中绘制目标。目标可以拖动手柄移动。按住 CTRL 键可以旋转。

Path(路径)

目标序列。

Signal Start(信号启动)

用于启动路径的 PLCOutput 信号。

Start(启动)

在仿真开始直接启动路径。

Loop Path(循环路径)

路径结束后重新启动路径。

Signal is Started(已启动信号)

路径启动时的 PLCInput 信号。

Signal Ended(已结束信号)

路径结束时的 PLCInput 信号。

Start Next Path(启动下一个路径)

指向下一个路径的指针,该路径可在此路径之后启动。当最后一个目标启用了混合时,支持跨路径混合。

Debug Blending(混合调试)

将详细的混合状态转换记录到控制台以调试跳跃问题。

目标(Targets)

目标是路径中的目的地点。在目标中,控制目的地的多个参数。

IK 解决方案选择器 - 稳定的顺序,带每个解到前一点的 maxΔ;SMOOTH 标记运动最小的配置

目标属性

Right Handed Robot Coordinates(右手系机器人坐标)

(只读)目标在右手坐标系中的位置。

Speed to Target(到达目标速度)

到达目标的速度。如果设置为 1,所有轴以最大速度(PTP)或指定的线性速度(线性插值)驱动。

Linear Acceleration(线性加速度)

仅适用于线性移动模式。线性路径上的加速度。

Interpolation to Target(到达目标的插值方式)

到达目标的插值模式。

Point to Point (PTP)(点到点)所有轴将同时到达目的地。时间由需要最长时间的轴控制。其他轴的加速度会被降低,使它们在最慢轴到达目标的同时到达。TCP 的运动在这种情况下是非线性的,无法控制。

Point to Point unsynced(点到点非同步)与上述相同,但所有轴以最大速度驱动并在不同时间到达目的地。

Linear(线性)两个目标之间的线性运动,具有指定的线性加速度和线性速度。

Linear Speed to Target(到达目标的线性速度)

线性插值的到达目标线性速度。

Set Signal(设置信号)

当目标到达时设置定义的信号。

Set Signal Duration(设置信号持续时间)

在定义的持续时间内设置信号。

Wait for Seconds(等待秒数)

机器人在到达目标后等待定义的时间。注意:将此值设置为 > 0 会自动禁用此目标的混合。

Wait For Signal(等待信号)

在目标处等待继续路径,直到定义的信号变为 true。注意:在此处设置信号会自动禁用此目标的混合。

Pick and Place(拾放)

在目标处启用拾放 MU。

Grip(6.3 新增)

Grip 组件的引用用于拾放操作。这是推荐的方法。当同时分配了 Grip 和 Fixer 时,Grip 优先。

Fixer

Fixer 组件的引用用于拾放操作(旧版)。

Pick(拾取)

如果 grip/fixer 应在目标处拾取,则为 true。

Place(放置)

如果 grip/fixer 应在目标处放置,则为 true。

IK 解(IK Solutions)

ℹ️

此功能在 realvirtual 6.3(Professional)中添加

IKTarget 检查器底部的 IK 解面板显示当前目标位置的所有可达解。列表保持稳定顺序(按配置索引),因此当您选择不同的解时,行不会跳来跳去。

对于每个解,面板显示相对于上一个路径点的关节移动——maxΔ,即最大的单轴移动。具有最小最大轴移动的解标记为 SMOOTH(平滑):它在沿路径上产生最连续、低运动的过渡,没有极端旋转。这使您可以一目了然地看到哪种配置最适合平滑路径并自行选择。

IK 解决方案选择器 - 稳定的顺序,带每个解到前一点的 maxΔ;SMOOTH 标记运动最小的配置

工作原理:

  • 标题显示"IK Solutions (N reachable)"(IK 解,N 个可达)以及有效解的数量。
  • 解显示为可点击的行,显示所有 6 个轴角度(以度为单位)以及到前一个路径点的 maxΔ。
  • 标记为 SMOOTH 的行是推荐的低运动选择;具有较大 maxΔ 的解(接近 180° 的轴摆动)会被高亮显示,因为这将导致快速或不平稳的运动。
  • 点击一行进行选择。所选配置通过存储其关节角来固定,因此每次重新求解时都能稳定恢复——即使目标位置变化或可达解集合变化也是如此。
  • 场景视图中的机器人预览立即更新。

Axis Pos(轴位置)(只读)——显示当前所选解的以度为单位的计算轴位置。

Reference Angles(参考角度)(只读)——用于排序解的参考关节角。通常是前一个目标的轴位置。

Reachable(可达)——如果目标可以用所选解到达,则为 True。

解选择模式

ℹ️

此功能在 realvirtual 6.3(Professional)中添加

RobotIK 组件上,Solution Selection 属性控制当用户首选的 IK 解变得不可达时(例如,由于新目标位置的关节限制)发生什么:

  • First Reachable(默认)——回退到第一个可用的有效解。
  • Minimal Angle Change——回退到需要从当前位置最小总关节移动的解。

注意:IKTarget 检查器中的 IK 解列表保持稳定顺序,并将最低运动配置标记为 SMOOTH,无论此设置如何。此属性仅影响当固定解不再可达时的回退行为。

协作机器人 IK(Beta)

⚠️

协作机器人 IK 目前处于 Beta 阶段。仅位置 IK 工作可靠,但路径规划可能产生意外结果。在 realvirtual 6.3(Professional)中添加。

标准工业机器人具有球形手腕,其中轴 4、轴 5 和轴 6 在单点相交。协作机器人(cobots),如 FANUC CRX 或 Universal Robots 系列,具有非球形手腕,这些轴之间存在偏移。

RobotIK 上的 Wrist Type 属性选择求解器:

  • Spherical(默认)——用于标准 6 轴机器人的解析 Pieper 求解器。快速且精确,最多 8 个解。
  • Non-Spherical——使用解析 Pieper 解作为种子并用 Newton-Raphson 数值求解器优化的混合求解器。支持具有手腕偏移(d4、d5、a5、a6 参数,自动计算)的机器人。

设置: 选择 Non-Spherical 作为手腕类型(Wrist Type),然后按"Calc Kinematic Parameters"(计算运动学参数)。手腕偏移参数(d4、d5、a5、a6)从轴位置自动计算,并显示在 Wrist Offsets 折叠面板中。

Seed Strategy(种子策略)(仅在 Non-Spherical 中可见):

  • Mirror Seeds(布尔值,默认值:true)——从 4 个 Pieper 基础配置中生成 8 个镜像手腕翻转种子,增加找到有效解的机会。
  • Halton Seed Count(0-16,默认值:0)——额外 Halton 低差异回退种子的数量。如果求解器在极端姿态下遗漏解,增加此值。

NR Solver(NR 求解器)(折叠面板,仅在 Non-Spherical 中可见):

  • NR Angular Weight(默认值:1.0)——Newton-Raphson 求解器中方向相对于位置的权重。
  • NR Orientation Tolerance(默认值:0.01 弧度 /\~0.57°)——方向的收敛容差。
  • NR Diagnostics(布尔值)——启用到 Unity 控制台的收敛日志记录以进行调试。

轴校正

IK 系统自动保持关节角的连续性——它在轴限制范围内选择最接近当前机器人姿态的角度表示。这避免了在线性和点到点运动期间的大多数 360° 跳跃(例如 -180°/+180° 手腕翻转)。在少数需要在 PTP 目标上手动强制特定校正值的情况下,仍可使用轴校正。

在某些情况下,轴可能错位 360 度。如果使用 PTP 运动,可以使用轴校正值将定义目标的轴位置设置为手动校正值:

PTP 运动中的轴校正值

Turn Correction(转动校正)

在某些特殊情况下,IK 计算返回的轴 4 和轴 6 可能各多了 180 度(总共 360 度)。如果开启转位校正,在轴 3 和轴 5 的和为 360 的情况下,两个轴的值会被校正 -180 度。

另请参见

  • Drive - 配置 IK 使用的轴驱动限制和加速度
  • Grip - 在 IKTarget 位置进行拾放的 Grip 组件
  • Fixer - 用于拾放的旧版 Fixer 组件
  • PathTracer (Pro) - 可视化机器人 TCP 运动轨迹
  • Kinematic Tool (Pro) - 在编辑器中进行机器人轴设置的可视化工具

© 2026 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或通过任何方式(包括打印、保存、复印、录制或其他电子或机械方法)复制、分发或传输本出版物的任何部分。