跳到主要内容

接口说明

本章列出各版本 xCore SDK 所支持的接口和功能简述。不同开发语言的版本对接口的功能定义基本一致,但是参数、返回值和调用方法会有区别。

C#:实例化 rokae::Robot 类

根据机器人构型和轴数不同,C# 版本的 SDK 提供了下列几个可供实例化的 Robot 类,初始化时会检查所选构型和轴数是否和连接的机器人匹配:

类名适用机型
xMateRobot协作 6 轴(xMateCR7/12、xMateSR3/4、xMateER3/7 等)
xMateErProRobot协作 7 轴(xMateER3 Pro / xMateER7 Pro)
StandardRobot工业 6 轴
xMateCr5Robot协作 5 轴(XMC17_5 / XMC25_5)
PCB4Robot工业 4 轴
PCB3Robot工业 3 轴

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

简述接口参数返回
连接机器人connectToRobot(ec)[out] ec - 错误码;地址为构造实例时传入
连接机器人connectToRobot(remoteIP)remoteIP - 机器人 IP
连接机器人connectToRobot(remoteIP, localIP)localIP - 本机 IP,实时交互用;PCB3/4 不支持
断开连接disconnectFromRobot()
设置连接断开回调函数setConnectionHandler(handler)handler - 回调函数
查询机器人基本信息robotInfo()控制器版本,机型,轴数
机器人上下电急停状态powerState()on/off/Estop/Gstop
机器人上下电setPowerState(on)on - true 上电 / false 下电
查询当前操作模式operateMode ()auto/manual
切换手自动模式setOperateMode(mode)mode - auto/manual
查询机器人运行状态operationState()idle/jog/RLprogram/moving等状态
获取当前末端/法兰位姿posture(ct)ct - 坐标系类型[X,Y,Z,Rx,Ry,Rz]
获取当前末端/法兰位姿cartPosture(ct)ct - 坐标系类型[X,Y,Z,Rx,Ry,Rz]及轴配
置参数
获取当前关节角度jointPos()各轴角度 rad
获取当前关节速度jointVel()各轴速率 rad/s
获取关节力矩jointTorque()各轴力矩 Nm
查询多个状态getStateList()当前位置,IO 信号,操作模式,速度覆盖值
查询基坐标系baseFrame()[X,Y,Z,Rx,Ry,Rz]
设置基坐标系setBaseFrame(frame)frame - 坐标系
查询当前工具工件组toolset()末端坐标系,参考坐标系,负载信息
设置工具工件组setToolset(toolset)
setToolset(toolName,wobjName)
toolset- 工具工件组信息
toolName- 工具名字
wobjName- 工件名字
计算逆解calcIk(posture)
calcIk(posture, toolset)
posture - CartesianPosition^,末端相对外部参考系
toolset - 可选工具工件组
关节角度 [rad]
计算正解calcFk(joints)
calcFk(joints, toolset)
joints - 关节角 [rad]
toolset - 可选
CartesianPosition^
清除伺服报警clearServoAlarm()
查询控制器日志queryControllerLog(count,level)count - 查询个数
level -日志等级
控制器日志列表
设置碰撞检测(协作)enableCollisionDetection(sensitivity, behaviour, fallback_compliance)sensitivity - 灵敏度 0.01~2.0
behaviour - stop1/stop2/suppleStop
fallback_compliance - 回退距离[m] 或柔顺度[0,1]
设置碰撞检测(工业)enableCollisionDetection(sensitivity, fallback)仅 stop1(安全停止);fallback - 回退距离[m]
关闭碰撞检测功能disableCollisionDetection()
坐标系标定calibrateFrame(type, points, is_held, base_aux)type - tool / wobj / base / rail(导轨基坐标系三点)
points - 轴角列表[rad]
is_held - 手持/外部(工具、工件)
base_aux - 基坐标系标定辅助点[m]
标定结果与偏差;成功则控制器保存,重启后生效
获取当前软限位数值getSoftLimit(limits)limits - 各轴软限位已打开/已关闭
设置软限位setSoftLimit(enable,limits)enable - 打开/关闭
limits - 各轴软限位
恢复状态recoverState(item)item - 恢复选项 :急停恢复
读取导轨参数getRailParameter(name, value)重载:enable/name/baseFrame/数值类(reductionRatio、maxSpeed、encoderResolution 等)/软限位与 range 数组
设置导轨参数setRailParameter(name, value)重载:Frame(baseFrame)、String(name)、doublebool(enable)、array<double>(softLimit/range)、int(encoderResolution、motorSpeed)
配置NTPconfigNtp(server_ip)server_ip - NTP 服务端 IP
手动同步一次 NTP 时间syncTimeWithServer()
查询 SDK 版本号sdkVersion()版本号
接收一次机器人状态updateRobotState(timeout_ms)timeout_ms - 超时[ms]本帧数据长度;超时返回 0
读取机器人状态数据getStateData(name, data)name - 见 startReceiveRobotState 与头文件说明;data - array<double> 等,类型须一致成功 0,失败 -1
读取时间戳getStateData("ts", data)data - UInt64%,微秒时间戳同上
读取臂角getStateData("psi_m", data)data - double%同上
开始发送实时状态startReceiveRobotState(interval, fields)interval - 1/2/4/8 ms 或 1 s;fields - 字段名数组,总长度 ≤1024 字节阻塞至首帧或超时
停止实时状态stopReceiveRobotState()
重启工控机rebootSystem(ec)
关闭工控机shutdownSystem(ec)控制柜断电后重新上电才能启动控制器软件
示教器热插拔setTeachPendantMode(enable)enable - 使用/不使用示教器
读取 DH 参数getRobotCfg_DHparam(get_nominal)get_nominal - false:优化后/设置后;true:标称参数各轴 Alpha[°]、A[mm]、D[mm]、Theta[°]
计算全部逆解calcAllIkSolutions(posture, confs)posture - 法兰相对基坐标系;confs - 输出 confdata逆解数组;不支持 xMateSR(XMS)
读机械单元参数getMechUnit(name, info, value)name - u1~u6;info - 参数名;value - bool/int/字符串数组(重载)
读外部轴参数getExtAxisInfo(name, info, value)name - axis1~axis6;info - 参数名;value - bool/int/double/String/字符串数组(重载)

运动控制

非实时模式运动控制相关接口。

简述接口参数返回
设置运动控制模式setMotionControlMode(mode)mode - Idle / NrtCommand / NrtRLTask / RtCommand(非实时指令、非实时 RL、实时)
开始/继续运动moveStart()
运动重置moveReset()
暂停机器人运动stop()
添加运动指令moveAppend(type, cmd, cmdId)
moveAppend(type, cmdList, cmdId)
type - MoveCommand::Type,与同批指令一致
cmd / cmdList - 单条或 1~100 条同类型指令
cmdId - 指令 ID,用于执行信息反馈
设置默认运动速度setDefaultSpeed(speed)speed - 末端最大线速度
设置默认转弯区setDefaultZone(zone)zone - 转弯区半径
设置是否使用 confsetDefaultConfOpt(forced) forced - 是/否使用
设置运动指令是否自动取消转弯区setAutoIgnoreZone(enable)enable - 是/否自动取消转弯区
设置最大缓存指令个数setMaxCacheSize(number)number - 个数
开始 Jog 机器人startJog(space,rate,step,index, direction)space - 参考坐标系
rate - 速率
step - 步长
index - XYZABC/J1-7
direction - 方向
动态调整机器人运动速率adjustSpeedOnline(scale)scale - 速率
设置接收事件的回调函数setEventWatcher(eventType, callback)eventType - moveExecution / safety / rlExecution / logReporter
callback - 回调(moveExecution 同线程勿阻塞;safety 独立线程)
查询事件信息queryEventInfo(eventType) eventType - 事件类型事件信息
执行运动指令executeCommand(type, cmd)type - MoveCommand::Type
cmd - 1~100 条同类型指令,调用后立即运动
读取当前加速度getAcceleration(acc,jerk)acc - 加速度
jerk - 加加速度
设置运动加速度adjustAcceleration(acc,jerk)acc - 加速度
jerk - 加加速度
打开奇异规避功能setAvoidSingularity(method, enable, limit)method - 四轴锁定/牺牲姿态/轴空间插补(协作 6 轴无轴空间插补)
enable - 打开/关闭
limit - 牺牲姿态为姿态误差[rad];轴空间插补为规避半径[m]
查询是否打开规避奇异功能getAvoidSingularity(method)method - 奇异规避方式已打开/已关闭
检验直线轨迹是否可达checkPath(start, start_joint, target)支持导轨;start/target 为笛卡尔点位目标轴角
校验多段直线checkPath(start_joint, targets, target_joint_calculated)targets 至少 2 点,首点为起点失败时返回出错点下标
检验圆弧是否可达checkPath(start, start_joint, aux, target)aux - 辅助点目标轴角
检验全圆是否可达checkPath(start, start_joint, aux1, aux2, angle, rot_type)angle - 全圆弧度;rot_type - 旋转类型目标轴角

通信相关

简述接口参数返回值
查询 DI 信号值getDI(board,port)board - IO 板序号
port - 信号端口号
on
设置 DI 信号值setDI(board,port,state)board - IO 板序号
port -信号端口号
state - 信号值
查询 DO 信号值getDO(board,port)board - IO 板序号
port - 信号端口号
on
设置 DO 信号值setDO(board,port,state)board - IO 板序号
port - 信号端口号
state - 信号值
查询 AI 信号值getAI(board,port)board - IO 板序号
port - 信号端口号
信号值
设置 AO 信号setAO(board,port,value)board - IO 板序号
port - 信号端口号
value - 信号值
设置输入仿真模式setSimulationMode(state)state - 打开/关闭
读取寄存器值readRegister(name,index,value)name - 寄存器名称
index - 寄存器数组索引value-读取的数值
写入寄存器值writeRegister(name,index,value)name - 寄存器名称
index - 寄存器数组索引
value - 写入的数值
设置 xPanel 对外供电模式setxPanelVout(opt)opt - 模式
获取末端按键状态getKeypadState()末端按键的状态
末端工具485 通信开关setxPanelRS485(Vopt,if_rs485)Vopt - 输出电压
if_rs485 - 是否打开 485 通信
485 通信读写寄存器XPRWModbusRTUReg(...)slave_addr;fun_cmd(0x03/04/06/10);reg_addr;data_type(int32/int16/uint32/uint16);num;array<int>^% data_array;if_crc_reverse
485 通信读写线圈或离散输入XPRWModbusRTUCoil(...)fun_cmd 0x01/02/05/0F;array<bool>^% data_array;其余同寄存器
485 通信裸传数据XPRS485SendData(send_byte, rev_byte, send_data, recv_data)收/发长度各 0~16;recv_data 为输出

RL工程

控制器中需要有已创建好的RL工程,支持查询工程信息和运行。

简述接口参数返回值
查询RL 工程列表projectsInfo()工程名称和任务名
加载工程loadProject(name,tasks)name-工程名称
tasks-任务列表
pp-to-mainppToMain()
开始运行工程runProject()
暂停运行工程pauseProject()
设置运行速率和循环模式setProjectRunningOpt(rate,
loop)
rate-运行速率
loop-循环/单次
设置全局工具信息setToolInfo(tool_info)tool_info-工具信息
设置全局工件信息setWobjInfo(wobj_info)wobj_info-工件信息
查询工具信息toolsInfo()工具名称,位姿,负载等信息
查询工件信息wobjsInfo()工件名称,位姿,负载等信息
导入本地文件到控制器importFile(src_file_path, dest, bool overwrite)src_file_path-本地文件路径
dest-目标路径
overwrite-覆盖同名文件
导入成功后文件名
删除控制器中文件removeFiles(file_path_list)文件路径的列表
将本地的RL工程压缩包导入控制器importProject(file_path, bool overwrite)file_path-本地 .zip压缩包路径
overwrite-是否覆盖同名文件
工程名称
删除控制器里的RL工程removeProject(project_name, remove_all)project_name-工程名称
remove_all-是否删除所有工程

协作相关

包括拖动示教和路径录制相关功能。

简述接口参数返回值
打开拖动enableDrag(space,type,
enable_drag_button)
space-拖动空间
type-拖动类型
enable_drag_button-无需按键拖动
关闭拖动disableDrag()
开始录制路径startRecordPath()时长须在 30 分钟内;非阻塞,结束调用 stopRecordPath()
停止录制路径stopRecordPath()
取消录制cancelRecordPath()
保存路径saveRecordPath(name,saveAs)name-路径名称
saveAs-重命名为
路径回放replayPath(name,rate)name-路径名称
rate-回放速率
删除保存的路径removePath(name,all)name-路径名称
all -是否删除所有路径
查询路径列表queryPathLists()路径名称列表
力传感器标定calibrateForceSensor(all_axes,
axis_index)
all_axes-标定所有轴
axis_index-单轴标定下标

xMate 五轴(xMateCr5Robot)

简述接口参数返回值
平行基座模式enableCompletePostureLerp(enable)enable - true 开启 / false 关闭

力控指令

简述接口参数返回值
力控指令类forceControl()ForceControl
获取当前力矩信息getEndTorque(ref_type, joint_torque_measured, external_torque_measured, cart_torque, cart_force)ref_type - world / flange / tool
其余为输出:轴测量力矩、轴外部力矩、笛卡尔力矩、笛卡尔力
力控初始化fcInit(frame_type)world / wobj / tool / baseFrame / flange
开始力控fcStart()fcInit 之后;fcStartmoveAppendmoveStart 的指令会在力控开始后执行
停止力控fcStop()
设置阻抗控制类型setControlType(type)0 - 关节阻抗;1 - 笛卡尔阻抗
设置力控模块使用的负载setLoad(load)fcStart 之后可调用
设置关节阻抗刚度setJointStiffness(stiffness)fcInit 之后生效
设置笛卡尔阻抗刚度setCartesianStiffness(stiffness)XYZ 力刚度 [N/m] + ABC 力矩刚度 [Nm/rad]
设置笛卡尔零空间阻抗刚度setCartesianNullspaceStiffness(stiffness)[0,4] Nm/rad
设置关节期望力矩setJointDesiredTorque(torque)[-30,30] Nm
设置笛卡尔期望力/力矩setCartesianDesiredForce(value)XYZ 力 [-60,60] N;ABC 力矩 [-10,10] Nm
设置正弦搜索运动setSineOverlay(line_dir, amplify, frequency, phase, bias)须先 setControlType(1);0/1/2 为 X/Y/Z 轴
设置莉萨如搜索运动setLissajousOverlay(plane, amplify_one, frequency_one, amplify_two, frequency_two, phase_diff)须先 setControlType(1);平面 0/1/2 为 XY/XZ/YZ
开启搜索运动startOverlay()fcStart 之后
停止搜索运动stopOverlay()
暂停搜索运动pauseOverlay()
重新开启暂停的搜索运动restartOverlay()
设置与接触力有关的终止条件setForceCondition(range, isInside, timeout)range - 六元力限制[N];isInside - true 超出时停止,false 符合条件时停止;timeout [1,600] s
设置与接触力矩有关的终止条件setTorqueCondition(range, isInside, timeout)同上,单位 Nm
设置与接触位置有关的终止条件setPoseBoxCondition(supervising_frame, box, isInside, timeout)参考系相对外部工件;box 六元 [m];isInside 含义同力条件
激活终止条件并等待waitCondition()
启动/关闭力控保护监控fcMonitor(enable)阈值在 fcMonitor(true) 后生效,false 后恢复默认保护
力控轴最大速度setJointMaxVel(velocity)[rad/s]
末端相对基座最大速度setCartesianMaxVel(velocity)XYZ [m/s],ABC [rad/s]
力控轴最大动量setJointMaxMomentum(momentum)N·s
力控轴最大动能setJointMaxEnergy(energy)N·rad/s
笛卡尔阻抗力限幅setCartesianControlMaxWrench(max_wrench)XYZ[N]、ABC[Nm],[0,1000],fcStart~fcStop 有效
笛卡尔阻抗接触限速setCartesianControlMaxVel(max_cart_vel)XYZ [0,3] m/s;ABC [0,10] rad/s
关节阻抗力矩限幅setJointControlMaxTorque(max_torque)Nm,[0,1000]
关节阻抗速度限幅setJointControlMaxVel(max_joint_vel)rad/s,[0,10]
力控带宽setFcGain(gain)各轴 [0,60],默认 20
摩擦力补偿setFriction(fric)各轴 [0,1],默认 0.9