方法
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: 错误码
- [in] ct 坐标系类型
- 返回: 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);
使用已创建的工具和工件,设置工具工件组信息
- 注解 设置前提:
- 使用 RL 工程中创建的工具工件: 需要先加载对应 RL 工程;
- 全局工具工件: 无需加载工程,直接调用即可。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 点标定)
- 注解 各坐标系类型支持的标定方法及注意事项:
- 工具坐标系: 三点/四点/六点标定法
- 工件坐标系: 三点标定。标定结果不会相对用户坐标系做变换,即,若为外部工件, - 返回:的结果是相对于基坐标系的。
- 基坐标系: 六点标定。标定前请确保动力学约束和前馈已关闭。 若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
- 导轨基坐标系: 三点标定。若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
- 参数:
- [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
- 碰撞后行为是安全停止或触发暂停时,该参数含义是碰撞后回退距离,单位: 米
- 碰撞后行为是柔顺停止时,该参数含义是柔顺度,范围 [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);
设置软限位。软限位设定要求:
- 打开软限位时,机械臂应下电且处于手动模式;
- 软限位不能超过机械硬限位
- 机械臂当前各轴角度应在设定的限位范围内
- 参数:
- [in] enable true - 打开 | false - 关闭。
- [in] limits 各轴[下限, 上限],单位:弧度。
- 当 limits 为默认值时,视为仅打开软限位不修改数值; 不为默认值时,先修改软限位再打开
- 关闭软限位时不会修改限位数值
- [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: 错误码,参数名不存在或数据类型不匹配返回错误码
- [in] name: 参数名
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: 错误码,参数名不存在或数据类型不匹配返回错误码
- [in] name: 参数名
getRailParameter() [6/6]
void getRailParameter(System::String^ name, array<double>^% value, [Out] ErrorCode^% ec);
读取导轨软限位和运动范围
- 参数:
- [in] name: 参数名
参数名 说明 softLimit 软限位(m), [下限,上限] range 运动范围(m), [下限,上限] - [out] value:参数数值
- [out] ec: 错误码,参数名不存在或数据类型不匹配返回错误码
- [in] name: 参数名
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);
读取机器人状态数据(双精度数组类型)。name 与 data 长度须与 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 错误码
- [in] speed 该接口不对参数进行范围限制。末端线速度的实际有效范围分别是 (0, 4000](协作), (0, 7000](工业)。 关节速度百分比划分为 5 个的范围:
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: 错误码
- [in] zone: 该接口不对参数进行范围限制。转弯区半径大小实际有效范围是 [0, 200]。 转弯百分比划分 4 个范围:
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: 处理事件的回调函数。说明:
- Event::moveExecution:同一线程回调,勿长时间阻塞;
- Event::safety:独立线程回调;
- 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 参考坐标系。
- 工具/工件坐标系使用原则同
setToolset(); - 工业六轴机型和 xMateCR/SR 六 轴 机 型 支 持 两 种 奇 异 规 避 方 式
Jog:Space.singularityAvoidMode, Space.baseParallelMode - CR5 轴机型支持平行基座模式
Jog:Space::baseParallelMode
- 工具/工件坐标系使用原则同
- [in] rate: 速率, 范围 0.01 - 1
- [in] step: 步长。单位: 笛卡尔空间-毫米 | 轴空间-度。步长大于 0 即可,不设置上限, 如果机器人无法继续 jog 会自行停止运动。
- [in] index 根据不同的 space,该参数含义如下:
- 世界坐标系,基坐标系,法兰坐标系,工具工件坐标系: a) 6 轴机型: 0~5 分别对应 X, Y, Z, Rx, Ry, Rz。>5 代表外部轴(若有) b) 7 轴机型 6 代表肘关节, >6 代表外部轴(若有)
- 轴空间: 关节序号,从 0 开始计数
- 奇异规避模式,平行基座模式:
a) 6 轴机型:0
5 分别对应 X, Y, Z, J4(4 轴), Ry, J6(6 轴); b) 5 轴机型:04 分别对应 X, Y, Z, Ry, J5(5 轴)
- [in] direction 根据不同的 space 和 index,该参数含义如下:
- 奇异规避模式 J4: true - ±180° | false - 0°;
- 平行基座模式 J4 & Ry: true - ±180° | false - 0°
- 其它,true - 正向 | false - 负向
- [out] ec 错误码
- [in] space jog 参考坐标系。
setAvoidSingularity() [1/2] (工业机器人)
void setAvoidSingularity(AvoidSingularityMethod method, bool enable, double limit, [Out] ErrorCode^% ec);
打开/关闭奇异点规避功能。三种方式都支持
- 参数:
- [in] method: 奇异规避方式
- [in] enable: true - 打开功能 | false - 关闭。对于四轴锁定方式, 打开之前要确保 4 轴处于零位。
- [in] limit: 不同的规避方式,该参数含义分别为:
- 四轴锁定: 无参数
- 牺牲姿态: 允许的姿态误差, 范围 (0, PI*2], 单位弧度
- 轴空间插补: 规避半径, 范围[0.005, 10], 单位米
- [out] ec: 错误码
setAvoidSingularity() [2/2] (协作机器人)
void setAvoidSingularity(AvoidSingularityMethod method, bool enable, double limit, [Out] ErrorCode^% ec);
打开/关闭奇异点规避功能。只适用于部分机型:
- 四轴锁定: 支持xMateCR和xMateSR机型
- 牺牲姿态: 支持所有协作六轴机型
- 轴空间插补: 不支持
- 参数:
- [in] method: 奇异规避方式
- [in] enable: true - 打开功能 | false - 关闭。对于四轴锁定方式, 打开之前要确保 4 轴处于零位。
- [in] limit: 不同的规避方式,该参数含义分别为:
- 四轴锁定: 无参数
- 牺牲姿态: 允许的姿态误差, 范围 (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 文件路径的列表, 单个文件路径如下:
-
- 删除某工程某任务下的 .mod 文件: project/[工程名]/[任务名]/[mod 文件名]
-
- 删除某工程某任务: project/[工程名]/[任务名]
-
- [out] ec 参数格式错误或网络错误。工程或任务或文件不存在不返回错误码
- [in] file_path_list 文件路径的列表, 单个文件路径如下:
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 错误码
- [in] ref_type 力矩相对的参考系:
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 错误码
- [in] range 各方向上的力限制
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 错误码
- [in] range 各方向上的力矩限制
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);
启动/关闭力控模块保护监控
设置 setJointMaxVel、setJointMaxMomentum、setJointMaxEnergy、setCartesianMaxVel 等后,不立即生效;调用 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: 错误码