跳到主要内容

方法

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

connectToRobot() [1/3]

void connectToRobot([Out] ErrorCode^% ec);

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

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

connectToRobot() [2/3]

void connectToRobot(String^ remoteIP);

连接到机器人

  • 参数:
    • remoteIP 机器人 IP 地址

connectToRobot() [3/3]

void connectToRobot(String^ remoteIP, String^ localIP);

连接到机器人

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

disconnectFromRobot()

void disconnectFromRobot([Out] ErrorCode^% ec);

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

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

robotInfo()

Info robotInfo([Out] ErrorCode^% ec);

查询机器人基本信息

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

powerState()

PowerState powerState([Out] ErrorCode^% ec);

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

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

setPowerState()

void setPowerState(Boolean on, [Out] ErrorCode^% ec);

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

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

operateMode()

OperateMode operateMode([Out] ErrorCode^% ec);

查询机器人当前操作模式

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

setOperateMode()

void setOperateMode(OperateMode mode, [Out] ErrorCode^% ec);

切换手自动模式

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

rebootSystem()

void rebootSystem([Out] ErrorCode^% ec);

重启工控机。注:在自动模式、下电状态、运动和非空闲状态不允许重启操作

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

shutdownSystem()

void shutdownSystem([Out] ErrorCode^% ec);

关闭工控机。在自动模式、下电状态、运动和非空闲状态不允许执行。控制柜断电后重新上电才能重新启动控制器软件。

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

operationState()

OperationState operationState([Out] ErrorCode^% ec);

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

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

getStateList()

StateList getStateList([Out] ErrorCode^% ec);

查询当前位置、IO 信号、操作模式、程序速度比例

  • 参数: [out] ec: 错误码
  • 返回: StateList(关节角、笛卡尔位姿、数字/模拟 IO、操作模式、速度覆盖等)

posture()

array<double>^ posture(CoordinateType ct, [Out] ErrorCode^% ec);

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

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

cartPosture()

CartesianPosition^ cartPosture(CoordinateType ct, [Out] ErrorCode^% ec);

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

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

jointPos()

array<double>^ jointPos([Out] ErrorCode^% ec);

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

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

jointVel()

array<double>^ jointVel([Out] ErrorCode^% ec);

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

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

jointTorque()

array<double>^ jointTorque([Out] ErrorCode^% ec);

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

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

baseFrame()

array<double>^ baseFrame([Out] ErrorCode^% ec);

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

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

setBaseFrame()

void setBaseFrame(Frame^ frame, [Out] ErrorCode^% ec);

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

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

toolset()

Toolset^ toolset([Out] ErrorCode^% ec);

查询当前工具工件组信息

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

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

setToolset() [1/2]

void setToolset(Toolset^ toolset, [Out] ErrorCode^% ec);

设置工具工件组信息

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

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

setToolset() [2/2]

void setToolset(System::String^ toolName, System::String^ wobjName, [Out] ErrorCode^% ec);

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

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

calcIk() [1/2]

array<double>^ calcIk(CartesianPosition^ posture, [Out] ErrorCode^% ec);

根据位姿计算逆解

  • 参数:
    • [in] posture 机器人末端位姿,相对于外部参考坐标系
    • [out] ec: 错误码
  • 返回: 轴角度, 单位:弧度

calcIk() [2/2]

array<double>^ calcIk(CartesianPosition^ posture, Toolset^ toolset, [Out] ErrorCode^% ec);

根据位姿计算给定工具工件坐标系下逆解

  • 参数:
    • [in] posture 机器人末端位姿,相对于外部参考坐标系
    • [in] toolset 工具工件组信息
    • [out] ec: 错误码
  • 返回: 轴角度, 单位:弧度

calcFk() [1/2]

CartesianPosition^ calcFk(array<double>^ joints, [Out] ErrorCode^% ec);

根据轴角度计算正解

  • 参数:
    • [in] joints 轴角度, 单位: 弧度
    • [out] ec: 错误码
  • 返回: 机器人末端位姿,相对于外部参考坐标系

calcFk() [2/2]

CartesianPosition^ calcFk(array<double>^ joints, Toolset^ toolset, [Out] ErrorCode^% ec);

根据轴角度计算给定工具工件坐标系下正解

  • 参数:
    • [in] joints 轴角度, 单位: 弧度
    • [in] toolset 工具工件组信息
    • [out] ec: 错误码
  • 返回: 机器人末端位姿,相对于外部参考坐标系

getRobotCfg_DHparam()

array<double>^ getRobotCfg_DHparam(bool get_nominal, [Out] ErrorCode^% ec);

读取 DH 参数

  • 参数:
    • [in] get_nominal false - 优化后或设置后的参数 | true - 标称参数。一般建议使用 false
    • [out] ec: 错误码
  • 返回: 依次为各轴的 Alpha[°], A[mm], D[mm], Theta[°];错误码为 0 时有效

calcAllIkSolutions()

array<array<double>^>^ calcAllIkSolutions(CartesianPosition^ posture, array<array<int>^>^% confs, [Out] ErrorCode^% ec);

计算笛卡尔位姿的所有逆解结果。支持除 xMateSR(XMS) 之外的所有机型

  • 参数:
    • [in] posture 笛卡尔位姿,法兰相对于基坐标系;其它坐标系需自行转换
    • [out] confs 对应的 confdata,错误码为 0 时有效
    • [out] ec: 错误码(含逆解失败:如奇异点、超限位等)
  • 返回: 逆解结果,单位弧度,错误码为 0 时有效

calibrateFrame ()

FrameCalibrationResult^ calibrateFrame(FrameType type, List<array<double>^>^ points, bool is_held, array<double>^ base_aux, [Out] ErrorCode^% ec);

坐标系标定 (N 点标定)

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

clearServoAlarm()

void clearServoAlarm([Out] ErrorCode^% ec);

清除伺服报警

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

enableCollisionDetection() [1/2] (工业机器人)

void enableCollisionDetection(array<double>^ sensitivity, double fallback, [Out] ErrorCode^% ec);

设置碰撞检测相关参数, 打开碰撞检测功能。工业机型只支持stop1(安全停止)

  • 参数:
    • [in] sensitivity 碰撞检测灵敏度,范围 0.01-2.0
    • [in] fallback 碰撞后回退距离,单位: 米
    • [out] ec: 错误码

enableCollisionDetection() [2/2] (协作机器人)

void enableCollisionDetection(array<double>^ sensitivity, StopLevel behaviour, double fallback_compliance, [Out] ErrorCode^% ec);

设置碰撞检测相关参数, 打开碰撞检测功能

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

disableCollisionDetection()

void disableCollisionDetection([Out] ErrorCode^% ec);

关闭碰撞检测功能

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

getSoftLimit()

bool getSoftLimit(array<double, 2>^% limits, [Out] ErrorCode^% ec);

获取当前软限位数值

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

setSoftLimit()

void setSoftLimit(bool enable, array<double, 2>^ limits, [Out] ErrorCode^% ec);

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

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

queryControllerLog()

List<LogInfo^>^ queryControllerLog(unsigned count, LogInfo::Level level, [Out] ErrorCode^% ec);

查询控制器最新的日志

  • 参数:
    • [in] count 查询个数,上限是 10 条
    • [in] level 指定日志等级
    • [out] ec: 错误码
  • 返回: 日志信息

recoverState()

void recoverState(int item, [Out] ErrorCode^% ec);

根据选项恢复机器人状态

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

setRailParameter() [1/5]

void setRailParameter(System::String^ name, Frame^ value, [Out] ErrorCode^% ec);

设置导轨基坐标系

  • 参数:
    • [in] name: 参数名,"baseFrame"
    • [in] value:基坐标系数值
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

setRailParameter() [2/5]

void setRailParameter(System::String^ name, System::String^ value, [Out] ErrorCode^% ec);

设置导轨名称

  • 参数:
    • [in] name: 参数名,"name"
    • [in] value:导轨名称
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

setRailParameter() [3/5]

void setRailParameter(System::String^ name, double value, [Out] ErrorCode^% ec);

设置导轨参数

  • 参数:
    • [in] name: 参数名,见 value 说明
    • [in] value:参数数值
      参数名说明
      reductionRatio减速比
      maxSpeed最大速度(m/s)
      maxAcc最大加速度(m/s^2)
      maxJerk最大加加速度(m/s^3)
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

setRailParameter() [4/5]

void setRailParameter(System::String^ name, bool value, [Out] ErrorCode^% ec);

打开关闭导轨

  • 参数:
    • [in] name: 参数名,"enable"
    • [in] value:true - 打开
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

setRailParameter() [5/5]

void setRailParameter(System::String^ name, array<double>^ value, [Out] ErrorCode^% ec);

设置导轨软限位和运动范围

  • 参数:
    • [in] name: 参数名,见 value 说明
    • [in] value:参数数值
      参数名说明
      softLimit软限位(m), [下限,上限]
      range运动范围(m), [下限,上限]
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

setRailParameter() [6/6]

void setRailParameter(System::String^ name, int value, [Out] ErrorCode^% ec);

设置导轨参数(整型)

  • 参数:
    • [in] name: encoderResolution(编码器分辨率)| motorSpeed(电机最大转速 rpm)
    • [in] value:参数值
    • [out] ec: 错误码

getRailParameter() [1/5]

void getRailParameter(System::String^ name, bool% value, [Out] ErrorCode^% ec);

读取导轨是否打开

  • 参数:
    • [in] name: 参数名,"enable"
    • [out] value:true - 打开
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

getRailParameter() [2/5]

void getRailParameter(System::String^ name, String^% value, [Out] ErrorCode^% ec);

读取导轨名称

  • 参数:
    • [in] name: 参数名,"name"
    • [out] value:导轨名称
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

getRailParameter() [3/5]

void getRailParameter(System::String^ name, Frame^% value, [Out] ErrorCode^% ec);

读取导轨基座标系

  • 参数:
    • [in] name: 参数名,"baseFrame"
    • [out] value:导轨基坐标系
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

getRailParameter() [4/5]

void getRailParameter(System::String^ name, int% value, [Out] ErrorCode^% ec);

读取导轨参数

  • 参数:
    • [in] name: 参数名
      参数名说明
      encoderResolution编码器分辨率
      motorSpeed电机最大转速(rpm)
    • [out] value:参数数值
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

getRailParameter() [5/5]

void getRailParameter(System::String^ name, double% value, [Out] ErrorCode^% ec);

读取导轨参数

  • 参数:
    • [in] name: 参数名
      参数名说明
      reductionRatio减速比
      maxSpeed最大速度(m/s)
      maxAcc最大加速度(m/s^2)
      maxJerk最大加加速度(m/s^3)
    • [out] value:参数数值
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

getRailParameter() [6/6]

void getRailParameter(System::String^ name, array<double>^% value, [Out] ErrorCode^% ec);

读取导轨软限位和运动范围

  • 参数:
    • [in] name: 参数名
      参数名说明
      softLimit软限位(m), [下限,上限]
      range运动范围(m), [下限,上限]
    • [out] value:参数数值
    • [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码

configNtp()

void configNtp(System::String^ server_ip, [Out] ErrorCode^% ec);

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

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

syncTimeWithServer()

void syncTimeWithServer([Out] ErrorCode^% ec);

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

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

sdkVersion()

String^ sdkVersion();

查询 xCore-SDK 版本

  • 返回: 版本号

setTeachPendantMode()

void setTeachPendantMode(bool enable, [Out] ErrorCode^% ec);

示教器热插拔。注:仅部分机型支持;不使用示教器后,使能与急停按键将失效。

  • 参数:
    • [in] enable true - 使用示教器 | false - 不使用示教器
    • [out] ec: 错误码(运动中/手动上电等不可切换;机型不支持)

updateRobotState()

unsigned updateRobotState(int timeout_ms);

接收一次机器人状态数据。每周期读数前调用;阻塞至收到新数据或超时。

  • 参数: [in] timeout_ms 超时时间[ms]
  • 返回: 接收到的数据长度;超时未收到则 0
  • 异常: ApiException 无法收数或解析失败

startReceiveRobotState()

void startReceiveRobotState(int interval, array<System::String^>^ fields);

让控制器开始发送实时状态数据。阻塞至收到首帧,超时约 3 秒。

  • 参数:
    • [in] interval 发送间隔[ms]:1 / 2 / 4 / 8 / 1000(1s)
    • [in] fields 字段名数组,总长度不超过 1024 字节;与 getStateData 支持项一致
  • 异常: 不支持的数据、已正在发送、超限、超时等

stopReceiveRobotState()

void stopReceiveRobotState();

停止接收实时状态,控制器同时停止发送。可用于重新配置字段。

getStateData() [1/3]

int getStateData(String^ name, array<double>^% data);

读取机器人状态数据(双精度数组类型)。namedata 长度须与 startReceiveRobotState 配置一致。

  • 返回: 成功 0;无此字段、类型不符等 -1

getStateData() [2/3]

int getStateData(String^ name, UInt64% data);

读取时间戳。name"ts",微秒。

  • 返回: 同 [1/3]

getStateData() [3/3]

int getStateData(String^ name, double% data);

读取臂角等标量。例如 name"psi_m"

  • 返回: 同 [1/3]

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

setMotionControlMode()

void setMotionControlMode(MotionControlMode mode, [Out] ErrorCode^% ec);

设置运动控制模式

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

moveReset()

void moveReset([Out] ErrorCode^% ec);

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

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

stop()

void stop([Out] ErrorCode^% ec);

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

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

moveStart()

void moveStart([Out] ErrorCode^% ec);

开始/继续运动

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

moveAppend() [1/2]

void moveAppend(MoveCommand::Type type, List<MoveCommand^>^ cmd, System::String^% cmdId, [Out] ErrorCode^% ec);

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

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

moveAppend() [2/2]

void moveAppend(MoveCommand::Type type, MoveCommand^ cmd, System::String^% cmdId, [Out] ErrorCode^% ec);

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

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

executeCommand()

void executeCommand(MoveCommand::Type type, List<MoveCommand^>^ cmd, [Out] ErrorCode^% ec);

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

  • 参数:
    • [in] type 指令类型
    • [in] cmd 指令列表, 允许的个数为 1-100, 须为同类型指令
    • [out] ec 错误码, 仅反馈执行前的错误, 包括: 1) 网络连接问题; 2) 指令个数或类型不符;

setDefaultSpeed()

void setDefaultSpeed(double speed, [Out] ErrorCode^% ec);

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

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

    • [out] ec 错误码

setDefaultZone()

void setDefaultZone(double zone, [Out] ErrorCode^% ec);

设定默认转弯区

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

    • [out] ec: 错误码

setDefaultConfOpt()

void setDefaultConfOpt(bool forced, [Out] ErrorCode^% ec);

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

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

setAutoIgnoreZone()

void setAutoIgnoreZone(bool enable, [Out] ErrorCode^% ec);

设置运动指令是否自动取消转弯区。初始值为 true

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

setMaxCacheSize()

void setMaxCacheSize(int number, [Out] ErrorCode^% ec);

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

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

  • 参数:

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

adjustSpeedOnline()

void adjustSpeedOnline(double scale, [Out] ErrorCode^% ec);

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

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

getAcceleration()

void getAcceleration(double% acc, double% jerk, [Out] ErrorCode^% ec);

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

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

adjustAcceleration()

void adjustAcceleration(double acc, double jerk, [Out] ErrorCode^% ec);

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

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

setEventWatcher()

void setEventWatcher(Event eventType, EventCallbackDelegate^ callback, [Out] ErrorCode^% ec);

设置接收事件的回调函数

  • 参数:
    • [in] eventType: 事件类型(moveExecution / safety / rlExecution / logReporter)
    • [in] callback: 处理事件的回调函数。说明:
      1. Event::moveExecution:同一线程回调,勿长时间阻塞;
      2. Event::safety:独立线程回调;
      3. rlExecution、logReporter:按控制器上报触发
    • [out] ec: 错误码

queryEventInfo()

EventInfo queryEventInfo(Event eventType, [Out] ErrorCode^% ec);

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

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

startJog()

void startJog(JogSpace space, double rate, double step, unsigned index, bool direction, [Out] ErrorCode^% ec);

开始 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 错误码

setAvoidSingularity() [1/2] (工业机器人)

void setAvoidSingularity(AvoidSingularityMethod method, bool enable, double limit, [Out] ErrorCode^% ec);

打开/关闭奇异点规避功能。三种方式都支持

  • 参数:
    • [in] method: 奇异规避方式
    • [in] enable: true - 打开功能 | false - 关闭。对于四轴锁定方式, 打开之前要确保 4 轴处于零位。
    • [in] limit: 不同的规避方式,该参数含义分别为:
      1. 四轴锁定: 无参数
      2. 牺牲姿态: 允许的姿态误差, 范围 (0, PI*2], 单位弧度
      3. 轴空间插补: 规避半径, 范围[0.005, 10], 单位米
    • [out] ec: 错误码

setAvoidSingularity() [2/2] (协作机器人)

void setAvoidSingularity(AvoidSingularityMethod method, bool enable, double limit, [Out] ErrorCode^% ec);

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

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

getAvoidSingularity()

bool getAvoidSingularity(AvoidSingularityMethod method, [Out] ErrorCode^% ec);

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

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

checkPath() [1/4]

array<double>^ checkPath(CartesianPosition^ start, array<double>^ start_joint, CartesianPosition^ target, [Out] ErrorCode^% ec);

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

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

checkPath() [2/4]

int checkPath(array<double>^ start_joint, array<CartesianPosition^>^ targets, array<double>^% target_joint_calculated, [Out] ErrorCode^% ec);

校验多个直线轨迹

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

checkPath() [3/4]

array<double>^ checkPath(CartesianPosition^ start, array<double>^ start_joint, CartesianPosition^ aux, CartesianPosition^ target, [Out] ErrorCode^% ec);

检验圆弧轨迹是否可达

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

checkPath() [4/4]

array<double>^ checkPath(CartesianPosition^ start, array<double>^ start_joint, CartesianPosition^ aux1, CartesianPosition^ aux2, double angle, double rot_type, [Out] ErrorCode^% ec);

检验全圆轨迹是否可达

  • 参数:
    • [in] start: 起始点
    • [in] start_joint: 起始轴角 [弧度]
    • [in] aux1: 辅助点1
    • [in] aux2: 辅助点2
    • [in] angle: 全圆执行角度,单位弧度,不等于零时代表校验全圆轨迹
    • [in] rot_type: 全圆旋转类型
    • [out] ec: 错误码
  • 返回: 计算出的目标轴角,仅当无错误码时有效

getMechUnit() [1/3]

void getMechUnit(String^ name, String^ info, bool% value, [Out] ErrorCode^% ec);

读取机械单元参数(bool)

  • 参数: [in] name 机械单元 u1~u6;[in] info 参数名(activation、enable 等);[out] value;[out] ec

getMechUnit() [2/3]

void getMechUnit(String^ name, String^ info, int% value, [Out] ErrorCode^% ec);

读取机械单元参数(int),如 mech_link_type 等

getMechUnit() [3/3]

void getMechUnit(String^ name, String^ info, array<String^>^% value, [Out] ErrorCode^% ec);

读取机械单元参数(字符串数组),如 axes_info 等

getExtAxisInfo() [1/5]

void getExtAxisInfo(String^ name, String^ info, bool% value, [Out] ErrorCode^% ec);

读取外部轴参数(bool)

  • 参数: [in] name axis1~axis6;[in] info 如 is_servo_gun、joint_orient 等

getExtAxisInfo() [2/5]

void getExtAxisInfo(String^ name, String^ info, int% value, [Out] ErrorCode^% ec);

读取外部轴参数(int),如 ext_data_number、zero_value 等

getExtAxisInfo() [3/5]

void getExtAxisInfo(String^ name, String^ info, double% value, [Out] ErrorCode^% ec);

读取外部轴参数(double),如 max_acc、reduction_ratio 等

getExtAxisInfo() [4/5]

void getExtAxisInfo(String^ name, String^ info, String^% value, [Out] ErrorCode^% ec);

读取外部轴参数(字符串),如 driver_name 等

getExtAxisInfo() [5/5]

void getExtAxisInfo(String^ name, String^ info, array<String^>^% value, [Out] ErrorCode^% ec);

读取外部轴参数(字符串数组)

3 通信相关

getDI()

bool getDI(unsigned int board, unsigned int port, [Out] ErrorCode^% ec);

查询数字量输入信号值。

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

getDO()

bool getDO(unsigned int board, unsigned int port, [Out] ErrorCode^% ec);

查询数字输出量信号值。

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

setDI()

void setDI(unsigned int board, unsigned int port, bool state, [Out] ErrorCode^% ec);

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

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

setDO()

void setDO(unsigned int board, unsigned int port, bool state, [Out] ErrorCode^% ec);

设置数字量输出信号值。

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

getAI()

double getAI(unsigned board, unsigned port, [Out] ErrorCode^% ec);

读取模拟量输入信号值

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

setAO()

void setAO(unsigned board, unsigned port, double value, [Out] ErrorCode^% ec);

设置模拟量输出信号

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

readRegister() [1/3]

void readRegister(System::String^ name, List<bool>^% value, [Out] ErrorCode^% ec);

读取bit/bool类型寄存器数组。

  • 参数:
    • [in] name 寄存器名称
    • [out] value 寄存器数值
    • [out] ec 错误码

readRegister() [2/3]

void readRegister(System::String^ name, List<int>^% value, [Out] ErrorCode^% ec);

读取int16/int32类型寄存器数组。

  • 参数:
    • [in] name 寄存器名称
    • [out] value 寄存器数值
    • [out] ec 错误码

readRegister() [3/3]

void readRegister(System::String^ name, List<float>^% value, [Out] ErrorCode^% ec);

读取float类型寄存器数组。

  • 参数:
    • [in] name 寄存器名称
    • [out] value 寄存器数值
    • [out] ec 错误码

readRegister() [4/6]

void readRegister(System::String^ name, unsigned index, bool% value, [Out] ErrorCode^% ec);

读取bit/bool类型寄存器值。可读取单个寄存器,或按索引读取寄存器数组

  • 参数:
    • [in] name 寄存器名称
    • [in] index 按索引读取寄存器数组中元素,从0开始。下列两种情况会报错:1) 索引超出数组长度; 2) 寄存器不是数组但index大于0
    • [out] value 寄存器数值
    • [out] ec 错误码

readRegister() [5/6]

void readRegister(System::String^ name, unsigned index, int% value, [Out] ErrorCode^% ec);

读取int16/int32类型寄存器值。可读取单个寄存器,或按索引读取寄存器数组

  • 参数:
    • [in] name 寄存器名称
    • [in] index 按索引读取寄存器数组中元素,从0开始。下列两种情况会报错:1) 索引超出数组长度; 2) 寄存器不是数组但index大于0
    • [out] value 寄存器数值
    • [out] ec 错误码

readRegister() [6/6]

void readRegister(System::String^ name, unsigned index, float% value, [Out] ErrorCode^% ec);

读取float类型寄存器值。可读取单个寄存器,或按索引读取寄存器数组

  • 参数:
    • [in] name 寄存器名称
    • [in] index 按索引读取寄存器数组中元素,从0开始。下列两种情况会报错:1) 索引超出数组长度; 2) 寄存器不是数组但index大于0
    • [out] value 寄存器数值
    • [out] ec 错误码

writeRegister() [1/6]

void writeRegister(System::String^ name, unsigned index, bool value, [Out] ErrorCode^% ec);

写bool/bit类型寄存器值。可写入单个寄存器,或按索引写入寄存器数组中某一元素。

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

writeRegister() [2/6]

void writeRegister(System::String^ name, unsigned index, Int32 value, [Out] ErrorCode^% ec);

写byte/int16/int32寄存器值。可写入单个寄存器,或按索引写入寄存器数组中某一元素。

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

writeRegister() [3/6]

void writeRegister(System::String^ name, unsigned index, float value, [Out] ErrorCode^% ec);

写float类型寄存器值。可写入单个寄存器,或按索引写入寄存器数组中某一元素。

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

writeRegister() [4/6]

void writeRegister(System::String^ name, unsigned index, array<bool>^ value, [Out] ErrorCode^% ec);

写bool/bit类型寄存器数组

  • 参数:
    • [in] name 寄存器名称
    • [in] index 数组索引,写入数组时忽略
    • [in] value 写入的数值
    • [out] ec 错误码

writeRegister() [5/6]

void writeRegister(System::String^ name, unsigned index, array<int>^ value, [Out] ErrorCode^% ec);

写int16/int32类型寄存器数组。

  • 参数:
    • [in] name 寄存器名称
    • [in] index 数组索引,写入数组时忽略
    • [in] value 写入的数值
    • [out] ec 错误码

writeRegister() [6/6]

void writeRegister(System::String^ name, unsigned index, array<float>^ value, [Out] ErrorCode^% ec);

写float类型寄存器数组。

  • 参数:
    • [in] name 寄存器名称
    • [in] index 数组索引,写入数组时忽略
    • [in] value 写入的数值
    • [out] ec 错误码

setxPanelVout()

void setxPanelVout(xPanelOpt::Vout opt, [Out] ErrorCode^% ec);

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

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

setSimulationMode()

void setSimulationMode(bool state, [Out] ErrorCode^% ec);

设置输入仿真模式

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

getKeypadState()

array<bool>^ getKeypadState([Out] ErrorCode^% ec);

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

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

setxPanelRS485()

void setxPanelRS485(xPanelOpt::Vout opt, bool if_rs485, [Out] ErrorCode^% ec);

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

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

XPRWModbusRTUReg()

void XPRWModbusRTUReg(int slave_addr, int fun_cmd, int reg_addr, String^ data_type, int num, array<int>^% data_array, bool if_crc_reverse, [Out] ErrorCode^% ec);

通过 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()

void XPRWModbusRTUCoil(int slave_addr, int fun_cmd, int coil_addr, int num, array<bool>^% data_array, bool if_crc_reverse, [Out] ErrorCode^% ec);

通过 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()

void XPRS485SendData(int send_byte, int rev_byte, array<Byte>^ send_data, array<Byte>^% recv_data, [Out] ErrorCode^% ec);

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

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

4 RL 工程

projectsInfo()

List<RLProjectInfo^>^ projectsInfo([Out] ErrorCode^% ec);

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

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

loadProject()

void loadProject(String^ name, System::Collections::Generic::List<System::String^>^ tasks, [Out] ErrorCode^% ec);

加载工程

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

ppToMain()

void ppToMain([Out] ErrorCode^% ec);

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

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

runProject()

void runProject([Out] ErrorCode^% ec);

开始运行当前加载的工程

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

pauseProject()

void pauseProject([Out] ErrorCode^% ec);

暂停运行工程

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

setProjectRunningOpt()

void setProjectRunningOpt(double rate, bool loop, [Out] ErrorCode^% ec);

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

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

toolsInfo()

List<WorkToolInfo^>^ toolsInfo([Out] ErrorCode^% ec);

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

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

wobjsInfo()

List<WorkToolInfo^>^ wobjsInfo([Out] ErrorCode^% ec);

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

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

importProject()

String^ importProject(String^ file_path, bool overwrite, [Out] ErrorCode^% ec);

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

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

removeProject()

void removeProject(String^ project_name, bool remove_all, [Out] ErrorCode^% ec);

删除控制器里的 RL 工程

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

importFile()

String^ importFile(String^ src_file_path, String^ dest, bool overwrite, [Out] ErrorCode^% ec);

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

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

removeFiles()

void removeFiles(array<String^>^ file_path_list, [Out] ErrorCode^% ec);

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

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

setToolInfo()

void setToolInfo(WorkToolInfo^ tool_info, [Out] ErrorCode^% ec);

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

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

setWobjInfo()

void setWobjInfo(WorkToolInfo^ wobj_info, [Out] ErrorCode^% ec);

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

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

5 协作相关

enableDrag() [1/2]

void enableDrag(DragOpt::Space space, DragOpt::Type type, [Out] ErrorCode^% ec);

打开拖动

  • 参数:
    • [in] space 拖动空间,轴空间拖动仅支持自由拖拽类型
    • [in] type 拖动类型
    • [out] ec 错误码

enableDrag() [2/2]

void enableDrag(DragOpt::Space space, DragOpt::Type type, bool enable_drag_button, [Out] ErrorCode^% ec);

打开拖动

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

disableDrag()

void disableDrag([Out] ErrorCode^% ec);

关闭拖动

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

startRecordPath()

void startRecordPath([Out] ErrorCode^% ec);

开始录制路径。录制的时长需要限制在30分钟以内, 此接口不会阻塞等待,录制完毕调用stopRecordPath()来停止录制

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

stopRecordPath()

void stopRecordPath([Out] ErrorCode^% ec);

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

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

cancelRecordPath()

void cancelRecordPath([Out] ErrorCode^% ec);

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

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

saveRecordPath()

void saveRecordPath(String^ name, String^ saveAs, [Out] ErrorCode^% ec);

保存录制好的路径

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

replayPath()

void replayPath(String^ name, double rate, [Out] ErrorCode^% ec);

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

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

removePath()

void removePath(String^ name, bool removeAll, [Out] ErrorCode^% ec);

删除已保存的路径

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

queryPathLists()

List<String^>^ queryPathLists([Out] ErrorCode^% ec);

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

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

calibrateForceSensor()

void calibrateForceSensor(bool all_axes, int axis_index, [Out] ErrorCode^% ec);

力传感器标定。标定过程需要约100ms, 该函数不会阻塞等待标定完成。标定前需要通过setToolset()设置正确的负载(Toolset.load), 否则会影响标定结果准确性。

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

enableCompletePostureLerp()

void enableCompletePostureLerp(Boolean enable, [Out] ErrorCode^% ec);

是否使能平行基座模式(xMateCr5Robot 专用)。

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

6 力控指令

forceControl()

ForceControl^ forceControl();

力控指令类

  • 返回: ForceControl

getEndTorque()

void getEndTorque(FrameType ref_type, array<double>^% joint_torque_measured, array<double>^% external_torque_measured, array<double>^% cart_torque, array<double>^% cart_force, [Out] ErrorCode^% ec);

获取当前力矩信息

  • 参数:
    • [in] ref_type 力矩相对的参考系:
      • FrameType::world - 末端相对世界坐标系的力矩信息;
      • FrameType::flange - 末端相对于法兰盘的力矩信息;
      • FrameType::tool - 末端相对于TCP点的力矩信息。
    • [out] joint_torque_measured 轴空间测量力信息,力传感器测量到的各轴所受力矩, 单位Nm
    • [out] external_torque_measured 轴空间外部力信息,控制器根据机器人模型和测量力计算出的各轴所受力矩信息, 单位Nm
    • [out] cart_torque 笛卡尔空间各个方向[X, Y, Z]受到的力矩, 单位Nm
    • [out] cart_force 笛卡尔空间各个方向[X, Y, Z]受到的力, 单位N
    • [out] ec 错误码

fcInit()

void fcInit(FrameType type, [Out] ErrorCode^% ec);

力控初始化

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

fcStart()

void fcStart([Out] ErrorCode^% ec);

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

  • 参数:[out] ec 错误码

fcStop()

void fcStop([Out] ErrorCode^% ec);

停止力控

  • 参数 [out] ec 错误码

setControlType()

void setControlType(int type, [Out] ErrorCode^% ec);

设置阻抗控制类型

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

setLoad()

void setLoad(Load^ load, [Out] ErrorCode^% ec);

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

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

setJointStiffness()

void setJointStiffness(array<double>^ stiffness, [Out] ErrorCode^% ec);

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

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

setCartesianStiffness()

void setCartesianStiffness(array<double>^ stiffness, [Out] ErrorCode^% ec);

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

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

setCartesianNullspaceStiffness()

void setCartesianNullspaceStiffness(double stiffness, [Out] ErrorCode^% ec);

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

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

setJointDesiredTorque()

void setJointDesiredTorque(array<double>^ torque, [Out] ErrorCode^% ec);

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

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

setCartesianDesiredForce()

void setCartesianDesiredForce(array<double>^ value, [Out] ErrorCode^% ec);

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

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

setSineOverlay()

void setSineOverlay(int line_dir, double amplify, double frequency, double phase, double bias, [Out] ErrorCode^% ec);

设置绕单轴旋转的正弦搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即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()

void setLissajousOverlay(int plane, double amplify_one, double frequency_one, double amplify_two, double frequency_two, double phase_diff, [Out] ErrorCode^% ec);

设置平面内的莉萨如搜索运动 设置阻抗控制类型为笛卡尔阻抗(即 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()

void startOverlay([Out] ErrorCode^% ec);

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

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

stopOverlay()

void stopOverlay([Out] ErrorCode^% ec);

停止搜索运动

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

pauseOverlay()

void pauseOverlay([Out] ErrorCode^% ec);

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

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

restartOverlay()

void restartOverlay([Out] ErrorCode^% ec);

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

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

setForceCondition()

void setForceCondition(array<double>^ range, bool isInside, double timeout, [Out] ErrorCode^% ec);

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

  • 参数:
    • [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()

void setTorqueCondition(array<double>^ range, bool isInside, double timeout, [Out] ErrorCode^% ec);

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

  • 参数:
    • [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()

void setPoseBoxCondition(Frame^ supervising_frame, array<double>^ box, bool isInside, double timeout, [Out] ErrorCode^% ec);

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

  • 参数:
    • [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()

void waitCondition([Out] ErrorCode^% ec);

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

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

fcMonitor()

void fcMonitor(bool enable, [Out] ErrorCode^% ec);

启动/关闭力控模块保护监控 设置 setJointMaxVelsetJointMaxMomentumsetJointMaxEnergysetCartesianMaxVel 等后,不立即生效;调用 fcMonitor(true) 后开始生效并保持,直至 fcMonitor(false)。结束后保护阈值恢复默认值,仍有基础保护,但不再使用用户设定阈值。

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

setJointMaxVel()

void setJointMaxVel(array<double>^ velocity, [Out] ErrorCode^% ec);

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

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

setJointMaxMomentum()

void setJointMaxMomentum(array<double>^ momentum, [Out] ErrorCode^% ec);

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

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

setJointMaxEnergy()

void setJointMaxEnergy(array<double>^ energy, [Out] ErrorCode^% ec);

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

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

setCartesianMaxVel()

void setCartesianMaxVel(array<double>^ velocity, [Out] ErrorCode^% ec);

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

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

setCartesianControlMaxWrench()

void setCartesianControlMaxWrench(array<double>^ max_wrench, [Out] ErrorCode^% ec);

阻抗力限幅(笛卡尔)。fcStart()fcStop() 期间有效;用于阻抗运动时限末端力并起监控作用。

  • 参数:
    • [in] max_wrench 依次为 XYZ[N]、ABC[Nm],范围 [0, 1000],默认最大
    • [out] ec: 错误码

setCartesianControlMaxVel()

void setCartesianControlMaxVel(array<double>^ max_cart_vel, [Out] ErrorCode^% ec);

阻抗笛卡尔速度限幅。fcStart()fcStop() 期间有效;例如加期望力下压接触过程可限速。

  • 参数:
    • [in] max_cart_vel XYZ [0, 3.0] m/s;ABC [0, 10.0] rad/s;默认最大
    • [out] ec: 错误码

setJointControlMaxTorque()

void setJointControlMaxTorque(array<double>^ max_torque, [Out] ErrorCode^% ec);

阻抗力矩限幅(关节)。fcStart()fcStop() 期间有效。

  • 参数:
    • [in] max_torque 单位 Nm,范围 [0, 1000]
    • [out] ec: 错误码

setJointControlMaxVel()

void setJointControlMaxVel(array<double>^ max_joint_vel, [Out] ErrorCode^% ec);

阻抗关节速度限幅。fcStart()fcStop() 期间有效。

  • 参数:
    • [in] max_joint_vel rad/s,范围 [0, 10.0]
    • [out] ec: 错误码

setFcGain()

void setFcGain(array<double>^ gain, [Out] ErrorCode^% ec);

设置各轴力控带宽。fcStart()fcStop() 期间有效。

  • 参数:
    • [in] gain 各轴 [0, 60],默认 20,无单位
    • [out] ec: 错误码

setFriction()

void setFriction(array<double>^ fric, [Out] ErrorCode^% ec);

设置各轴摩擦力补偿系数。fcStart()fcStop() 期间有效。

  • 参数:
    • [in] fric [0, 1],默认 0.9
    • [out] ec: 错误码