方法
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: 错误码
- [in] ct 坐标系类型
- 返回: 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:
使用已创建的工具和工件,设置工具工件组信息
- 注解 设置前提:
- 使用 RL 工程中创建的工具工件: 需要先加载对应 RL 工程;
- 全局工具工件: 无需加载工程,直接调用即可。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: 错误码(如奇异、超限位、超范围等)
- [in] confs 调用方传入的列表,成功时由接口填入与每组解对应的 confdata(
- 返回:多组关节角(弧度);仅当错误码为 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 点标定)
- 注解 各坐标系类型支持的标定方法及注意事项:
- 工具坐标系: 三点/四点/六点标定法
- 工件坐标系: 三点标定。标定结果不会相对用户坐标系做变换,即,若为外部工件, - 返回:的结果是相对于基坐标系的。
- 基坐标系: 六点标定。标定前请确保动力学约束和前馈已关闭。 若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
- 导轨基坐标系: 三点标定。若标定成功(无错误码),控制器会自动保存标定结果,重启控制器后生效。
- 参数:
- [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
- 碰撞后行为是安全停止或触发暂停时,该参数含义是碰撞后回退距离,单位: 米
- 碰撞后行为是柔顺停止时,该参数含义是柔顺度,范围 [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:
设置软限位。软限位设定要求:
- 打开软限位时,机械臂应下电且处于手动模式;
- 软限位不能超过机械硬限位
- 机械臂当前各轴角度应在设定的限位范围内
- 参数:
- [in] enabletrue - 打开 | false - 关闭。
- [out] ec: 错误码
- [in] limits 各轴[下限, 上限],单位:弧度。
- 当 limits 为默认值时,视为仅打开软限位不修改数值; 不为默认值时,先修改软限位再打开
- 关闭软限位时不会修改限位数值
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表示断开
- [in] handler
setTeachPendantMode()
def setTeachPendantMode(self, enable: bool, ec: dict) -> None:
设置示教器模式开关;阻塞直至切换完成(约 2 秒量级超时)。运动中等情况可能切换失败。
- 参数:
- [in] enable
True启用示教器模式,False关闭 - [out] ec: 错误码
- [in] enable
getRobotCfg_DHparam()
def getRobotCfg_DHparam(self, get_nominal: bool, ec: dict) -> list[float]:
读取 DH 参数。
- 参数:
- [in] get_nominal
True标称参数,False优化后或当前设置(一般建议False) - [out] ec: 错误码
- [in] get_nominal
- 返回:依次为各轴 Alpha[°]、A[mm]、D[mm]、Theta[°] 串联的一维列表;仅当错误码为 0 时有效。
getExtAxisInfo()
def getExtAxisInfo(self, name: str, info: str, value: PyTypeInt | PyTypeBool | PyTypeDouble | PyString, ec: dict) -> None:
读取外部轴/机械轴相关参数。name 为 axis1~axis6;info 为字段名(如 ext_data_number、zero_value、max_speed、driver_name 等,详见类型桩)。
- 参数:[out] value 由调用方传入的输出容器,类型需与所查字段一致。
getMechUnit()
def getMechUnit(self, name: str, info: str, value: PyTypeBool | PyTypeVectorString | PyTypeInt, ec: dict) -> None:
读取机械单元参数。name 为 u1~u6;info 如 activation、enable、axes_info、mech_link_type 等。
- 参数:[out] value 输出容器,类型与
info匹配。
setRailParameter()
def setRailParameter(self, name: str, value: list[float], ec: dict) -> None:
设置导轨参数
- 模板参数: 参数类型
- 参数:
- [in] name: 参数名,见 value 说明
- [in] value:
参数: 参数名 数据类型 开关 enable bool 基坐标系 baseFrame Frame 导轨名称 name str 编码器分辨率 encoderResolution int 减速比 reductionRatio double 电机最大转速(rpm) motorSpeed int 软限位(m), [下限,上限] softLimit list[float]运动范围(m), [下限,上限] range list[float]最大速度(m/s) maxSpeed double 最大加速度(m/s^2) maxAcc double 最大加加速度(m/s^3) maxJerk double
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_m、tcpPose_m 等);向量类型需传入长度参数(见类型桩重载)。
- 返回:操作结果状态码(见实现约定)
stopReceiveRobotState()
def stopReceiveRobotState(self) -> None:
停止接收实时状态并让控制器停止发送,便于重新配置订阅字段。
2 运动控制(非实时模式)
setMotionControlMode()
def setMotionControlMode(self, mode: MotionControlMode, ec: dict) -> None:
设置运动控制模式
- 注: 在调用各运动控制接口之前, 须设置对应的控制模式。
- 参数:
- [in] mode:
MotionControlMode.Idle、NrtCommandMode、NrtRLTask、RtCommandMode - [out] ec: 错误码
- [in] mode:
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 错误码
- [in] speed 该接口不对参数进行范围限制。末端线速度的实际有效范围分别是 5-4000(协作), 5-7000(工业)。 关节速度百分比划分为 5 个的范围:
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: 错误码
- [in] zone: 该接口不对参数进行范围限制。转弯区半径大小实际有效范围是 0-200。 转弯百分比划分 4 个范围:
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: 错误码
- [in] enable
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: 事件类型(含
moveExecution、safety、rlExecution、logReporter) - [in] callback: 处理事件的回调函数。说明:
- 对于Event::moveExecution, 回调函数在同一个线程执行, 请避免函数中有执行时间较长的操作;
- Event::safety 则每次独立线程回调, 没有执行时间的限制
- [out] ec: 错误码
- [in] eventType: 事件类型(含
setNoneEventWatcher()
def setNoneEventWatcher(self, eventType: Event, ec: dict) -> None:
取消指定 eventType 上已注册的回调。
- 参数:
- [in] eventType: 与
setEventWatcher一致 - [out] ec: 错误码
- [in] eventType: 与
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 参考坐标系。
- 工具/工件坐标系使用原则同
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 参考坐标系。
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_name 与 index、is_ext 组合使用。其余参数含义同 startJog()。
- 参数:
- [in] fixed_name 例如与
index配合:fixed_name为任意字符且is_ext为false、index为 0 时 Jog 本体第一轴;fixed_name为u1且index为 0 时 Jog 机械单元 u1 的第一轴。 - [in] is_ext 是否为外部轴 Jog,默认
true。
- [in] fixed_name 例如与
setAvoidSingularity()
def setAvoidSingularity(self, method: AvoidSingularityMethod, enable: bool, threshold: float, ec: dict) -> None:
打开/关闭奇异点规避功能。只适用于部分机型:
- 四轴锁定: 支持工业六轴,xMateCR 和 xMateSR 六轴机型;
- 牺牲姿态: 支持所有六轴机型;
- 轴空间插补: 支持工业六轴机型(协作
xMateRobot等类型桩签名为同名参数limit,含义与下述一致)
- 参数:
- [in] method: 奇异规避方式
- [in] enable: true - 打开功能 | false - 关闭。对于四轴锁定方式, 打开之前要确保 4 轴处于零位。
- [in] threshold: 不同规避方式下含义分别为(
xMateRobot参数名为limit):- 牺牲姿态: 允许的姿态误差, 范围 (0, PI*2], 单位弧度
- 轴空间插补: 规避半径, 范围[0.005, 10], 单位米
- 四轴锁定: 无参数
- [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 文件路径的列表, 单个文件路径如下:
-
- 删除某工程某任务下的 .mod 文件: project/[工程名]/[任务名]/[mod 文件名]
-
- 删除某工程某任务: project/[工程名]/[任务名]
-
- [out] ec 参数格式错误或网络错误。工程或任务或文件不存在不返回错误码
- [in] file_path_list 文件路径的列表, 单个文件路径如下:
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 错误码
- [in] ref_type 力矩相对的参考系:
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 错误码
- [in] range 各方向上的力限制
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 错误码
- [in] range 各方向上的力矩限制
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 错误码