跳到主要内容

方法

1 机器人基本操作及信息查询

connectToRobot() [1/2]

def connectToRobot(self, ec: dict) -> None:

建立与机器人的连接。机器人地址为创建robot 实例时传入的

  • 参数:[out] ec: 错误码

connectToRobot() [1/2]

def connectToRobot(self, remoteIP: str, localIP: str = '') -> None:

连接到机器人

  • 参数:
    • remoteIP 机器人 IP 地址
    • localIP 本机地址。实时模式下收发交互数据用,可不设置;PCB3 /4 轴机型不支持

disconnectFromRobot()

def disconnectFromRobot(self, ec: dict) -> None:

断开与机器人连接。断开前会停止机器人运动,请注意安全

  • 参数: [out] ec: 错误码

robotInfo()

def robotInfo(self, ec: dict) -> Info:

查询机器人基本信息

  • 参数: [out] ec: 错误码
  • 返回: 机器人基本信息(控制器版本,机型,轴数)

powerState()

def powerState(self, ec: dict) -> PowerState:

机器人上下电以及急停状态

  • 参数: [out] ec: 错误码
  • 返回:
    • on - 上电
    • off - 下电
    • estop - 急停
    • gstop - 安全门打开

setPowerState()

def setPowerState(self, on: bool, ec: dict) -> None:

机器人上下电。注:只有无外接使能开关或示教器的机器人才能手动模式上电。

  • 参数:
    • [in] on: true-上电|false-下电
    • [out] ec: 错误码

operateMode()

def operateMode(self, ec: dict) -> OperateMode:

查询机器人当前操作模式

  • 参数: [out] ec: 错误码
  • 返回: 手动|自动

setOperateMode()

def setOperateMode(self, mode: OperateMode, ec: dict) -> None:

切换手自动模式

  • 参数:
    • [in] mode: manual - 手动/ automatic - 自动
    • [out] ec: 错误码

operationState()

def operationState(self, ec: dict) -> OperationState:

查询机器人当前运行状态(空闲,运动中,拖动开启等)

  • 参数: [out] ec: 错误码
  • 返回: 运行状态枚举类

posture()

def posture(self, ct: CoordinateType, ec: dict) -> [list[float]]:

获取机器人法兰或末端的当前位姿

  • 参数:
    • [in] ct 坐标系类型
      • flangeInBase:法兰相对于基坐标系;
      • endInRef :末端相对于外部参考坐标系。例如,当设置了手持工具及外部工件后,该坐标系类型 - 返回:的是工具相对于工件坐标系的坐标。
    • [out] ec: 错误码
  • 返回: double 数组,[X , Y , Z , Rx , Ry , Rz ],其中平移量单位为米旋转量单位为弧度

cartPosture()

def cartPosture(self, ct: CoordinateType, ec: dict) -> CartesianPosition:

获取机器人法兰或末端的当前位姿

  • 参数: :
    • [in] ct 坐标系类型
    • [out] ec: 错误码
  • 返回:当前笛卡尔位置

jointPos()

def jointPos(self, ec: dict) -> list[float]:

机器人当前轴角度, 机器人本体+外部轴, 单位: 弧度, 外部轴导轨,单位米

  • 参数: [out] ec: 错误码
  • 返回: 关节角度值,和外部轴值

jointVel()

def jointVel(self, ec: dict) -> list[float]:

机器人当前关节速度, 机器人本体+外部轴,单位:弧度/秒,外部轴单位米/秒

  • 参数: [out] ec: 错误码
  • 返回: 关节速度

jointTorque()

def jointTorque(self, ec: dict) -> list[float]:

关节力传感器数值,单位: Nm

  • 参数: [out] ec: 错误码
  • 返回: 力矩值

baseFrame()

def baseFrame(self, ec: dict) -> list[float]:

用户定义的基坐标系, 相对于世界坐标系

  • 参数: [out] ec: 错误码
  • 返回: double 数组, [X, Y, Z, Rx, Ry, Rz],其中平移量单位为米旋转量单位为弧度

setBaseFrame()

def setBaseFrame(self, frame: Frame, ec: dict) -> None:

设置基坐标系, 设置后仅保存数值,重启控制器后生效

  • 参数:
    • [in] frame 坐标系,默认使用自定义安装方式
    • [out] ec: 错误码

toolset()

def toolset(self, ec: dict) -> Toolset:

查询当前工具工件组信息

注解 此工具工件组仅为 SDK 运动控制使用, 不与 RL 工程相关

  • 参数: [out] ec: 错误码
  • 返回: 见 Toolset 数据结构

setToolset() [1/3]

def setToolset(self, toolset: Toolset, ec: dict) -> None:

设置工具工件组信息

注解 此工具工件组仅为SDK运动控制使用, 不与RL工程相关。设置后RobotAssist右上角会显示“toolx", "wobjx", 状态监控显示的末端坐标也会变化。除此接口外, 如果通过 RobotAssist 更改默认工具工件(右上角的选项), 该工具工件组也会相应更改.

  • 参数:
    • [in] toolset 工具工件组信息
    • [out] ec: 错误码

setToolset() [2/3]

def setToolset(self, toolName: str, wobjName: str, ec: dict) -> Toolset:

使用已创建的工具和工件,设置工具工件组信息

注解 设置前提: 已加载一个 RL 工程,且创建了工具和工件。否则,只能设置为默认的工具工件,即"tool0"和"wobj0"。一组工具工件无法同时为手持或外部;如果有冲突,以工具的位置为准,例如,工具工件同时为手持,不会返回错误,但是工件的坐标系变成了外部

  • 参数:
    • [in] toolName 工具名称
    • [in] wobjName 工件名称
    • [out] ec: 错误码

setToolset() [3/3]

def setToolset(self, toolName: str, wobjName: str, ec: dict) -> None:

使用已创建的工具和工件,设置工具工件组信息

  • 注解 设置前提:
    1. 使用 RL 工程中创建的工具工件: 需要先加载对应 RL 工程;
    2. 全局工具工件: 无需加载工程,直接调用即可。e.g. setToolset("g_tool_0", "g_wobj_0") 一组工具工件无法同时为手持或外部;如果有冲突,以工具的位置为准,例如工具工件同时为手持,不会返回错误,但是工件的坐标系变成了外部
  • 参数:
    • [in] toolName 工具名称
    • [in] wobjName 工件名称
    • [out] ec: 错误码

model()

def model(self):

获取与当前机器人轴数、机型匹配的运动学模型实例(xCoreSDK_python.model 包中的 Model_0_* 为工业、Model_1_* 为协作)。

  • 返回:模型对象,具体类型由机型决定。

calcIk()

m = robot.model(),再在 m 上调用。模型类重载示例:

def calcIk(self, posture: CartesianPosition, ec: dict) -> list[float]: ...
def calcIk(self, posture: CartesianPosition, toolset: Toolset, ec: dict) -> list[float]: ...

根据位姿计算逆解(单解)。

  • 参数:
    • [in] posture 机器人末端位姿,相对于外部参考坐标系
    • [in] toolset 可选,给定工具工件坐标系下的逆解
    • [out] ec: 错误码
  • 返回:轴角度,单位弧度;列表长度等于机器人轴数。

calcFk()

def calcFk(self, joints: list[float], ec: dict) -> CartesianPosition:
def calcFk(self, joints: list[float], toolset: Toolset, ec: dict) -> CartesianPosition:

robot.model() 返回的实例上调用。根据轴角度计算正解。

  • 参数:
    • [in] joints 关节角度,单位弧度,长度等于轴数
    • [in] toolset 可选
    • [out] ec: 错误码
  • 返回:末端相对于外部参考坐标系的位姿。

calcAllIkSolutions()

robot.model() 返回的实例上调用。

def calcAllIkSolutions(self, posture: CartesianPosition, confs: list, ec: dict) -> list[list[float]]:

计算笛卡尔位姿的全部逆解;posture 为法兰相对基坐标系,其它坐标系需自行转换。不支持 xMateSR(XMS)。

  • 参数:
    • [in] confs 调用方传入的列表,成功时由接口填入与每组解对应的 confdata(list[list[int]]
    • [out] ec: 错误码(如奇异、超限位、超范围等)
  • 返回:多组关节角(弧度);仅当错误码为 0 时有效。

calibrateFrame ()

def calibrateFrame(self, type: FrameType, points: list[list[float]], is_held: bool, ec: dict, base_aux: typing.Annotated[list[float], pybind11_stubgen.typing_ext.FixedSize(3)] = [0.0, 0.0, 0.0]) -> FrameCalibrationResult:

坐标系标定 (N 点标定)

  • 注解 各坐标系类型支持的标定方法及注意事项:
    1. 工具坐标系: 三点/四点/六点标定法
    2. 工件坐标系: 三点标定。标定结果不会相对用户坐标系做变换,即,若为外部工件, - 返回:的结果是相对于基坐标系的。
    3. 基坐标系: 六点标定。标定前请确保动力学约束和前馈已关闭。 若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
    4. 导轨基坐标系: 三点标定。若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
  • 参数:
    • [in] points 轴角度列表,列表长度为 N。例如,使用三点法标定工具坐标系,应传入 3 组轴角度。轴角度的单位是弧度。
    • [in] is_held true - 机器人手持 | false - 外部。仅影响工具/工件的标定
    • [in] base_aux 基坐标系标定时用到的辅助点, 单位[米]
    • [out] ec: 错误码
  • 返回: 标定结果,当错误码没有被置位时,标定结果有效

clearServoAlarm()

def clearServoAlarm(self, ec: dict) -> None:

清除伺服报警

  • 参数:[out] ec: 错误码,当有伺服报警且清除失败的情况下错误码置为-1

enableCollisionDetection()(协作机型)

def enableCollisionDetection(self, sensitivity: list[float], behaviour: StopLevel, fallback_compliance: float, ec: dict) -> None:

设置碰撞检测相关参数, 打开碰撞检测功能(协作机器人;sensitivity 长度与轴数一致)。

  • 参数:
    • [in] sensitivity 碰撞检测灵敏度,范围 0.01-2.0
    • [in] behaviour 碰撞后机器人行为, 支持 stop1(安全停止, stop0 和 stop1 处理方式相同)和 stop2(触发暂停), suppleStop(柔顺停止)
    • [in] fallback_compliance
      1. 碰撞后行为是安全停止或触发暂停时,该参数含义是碰撞后回退距离,单位: 米
      2. 碰撞后行为是柔顺停止时,该参数含义是柔顺度,范围 [0.0, 1.0]
    • [out] ec: 错误码

enableCollisionDetection()(工业六轴 StandardRobot)

def enableCollisionDetection(self, sensitivity: list[float], fallback: float, ec: dict) -> None:

工业机型仅支持 stop1(安全停止);无 behaviour 参数。sensitivity 为长度 6 的数组。

disableCollisionDetection()

def disableCollisionDetection(self, ec: dict) -> None:

关闭碰撞检测功能

  • 参数: [out] ec: 错误码

getSoftLimit()

def getSoftLimit(self, limits: PyTypeVectorArrayDouble2, ec: dict) -> bool:

获取当前软限位数值

  • 参数:
    • [out] limits 各轴软限位 [下限, 上限],单位: 弧度
    • [out] ec: 错误码
  • 返回: true - 已打开 | false - 已关闭

setSoftLimit()

def setSoftLimit(self, enable: bool, ec: dict, limits: list[list[float]]) -> None:

设置软限位。软限位设定要求:

  1. 打开软限位时,机械臂应下电且处于手动模式;
  2. 软限位不能超过机械硬限位
  3. 机械臂当前各轴角度应在设定的限位范围内
  • 参数:
    • [in] enabletrue - 打开 | false - 关闭。
    • [out] ec: 错误码
    • [in] limits 各轴[下限, 上限],单位:弧度。
      1. 当 limits 为默认值时,视为仅打开软限位不修改数值; 不为默认值时,先修改软限位再打开
      2. 关闭软限位时不会修改限位数值

queryControllerLog()

def queryControllerLog(self, count: int, level: set[LogInfoLevel], ec: dict, offset: int = 0) -> list[LogInfo]:

查询控制器最新的日志

  • 参数:
    • [in] count 查询个数,上限是 10 条
    • [in] level 指定日志等级,空集合代表不指定
    • [in] offset 偏移条数;0 表示从最新一条起查,10 表示从第 11 条起查
    • [out] ec: 错误码
  • 返回: 日志信息

recoverState()

def recoverState(self, item: int, ec: dict) -> None:

根据选项恢复机器人状态

  • 参数:
    • [in] item 恢复选项,1:急停恢复
    • [out] ec: 错误码

rebootSystem()

def rebootSystem(self, ec: dict) -> None:

重启工控机。在自动模式、下电、运动或非空闲状态下不允许执行。

  • 参数:[out] ec: 错误码

shutdownSystem()

def shutdownSystem(self, ec: dict) -> None:

关闭工控机;控制柜重新上电后才能再次启动控制器软件。限制条件同 rebootSystem()

  • 参数:[out] ec: 错误码

setConnectionHandler()

def setConnectionHandler(self, handler: Callable[[bool], None]) -> None:

设置与控制器连接状态变化的回调。

  • 参数:
    • [in] handler True 表示已连接,False 表示断开

setTeachPendantMode()

def setTeachPendantMode(self, enable: bool, ec: dict) -> None:

设置示教器模式开关;阻塞直至切换完成(约 2 秒量级超时)。运动中等情况可能切换失败。

  • 参数:
    • [in] enable True 启用示教器模式,False 关闭
    • [out] ec: 错误码

getRobotCfg_DHparam()

def getRobotCfg_DHparam(self, get_nominal: bool, ec: dict) -> list[float]:

读取 DH 参数。

  • 参数:
    • [in] get_nominal True 标称参数,False 优化后或当前设置(一般建议 False
    • [out] ec: 错误码
  • 返回:依次为各轴 Alpha[°]、A[mm]、D[mm]、Theta[°] 串联的一维列表;仅当错误码为 0 时有效。

getExtAxisInfo()

def getExtAxisInfo(self, name: str, info: str, value: PyTypeInt | PyTypeBool | PyTypeDouble | PyString, ec: dict) -> None:

读取外部轴/机械轴相关参数。nameaxis1axis6info 为字段名(如 ext_data_numberzero_valuemax_speeddriver_name 等,详见类型桩)。

  • 参数:[out] value 由调用方传入的输出容器,类型需与所查字段一致。

getMechUnit()

def getMechUnit(self, name: str, info: str, value: PyTypeBool | PyTypeVectorString | PyTypeInt, ec: dict) -> None:

读取机械单元参数。nameu1u6infoactivationenableaxes_infomech_link_type 等。

  • 参数:[out] value 输出容器,类型与 info 匹配。

setRailParameter()

def setRailParameter(self, name: str, value: list[float], ec: dict) -> None:

设置导轨参数

  • 模板参数: 参数类型
  • 参数:
    • [in] name: 参数名,见 value 说明
    • [in] value:
      参数:参数名数据类型
      开关enablebool
      基坐标系baseFrameFrame
      导轨名称namestr
      编码器分辨率encoderResolutionint
      减速比reductionRatiodouble
      电机最大转速(rpm)motorSpeedint
      软限位(m), [下限,上限]softLimitlist[float]
      运动范围(m), [下限,上限]rangelist[float]
      最大速度(m/s)maxSpeeddouble
      最大加速度(m/s^2)maxAccdouble
      最大加加速度(m/s^3)maxJerkdouble

getRailParameter()

def getRailParameter(self, name: str, value: PyTypeDouble, ec: dict) -> None:

读取导轨参数

  • 模板参数: 参数类型
  • 参数:
    • [in] name 参数名,见 setRailParameter()
    • [out] value 参数数值,见 setRailParameter()
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

configNtp()

def configNtp(self, server_ip: str, ec: dict) -> None:

配置 NTP。非标配功能,需要额外安装

  • 参数:
    • [in] server_ip NTP 服务端 IP
    • [out] ec: 错误码, NTP 未正确安装,或 IP 地址格式错误

syncTimeWithServer()

def syncTimeWithServer(self, ec: dict) -> None:

手动同步一次时间,远端 IP 是通过 configNtp 配置的。耗时几秒钟,阻塞等待同步完成,接口预设的超时时间是 12 秒

  • 参数: [out] ec: 错误码。NTP 服务未正确安装,或无法和服务端同步

sdkVersion()

def sdkVersion() -> str:

查询 xCore-SDK 版本

  • 返回: 版本号

updateRobotState()

def updateRobotState(self, timeout: datetime.timedelta) -> int:

在实时模式下接收一帧机器人状态数据;周期调用前应先调用本函数。建议按控制器配置的发送频率调用。timeout 使用 datetime.timedelta(例如 from datetime import timedelta)。

  • 参数:
    • [in] timeout 等待超时
  • 返回:收到的数据长度;超时未收到则为 0
  • 异常:解析失败等会抛出 RealtimeControlException

getStateData()

def getStateData(self, fieldName: str, data: PyTypeUInt8 | PyTypeUInt64 | PyTypeDouble | PyTypeVectorDouble | PyTypeVectorBool, ...) -> int:

从最近一帧状态中读取字段。fieldName 使用 RtSupportedFields 中的常量(如 jointPos_mtcpPose_m 等);向量类型需传入长度参数(见类型桩重载)。

  • 返回:操作结果状态码(见实现约定)

stopReceiveRobotState()

def stopReceiveRobotState(self) -> None:

停止接收实时状态并让控制器停止发送,便于重新配置订阅字段。

2 运动控制(非实时模式)

setMotionControlMode()

def setMotionControlMode(self, mode: MotionControlMode, ec: dict) -> None:

设置运动控制模式

  • 注: 在调用各运动控制接口之前, 须设置对应的控制模式。
  • 参数:
    • [in] mode:MotionControlMode.IdleNrtCommandModeNrtRLTaskRtCommandMode
    • [out] ec: 错误码

moveReset()

def moveReset(self, ec: dict) -> None:

运动重置, 清空已发送的运动指令, 清除执行信息

  • 注解: Robot 类在初始化时会调用一次运动重置。RL 程序和 SDK 运动指令切换控制,需要先运动重置。
  • 参数: [out] ec 错误码

stop()

def stop(self, ec: dict) -> None:

暂停机器人运动; 暂停后可调用 moveStart()继续运动。若需要完全停止,不再执行已添加的指令,可调用moveReset()

  • 注解: 目前支持 stop2 停止类型, 规划停止不断电, 参见 StopLevel。 调用此接口后, 暂停后可调用 moveStart() 继续运动。若需要完全停止,不再执行已添加的指令,可调用 moveReset()
  • 参数: [out] ec: 错误码

pause()

def pause(self, ec: dict) -> None:

暂停机器人运动,语义与 stop() 相同。

  • 参数:[out] ec: 错误码

moveStart()

def moveStart(self, ec: dict) -> None:

开始/继续运动

  • 参数: [out] ec: 错误码

moveAppend() [1/2]

def moveAppend(self, cmds: list[MoveJCommand], cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmds: list[MoveAbsJCommand], cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmds: list[MoveLCommand], cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmds: list[MoveCCommand], cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmds: list[MoveCFCommand], cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmds: list[MoveSPCommand], cmdID: PyString, ec: dict) -> None:

添加单条或多条运动指令, 添加后调用 moveStart()开始运动

  • 参数
    • [in] cmds 指令列表, 允许的个数为 1-100, 须为同类型的指令
    • [out] cmdID 本条指令的 ID, 可用于查询指令执行信息
    • [out] ec 错误码, 仅反馈指令发送前的错误, 包括: 1) 网络连接问题; 2) 指令个数不符;

moveAppend() [2/2]

def moveAppend(self, cmd: MoveAbsJCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveAbsJCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveLCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveJCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveCFCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveCCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveSPCommand, cmdID: PyString, ec: dict) -> None:
def moveAppend(self, cmd: MoveWaitCommand, cmdID: PyString, ec: dict) -> None:

添加单条运动指令, 添加后调用 moveStart()开始运动

  • 参数:
    • [in] cmds 指令
    • [out] cmdID 本条指令的 ID, 可用于查询指令执行信息
    • [out] ec 错误码, 仅反馈指令发送前的错误, 包括: 1) 网络连接问题; 2) 指令个数不符;

executeCommand()

def executeCommand(self, cmds: list[MoveAbsJCommand], ec: dict) -> None:
def executeCommand(self, cmds: list[MoveLCommand], ec: dict) -> None:
def executeCommand(self, cmds: list[MoveJCommand], ec: dict) -> None:
def executeCommand(self, cmds: list[MoveCCommand], ec: dict) -> None:
def executeCommand(self, cmds: list[MoveCFCommand], ec: dict) -> None:
def executeCommand(self, cmds: list[MoveSPCommand], ec: dict) -> None:

执行单条或多条运动指令,调用后机器人立刻开始运动

  • 参数:
    • [in] cmds 指令列表, 允许的个数为 1-1000
    • [out] ec 错误码, 仅反馈执行前的错误, 包括: 1) 网络连接问题; 2) 指令个数不符; 3) 机器人当前状态下无法运动,例如没有上电

setDefaultSpeed()

def setDefaultSpeed(self, speed: int, ec: dict) -> None:

设定默认运动速度,初始值为 100

  • 注解: 该数值表示末端最大线速度(单位 mm/s), 自动计算对应关节速度
  • 参数:
    • [in] speed 该接口不对参数进行范围限制。末端线速度的实际有效范围分别是 5-4000(协作), 5-7000(工业)。 关节速度百分比划分为 5 个的范围:
      • < 100 : 10% ;
      • 100 ~ 200 : 30% ;
      • 200 ~ 500 : 50% ;
      • 500 ~ 800 : 80% ;
      • 800 : 100%

    • [out] ec 错误码

setDefaultZone()

def setDefaultZone(self, zone: int, ec: dict) -> None:

设定默认转弯区

  • 注解: 该数值表示运动最大转弯区半径(单位:mm), 自动计算转弯百分比. 若不设置, 则为 0 (fine, 无转弯区)
  • 参数:
    • [in] zone: 该接口不对参数进行范围限制。转弯区半径大小实际有效范围是 0-200。 转弯百分比划分 4 个范围:
      • < 1 : 0 (fine) ;
      • 1 ~ 20 : 10% ;
      • 20 ~ 60 : 30% ;
      • 60 : 100%

    • [out] ec: 错误码

setDefaultConfOpt()

def setDefaultConfOpt(self, forced: bool, ec: dict) -> None:

设置是否使用轴配置数据(confData)计算逆解。初始值为 false

  • 参数:
    • [in] forcedtrue -使用运动指令的 confData 计算笛卡尔点位逆解, 如计算失败则返回错误; false - 不使用,逆解时会选取机械臂当前轴角度的最近解
    • [out] ec 错误码

setMaxCacheSize()

def setMaxCacheSize(self, number: int, ec: dict) -> None:

设置最大缓存指令个数,指发送到控制器待规划的路径点个数,允许的范围 [1, 1000],初始值为 300。

  • 注解: 如果轨迹多为短轨迹,可以调大这个数值,避免因指令发送不及时导致机器人停止运动(停止后如果有未执行的指令,可 moveStart() 继续;

  • 参数:

    • [in] number: 个数
    • [out] ec 错误码

setAutoIgnoreZone()

def setAutoIgnoreZone(self, enable: bool, ec: dict) -> None:

设置是否在规划时自动取消转弯区;初始为 true

  • 参数:
    • [in] enable true 自动取消转弯区,false 不自动取消
    • [out] ec: 错误码

adjustSpeedOnline()

def adjustSpeedOnline(self, scale: float, ec: dict) -> None:

动态调整机器人运动速率,非实时模式时生效。

  • 参数:
    • [in] scale: 运动指令的速度的比例,范围 0.01 - 1。当设置 scale 为 1 时,机器人将以路径原本速度运动。
    • [out] ec: 错误码

getAcceleration()

def getAcceleration(self, acc: PyTypeDouble, jerk: PyTypeDouble, ec: dict) -> None:

读取当前加/减速度和加加速度

  • 参数:
    • [out] acc: 系统预设加速度的百分比
    • [out] jerk: 系统预设的加加速度的百分比
    • [out] ec: 错误码

adjustAcceleration()

def adjustAcceleration(self, acc: float, jerk: float, ec: dict) -> None:

调节运动加/减速度和加加速度。如果在机器人运动中调用,当前正在执行的指令不生效,下一条指令生效

  • 参数:
    • [in] acc: 系统预设加速度的百分比,范围[0.2, 1.5], 超出范围不会报错,自动改为上限或下限值
    • [in] jerk: 系统预设的加加速度的百分比,范围[0.1, 2], 超出范围不会报错,自动改为上限或下限值
    • [out] ec: 错误码

setEventWatcher()

def setEventWatcher(self, eventType: Event, callback: typing.Callable[[dict], None], ec: dict) -> None:

设置接收事件的回调函数

  • 参数:
    • [in] eventType: 事件类型(含 moveExecutionsafetyrlExecutionlogReporter
    • [in] callback: 处理事件的回调函数。说明:
      1. 对于Event::moveExecution, 回调函数在同一个线程执行, 请避免函数中有执行时间较长的操作;
      2. Event::safety 则每次独立线程回调, 没有执行时间的限制
    • [out] ec: 错误码

setNoneEventWatcher()

def setNoneEventWatcher(self, eventType: Event, ec: dict) -> None:

取消指定 eventType 上已注册的回调。

  • 参数:
    • [in] eventType: 与 setEventWatcher 一致
    • [out] ec: 错误码

queryEventInfo()

def queryEventInfo(self, eventType: Event, ec: dict) -> dict:

查询事件信息。与 setEventWatcher()回调时的提供的信息相同,区别是这个接口是主动查询的方式

  • 参数:
    • [in] eventType: 事件类型
    • [out] ec: 错误码
  • 返回: 事件信息

startJog()

def startJog(self, space: JogOptSpace, rate: float, step: float, index: int, direction: bool, ec: dict) -> None:

开始 jog 机器人,需要切换到手动操作模式。

  • 注解: 调用此接口并且机器人开始运动后,无论机器人是否已经自行停止,都必须调用 stop()来结束 jog 操作,否则机器人会一直处于 jog 的运行状态。
  • 参数:
    • [in] space jog 参考坐标系。
      1. 工具/工件坐标系使用原则同 setToolset();
      2. 工业六轴机型和 xMateCR/SR 六 轴 机 型 支 持 两 种 奇 异 规 避 方 式 Jog:Space::singularityAvoidMode, Space::baseParallelMode
      3. CR5 轴机型支持平行基座模式 Jog:Space::baseParallelMode
    • [in] rate: 速率, 范围 0.01 - 1
    • [in] step: 步长。单位: 笛卡尔空间-毫米 | 轴空间-度。步长大于 0 即可,不设置上限, 如果机器人机器人无法继续 jog 会自行停止运动。
    • [in] index 根据不同的 space,该参数含义如下:
      1. 世界坐标系,基坐标系,法兰坐标系,工具工件坐标系: a) 6 轴机型: 0~5 分别对应 X, Y, Z, Rx, Ry, Rz。>5 代表外部轴(若有) b) 7 轴机型 6 代表肘关节, >6 代表外部轴(若有)
      2. 轴空间: 关节序号,从 0 开始计数
      3. 奇异规避模式,平行基座模式: a) 6 轴机型:05 分别对应 X, Y, Z, J4(4 轴), Ry, J6(6 轴); b) 5 轴机型:04 分别对应 X, Y, Z, Ry, J5(5 轴)
    • [in] direction 根据不同的 space 和 index,该参数含义如下:
      1. 奇异规避模式 J4: true - ±180° | false - 0°;
      2. 平行基座模式 J4 & Ry: true - ±180° | false - 0°
      3. 其它,true - 正向 | false - 负向
    • [out] ec 错误码

startJogWithExt()

def startJogWithExt(self, space: JogOptSpace, rate: float, step: float, index: int, direction: bool, fixed_name: str, ec: dict, is_ext: bool = True) -> None:

startJog 基础上指定机械单元或外部轴:fixed_nameindexis_ext 组合使用。其余参数含义同 startJog()

  • 参数:
    • [in] fixed_name 例如与 index 配合:fixed_name 为任意字符且 is_extfalseindex 为 0 时 Jog 本体第一轴;fixed_nameu1index 为 0 时 Jog 机械单元 u1 的第一轴。
    • [in] is_ext 是否为外部轴 Jog,默认 true

setAvoidSingularity()

def setAvoidSingularity(self, method: AvoidSingularityMethod, enable: bool, threshold: float, ec: dict) -> None:

打开/关闭奇异点规避功能。只适用于部分机型:

  1. 四轴锁定: 支持工业六轴,xMateCR 和 xMateSR 六轴机型;
  2. 牺牲姿态: 支持所有六轴机型;
  3. 轴空间插补: 支持工业六轴机型(协作 xMateRobot 等类型桩签名为同名参数 limit,含义与下述一致)
  • 参数:
    • [in] method: 奇异规避方式
    • [in] enable: true - 打开功能 | false - 关闭。对于四轴锁定方式, 打开之前要确保 4 轴处于零位。
    • [in] threshold: 不同规避方式下含义分别为(xMateRobot 参数名为 limit):
      1. 牺牲姿态: 允许的姿态误差, 范围 (0, PI*2], 单位弧度
      2. 轴空间插补: 规避半径, 范围[0.005, 10], 单位米
      3. 四轴锁定: 无参数
    • [out] ec: 错误码

getAvoidSingularity()

def getAvoidSingularity(self, method: AvoidSingularityMethod, ec: dict) -> bool:

查询是否处于规避奇异点的状态

  • 参数:
    • [in] method: 奇异规避的方式
    • [out] ec: 错误码
  • 返回: true - 已打开 | false – 已关闭

checkPath() [1/3]

def checkPath(self, start: CartesianPosition, start_joint: list[float], target: CartesianPosition, ec: dict) -> list[float]:

检验笛卡尔轨迹是否可达,直线轨迹。支持导轨,返回的目标轴角为轴数+外部轴数

  • 参数:
    • [in] start: 起始点
    • [in] start_joint: 起始轴角 [弧度]
    • [in] target: 目标点
    • [out] ec: 错误码
  • 返回: 计算出的目标轴角,仅当无错误码时有效

checkPath() [2/3]

def checkPath(self, start_joint: list[float], points: list[CartesianPosition], target_joint_calculated: list, ec: dict) -> int:

校验多个直线轨迹

  • 参数:
    • [in] start_joint: 起始轴角,单位[弧度]
    • [in] points: 笛卡尔点位,至少需要 2 个点,第一个点是起始点
    • [out] target_joint_calculated: 若校验通过。返回计算出的目标轴角
    • [out] ec: 校验失败的原因
  • 返回: 若校验失败,返回 points 中出错目标点的下标。其它情况返回 0

checkPath() [3/3]

def checkPath(self, start: CartesianPosition, start_joint: list[float], aux: CartesianPosition, target: CartesianPosition, ec: dict, angle: float = 0.0, rot_type: MoveCFCommandRotType = ...) -> list[float]:

检验笛卡尔轨迹是否可达,包括圆弧,全圆。支持导轨,返回的目标轴角为轴数+外部轴数

  • 参数:
    • [in] start: 起始点
    • [in] start_joint: 起始轴角 [弧度]
    • [in] aux: 辅助点
    • [in] target: 目标点
    • [out] ec: 错误码
    • [in] angle: 全圆执行角度,不等于零时代表校验全圆轨迹
    • [in] rot_type: 全圆旋转类型,默认 constPose(固定位姿)
  • 返回: 计算出的目标轴角,仅当无错误码时有效

3 通信相关

getDI()

def getDI(self, board: int, port: int, ec: dict) -> bool:

查询数字量输入信号值。

  • 参数:
    • [in] board:IO 板序号。
    • [in] port:信号端口号。
    • [out] ec:错误码。
  • 返回:true - 开,false - 关。

getDO()

def getDO(self, board: int, port: int, ec: dict) -> bool:

查询数字输出量信号值。

  • 参数:
    • [in] board:IO 板序号。
    • [in] port:信号端口号。
    • [out] ec:错误码。
  • 返回:true - 开,false - 关。

setDI()

def setDI(self, board: int, port: int, state: bool, ec: dict) -> None:

设置数字量输入信号值,仅当输入仿真模式打开时可以设置(见 setSimulationMode())。

  • 参数:
    • [in] board:IO 板序号。
    • [in] port:信号端口号。
    • [in] state:true - 开,false - 关。
    • [out] ec:错误码。

setDO()

def setDO(self, board: int, port: int, state: bool, ec: dict) -> None:

设置数字量输出信号值。

  • 参数:
    • [in] board:IO 板序号。
    • [in] port:信号端口号。
    • [in] state:true - 开,false - 关。
    • [out] ec:错误码。

getAI()

def getAI(self, board: int, port: int, ec: dict) -> float:

读取模拟量输入信号值

  • 参数:
    • [in] board IO 板序号
    • [in] port 信号端口号
    • [out] ec 错误码
  • 返回:信号值

setAO()

def setAO(self, board: int, port: int, value: float, ec: dict) -> None:

设置模拟量输出信号

  • 参数:
    • [in] board IO 板序号
    • [in] port 信号端口号
    • [in] value 输出值
    • [out] ec 错误码

readRegister()

def readRegister(self, name: str, index: int, value: PyTypeBool | PyTypeInt | PyTypeFloat | PyTypeVectorBool | PyTypeVectorInt | PyTypeVectorFloat, ec: dict) -> None:

读取寄存器值。可读取单个寄存器,寄存器数组,或按索引读取寄存器数组。 如果要读取整个寄存器数组,value 传入对应类型的 list,index 值被忽略。

  • 参数:
    • [in] name 寄存器名称
    • [in] index 按索引读取寄存器数组中元素,从 0 开始。下列两种情况会报错:1)索引超出数组长度;2)寄存器不是数组但 index 大于 0
    • [out] value 输出容器,类型须与寄存器数据类型一致,可为 bool / int / float 及对应向量类型
    • [out] ec 错误码

writeRegister()

def writeRegister(self, name: str, index: int, value: bool, ec: dict) -> None:

写寄存器值。可写入单个寄存器,寄存器数组,或按索引写入寄存器数组中某一元素。如果要写入整个寄存器数组,value 传入对应类型的 list,index 值被忽略。

  • 参数:
    • [in] name 寄存器名称
    • [in] index 数组索引,从 0 开始。下列两种情况会报错:1)索引超出数组长度;2)寄存器不是数组但 index 大于 0
    • [in] value 写入的数值,允许的类型有 bool/int/float,和 list[bool/int/float]
    • [out] ec 错误码

setxPanelVout()

def setxPanelVout(self, opt: int, ec: dict) -> None:

设置 xPanel 对外供电模式。注:仅部分机型支持 xPanel 功能,不支持的机型会返回错误码

  • 参数:
    • [in] opt模式
    • [out] ec 错误码

setSimulationMode()

def setSimulationMode(self, state: bool, ec: dict) -> None:

设置输入仿真模式

  • 参数:
    • [in] state true - 打开 | false - 关闭
    • [out] ec 错误码

getKeypadState()

def getKeypadState(self, ec: dict) -> KeyPadState:

获取末端按键状态,不支持的机型会返回错误码

  • 参数:
    • [out] ec 错误码
  • 返回:末端按键的状态。末端按键编号见《xCore 机器人控制系统使用手册》末端把手的图示。

setxPanelRS485()

def setxPanelRS485(self, opt: int, if_rs485: bool, ec: dict) -> None:

使用 CR 和 SR 末端的 485 通信功能,需要修改末端的参数配置,可通过此接口进行参数配置

  • 参数:
    • [in] opt 对外供电模式,0:不输出,1:保留,2:12v,3:24v
    • [in] if_rs485 接口工作模式,是否打开末端 485 通信
    • [out] ec 错误码

XPRWModbusRTUReg()

def XPRWModbusRTUReg(self, slave_addr: int, fun_cmd: int, reg_addr: int, data_type: str, num: int, data_array: PyTypeVectorInt, if_crc_reverse: bool, ec: dict) -> None:

通过 xPanel 终端读写 modbus 寄存器

  • 参数:
    • [in] slave_addr 设备地址 0 - 65535
    • [in] fun_cmd 功能码 0x03 0x04 0x06 0x10
    • [in] reg_addr 寄存器地址 0 - 65535
    • [in] data_type 支持的数据类型 int32、int16、uint32、uint16
    • [in] num 一次连续操作寄存器的个数 0 - 3,类型为 int16/uint16 时,最大为 3;类型为 int32/uint32、float 时,最大为 1,功能码为 0x06 时,此参数无效
    • [in/out] data_array 发送或接收数据的数组,非 const,功能码为 0x06 时,只使用此数组的数据[0],此时 num 的值无效,除了 0x06 功能码,大小需要与 num 匹配
    • [in] if_crc_reverse 是否改变 CRC 校验高低位,默认 false,少数厂家终端工具需要反转
    • [out] ec 错误码

XPRWModbusRTUCoil()

def XPRWModbusRTUCoil(self, slave_addr: int, fun_cmd: int, coil_addr: int, num: int, data_array: PyTypeVectorBool, if_crc_reverse: bool, ec: dict) -> None:

通过 xPanel 终端读写 modbus 线圈或离散输入

  • 参数:
    • [in] slave_addr 设备地址 0 - 65535
    • [in] fun_cmd 功能码 0x01 0x02 0x05 0x0F
    • [in] coil_addr 线圈或离散输入寄存器地址 0 - 65535
    • [in] num 一次连续读写线圈离散输入的个数(0 - 48),功能码 0x05 时,此值无效
    • [in/out] data_array 发送或接收数据的数组,非 const,功能码为 0x05 时,只使用此数组的数据[0],此时 num 的值无效,除了 0x05 功能码,大小需要与 num 匹配
    • [in] if_crc_reverse 是否改变 CRC 校验高低位,默认 false,少数厂家终端工具需要反转
    • [out] ec 错误码

XPRS485SendData()

def XPRS485SendData(self, send_byte: int, rev_byte: int, send_data: list[int], rev_data: PyTypeVectorInt, ec: dict) -> None:

通过 xPanel 末端直接传输 RTU 协议裸数据

  • 参数:
    • [in] send_byte 发送字节长度 0 - 16
    • [in] rev_byte 接收字节长度 0 - 16
    • [in] send_data 发送字节数据 数组长度需要和 send_byte 参数一致
    • [out] rev_data 接收字节数据 数组长度需要和 rev_byte 参数一致
    • [out] ec 错误码

4 RL 工程

projectsInfo()

def projectsInfo(self, ec: dict) -> list[RLProjectInfo]:

查询工控机中 RL 工程名称及任务

  • 参数:
    • [out] ec 错误码
  • 返回:工程信息列表,若没有创建工程则返回空列表

loadProject()

def loadProject(self, name: str, tasks: list[str], ec: dict) -> None:

加载工程

  • 参数:
    • [in] name 工程名称
    • [in] tasks 要运行的任务。该参数必须指定,不能为空,否则无法执行工程。
    • [out] ec 错误码

ppToMain()

def ppToMain(self, ec: dict) -> None:

程序指针跳转到 main。调用后,等待控制器解析完工程后返回,阻塞时间视工程大小而定,超时时间设定为 10 秒。

  • 参数:
    • [out] ec 错误码。错误码能提供的信息有限,不能反馈如 RL 语法错误、变量不存在等错误。可通过 queryControllerLog()查询错误日志。

runProject()

def runProject(self, ec: dict) -> None:

开始运行当前加载的工程

  • 参数:
    • [out] ec 错误码

pauseProject()

def pauseProject(self, ec: dict) -> None:

暂停运行工程

  • 参数:
    • [out] ec 错误码

setProjectRunningOpt()

def setProjectRunningOpt(self, rate: float, loop: bool, ec: dict) -> None:

更改工程的运行速度和循环模式

  • 参数:
    • [in] rate 运行速率,范围 0.01 - 1
    • [in] loop true - 循环执行 | false - 单次执行
    • [out] ec 错误码

toolsInfo()

def toolsInfo(self, ec: dict) -> list[WorkToolInfo]:

查询当前加载工程的工具信息

  • 参数:
    • [out] ec 错误码
  • 返回: 工具信息列表, 若未加载任何工程或没有创建工具, 则返回默认工具 tool0 的信息

wobjsInfo()

def wobjsInfo(self, ec: dict) -> list[WorkToolInfo]:

查询当前加载工程的工件信息

  • 参数:
    • [out] ec 错误码
  • 返回: 工件信息列表, 若未加载任何工程或没有创建工件, 则返回空 list

importProject()

def importProject(self, file_path: str, overwrite: bool, ec: dict) -> str:

将本地的 RL 工程压缩包导入控制器。阻塞等到导入完成或失败

  • 参数:
    • [in] file_path 本地 .zip 压缩包路径, 文件大小在 10M 以内
    • [in] overwrite 是否覆盖同名文件,是:覆盖;否:自动重命名
    • [out] ec 错误码
  • 返回: 工程名(比如自动重命名,返回重命名之后的)

removeProject()

def removeProject(self, name: str, ec: dict, remove_all: bool = False) -> None:

删除控制器里的 RL 工程

  • 参数:
    • [in] name 工程名
    • [in] remove_all 是否删除所有工程,缺省值是 false
    • [out] ec 错误码

importFile()

def importFile(self, file_path: str, dest: str, overwrite: bool, ec: dict) -> str:

导入本地文件到控制器。阻塞等到导入完成或失败

  • 参数:
    • [in] file_path 本地文件路径。文件大小在 10M 以内
    • [in] dest 目标路径
      • 传输单个 RL 工程.mod 文件: project/[工程名]/[任务名]/[mod文件名]
      • 传输 RL 工程.json/.xml/sys 格式的配置文件: project/[工程名]/[文件名]。注意: 配置文件名称不可更改,比如任务文件名必须是"task.xml"
    • [in] overwrite 覆盖同名文件: true - 覆盖 | false - 自动重命名。仅.mod 文件支持自动重命名
    • [out] ec 本地文件不存在; 文件格式错误; 传输失败; 目标路径不符合要求等
  • 返回:导入成功后文件名

removeFiles()

def removeFiles(self, file_path_list: list[str], ec: dict) -> None:

删除控制器中文件。注: 工程.xml, .json 等配置文件不能删除,只能替换

  • 参数:
    • [in] file_path_list 文件路径的列表, 单个文件路径如下:
        1. 删除某工程某任务下的 .mod 文件: project/[工程名]/[任务名]/[mod 文件名]
        1. 删除某工程某任务: project/[工程名]/[任务名]
    • [out] ec 参数格式错误或网络错误。工程或任务或文件不存在不返回错误码

setToolInfo()

def setToolInfo(self, tool_info: WorkToolInfo, ec: dict) -> None:

设置全局工具信息,或新建/设置 RL 工程中工具的位姿信息和负载信息

  • 参数:
    • [in] tool_info 工具信息
    • [out] ec 全局工具一般不会设置失败。工程中工具可能会设置失败,比如给控制器推送了工程的工具配置文件但是没有重新加载工程,工具配置不一致的情况下会返回错误码

setWobjInfo()

def setWobjInfo(self, wobj_info: WorkToolInfo, ec: dict) -> None:

设置全局工件信息,或新建/设置 RL 工程中工件的位姿信息和负载信息

  • 参数:
    • [in] wobj_info 工件信息
    • [out] ec 同理设置工具接口,全局工件一般不会设置失败。工程中工件可能会设置失败

5 协作相关

enableDrag()

def enableDrag(self, space: int, type: int, ec: dict, enable_drag_button: bool) -> None:

打开拖动

  • 参数:
    • [in] space 拖动空间, 轴空间拖动仅支持自由拖拽类型
    • [in] type 拖动类型
    • [out] ec 错误码
    • [in] enable_drag_button true - 打开拖动功能之后可以直接拖动机器人,不需要按住末端按键

disableDrag()

def disableDrag(self, ec: dict) -> None:

关闭拖动

  • 参数:
    • [out] ec 错误码

setRtNetworkTolerance()

def setRtNetworkTolerance(self, percent: int, ec: dict) -> None:

设置实时运动指令网络延迟阈值(RobotAssist–RCI「包丢失阈值」),取值 0~100。须在切换到 RtCommandMode 之前调用,否则不生效。

  • 参数:
    • [in] percent 允许丢包/延迟阈值百分比
    • [out] ec: 错误码

startRecordPath()

def startRecordPath(self, duration: int, ec: dict) -> None:

开始录制路径

  • 参数:
    • [in] duration 路径的时长,单位:秒,范围 1~1800.此时长只做范围检查用,到时后控制器不会停止录制,需要调用 stopRecordPath()来停止
    • [out] ec 错误码

stopRecordPath()

def stopRecordPath(self, ec: dict) -> None:

停止录制路径, 若录制成功(无错误码)则路径数据保存在缓存中

  • 参数:
    • [out] ec 错误码

cancelRecordPath()

def cancelRecordPath(self, ec: dict) -> None:

取消录制, 缓存的路径数据将被删除

  • 参数:
    • [out] ec 错误码

saveRecordPath()

def saveRecordPath(self, name: str, ec: dict, saveAs: str = '') -> None:

保存录制好的路径

  • 参数:
    • [in] name 路径名称
    • [out] ec 错误码
    • [in] saveAs 重命名, 可选参数。 如果已录制好一条路径但没有保存,则用该名字保存路径。如果没有未保存的路径,则将已保存的名为"name"的路径重命名为"saveAs"

replayPath()

def replayPath(self, name: str, rate: float, ec: dict) -> None:

运动指令-路径回放 和其它运动指令类似, 调用 replayPath 之后, 需调用 moveStart 才会开始运动。

  • 参数:
    • [in] name 要回放的路径名称
    • [in] rate 回放速率, 应小于 3.0, 1 为路径原始速率。注意当速率大于 1 时,可能产生驱动器无法跟随错误
    • [out] ec 错误码

removePath()

def removePath(self, name: str, ec: dict, removeAll: bool = False) -> None:

删除已保存的路径

  • 参数:
    • [in] name 要删除的路径名称
    • [out] ec 错误码。若路径不存在,错误码不会被置位
    • [in] removeAll 是否删除所有路径, 可选参数, 默认为否
  • 返回:无

queryPathLists()

def queryPathLists(self, ec: dict) -> list[str]:

查询已保存的所有路径名称

  • 参数:
    • [out] ec 错误码
  • 返回:名称列表, 若没有路径则返回空列表

calibrateForceSensor()

def calibrateForceSensor(self, all_axes: bool, axis_index: int, ec: dict) -> None:

力传感器标定(约 100ms,非阻塞等待完成)。标定前需通过 setToolset() 设置正确负载。

  • 参数
    • [in] all_axes true - 标定所有轴 | false - 单轴标定
    • [in] axis_index 轴下标, 范围[0, DoF), 仅当单轴标定时生效
    • [out] ec 错误码

6 力控指令

forceControl()

def forceControl(self) -> ...:

力控指令类

  • 返回: ForceControl_T

getEndTorque()

def getEndTorque(self, ref_type: FrameType, joint_torque_measured: PyTypeVectorDouble, external_torque_measured: PyTypeVectorDouble, cart_torque: PyTypeVectorDouble, cart_force: PyTypeVectorDouble, ec: dict) -> None:

获取当前力矩信息

  • 参数:
    • [in] ref_type 力矩相对的参考系:
      • FrameType::world - 末端相对世界坐标系的力矩信息;
      • FrameType::flange - 末端相对于法兰盘的力矩信息;
      • FrameType::tool - 末端相对于 TCP 点的力矩信息。
    • [out] joint_torque_measured 各轴测量力
    • [out] external_torque_measured 各轴外部力
    • [out] cart_torque 笛卡尔空间力矩 [X, Y, Z],单位 Nm
    • [out] cart_force 笛卡尔空间力 [X, Y, Z],单位 N
    • [out] ec 错误码

fcInit()

def fcInit(self, frame_type: FrameType, ec: dict) -> None:

力控初始化

  • 参数:
    • [in] frame_type 力控坐标系,支持 world/wobj/tool/base/flange。工具工件坐标系使用 setToolset() 设置的坐标系
    • [out] ec 错误码

fcStart()

def fcStart(self, ec: dict) -> None:

开始力控,fcInit()之后调用。如需在力控模式下执行运动指令,fcStart()之后可执行。注意,如果在 fcStart()之前通过 moveAppend()下发了运动指令但未开始运动,fcStart 之后就会执行这些运动指令。

  • 参数:[out] ec 错误码

fcStop()

def fcStop(self, ec: dict) -> None:

停止力控

  • 参数 [out] ec 错误码

setControlType()

def setControlType(self, type: int, ec: dict) -> None:

设置阻抗控制类型

  • 参数:
    • [in] type 0 - 关节阻抗 | 1 - 笛卡尔阻抗
    • [out] ec 错误码

setLoad()

def setLoad(self, load: Load, ec: dict) -> None:

设置力控模块使用的负载信息,fcStart()之后可调用。

  • 参数:
    • [in] load 负载
    • [out] ec 错误码

setJointStiffness()

def setJointStiffness(self, stiffness: list[float], ec: dict) -> None:

设置关节阻抗刚度。fcInit()之后调用生效,各机型的最大刚度不同,请参考《xCore 控制系统手册》 SetJntCtrlStiffVec 指令的说明

  • 参数:
    • [in] stiffness 各轴刚度
    • [out] ec 错误码

setCartesianStiffness()

def setCartesianStiffness(self, stiffness: list[float], ec: dict) -> None:

设置笛卡尔阻抗刚度。fcInit()之后调用生效,各机型的最大刚度不同,请参考《xCore 控制系统手册》 SetCartCtrlStiffVec 指令的说明

  • 参数:
    • [in] stiffness 依次为:X Y Z 方向阻抗力刚度[N/m], X Y Z 方向阻抗力矩刚度[Nm/rad]
    • [out] ec 错误码

setCartesianNullspaceStiffness()

def setCartesianNullspaceStiffness(self, stiffness: float, ec: dict) -> None:

设置笛卡尔零空间阻抗刚度。fcInit()之后调用生效

  • 参数:
    • [in] stiffness 范围[0,4],大于 4 会默认设置为 4, 单位 Nm/rad
    • [out] ec 错误码

setJointDesiredTorque()

def setJointDesiredTorque(self, torque: list[float], ec: dict) -> None:

设置关节期望力矩。fcStart()之后可调用

  • 参数:
    • [in] torque 力矩值, 范围[-30,30], 单位 Nm
    • [out] ec 错误码

setCartesianDesiredForce()

def setCartesianDesiredForce(self, value: list[float], ec: dict) -> None:

设置笛卡尔期望力/力矩。fcStart()之后可调用

  • 参数:
    • [in] value 依次为 X Y Z 方向笛卡尔期望力,范围[-60,60],单位 N;X Y Z 方向笛卡尔期望力矩,范围[-10,10],单位 Nm
    • [out] ec 错误码

setSineOverlay()

def setSineOverlay(self, line_dir: int, amplify: float, frequency: float, phase: float, bias: float, ec: dict) -> None:

设置绕单轴旋转的正弦搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即 setControlType(1))之后,startOverlay()之前调用生效。 各机型的搜索运动幅值上限和搜索运动频率上限不同,请参考《xCore 控制系统手册》 SetSineOverlay 指令的说明。

  • 参数:
    • [in] line_dir 搜索运动参考轴: 0 - X | 1 - Y | 2 - Z
    • [in] amplify 搜索运动幅值, 单位 Nm
    • [in] frequency 搜索运动频率, 单位 Hz
    • [in] phase 搜索运动相位, 范围[0, PI], 单位弧度
    • [in] bias 搜索运动偏置, 范围[0, 10], 单位 Nm
    • [out] ec 错误码

setLissajousOverlay()

def setLissajousOverlay(self, plane: int, amplify_one: float, frequency_one: float, amplify_two: float, frequency_two: float, phase_diff: float, ec: dict) -> None:

设置平面内的莉萨如搜索运动 设置阻抗控制类型为笛卡尔阻抗(即 setControlType(1))之后, startOverlay()之前调用生效。

  • 参数:
    • [in] plane 搜索运动参考平面: 0 - XY | 1 - XZ | 2 - YZ
    • [in] amplify_one 搜索运动一方向幅值, 范围[0, 20], 单位 Nm
    • [in] frequency_one 搜索运动一方向频率, 范围[0, 5], 单位 Hz
    • [in] amplify_two 搜索运动二方向幅值, 范围[0, 20]单位 Nm
    • [in] frequency_two 搜索运动二方向频率, 范围[0, 5], 单位 Hz
    • [in] phase_diff 搜索运动两个方向相位偏差, 范围[0, PI], 单位弧度
    • [out] ec 错误码

startOverlay()

def startOverlay(self, ec: dict) -> None:

开启搜索运动。fcStart()之后调用生效 搜索运动为前序设置的 setSineOverlay()或 setLissajousOverlay()的叠加

  • 参数:
    • [out] ec 错误码

stopOverlay()

def stopOverlay(self, ec: dict) -> None:

停止搜索运动

  • 参数:
    • [out] ec 错误码

pauseOverlay()

def pauseOverlay(self, ec: dict) -> None:

暂停搜索运动。startOverlay()之后调用生效

  • 参数:
    • [out] ec 错误码

restartOverlay()

def restartOverlay(self, ec: dict) -> None:

重新开启暂停的搜索运动。pauseOverlay()之后调用生效。

  • 参数:
    • [out] ec 错误码

setForceCondition()

def setForceCondition(self, range: list[float], isInside: bool, timeout: float, ec: dict) -> None:

设置与接触力有关的终止条件

  • 参数:
    • [in] range 各方向上的力限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max },单位 N。设置下限时,负值表示负方向上的最大值;设置上限时,负值表示负方向上的最小值。
    • [in] isInside true - 超出限制条件时停止等待;false - 符合限制条件时停止等待
    • [in] timeout 超时时间,范围[1, 600],单位秒
    • [out] ec 错误码

setTorqueCondition()

def setTorqueCondition(self, range: list[float], isInside: bool, timeout: float, ec: dict) -> None:

设置与接触力矩有关的终止条件

  • 参数:
    • [in] range 各方向上的力矩限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max },单位 Nm。设置下限时,负值表示负方向上的最大值;设置上限时,负值表示负方向上的最小值。
    • [in] isInside true - 超出限制条件时停止等待;false - 符合限制条件时停止等待
    • [in] timeout 超时时间, 范围[1, 600], 单位秒
    • [out] ec 错误码

setPoseBoxCondition()

def setPoseBoxCondition(self, supervising_frame: Frame, box: list[float], isInside: bool, timeout: float, ec: dict) -> None:

设置与接触位置有关的终止条件

  • 参数:
    • [in] supervising_frame 长方体所在的参考坐标系,相对于外部工件坐标系(通过 setToolset()设置的 Toolset::ref)
    • [in] box 定义一个长方体 { X_start, X_end, Y_start, Y_end, Z_start, Z_end },单位米
    • [in] isInside true - 超出限制条件时停止等待;false - 符合限制条件时停止等待
    • [in] timeout 超时时间,范围[1, 600],单位秒
    • [out] ec 错误码

waitCondition()

def waitCondition(self, ec: dict) -> None:

激活前序设置的终止条件并等待,直到满足这些条件或者超时

  • 参数:
    • [out] ec 错误码

fcMonitor()

def fcMonitor(self, enable: bool, ec: dict) -> None:

启动/关闭力控模块保护监控 设置监控参数后,不立即生效,调用 fcMonitor(true)后开始生效,并且一直保持,直到调用 fcMonitor(false)后结束。结束后保护阈值恢复成默认值,即仍然会有保护效果,关闭监控后不再是用户设置的参数。

  • 参数:
    • [in] enable true - 打开 | false - 关闭
    • [out] ec 错误码

setJointMaxVel()

def setJointMaxVel(self, velocity: list[float], ec: dict) -> None:

设置力控模式下的轴最大速度

  • 参数:
    • [in] velocity 轴速度 [rad/s],范围 >=0
    • [out] ec 错误码

setJointMaxMomentum()

def setJointMaxMomentum(self, momentum: list[float], ec: dict) -> None:

设置力控模式下轴最大动量 计算方式:F*t,可以理解为冲量,F为力矩传感器读数,t为控制周期,如果超过30个周期都超过动量阈值则触发保护

  • 参数:
    • [in] momentum 动量[N·s],范围 >=0
    • [out] ec 错误码

setJointMaxEnergy()

def setJointMaxEnergy(self, energy: list[float], ec: dict) -> None:

设置力控模式下轴最大动能 计算方式:F*v,可以理解为功率,F为力矩传感器读数,v为关节速度,如果超过30个周期都超过动能阈值则触发保护

  • 参数:
    • [in] energy 动能[N·rad/s],范围 >=0
    • [out] ec 错误码

setCartesianMaxVel()

def setCartesianMaxVel(self, velocity: list[float], ec: dict) -> None:

设置力控模式下,机械臂末端相对基坐标系的最大速度

  • 参数:
    • [in] velocity 依次为:X Y Z [m/s], A B C [rad/s], 范围 >=0
    • [out] ec 错误码