控制方式

机器人可以进入不同的控制模式来执行各种类型的命令。根据网络条件和使用的编程语言,Flexiv RDK为用户提供了在实时( RT )控制模式和非实时( NRT )控制模式之间灵活选择的功能。所有控制模式的枚举由头文件 flexiv::rdk::Mode 中的 flexiv/rdk/mode.hpp 定义。

重要

大多数命令传输功能都需要机器人先切换到相应的控制模式,然后才能传输命令。

实时 (RT) 模式

在RT控制模式下,用户计算机和机器人之间以1kHz的频率交换用户命令和机器人状态,延迟小于1ms,使用户能够获得对机器人的底层控制。可用的实时控件有:

  • 关节空间运动和扭矩控制

  • 笛卡尔空间运动和力控制

备注

上述所有控制都包括非线性动力学补偿,包括重力、摩擦力、离心力和科里奥利力或扭矩。

下面列出了每种 RT 控制模式的详细说明。

RT 关节扭矩控制模式( Mode::RT_JOINT_TORQUE

机器人接收以 1kHz 频率传输的 关节力矩 指令,并使用内置的关节力矩控制器立即执行。重力和摩擦等非线性动力学已得到补偿。此模式的指令发送函数为 Robot::StreamJointTorque(),它接受以目标关节组为键的指令结构体。

RT 关节阻抗控制模式( Mode::RT_JOINT_IMPEDANCE

机器人接收以 1kHz 频率传输的 关节位置 指令,并使用内置的关节阻抗控制器立即执行。重力和摩擦等非线性动力学已得到补偿。此模式的指令发送函数为 Robot::StreamJointPosition(),它接受以目标关节组为键的指令结构体。

RT 关节位置控制模式( Mode::RT_JOINT_POSITION

与 RT 关节阻抗控制模式相同,不同之处在于命令是使用关节位置控制器执行的,其兼容性要差得多。该模式的命令传输函数也是 Robot::StreamJointPosition()

RT 笛卡尔运动力控制模式( Mode::RT_CARTESIAN_MOTION_FORCE

机器人接收以 1kHz 频率传输的 笛卡尔空间运动和/或力 指令,并使用内置的运动力混合控制器立即执行。重力和摩擦等非线性动力学已得到补偿。此模式的指令发送函数为 Robot::StreamCartesianMotionForce(),它接受以目标关节组为键的指令结构体。

非实时 (NRT) 模式

在NRT控制模式下,用户可以发送上层操作指令,例如方案和元操作,或由机器人内部运动发生器自动插值和平滑的离散运动命令。在这种情况下,所有实时计算都由机器人完成,因此可以放宽对网络延迟和用户计算机性能的要求。可用的非实时控件有:

  • 离散关节空间运动控制

  • 离散笛卡尔空间运动和力控制

  • 方案执行

  • 元操作执行

  • 超级元操作执行

备注

上述关节和笛卡尔控制包括内部运动生成以及非线性动力学补偿。

下面列出了每种 NRT 控制模式的详细说明。

NRT 关节阻抗控制模式( Mode::NRT_JOINT_IMPEDANCE

机器人以单次或低频周期性的方式接收 关节位置 指令。内置的运动生成器将根据离散指令生成平滑的关节空间轨迹,然后使用内置的关节阻抗控制器执行这些轨迹。重力和摩擦等非线性动力学已得到补偿。此模式的指令发送函数为 Robot::SendJointPosition(),它接受以目标关节组为键的指令结构体。

NRT 关节位置控制模式( Mode::NRT_JOINT_POSITION

与 NRT 关节阻抗控制模式相同,只不过命令是使用关节位置控制器执行的,而这种方式的合规性要差得多。该模式的命令传输函数也是 Robot::SendJointPosition()

NRT 笛卡尔运动力控制模式( Mode::NRT_CARTESIAN_MOTION_FORCE

机器人以单次或低频周期性的方式接收 笛卡尔空间运动和/或力 指令。内置的运动生成器将根据离散指令生成平滑的笛卡尔空间轨迹,然后使用内置的笛卡尔运动力混合控制器执行这些轨迹。重力和摩擦等非线性动力学已得到补偿。此模式的指令发送函数为 Robot::SendCartesianMotionForce(),它接受以目标关节组为键的指令结构体。

元操作执行模式( Mode::NRT_PRIMITIVE_EXECUTION

机器人接收并执行用户指定的元操作(primitives)。此模式的指令发送函数为 Robot::ExecutePrimitive(),它接受以目标关节组为键的元操作参数。可以通过 Robot::primitive_states() 获取当前运行的元操作的状态,该函数返回以关节组为键的元操作状态。

备注

元操作是机器人已经知道的单元技能和动作。它们可以共同使用以形成复杂的操作。所有可用元操作的完整文档可以在 Flexiv Primitives Manual 中找到。

方案执行模式( Mode::NRT_PLAN_EXECUTION

机器人接收并执行用户指定的方案。所有可用方案的列表可以通过 Robot::plan_list() 获取。该模式的命令传输函数为 Robot::ExecutePlan()

NRT 超级元操作控制模式 (Mode::NRT_SUPER_PRIMITIVE)

机器人执行 超级元操作,超级元操作是由运动、力、视觉、规划等各种组件组成的复合任务。此模式的指令发送函数为 Robot::SendCartesianMotionForce()Robot::SendCartesianMotionForceMultiWaypoint()

空闲模式( Mode::IDLE

空闲是指机器人不处于上面列出的任何控制模式。它将保持当前位置并等待新的用户命令。当调用 Robot::Stop() 时,机器人将转换到空闲模式。

切换控制模式

要切换到某种控制模式,只需调用 Robot::SwitchMode() 即可。如果调用此函数时机器人仍在移动,则会先自动减速至完全停止,然后进行模式转换。