/TCP-IP-Protocol

The implementation of Dobot robot to remote control through TCP/IP protocol, which MG400/M1Pro products.

MIT LicenseMIT

English version of the README -> please click here

0.Changelog

  • V1.0-2021/05/27:建立文档
  • V1.1-2021/07/05:修正一些运动指令的参数错误
  • V1.2-2021/07/08:主要新增RobotMode机器人模式以及文档书写错误
  • V1.3-2021/07/13:更新返回数据表格
  • V1.4-2021/07/16: Arc3 改为Arc : 与新版MG400指令一致;ServoJ的参数不能以表的形式,因为一次只能下发一个点,ServoP相同;文档中是1440字节,不是1044。
  • V1.5-2021/07/23: 数据的结构体去除掉添加一个是字节位置值;对RobotMode的状态优先级进行描述;新增机器人上电接口。
  • V1.6-2021/08/04:调整Dashboard端口和实时反馈端口表格位置;根据GK项目,新增运行脚本、读写保存寄存器、获取机器人状态等指令;
  • V1.7-2021/08/23:添加Sync指令、SetArmOrientation描述优化、电子皮肤SetObstacleAvoid、SetSafeSkin相关指令、轨迹复现相关指令GetTraceStartPose、GetPathStartPose、StartTrace、StartPath以及正解逆解接口InverseSolution、PositiveSolution;以及若干书写错误;
  • V1.8-2021/08/31:新增碰撞等级SetCollisionLevel、轨迹文件预处理接口HandleTrajPoints、获取六维力数据GetSixForceData、获取笛卡尔坐标系下机械臂的实时位姿接口GetPose、获取关节坐标系下机械臂的实时位姿接口GetAngle、急停指令EmergencyStop\关节/点动指令MoveJog;
  • V1.8-2021/09/15:定义轨迹预处理运行结果接口;若用户下发不带参数的该指令,代表查询当前指令的结果(适用于轨迹文件预处理);轨迹复现/拟合/带力控拟合通过RobotMode获取机器人运行状态;
  • V1.8-2021/09/27:更改Sync指令的端口到29999(阻塞指令),待所有队列指令执行完才返回done;以及去掉多余指令;
  • V1.8-2021/10/15:根据PX需要末端485支持使用RTU的功能的指令,新增支持Modbus的TCP和RTU通信的指令;详情见《末端485的modbusRTU功能拓展》以及《工业项目Modbus需求及概要设计方案》;
  • V1.9-2021/10/25:跟进PX的反馈,优化正逆解参数内容;新增获取错误码接口;实时反馈端口新增获取用户坐标、工具坐标以及手系的参数;
  • V1.10-2021/10/27:跟进PX的需求,使能新增四个可选参数((负载 + 偏心)、实时数据上报负载参数、实时数据上报用户/工具坐标系的矩阵、实时数据上报关节实际力矩、实时数据上报速度加速度等相关的比率共计9个;
  • V1.10-2021/11/03:PX分支拆分30003端口为30003和30004;其中30003端口仅作为下发运行指令相关接口;30004端口仅做为实时反馈端口;注意:30003端口的拆分预计在控制器3.5.2版本实现,3.5.1暂时还是一个30003端口进行实时反馈以及下发运动相关指令;
  • V2.0-2021/11/24:对TCPIP功能做较大的优化;主要优化内容:定义返回格式 ;RobotMode返回修改;新增30005以及30006反馈机器人数据端口等;CR控制器支持版本在3.5.2版本及以上;
  • V2.0-2021/11/25:优化RobotMode返回的运行的歧义,为保持与控制器3.5.1版本兼容性,之前351版本关键机器人状态返回值没有做修改;如:空闲、拖拽、运行、报警状态,新增抱闸松开、轨迹录制、暂停以及点动等;实时反馈描述的统一;根据建议将30005端口的反馈周期改成200ms;
  • V2.1-2021/11/30:新增DI、ToolDI、AI、ToolAI、DIGroup、DOGroup获取数字输入信号、末端数字输入、模拟输入、末端模拟输入、组数字输入以及组数字输出指令;轨迹复现、轨迹拟合以及带力控的轨迹拟合指令新增返回运行到第几个点的参数;实时反馈数据新增当前六维力数据原始值;
  • V2.1-2021/12/14:LK项目新增实时反馈的按钮板五个按钮的触发信号;
  • V2.1-2021/12/21: 新增机器类型实时反馈并表格说明值代表机器型号;
  • V2.2-2021/12/22: 修复一些运行指令可选参数参数错误以及统一运动指令AccL和AccJ可选参数;
  • V2.3-2022/01/07:实时反馈新增四元数以及当前时间戳;新增开关抱闸指令;新增若干指令说明;
  • V2.3-2022/01/12:运动指令新增用户和工具坐标系的可选项设置;对逆解接口进行重新设计;
  • V2.3-2022/01/21:新增实时反馈的TCP传感器力值(通过六维力计算)字段;
  • V2.4-2022/01/24:修改RelMovJ指令参数;根据《相对运动指令方案》新增5条相对运动相关指令;
  • V2.5-2022/02/08: 新增StartDrag、StopDrag、SetCollideDrag、SetTerminalKeys、SetTerminal485、GetTerminal485等指令分布对应进入拖拽、退出拖拽模式、设置是否强制进入拖拽模式、设置末端按键功能使能状态、设置末端485的参数、获取末端485的参数。GetErrorID的描述,将碰撞检测和电子皮肤碰撞的错误码返回设置到控制器和算法错误码数组中,并将错误码描述章节中-2,-3的描述删除;
  • V2.6-2022/02/10: 修改正逆解指令的示例,添加LoadSwitch指令,配合PayLoad使用;
  • V2.8-2022/02/16: ServoP/ServoJ指令添加使用频率限制,修改SetCollideDrag开关状态,改为0关闭,1开启,与文档其它设置指令统一;
  • V2.9-2022/03/12:JointMovJ指令优化;删掉多余的不建议使用的指令;新增MG400/M1Pro版本支持的指令;
  • V2.10-2022/03/17:SetArmOrientation指令新增M1Pro指令的描述;添加实时数据反馈的产品支持功能;
  • V2.11-2022/03/18:为保证统一性SetArmOrientation对M1Pro采用之前的0/1表示左右手系描述,实时反馈也有说明;运动指令添加对MG400/M1Pro的四轴产品的说明;
  • V2.12-2022/03/21:MoveJog指令的CoordType的描述优化;
  • V2.13-2022/08/12:MG400 getPose指令增加可选参数,更新MG400无法获取TCPForce,增加MG400实时获取TCPSpeed反馈。

1. 综述

​ 越疆工业机器人现支持两种远程控制方式:远程I/O模式、远程Modbus模式;具体控制方式详见《Dobot-CR-Series-Robot-APP-User-Guide文档中软件使用说明->设置->远程控制章节中;

​ 以上两种方式主要针对远程运行脚本的控制;由于基于TCP/IP的通讯具有成本低、可靠性高、实用性强、性能高等特点;许多工业自动化项目对支持TCP/IP协议控制机器人需求广泛,因此CR/MG400/M1Pro机器人将设计在TCP/IP协议的基础上,提供了丰富的接口用于与外部设备的交互;

​ 关于TCP/IP协议的支持,CR系列机器人的控制器版本需V3.5.1.19及以上,MG400/M1Pro机器人的控制器版本需V1.5.5.0及以上。

2.消息格式

​ 根据设计,CR/MG400/M1Pro机器人会开启29999、30003、30004、30005以及30006服务器端口;

​ 29999服务器端口(以下简称Dashboard端口)通过一发一收的方式负责接收一些设置以及运动控制相关的指令,即Dashboard端口接收到客户端约定消息格式后会将结果反馈客户端

​ 30003服务器端口仅接收客户端的约定消息格式,不做反馈;(注意:30003端口的拆分成30003和30004端口预计在控制器3.5.2版本实现,3.5.1暂时还是一个30003端口进行实时反馈以及下发运动相关指令;)

​ 30004服务器端口(以下简称实时反馈端口)每8ms反馈机器人的信息;30005服务器端口每200ms反馈机器人的信息,30006端口为可配置的反馈机器人信息端口(默认为每50ms反馈);

​ 说明:TCPIP远程控制指令不区分大小写格式;如ENABLEROBOT()指令或者enablerobot()指令或者eNabLErobOt()指令控制器都会按照使能的指令执行;

2.1 下发格式

消息名称(Param1,Param2,Param3……Paramn) ​ 消息格式如上所示,由一个消息名称,括号内由参数组成, 每一个参数之间以英文逗号 ”,” 相隔,一个完整的消息以右括号结束。

​ 消息命令与消息应答都是 ASCII 码格式(字符串形式)。

2.2 返回格式

2.2.1 返回:

"ErrorID,{value,...,valuen},消息名称(Param1,Param2,Param3……Paramn);"

​ 消息格式如上所示,ErrorID为0时表示命令接收成功;返回非0则代表命令有错误,具体的错误描述见第六章节;{value1,value2,value3,...,valuen}表示返回值,没有返回值则返回{};消息名称(Param1,Param2,Param3……Paramn)指下发的内容。

​ 例:

​ MovL(-500,100,200,150,0,90) ​ 返回:0,{},MovL(-500,100,200,150,0,90); //0表示接收成功 没有返回值返回{}

​ Mov(-500,100,200,150,0,90) ​ 报警: -10000,{},Mov(-500,100,200,150,0,90); //-10000表示命令错误 没有返回值返回{}

3.通信协议---Dashboard端口

​ 上位机可以通过29999端口直接发送一些设置相关的指令给机器人,这些指令CR自己定义的,这些功能被称为Dashboard。如表是Dashboard的指令列表。可以通过Dashboard的指令实现对机器人使能/下使能、复位等控制;

​ 机器人设置相关指令如下:

指令 支持产品 描述
EnableRobot CR\MG\M1Pro 使能机器人
DisableRobot CR\MG\M1Pro 下使能机器人
ClearError CR\MG\M1Pro 复位,用于清除错误
ResetRobot CR\MG\M1Pro 机器人停止当前动作,重新接收使能,规划停
SpeedFactor CR\MG\M1Pro 设置全局速率比
User CR\MG\M1Pro 选择已标定的用户坐标系(笛卡尔空间显示值 实际生效根据点)
Tool CR\MG\M1Pro 选择已标定的工具坐标系
RobotMode CR\MG\M1Pro 机器人模式
PayLoad CR\MG\M1Pro 设置负载
DO CR\MG\M1Pro 设置数字量输出端口状态
DOExecute CR 设置数字量输出端口状态(立即指令)
ToolDO CR 设置末端数字量输出端口状态
ToolDOExecute CR 设置末端数字量输出端口状态(立即指令)
AO CR 设置模拟量输出端口状态
AOExecute CR 设置模拟量输出端口状态(立即指令)
AccJ CR\MG\M1Pro 设置关节加速度比例。该指令仅对MovJ、MovJIO、MovJR、 JointMovJ指令有效
AccL CR\MG\M1Pro 设置笛卡尔加速度比例。该指令仅对MovL、MovLIO、MovLR、Jump、Arc、Circle指令有效。
SpeedJ CR\MG\M1Pro 设置关节速度比例。该指令仅对MovJ、MovJIO、MovJR、 JointMovJ指令有效。
SpeedL CR\MG\M1Pro 设置笛卡尔速度比例。该指令仅对MovL、MovLIO、MovLR、Jump、Arc、Circle指令有效。
Arch CR\MG\M1Pro 设置Jump门型参数索引(起始点抬升高度、最大抬升高度、结束点下降高度)
CP CR\MG\M1Pro 运动时设置平滑过渡
SetArmOrientation CR 设置手系
PowerOn CR 机器人上电
RunScript CR\MG\M1Pro 运行脚本
StopScript CR\MG\M1Pro 停止脚本
PauseScript CR\MG\M1Pro 暂停脚本
ContinueScript CR\MG\M1Pro 继续脚本
SetSafeSkin CR 设置安全皮肤开关状态
GetTraceStartPose CR 获取轨迹拟合中首个点位
GetPathStartPose CR 获取轨迹复现中首个点位
PositiveSolution CR 正解
InverseSolution CR 逆解
SetCollisionLevel CR\MG\M1Pro 设置碰撞等级
HandleTrajPoints CR 轨迹文件预处理
GetSixForceData CR 获取六维力数据
GetAngle CR\MG\M1Pro 获取关节坐标系下机械臂的实时位姿
GetPose CR\MG\M1Pro 获取笛卡尔坐标系下机械臂的实时位姿
EmergencyStop CR\MG\M1Pro 急停
ModbusCreate CR\MG\M1Pro 创建Modbus主站,并和从站建立连接
ModbusClose CR\MG\M1Pro 和Modbus从站断开连接
GetInBits CR\MG\M1Pro 读离散输入功能
GetInRegs CR\MG\M1Pro 读输入寄存器
GetCoils CR\MG\M1Pro 读线圈功能
SetCoils CR\MG\M1Pro 写线圈功能
GetHoldRegs CR\MG\M1Pro 读保存寄存器
SetHoldRegs CR\MG\M1Pro 写保存寄存器
GetErrorID CR\MG\M1Pro 获取错误ID
DI CR\MG\M1Pro 获取数字量输入端口状态
ToolDI CR 获取末端数字量输入端口状态
AI CR 获取模拟量输入端口电压值
ToolAI CR 获取末端模拟量输入端口电压值
DIGroup CR 获取输入组端口状态
DOGroup CR 设置数字输出组端口状态
BrakeControl CR 抱闸控制
StartDrag CR 进入拖拽
StopDrag CR 退出拖拽
SetCollideDrag CR 强制进入拖拽
SetTerminalKeys CR 设置末端按键功能使能状态
SetTerminal485 CR 设置末端485的参数
GetTerminal485 CR 获取末端485的参数
LoadSwitch CR 控制负载设置状态

3.1 EnableRobot

  • 功能:使能机器人

  • 格式:EnableRobot()

  • 支持端口:29999

  • 可选参数详解:

    参数名 类型 含义
    load double 负载重量kg。CR3/CR3L负载范围:03Kg;CR5/CR5D负载范围:05Kg;CR7负载范围:07Kg;CR10负载范围:010Kg;CR12负载范围:012Kg;CR16负载范围:016Kg;MG400负载范围:00.5Kg;M1 Pro负载范围:01.5Kg;
    centerX double X方向偏心距离mm,取值范围:-500mm~500mm;
    centerY double Y方向偏心距离mm,取值范围:-500mm~500mm;
    centerZ double Z方向偏心距离mm,取值范围:-500mm~500mm;
  • 返回:

    ErrorID,{},EnableRobot();

  • 示例:

    EnableRobot()

  • 说明:可选参数数量:0/1/4 (不填参数,正常接收ErrorID返回0;填一个参数默认为负载重量参数,ErrorID返回0;填四个参数分别表示负载重量、X方向偏心距、Y方向偏心距以及Z方向偏心距,ErrorID返回0;失败返回错误码,参考第六章;)

3.2 DisableRobot

  • 功能:下使能机器人

  • 格式:DisableRobot()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},DisableRobot();

  • 示例:

    DisableRobot()

3.3 ClearError

  • 功能:清错机器人

  • 格式:ClearError()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},ClearError();

  • 示例:

    ClearError()

  • 说明:清除报警后,用户可以根据RobotMode来判断机器人是否还处于报警状态;对于清除不掉的报警需要重启控制柜解决;(详见GetErrorID说明)

3.4 ResetRobot

  • 功能:机器人停止

  • 格式:ResetRobot()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},ResetRobot();

  • 示例:

    ResetRobot()

3.5 SpeedFactor

  • 功能:设置全局速度比例。

  • 格式:SpeedFactor(ratio)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    ratio int 运动速度比例,取值范围:1~100
  • 返回:

    ErrorID,{},SpeedFactor(ratio);

  • 示例:

    SpeedFactor(80)

3.6 User

  • 功能:选择已标定的用户坐标系。

  • 格式:User(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 选择已标定的用户坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},User(index);

    若ErrorID返回-1,表示设置的用户坐标索引索引不存在;

  • 示例:

    User(1)

3.7 Tool

  • 功能:选择已标定的工具坐标系。

  • 格式:Tool(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 选择已标定的工具坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},Tool(index);

    若ErrorID返回-1,表示设置的工具坐标索引不存在;

  • 示例:

    Tool(1)

3.8 RobotMode

  • 功能:机器人状态。

  • 格式:RobotMode()

  • 参数数量:0

  • 支持端口:29999

  • 返回值:

    模式 描述 备注
    1 ROBOT_MODE_INIT 初始化
    2 ROBOT_MODE_BRAKE_OPEN 抱闸松开
    3 --- 保留位
    4 ROBOT_MODE_DISABLED 未使能(抱闸未松开)
    5 ROBOT_MODE_ENABLE 使能(空闲)
    6 ROBOT_MODE_BACKDRIVE 拖拽
    7 ROBOT_MODE_RUNNING 运行状态
    8 ROBOT_MODE_RECORDING 拖拽录制
    9 ROBOT_MODE_ERROR 报警
    10 ROBOT_MODE_PAUSE 暂停状态
    11 ROBOT_MODE_JOG 点动
  • 返回:

    ErrorID,{Value},RobotMode(); //Value为返回模式值

  • 示例:

    RobotMode()

  • 说明:为保持与控制器3.5.1版本兼容性,之前关键机器人状态返回值没有做修改;如:空闲、拖拽、运行、报警状态;新增抱闸松开、轨迹录制、暂停以及点动等;

  • 其中运行状态包含:轨迹复现/拟合中、机器人运行状态以及脚本运行状态;

3.9 PayLoad

  • 功能:设置当前的负载

  • 格式:PayLoad(weight,inertia)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    weight double 负载重量 kg。CR3/CR3L负载范围:03Kg;CR5/CR5D负载范围:05Kg;CR7负载范围:07Kg;CR10负载范围:010Kg;CR12负载范围:012Kg;CR16负载范围:016Kg;MG400负载范围:00.5Kg;M1 Pro负载范围:01.5Kg;
    inertia double 负载惯量 kgm²
  • 返回:

    ErrorID,{},PayLoad(weight,inertia);

  • 示例:

    PayLoad(3,0.4)

    说明:为了兼容Lua的LoadSet,tcp指令支持LoadSet,使用LoadSet等同于调用PayLoad,另外要和LoadSwitch指令一起使用

3.10 DO

  • 功能:设置数字输出端口状态(队列指令)

  • 格式:DO(index,status)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 数字输出索引,取值范围:116或1001000
    status int 数字输出端口状态,1:高电平;0:低电平
  • 返回:

    ErrorID,{},DO(index,status);

  • 示例:

    DO(1,1)

  • 说明:使用取值范围100-1000需要有拓展IO模块的硬件支持;

3.11 DOExecute

  • 功能:设置数字输出端口状态(立即指令)

  • 格式:DOExecute(index,status)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 数字输出索引,取值范围:116或1001000
    status int 数字输出端口状态,1:高电平;0:低电平
  • 返回:

    ErrorID,{},DOExecute(index,status);

  • 示例:

    DOExecute(1,1)

  • 说明:使用取值范围100-1000需要有拓展IO模块的硬件支持;

  • 此条指令为CR系列机器人特有;

3.12 ToolDO

  • 功能:设置末端数字输出端口状态(队列指令)

  • 格式:ToolDO(index,status)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 数字输出索引,取值范围:1/2
    status int 数字输出端口状态,1:高电平;0:低电平
  • 返回:

    ErrorID,{},ToolDO(index,status);

  • 示例:

    ToolDO(1,1)

  • 此条指令为CR系列机器人特有;

3.13 ToolDOExecute

  • 功能:设置末端数字输出端口状态(立即指令)

  • 格式:ToolDOExecute(index,status)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 数字输出索引,取值范围:1/2
    status int 数字输出端口状态,1:高电平;0:低电平
  • 返回:

    ErrorID,{},ToolDOExecute(index,status);

  • 示例:

    ToolDOExecute(1,1)

  • 此条指令为CR系列机器人特有;

3.14 AO

  • 功能:设置控制柜模拟输出端口的电压值(队列指令)

  • 格式:AO(index,value)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 模拟输出索引,取值范围:1/2
    value double 对应index的电压值,取值范围0~10V
  • 返回:

    ErrorID,{},AO(index,value);

  • 示例:

    AO(1,2)

  • 说明:暂时不支持电流;

  • 此条指令为CR系列机器人特有;

3.15 AOExecute

  • 功能:设置控制柜模拟输出端口的电压值(立即指令)

  • 格式:AOExecute(index,value)

  • 参数数量:2

  • 支持端口:29999

  • 参数详解:2

    参数名 类型 含义
    index int 模拟输出索引,取值范围:1/2
    value double 对应index的电压值,取值范围0~10V
  • 返回:

    ErrorID,{},AOExecute(index,value);

  • 示例:

    AOExecute(1,2)

  • 说明:暂时不支持电流;

  • 此条指令为CR系列机器人特有;

3.16 AccJ

  • 功能:设置关节加速度比例。该指令仅对MovJ、MovJIO、MovJR、 JointMovJ指令有效

  • 格式:AccJ(R)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    R int 关节加速度百分比,取值范围:1~100
  • 返回:

    ErrorID,{},AccJ(R);

  • 示例:

    AccJ(50)

3.17 AccL

  • 功能:设置笛卡尔加速度比例。该指令仅对MovL、MovLIO、MovLR、Jump、Arc、Circle指令有效。

  • 格式:AccL(R)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    R int 笛卡尔加速度比例,取值范围:1~100
  • 返回:

    ErrorID,{},AccL(R);

  • 示例:

    AccL(50)

3.18 SpeedJ

  • 功能:设置关节速度比例。该指令仅对MovJ、MovJIO、MovJR、 JointMovJ指令有效。

  • 格式:SpeedJ(R)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    R int 关节速度比例,取值范围:1~100
  • 返回:

    ErrorID,{},SpeedJ(R);

  • 示例:

    SpeedJ(50)

3.19 SpeedL

  • 功能:设置笛卡尔速度比例。该指令仅对MovL、MovLIO、MovLR、Jump、Arc、Circle指令有效。

  • 格式:SpeedL(R)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    R int 笛卡尔速度比例,取值范围:1~100
  • 返回:

    ErrorID,{},SpeedL(R);

  • 示例:

    SpeedL(50)

3.20 Arch

  • 功能:设置Jump门型参数索引(起始点抬升高度、最大抬升高度、结束点下降高度)。

  • 格式:Arch(Index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    Index int 门型参数索引,取值范围:0~9
  • 返回:

    ErrorID,{},Arch(Index);

  • 示例:

    Arch(1)

3.21 CP

  • 功能:设置CP比例。CP即平滑过渡,机械臂从起始点经过中间点到达终点时,经过中间点是以直角方式过渡还是以曲线方式过渡。该指令对Jump指令无效。

  • 格式:CP(R)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    R int 平滑过渡比例,取值范围:1~100
  • 返回:

    ErrorID,{},CP(R);

  • 示例:

    CP(50)

3.23 SetArmOrientation

  • 功能:设置手系指令。

  • 格式:SetArmOrientation(LorR,UorD,ForN,Config6)

  • 可选参数数量:4

  • 支持端口:29999

  • 可选参数详解:4

    参数名 类型 含义
    LorR int 臂方向向前/向后(1/-1)
    1:向前 (其中对于M1Pro产品需要设置0表示左手系
    -1:向后 (其中对于M1Pro产品需要设置1表示右手系
    UorD int 臂方向肘上/肘下(1/-1)
    1:肘上
    -1:肘下
    ForN int 臂方向腕部是否翻转(1/-1)
    1:腕不翻转
    -1:腕翻转
    Config6 int 第六轴角度标识
    -1,-2...:第6轴角度为[0,-90]为-1;[-90,-180]为-2;以此类推
    1,2...:第6轴角度为[0,90]为1;[90,180]为2;以此类推
  • 返回:

    ErrorID,{},SetArmOrientation(LorR,UorD,ForN,Config6);

  • CR产品手势设置示例:

    SetArmOrientation(1,1,-1,1)

  • M1Pro产品手势设置左手示例:

    SetArmOrientation(0)

  • 此条指令为CR系列以及M1Pro机器人特有;可选参数数量:1/4;填一个参数默认为M1Pro机型,表示左右手系;填写四个参数表示CR系列机器参数;其他参数数量填写将会返回报错;

3.24 PowerOn

  • 功能:机器人上电。

  • 格式:PowerOn()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},PowerOn();

  • 示例:

    PowerOn()

  • 说明:机器人上电到完成,需要等待大概10秒钟的时间再进行使能操作;

  • 此条指令为CR系列机器人特有;

3.25 RunScript

  • 功能:运行脚本。

  • 格式:RunScript(projectName)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    projectName string 脚本名称
  • 返回:

    ErrorID,{},RunScript(projectName);

  • 示例:

    RunScript(demo)

3.26 StopScript

  • 功能:停止脚本。

  • 格式:StopScript()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},StopScript();

  • 示例:

    StopScript()

3.27 PauseScript

  • 功能:暂停脚本。

  • 格式:PauseScript()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},PauseScript();

  • 示例:

    PauseScript()

3.28 ContinueScript

  • 功能:继续脚本。

  • 格式:ContinueScript()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},ContinueScript();

  • 示例:

    ContinueScript()

3.29 SetSafeSkin

  • 功能:设置安全皮肤开关状态。

  • 格式:SetSafeSkin(status)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    status int status:电子皮肤开关状态,0:关闭电子皮肤;1:开启电子皮肤
  • 返回:

    ErrorID,{},SetSafeSkin(status));

  • 示例:开启电子皮肤功能

    SetSafeSkin (1)

  • 此条指令为CR系列机器人特有;

3.30 GetTraceStartPose

  • 功能:获取轨迹拟合中首个点位。

  • 格式:GetTraceStartPose(traceName)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    traceName string 轨迹文件名(含后缀)
    轨迹路径存放在/dobot/userdata/project/process/trajectory/
  • 返回:

    ErrorID,{x,y,z,a,b,c},GetTraceStartPose(traceName); //{x,y,z,a,b,c}指点位坐标值

  • 示例:

    GetTraceStartPose(recv_string)

  • 说明:本条指令在CR控制器3.5.2版本以及以上支持;

  • 此条指令为CR系列机器人特有;

3.31 GetPathStartPose

  • 功能:获取轨迹复现中首个点位。

  • 格式:GetPathStartPose(traceName)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    traceName string 轨迹文件名(含后缀)
    轨迹路径存放在/dobot/userdata/project/process/trajectory/
  • 返回:

    ErrorID,{j1,j2,j3,j4,j5,j6},GetTraceStartPose(traceName); //{j1,j2,j3,j4,j5,j6}关节点位坐标值

  • 示例:

    GetPathStartPose(recv_string)

  • 说明:本条指令在CR控制器3.5.2版本以及以上支持;

  • 此条指令为CR系列机器人特有;

3.32 PositiveSolution

  • 功能:正解。(给定机器人各关节的角度,计算出机器人末端的空间位置)

  • 格式:PositiveSolution(J1,J2,J3,J4,J5,J6,User,Tool)

  • 参数数量:8

  • 支持端口:29999

  • 参数详解:8

    参数名 类型 含义
    J1 double J1 轴位置,单位:度
    J2 double J2 轴位置,单位:度
    J3 double J3 轴位置,单位:度
    J4 double J4 轴位置,单位:度
    J5 double J5 轴位置,单位:度
    J6 double J6 轴位置,单位:度
    User int 选择已标定的用户坐标系
    Tool int 选择已标定的工具坐标系
  • 返回:

    ErrorID,{x,y,z,a,b,c},PositiveSolution(J1,J2,J3,J4,J5,J6,User,Tool); //{x,y,z,a,b,c}指返回的空间位置

  • 示例:下发关节角度返回当前的机器人末端的空间位置

    PositiveSolution(0,0,-90,0,90,0,1,1)

    返回:

    0,{473.000000,-141.000000,469.000000,-180.000000,-0.000000,-90.000000},PositiveSolution(0,0,-90,0,90,0,0,0);

  • 说明,需要已知:

    • 机器人的臂方向SetArmOrientation
  • 此条指令为CR系列机器人特有;

3.33 InverseSolution

  • 功能:逆解。(已知机器人末端的位置和姿态,计算机器人各关节的角度值)

  • 格式:InverseSolution(X,Y,Z,Rx,Ry,Rz,User,Tool,isJointNear,JointNear)

    //其中isJointNear以及JointNear为可选设置参数;

  • 参数数量:10

  • 支持端口:29999

  • 必选参数详解:8

    参数名 含义 类型
    X X 轴位置,单位:毫米 double
    Y Y 轴位置,单位:毫米 double
    Z Z 轴位置,单位:毫米 double
    Rx Rx 轴位置,单位:度 double
    Ry Ry轴位置,单位:度 double
    Rz Rz轴位置,单位:度 double
    User 选择已标定的用户坐标系 int
    Tool 选择已标定的工具坐标系 int
  • 可选参数详解:2

    参数名 含义 类型
    isJointNear 是否角度选解(值为1:JointNear数据有效,
    值为0:JointNear数据无效,算法根据当前角度进行选解;
    不填默认值为0)
    int
    JointNear 选解六个关节角度值 string
  • 返回:

    ErrorID,{J1,J2,J3,J4,J5,J6},InverseSolution(X,Y,Z,Rx,Ry,Rz,User,Tool,isJointNear,JointNear); //{J1,J2,J3,J4,J5,J6}指返回的关节值;isJointNear,JointNear若有下发则返回,没有下发则不返回;

  • 示例:

    下发不带选解关节角度的笛卡尔坐标值返回机器人关节角度值:

    InverseSolution(473.000000,-141.000000,469.000000,-180.000000,0.000,-90.000,0,0)

    返回:0,{0,0,-90,0,90,0},InverseSolution(473.000000,-141.000000,469.000000,

    -180.000000,0.000,-90.000,0,0);

    下发带选解关节角度的笛卡尔坐标值返回机器人关节角度值:

    InverseSolution(473.000000,-141.000000,469.000000,-180.000000,0.000,-90.000,0,0,1,{0,0,-90,0,90,0})

    返回:0,{0,0,-90,0,90,0},InverseSolution(0,-247,1050,-90,0,180,0,0,1,{0,0,-90,0,90,0});

  • 此条指令为CR系列机器人特有;

3.34 SetCollisionLevel

  • 功能:设置碰撞等级。

  • 格式:SetCollisionLevel(level)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    level int level: 碰撞等级
    0:关闭碰撞检测
    1~5:等级越高越灵敏
  • 返回:

    ErrorID,{},SetCollisionLevel(level);

  • 示例:

    SetCollisionLevel(1)

3.35 HandleTrajPoints

  • 功能:轨迹文件的预处理。

  • 格式:HandleTrajPoints(traceName)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    traceName string 轨迹文件名(含后缀)
    轨迹路径存放在/dobot/userdata/project/process/trajectory/
  • 返回:

    ErrorID,{},HandleTrajPoints(traceName);

  • 说明:由于轨迹预处理计算结果会根据文件的大小不同算法处理时间会有差异,若用户下发不带参数的该指令,代表查询当前指令的结果;返回:返回为-3表示文件内容错误,返回为-2表示文件不存在,返回为-1表示预处理没有完成;返回为0表示预处理完成,没有错误;返回大于0的结果表示当前返回结果对应的点位有问题;

  • 示例:下发轨迹名为recv_string做预处理,然后在一定周期查询预处理结果;

    HandleTrajPoints(recv_string)

    HandleTrajPoints()

  • 说明:本条指令在CR控制器3.5.2版本以及以上支持;

  • 此条指令为CR系列机器人特有;

3.36 GetSixForceData

  • 功能:获取六维力数据

  • 格式:GetSixForceData()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{Fx,Fy,Fz,Mx,My,Mz},GetSixForceData(); //{Fx,Fy,Fz,Mx,My,Mz}表示当前六维力数据原始值;

  • 示例:

    GetSixForceData()

    返回:0,{0.0,0.0,0.0,0.0,0.0,0.0},GetSixForceData();

  • 此条指令为CR系列机器人特有;

3.37 GetAngle

  • 功能:获取关节坐标系下机械臂的实时位姿

  • 格式:GetAngle()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{J1,J2,J3,J4,J5,J6},GetAngle(); //{J1,J2,J3,J4,J5,J6}表示当前位置的关节坐标值;

  • 示例:

    GetAngle()

    返回:0,{0.0,0.0,90.0,0.0,-90.0,0.0},GetAngle();

3.38 GetPose

  • 功能:获取笛卡尔坐标系下机械臂的实时位姿(如果设置了用户坐标系或工具坐标系,则获取的位姿为当前坐标系下的位姿)

  • 格式:GetPose(user,tool)

  • 参数数量:0/2

  • 支持端口:29999

  • 返回:

    ErrorID,{X,Y,Z,Rx,Ry,Rz},GetPose(); //{X,Y,Z,Rx,Ry,Rz}表示当前位置的笛卡尔坐标值;

  • 参数详解:

    参数名 类型 含义
    user int 用户坐标系索引号
    tool int 工具坐标系索引号
  • 示例:

    默认参数返回上位机选择坐标系的位姿,同时传入user和tool索引值返回指定坐标系下的位姿

    GetPose()

    返回:0,{-473.0,-141.0,469.0,-180.0,0.0,90.0},GetPose();

3.39 EmergencyStop

  • 功能:急停

  • 格式:EmergencyStop()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},EmergencyStop();

  • 示例:

    EmergencyStop()

3.40 ModbusCreate

  • 功能:创建modbus主站。

  • 格式:ModbusCreate(ip,port,slave_id,isRTU)

  • 参数数量:4

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    ip string 从站ip地址;
    port int 从站端口;
    slave_id int 从站ID(取值范围大于0的整数)
    isRTU int 可选参数,取值范围0/1:
    如果为空或者值为0,建立modbusTCP通信;
    如果为1,建立modbusRTU通信;
  • 返回:

    ErrorID,{index},ModbusCreate(ip,port,slave_id,isRTU); //ErrorID:0表示创建Modbus主站成功,-1表示创建Modbus主站失败,其他值参考错误码描述;index: 返回的主站索引,最多支持5个设备,取值范围(0~4);

  • 示例:建立RTU通信主站(60000末端透传端口)

    ModbusCreate(127.0.0.1,60000,1,1)

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.41 ModbusClose

  • 功能:和Modbus从站断开连接,释放主站。

  • 格式:ModbusClose(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int 返回的主站索引;
  • 返回:

    ErrorID,{},ModbusClose(index);

  • 示例:

    ModbusClose(0)

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.42 GetInBits

  • 功能:读离散输入功能。

  • 格式:GetInBits(index,addr,count)

  • 参数数量:3

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int 返回的主站索引;
    addr int 视从站配置而定;
    count int 个数,取值范围1~16;
  • 返回:

    ErrorID,{value1,value2,...,valuen},GetInBits(index,addr,count); //table,按位获取结果{value1,value2...,valuen}

  • 示例:

    下发: GetInBits(0,3000,5)

    正常返回:0,{1,0,1,1,0},GetInBits(0,3000,5);

    错误返回:-1,{},GetInBits(0,3000,5);

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.43 GetInRegs

  • 功能:读输入寄存器。

  • 格式:GetInRegs(index,addr,count,valType)

  • 参数数量:4

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int 返回的主站索引;
    addr int 视从站配置而定;
    count int 个数,取值范围:1 -4
    valType string 可选参数,
    U16: 读取16位无符号数(2个字节,占用1个寄存器)
    U32: 读取32位无符号数(4个字节,占用2个寄存器)
    F32: 读取32位浮点数(4个字节,占用2个寄存器)
    F64: 读取64位浮点数(8个字节,占用4个寄存器)
  • 返回:

    ErrorID,{value1,value2,...,valuen},GetInRegs(index,addr,count,valType); //ErrorID为0表示正常,为-1表示没有获取成功;table,按变量类型返回{value1,value2...,valuen}

  • 示例:

    GetInRegs(0,4000,3)

    正常返回:0,{5,18,12},GetInRegs(0,4000,3);

    错误返回:-1,{},GetInRegs(0,4000,3);

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.44 GetCoils

  • 功能:读线圈功能。

  • 格式:GetCoils(index,addr,count)

  • 参数数量:3

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int 返回的主站索引;
    addr int 视从站配置而定;
    count int 个数,取值范围1~16
  • 返回:

    ErrorID,{value1,value2,...,valuen},GetCoils(index,addr,count); //ErrorID为0表示正常,为-1表示没有获取成功;table,按变量类型返回{value1,value2...,valuen}

  • 示例:

    GetCoils(0,1000,3)

    正常返回:0,{1,1,0},GetCoils(0,1000,3);

    错误返回:-1,{},GetCoils(0,1000,3);

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.45 SetCoils

  • 功能:写线圈功能。

  • 格式:SetCoils(index,addr,count,valTab)

  • 参数数量:4

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int 返回的主站索引;
    addr int 视从站配置而定;
    count int 个数,取值范围1~16
    valTab string 写线圈地址值;
  • 返回:

    ErrorID,{},SetCoils(index,addr,count,valTab); //ErrorID为0表示正常,为-1表示没有设置成功;

  • 示例:

    SetCoils(0,1000,3,{1,0,1})

    正常返回:0,{},SetCoils(0,1000,3,{1,0,1});

    错误返回:-1,{},SetCoils(0,1000,3,{1,0,1});

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.46 GetHoldRegs

  • 功能:读保持寄存器。

  • 格式:GetHoldRegs(index,addr, count,valType)

  • 参数数量:4

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int index,返回的主站索引,最多支持5个设备,取值范围(0~4);
    addr int 保持寄存器的起始地址。视从站配置而定;
    count int 读取指定数量type类型的数据。取值范围:1~4
    valType string 数据类型:
    如果为空,默认读取16位无符号整数(2个字节,占用1个寄存器)
    U16:读取16位无符号整数(2个字节,占用1个寄存器)
    U32:读取32位无符号整数(4个字节,占用2个寄存器)
    F32:读取32位单精度浮点数(4个字节,占用2个寄存器)
    F64:读取64位双精度浮点数(8个字节,占用4个寄存器)
  • 返回:

    ErrorID,{value1,value2,...,valuen},GetHoldRegs(index,addr, count,valType); //ErrorID为0表示正常,为-1表示没有获取成功;table,按变量类型返回{value1,value2...,valuen}

  • 示例:从地址3095开始读取一个16位无符号整数

    GetHoldRegs(0,3095,1)

    正常返回:0,{13},GetHoldRegs(0,3095,1);

    错误返回:-1,{},GetHoldRegs(0,3095,1);

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.47 SetHoldRegs

  • 功能:写保存寄存器。

  • 格式:SetHoldRegs(index,addr, count,valTab,valType)

  • 参数数量:5

  • 支持端口:29999

  • 参数详解:

    参数名 类型 含义
    index int index,返回的主站索引,最多支持5个设备,取值范围(0~4)
    addr int 保持寄存器的起始地址。视从站配置而定;
    count int 写入指定数量type类型的数据。取值范围:1~4
    valTab string 保持寄存器地址的值
    valType string 数据类型
    如果为空,默认读取16位无符号整数(2个字节,占用1个寄存器)
    U16:读取16位无符号整数(2个字节,占用1个寄存器)
    U32:读取32位无符号整数(4个字节,占用2个寄存器)
    F32:读取32位单精度浮点数(4个字节,占用2个寄存器)
    F64:读取64位双精度浮点数(8个字节,占用4个寄存器)
  • 返回:

    ErrorID,{},SetHoldRegs(index,addr, count,valTab,valType); //ErrorID为0表示正常,为-1表示没有设置成功;

  • 示例:从地址3095开始,写入两个16位无符号整数值6000,300

    SetHoldRegs(0,3095,2,{6000,300}, U16)

    正常返回:0,{},SetHoldRegs(0,3095,2,{6000,300}, U16);

    错误返回:-1,{},SetHoldRegs(0,3095,2,{6000,300}, U16);

  • 说明:CR控制器3.5.2版本以及以上版本支持;

3.48 GetErrorID

  • 功能:获取机器人错误码

  • 格式:GetErrorID()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{[[id,...,id], [id], [id], [id], [id], [id], [id]]},GetErrorID(); //[id, ..., id]为控制器以及算法报警信息,其中碰撞检测值为-2,电子皮肤碰撞检测值-3;后面六个[id]分别表示六个伺服的报警信息;

  • 示例:

    GetErrorID()

    返回:

    0,{[[-2],[],[],[],[],[]]},GetErrorId();

  • 说明:对于错误码对应的错误内容请参考控制器错误描述文件alarm_controller.json以及伺服错误描述alarm_servo.json;

  • CR控制器3.5.2版本以及以上版本支持;

3.49 DI

  • 功能:获取数字量输入端口状态

  • 格式:DI(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 数字输入索引,取值范围:132或1001000
  • 返回:

    ErrorID,{value},DI(index); //value:返回当前index的值状态,取值范围0/1;

  • 示例:

    DI(1)

    返回,数字输入端口1为低电平:

    0,{0},DI(1);

  • 说明:使用取值范围100-1000需要有拓展IO模块的硬件支持;

3.50 ToolDI

  • 功能:获取末端数字量输入端口状态

  • 格式:ToolDI(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 末端数字量输入索引,取值范围:1/2
  • 返回:

    ErrorID,{value},ToolDI(index); //value:返回当前index的值状态,取值范围0/1;

  • 示例:

    ToolDI(2)

    返回,末端数字输入端口2为高电平:

    0,{1},ToolDI(2);

  • 此条指令为CR系列机器人特有;

3.51 AI

  • 功能:获取模拟量输入端口电压值(立即指令)

  • 格式:AI(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 控制柜模拟输入索引,取值范围:1/2
  • 返回:

    ErrorID,{value},AI(index); //value:返回当前index的电压值;

  • 示例:

    AI(2)

    返回,模拟输入端口2的电压值为3.5V:

    0,{3.5},AI(2);

  • 此条指令为CR系列机器人特有;

3.52 ToolAI

  • 功能:获取末端模拟量输入端口电压值(立即指令)

  • 格式:ToolAI(index)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    index int 末端模拟输入索引,取值范围:1/2
  • 返回:

    ErrorID,{value},ToolAI(index); //value:返回当前index的电压值;

  • 示例:

    ToolAI(1)

    返回,模拟输入端口1的电压值为1.5V:

    0,{1.5},ToolAI(1);

  • 此条指令为CR系列机器人特有;

3.53 DIGroup

  • 功能:获取输入组端口状态

  • 格式:DIGroup(index1,index2,...,indexn)

  • 参数数量:不固定(最大支持64个)

  • 支持端口:29999

  • 参数详解:不固定

    参数名 类型 含义
    index1 int 数字输入索引,取值范围:1-32或100~1000
    ... ... ...
    indexn int 数字输入索引,取值范围:1-32或100~1000
  • 返回:

    ErrorID,{value1,value2,...,valuen},DIGroup(index1,index2,...,indexn); //value1...valuen:返回当前index1到indexn的电压值;

  • 示例:

    DIGroup(4,6,2,7)

    返回,获取的输入4、6、2、7端口的电平分别为1,0,1,1:

    0,{1,0,1,1},DIGroup(4,6,2,7);

  • 说明:使用取值范围100-1000需要有拓展IO模块的硬件支持;

  • 此条指令为CR系列机器人特有;

3.54 DOGroup

  • 功能:设置输出组端口状态

  • 格式:DOGroup(index1,value1,index2,value2,...,indexn,valuen)

  • 参数数量:不固定(最大支持64个)

  • 支持端口:29999

  • 参数详解:不固定

    参数名 类型 含义
    index1 int 设置数字输出索引,取值范围:1-16或100~1000
    value1 int 设置数字输出端口状态,取值0/1
    ... ... ...
    indexn int 设置数字输出索引,取值范围:1-16或100~1000
    valuen int 设置数字输出端口状态,取值0/1
  • 返回:

    ErrorID,{},DOGroup(index1,value1,index2,value2,...,indexn,valuen);

  • 示例:

    DOGroup(4,1,6,0,2,1,7,0)

    返回,分别设置输出端口4、6、2、7分别为1、0、1、0:

    0,{},DOGroup(4,1,6,0,2,1,7,0);

  • 说明:使用取值范围100-1000需要有拓展IO模块的硬件支持;

  • 此条指令为CR系列机器人特有;

3.55 BrakeControl

  • 功能:开关抱闸

  • 格式:BrakeControl(axisID,value)

  • 必填参数数量:2

  • 注意:**抱闸的控制需要机器人在下使能的条件下进行;**否则机器人错误返回-1;

  • 支持端口:29999

  • 必填参数详解:2

    参数名 类型 含义
    axisID int 关节轴号
    value int 设置抱闸状态;取值0/1 0:关闭抱闸 1:打开抱闸
  • 返回:

    ErrorID,{},BrakeControl(axisID,value);

  • 示例:打开关节1抱闸

    BrakeControl(1,1)

    返回:

    0,{},BrakeControl(1,1);

  • 说明:CR控制器3.5.2版本以及以上版本支持此命令;

  • 此条指令为CR系列机器人特有;

3.56 StartDrag

  • 功能:进入拖拽(在报错状态下,不可进入拖拽)

  • 格式:StartDrag()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},StartDrag();

  • 示例:

    StartDrag()

  • 说明:CR控制器3.5.2版本以及以上版本支持此命令;

  • 此条指令为CR系列机器人特有;

3.57 StopDrag

  • 功能:退出拖拽

  • 格式:StopDrag()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{},StopDrag();

  • 示例:

    StopDrag()

  • 说明:CR控制器3.5.2版本以及以上版本支持此命令;

  • 此条指令为CR系列机器人特有;

3.58 SetCollideDrag

  • 功能:设置是否强制进入拖拽(报错状态下也能进入拖拽)

  • 格式:SetCollideDrag(status)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    status int status:强制拖拽开关状态,0:关闭;1:开启
  • 返回:

    ErrorID,{},SetCollideDrag(status);

  • 示例:强制进入拖拽

    SetCollideDrag(0)

  • 说明:CR控制器3.5.2版本以及以上版本支持此命令;

  • 此条指令为CR系列机器人特有;

3.59 SetTerminalKeys

  • 功能:设置末端按键功能使能状态

  • 格式:SetTerminalKeys(status)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    status int status:设置末端按键功能使能状态,0:关闭;1:开启
  • 返回:

    ErrorID,{},SetTerminalKeys(status);

  • 示例:禁用末端按键功能

    SetTerminalKeys(0)

  • 说明:只在特定版本支持此命令

  • 此条指令为CR系列机器人特有;

3.60 SetTerminal485

  • 功能:设置末端485参数

  • 格式:SetTerminal485(baudRate, dataLen, parityBit, stopBit)

  • 参数数量:4

  • 支持端口:29999

  • 参数详解:4

    参数名 类型 含义
    baudRate int baudRate:波特率
    dataLen int dataLen:数据位长度,目前固定为8
    parityBit string parityBit:奇偶校验位,目前固定为N,代表无校验
    stopBit int stopBit: 停止位,目前固定为1
  • 返回:

    ErrorID,{},SetTerminal485(status);

  • 示例:设置波特率为115200

    SetTerminal485(115200, 8, N, 1)

  • 说明:只在特定版本支持此命令

  • 此条指令为CR系列机器人特有;

3.62 GetTerminal485

  • 功能:获取末端485的参数

  • 格式:GetTerminal485()

  • 参数数量:0

  • 支持端口:29999

  • 返回:

    ErrorID,{baudRate, dataLen, parityBit, stopBit},GetPose(); //{baudRate, dataLen, parityBit, stopBit}分别表示波特率,数据位,奇偶校验位,停止位

  • 示例:

    GetTerminal485()

    返回:0,{115200, 8, N, 1},GetTerminal485();

    说明:只在特定版本支持此命令

    此条指令为CR系列机器人特有;

3.63 LoadSwitch

  • 功能:控制负载设置状态

  • 格式:LoadSwitch(status)

  • 参数数量:1

  • 支持端口:29999

  • 参数详解:1

    参数名 类型 含义
    status int status:设置负载设置状态,0:关闭;1:开启,开启负载设置会提高碰撞灵敏度
  • 返回:

    ErrorID,{},LoadSwitch(status);

  • 示例:

    LoadSwitch(1) // 开启负载设置

  • 此条指令为CR系列机器人特有;

4.通信协议----实时反馈端口

​ 30004端口即实时反馈端口(30004、30005以及30006端口将在控制器3.5.2+版本支持),客户端每8ms能收到一次机器人如下表所示的信息。30005服务器端口每200ms反馈机器人的信息,30006端口为可配置的反馈机器人信息端口(默认为每50ms反馈);通过实时反馈端口每次收到的数据包有1440个字节,这些字节以标准的格式排列。下表是字节排列的顺序表。(30006端口的实时数据的配置更新可以在线修改后,实时生效;)

意义/Meaning 数据类型/Type 值的数目/Number of values 字节大小/Size in bytes 字节位置值/Byte position value 描述/Notes 支持产品
MessageSize unsigned short 1 2 0000 ~ 0001 消息字节总长度/Total message length in bytes CR\MG\M1Pro
unsigned short 3 6 0002 ~ 0007 保留位 CR\MG\M1Pro
DigitalInputs uint64 1 8 0008 ~ 0015 数字输入/Current state of the digital inputs. CR\MG\M1Pro
DigitalOutputs uint64 1 8 0016 ~ 0023 数字输出 CR\MG\M1Pro
RobotMode uint64 1 8 0024 ~ 0031 机器人模式/Robot mode CR\MG\M1Pro
TimeStamp uint64 1 8 0032 ~ 0039 时间戳(单位ms) CR
uint64 1 8 0040 ~ 0047 保留位 CR\MG\M1Pro
TestValue uint64 1 8 0048 ~ 0055 内存结构测试标准值 0x0123 4567 89AB CDEF CR\MG\M1Pro
double 1 8 0056 ~ 0063 保留位 CR\MG\M1Pro
SpeedScaling double 1 8 0064 ~ 0071 速度比例/Speed scaling of the trajectory limiter CR\MG
LinearMomentumNorm double 1 8 0072 ~ 0079 机器人当前动量/Norm of Cartesian linear momentum(需要特定硬件版本) CR
VMain double 1 8 0080 ~ 0087 控制板电压/Masterboard: Main voltage CR
VRobot double 1 8 0088 ~ 0095 机器人电压/Masterboard: Robot voltage (48V) CR
IRobot double 1 8 0096 ~ 0103 机器人电流/Masterboard: Robot current CR
double 1 8 0104 ~ 0111 保留位 CR\MG\M1Pro
double 1 8 0112 ~ 0119 保留位 CR\MG\M1Pro
ToolAcceleroMeter double 3 24 0120 ~ 0143 TCP加速度/Tool x,y and z accelerometer values(需要特定硬件版本) CR
ElbowPosition double 3 24 0144 ~ 0167 肘位置/Elbow position(需要特定硬件版本) CR
ElbowVelocity double 3 24 0168 ~ 0191 肘速度/Elbow velocity(需要特定硬件版本) CR
QTarget double 6 48 0192 ~ 0239 目标关节位置/Target joint positions CR\MG
QDTarget double 6 48 0240 ~ 0287 目标关节速度/Target joint velocities CR\MG
QDDTarget double 6 48 0288 ~ 0335 目标关节加速度/Target joint accelerations CR\MG
ITarget double 6 48 0336 ~ 0383 目标关节电流/Target joint currents CR\MG
MTarget double 6 48 0384 ~ 0431 目标关节扭矩/Target joint moments (torques) CR\MG
QActual double 6 48 0432 ~ 0479 实际关节位置/Actual joint positions CR\MG
QDActual double 6 48 0480 ~ 0527 实际关节速度/Actual joint velocities CR\MG
IActual double 6 48 0528 ~ 0575 实际关节电流/Actual joint currents CR\MG
ActualTCPForce double 6 48 0576 ~ 0623 TCP传感器力值(通过六维力计算) CR\MG
ToolVectorActual double 6 48 0624 ~ 0671 TCP笛卡尔实际坐标值/Actual Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation CR\MG
TCPSpeedActual double 6 48 0672 ~ 0719 TCP笛卡尔实际速度值/Actual speed of the tool given in Cartesian coordinates CR\MG
TCPForce double 6 48 0720 ~ 0767 TCP力值(通过关节电流计算) CR
ToolVectorTarget double 6 48 0768 ~ 0815 TCP笛卡尔目标坐标值/Target Cartesian coordinates of the tool: (x,y,z,rx,ry,rz), where rx, ry and rz is a rotation vector representation of the tool orientation CR\MG
TCPSpeedTarget double 6 48 0816 ~ 0863 TCP笛卡尔目标速度值/Target speed of the tool given in Cartesian coordinates CR\MG
MotorTemperatures double 6 48 0864 ~ 0911 关节温度/Temperature of each joint in degrees celsius CR
JointModes double 6 48 0912 ~ 0959 关节控制模式/Joint control modes CR
VActual double 6 48 960 ~ 1007 关节电压/Actual joint voltages CR
HandType char 4 4 1008 ~ 1011 手系 CR\M1Pro
User char 1 1 1012 用户坐标 CR
Tool char 1 1 1013 工具坐标 CR
RunQueuedCmd char 1 1 1014 算法队列运行标志 CR
PauseCmdFlag char 1 1 1015 算法队列暂停标志 CR
VelocityRatio char 1 1 1016 关节速度比例(0~100) CR
AccelerationRatio char 1 1 1017 关节加速度比例(0~100) CR
JerkRatio char 1 1 1018 关节加加速度比例(0~100) CR
XYZVelocityRatio char 1 1 1019 笛卡尔位置速度比例(0~100) CR
RVelocityRatio char 1 1 1020 笛卡尔姿态速度比例(0~100) CR
XYZAccelerationRatio char 1 1 1021 笛卡尔位置加速度比例(0~100) CR
RAccelerationRatio char 1 1 1022 笛卡尔姿态加速度比例(0~100) CR
XYZJerkRatio char 1 1 1023 笛卡尔位置加加速度比例(0~100) CR
RJerkRatio char 1 1 1024 笛卡尔姿态加加速度比例(0~100) CR
BrakeStatus char 1 1 1025 机器人抱闸状态 CR
EnableStatus char 1 1 1026 机器人使能状态 CR
DragStatus char 1 1 1027 机器人拖拽状态 CR
RunningStatus char 1 1 1028 机器人运行状态 CR
ErrorStatus char 1 1 1029 机器人报警状态 CR
JogStatusCR char 1 1 1030 机器人点动状态 CR
CRRobotType char 1 1 1031 机器类型 CR
DragButtonSignal char 1 1 1032 按钮板拖拽信号 CR
EnableButtonSignal char 1 1 1033 按钮板使能信号 CR
RecordButtonSignal char 1 1 1034 按钮板录制信号 CR
ReappearButtonSignal char 1 1 1035 按钮板复现信号 CR
JawButtonSignal char 1 1 1036 按钮板夹爪控制信号 CR
SixForceOnline char 1 1 1037 六维力在线状态 CR
Reserve2[82] char 1 82 1038-1119 保留位 CR\MG\M1Pro
MActual[6] double 6 48 1120 ~ 1167 实际扭矩 CR
Load double 1 8 1168-1175 负载重量kg CR\MG\M1Pro
CenterX double 1 8 1176-1183 X方向偏心距离mm CR\MG\M1Pro
CenterY double 1 8 1184-1191 Y方向偏心距离mm CR\MG\M1Pro
CenterZ double 1 8 1192-1199 Z方向偏心距离mm CR\MG\M1Pro
User[6] double 6 48 1200-1247 用户坐标值 CR
Tool[6] double 6 48 1248-1295 工具坐标值 CR
TraceIndex double 1 8 1296-1303 轨迹复现运行索引 CR
SixForceValue[6] double 6 48 1304-1351 当前六维力数据原始值 CR
TargetQuaternion[4] double 4 32 1352-1383 [qw,qx,qy,qz] 目标四元数 CR
ActualQuaternion[4] double 4 32 1384-1415 [qw,qx,qy,qz] 实际四元数 CR
Reserve3[24] char 1 24 1416 ~ 1440 保留位 CR\MG\M1Pro
TOTAL 1440 1440byte package

其中Robot Mode返回机器人模式:

模式 描述 备注
1 ROBOT_MODE_INIT 初始化
2 ROBOT_MODE_BRAKE_OPEN 抱闸松开
3 --- 保留位
4 ROBOT_MODE_DISABLED 未使能(抱闸未松开)
5 ROBOT_MODE_ENABLE 使能(空闲)
6 ROBOT_MODE_BACKDRIVE 拖拽
7 ROBOT_MODE_RUNNING 运行状态
8 ROBOT_MODE_RECORDING 拖拽录制
9 ROBOT_MODE_ERROR 报警
10 ROBOT_MODE_PAUSE 暂停状态
11 ROBOT_MODE_JOG 点动
  • 说明:

    • 开启抱闸,状态为2;
    • 本体下使能,状态为4;
    • 使能成功后,则状态为5 ;
    • 机器人运行,状态为7;
    • 机器人暂停,状态为10;
    • 机器人进入拖拽模式(使能状态),状态为6;
    • 机器人在拖拽录制,状态为8;
    • 机器人在点动,状态为11;
    • 其中报警优先级最高,其他状态同时存在时,若有报警,先将状态置9;
  • 其中BrakeStatus抱闸状态:

    0x01表示第六个轴抱闸打开;

    0x02表示第五个轴抱闸打开;

    0x03表示五六轴抱闸打开;

    0x04表示第四个轴抱闸打开;

    ...

    如下位表示抱闸状态:

    7 6 5 4 3 2 1 0
    保留位 保留位 关节一 关节二 关节三 关节四 关节五 关节六
  • 其中JointModes关节控制模式:

    ​ 当前值为8表示位置模式;

    ​ 当前值为10表示力矩模式;

  • 其中HandType包含4个char 类型的参数,对于CR系列分别表示LorR、UorD、ForN、Config6四个参数;M1Pro产品仅第一个参数有意义,值为0为左手系,值为1表示右手系;详情参考第3.23章节的SetArmOrientation指令;

  • 其中RobotType表示机器类型:

    RobotType值 代表机型
    3 CR3
    31 CR3L
    5 CR5
    7 CR7
    10 CR10
    12 CR12
    16 CR16
    1 MG400
    2 M1Pro
    101 Nova 2
    103 Nova 5
    113 CR3V2
    115 CR5V2
    120 CR10V2

5.通信协议----运动相关端口

​ 上位机可以通过30003端口直接发送一些机器人运动相关指令给机器人,这些指令CR自己定义的;如下表是30003端口的指令列表。可以通过如下指令实现对机器人的运动相关控制;

其中MG400/M1Pro是四轴产品,CR系列是六轴产品是;因此如下所示的运动指令中参数都是按照CR系列产品的六个坐标值的长度来约定的;用户使用MG400/M1Pro产品时需要填写四个坐标值的长度即可;

指令 支持产品 描述
MovJ CR\MG\M1Pro 点到点运动,目标点位为笛卡尔点位
MovL CR\MG\M1Pro 直线运动,目标点位为笛卡尔点位
JointMovJ CR\MG\M1Pro 点到点运动,目标点位为关节点位
MovLIO CR\MG\M1Pro 直线运动过程中并行设置数字输出端口的状态,可设置多组
MovJIO CR\MG\M1Pro 点到点运动过程中并行设置数字输出端口的状态,可设置多组
Arc CR\MG\M1Pro 圆弧运动。需结合其他运动指令完成圆弧运动
ServoJ CR 基于关节空间的动态跟随命令
ServoP CR 基于笛卡尔空间的动态跟随命令
MoveJog CR\MG\M1Pro 点动
StartTrace CR 轨迹拟合
StartPath CR 轨迹复现
Sync CR\MG\M1Pro 阻塞程序执行队列指令
RelMovJTool CR 沿工具坐标系进行相对运动,末端运动方式为关节运动
RelMovLTool CR 沿工具坐标系进行相对运动指令,末端运动方式为直线运动
RelMovJUser CR\MG\M1Pro 沿用户坐标系进行相对运动指令,末端运动方式为关节运动
RelMovLUser CR\MG\M1Pro 沿用户坐标系进行相对运动指令,末端运动方式为直线运动
RelJointMovJ CR\MG\M1Pro 沿各轴关节坐标系进行相对运动指令,末端运动方式为关节运动

5.1 MovJ

  • 功能:点到点运动,目标点位为笛卡尔点位。

  • 格式:MovJ(X,Y,Z,Rx,Ry,Rz,User=index,Tool=index,SpeedJ=R,AccJ=R)

    //其中User=index,Tool=index,SpeedJ=R,AccJ=R为可选设置参数,分别表示设置用户坐标系、工具坐标系、关节速度比例以及加速度比例值; 和29999端口设置的SpeedJ、AccJ意义一致;User:用户索引09,不填按照上一次设置的值;Tool:工具索引09,不填按照上一次设置的值;

  • 必填参数数量:6

  • 支持端口:30003

  • 必填参数详解:6

    参数名 类型 含义
    X double X 轴位置,单位:毫米
    Y double Y 轴位置,单位:毫米
    Z double Z 轴位置,单位:毫米
    Rx double Rx 轴位置,单位:度
    Ry double Ry 轴位置,单位:度
    Rz double Rz 轴位置,单位:度
  • 返回:

    ErrorID,{},MovJ(X,Y,Z,Rx,Ry,Rz);

  • 示例:

    MovJ(-500,100,200,150,0,90,AccJ=50)

    返回:

    ErrorID,{},MovJ(-500,100,200,150,0,90,AccJ=50);

5.2 MovL

  • 功能:直线运动,目标点位为笛卡尔点位。

  • 格式:MovL(X,Y,Z,Rx,Ry,Rz,User=index,Tool=index,SpeedL=R,AccL=R)

    其中User=index,Tool=index,SpeedL=R,AccL=R为可选设置参数,分别表示设置用户坐标系、工具坐标系、笛卡尔速度比例以及加速度比例值; 和29999端口设置的SpeedL、AccL意义一致;User:用户索引09,不填按照上一次设置的值;Tool:工具索引09,不填按照上一次设置的值;

  • 必填参数数量:6

  • 支持端口:30003

  • 必填参数详解:6

    参数名 类型 含义
    X double X 轴位置,单位:毫米
    Y double Y 轴位置,单位:毫米
    Z double Z 轴位置,单位:毫米
    Rx double Rx 轴位置,单位:度
    Ry double Ry 轴位置,单位:度
    Rz double Rz 轴位置,单位:度
  • 返回:

    ErrorID,{},MovL(X,Y,Z,Rx,Ry,Rz,SpeedL=R,AccL=R);

  • 示例:

    MovL(-500,100,200,150,0,90,SpeedL=60)

    返回:

    ErrorID,{},MovL(-500,100,200,150,0,90,SpeedL=60);

5.3 JointMovJ

  • 功能:点到点运动,目标点位为关节点位。

  • 格式:JointMovJ(J1,J2,J3,J4,J5,J6,SpeedJ=R,AccJ=R)

    //其中SpeedJ=R,AccJ=R为可选设置参数,分别表示设置关节速度比例以及加速度比例值; 和29999端口设置的SpeedJ、AccJ意义一致;

  • 必填参数数量:6

  • 支持端口:30003

  • 必填参数详解:6

    参数名 类型 含义
    J1 double J1 轴位置,单位:度
    J2 double J2 轴位置,单位:度
    J3 double J3 轴位置,单位:度
    J4 double J4 轴位置,单位:度
    J5 double J5 轴位置,单位:度
    J6 double J6 轴位置,单位:度
  • 返回:

    ErrorID,{},JointMovJ(J1,J2,J3,J4,J5,J6,SpeedJ=R,AccJ=R);

  • 示例:

    JointMovJ(0,0,-90,0,90,0,SpeedJ=60,AccJ=50)

    返回:

    ErrorID,{},JointMovJ(0,0,-90,0,90,0,SpeedJ=60,AccJ=50);

5.4 MovLIO

  • 功能:在直线运动时并行设置数字输出端口状态,目标点位为笛卡尔点位。

  • 格式:MovLIO(X,Y,Z,Rx,Ry,Rz,{Mode,Distance,Index,Status},...,{Mode,Distance,Index,Status},User=index,Tool=index,SpeedL=R,AccL=R)

    //其中SpeedL=R,AccL=R为可选设置参数,分别表示设置用户坐标系、工具坐标系、笛卡尔速度比例以及加速度比例值; 和29999端口设置的SpeedL、AccL意义一致;User:用户索引09,不填按照上一次设置的值;Tool:工具索引09,不填按照上一次设置的值;

  • 参数数量:10

  • 支持端口:30003

  • 参数详解:10

    参数名 类型 含义
    X double X 轴位置,单位:毫米
    Y double Y 轴位置,单位:毫米
    Z double Z 轴位置,单位:毫米
    Rx double Rx 轴位置,单位:度
    Ry double Ry 轴位置,单位:度
    Rz double Rz 轴位置,单位:度
    Mode int 设置Distance模式,0:Distance为距离百分比;1:Distance为离起始点或目标点的距离
    Distance int 运行指定的距离: 若Mode为0,则Distance表示起始点与目标点之间距离的百分比,取值范围:0~100; 若Distance取值为正,则表示离起始点的距离; 若Distance取值为负,则表示离目标点的距离
    Index int 数字输出索引,取值范围:1~24
    Status int 数字输出状态,取值范围:0或1
  • 返回:

    ErrorID,{},MovLIO(X,Y,Z,Rx,Ry,Rz,{Mode,Distance,Index,Status},...,{Mode,Distance,Index,Status},SpeedL=R,AccL=R);

  • 示例:

    MovLIO(-500,100,200,150,0,90,{0,50,1,0})

5.5 MovJIO

  • 功能:点到点运动时并行设置数字输出端口状态,目标点位为笛卡尔点位。

  • 格式:MovJIO(X,Y,Z,Rx,Ry,Rz,{Mode,Distance,Index,Status},...,{Mode,Distance,Index,Status},User=index,Tool=index,SpeedJ=R,AccJ=R)

    //其中SpeedJ=R,AccJ=R为可选设置参数,分别表示设置用户坐标系、工具坐标系、关节速度比例以及加速度比例值; 和29999端口设置的SpeedJ、AccJ意义一致;User:用户索引09,不填按照上一次设置的值;Tool:工具索引09,不填按照上一次设置的值;

  • 参数数量:不固定

  • 支持端口:30003

  • 参数详解:10

    参数名 类型 含义
    X double X 轴位置,单位:毫米
    Y double Y 轴位置,单位:毫米
    Z double Z 轴位置,单位:毫米
    Rx double Rx轴位置,单位:度
    Ry double Ry 轴位置,单位:度
    Rz double Rz轴位置,单位:度
    Mode int 设置Distance模式,0:Distance为距离百分比;1:Distance为离起始点或目标点的距离
    Distance int 运行指定的距离: 若Mode为0,则Distance表示起始点与目标点之间距离的百分比,取值范围:0~100; 若Distance取值为正,则表示离起始点的距离; 若Distance取值为负,则表示离目标点的距离
    Index int 数字输出索引,取值范围:1~24
    Status int 数字输出状态,取值范围:0或1
  • 返回:

    ErrorID,{},MovJIO(X,Y,Z,Rx,Ry,Rz,{Mode,Distance,Index,Status},...,{Mode,Distance,Index,Status},SpeedJ=R,AccJ=R);

  • 示例:

    MovJIO(-500,100,200,150,0,90,{0,50,1,0})

5.6 Arc

  • 功能::从当前位置以圆弧插补方式移动至笛卡尔坐标系下的目标位置。

    ​ 该指令需结合其他运动指令确定圆弧起始点。

  • 格式:Arc(X1,Y1,Z1,Rx1,Ry1,Rz1,X2,Y2,Z2,Rx2,Ry2,Rz2,User=index,Tool=index,SpeedL=R,AccL=R)

    //其中SpeedL=R,AccL=R为可选设置参数,分别表示设置用户坐标系、工具坐标系、笛卡尔速度比例以及加速度比例值; 和29999端口设置的SpeedL、AccL意义一致;User:用户索引09,不填按照上一次设置的值;Tool:工具索引09,不填按照上一次设置的值;

  • 必填参数数量:12

  • 支持端口:30003

  • 必填参数详解:12

    参数名 类型 含义
    X1 double 表示圆弧中间点X1 轴位置,单位:毫米
    Y1 double 表示圆弧中间点Y1 轴位置,单位:毫米
    Z1 double 表示圆弧中间点Z1 轴位置,单位:毫米
    Rx1 double 表示圆弧中间点Rx1轴位置,单位:度
    Ry1 double 表示圆弧中间点Ry1轴位置,单位:度
    Rz1 double 表示圆弧中间点Rz1轴位置,单位:度
    X2 double 表示圆弧结束点X2 轴位置,单位:毫米
    Y2 double 表示圆弧结束点Y2 轴位置,单位:毫米
    Z2 double 表示圆弧结束点Z2 轴位置,单位:毫米
    Rx2 double 表示圆弧结束点Rx2轴位置,单位:度
    Ry2 double 表示圆弧结束点Ry2轴位置,单位:度
    Rz2 double 表示圆弧结束点Rz2 轴位置,单位:度
  • 返回:

    ErrorID,{},Arc(X1,Y1,Z1,Rx1,Ry1,Rz1,X2,Y2,Z2,Rx2,Ry2,Rz2,SpeedL=R,AccL=R);

  • 示例:

    MovL(-300,-150,200,150,0,90,SpeedL=100,AccL=100)

    Arc(-350,-200,200,150,0,90,-300,-250,200,150,0,90)

5.7 ServoJ

  • 功能:基于关节空间的动态跟随命令。

  • 格式:ServoJ(J11,J12,J13,J14,J15,J16)

  • 必填参数数量:6

  • 支持端口:30003

  • 必填参数详解:6

    参数名 类型 含义
    J11 double 点J11 轴位置,单位:度
    J12 double P1点J12 轴位置,单位:度
    J13 double P1点J13 轴位置,单位:度
    J14 double P1点J14 轴位置,单位:度
    J15 double P1点J15 轴位置,单位:度
    J16 double P1点J16 轴位置,单位:度
  • 返回:

    ​ 无

  • 示例:

    ServoJ(0,0,-90,0,90,0)

    说明:客户二次开发使用频率建议设置为33Hz(30ms),即循环间隔至少设置30ms

5.8 ServoP

  • 功能:基于笛卡尔空间的动态跟随命令。

  • 格式:ServoP(X1,Y1,Z1,Rx1,Ry1,Rz1)

  • 参数数量:6

  • 支持端口:30003

  • 参数详解:6

    参数名 类型 含义
    X1 double X 1轴位置,单位:毫米
    Y1 double Y 1轴位置,单位:毫米
    Z1 double Z1 轴位置,单位:毫米
    Rx1 double Rx 1轴位置,单位:度
    Ry1 double Ry1 轴位置,单位:度
    Rz1 double Rz1轴位置,单位:度
  • 返回:

    ​ 无

  • 示例:

    ServoP(-500,100,200,150,0,90)

    说明:客户二次开发使用频率建议设置为33Hz(30ms),即循环间隔至少设置30ms

5.9 MoveJog

  • 功能:点动运动,不固定距离运动

  • 格式:MoveJog(axisID,CoordType=typeValue,User=index,Tool=index)

    //其中CoordType、User以及Tool为可选设置参数,不填按照默认值;CoordType: 0:用户坐标系 1:关节点动 2:工具坐标系,默认值为1; User:用户索引09,默认值为0;Tool:工具索引09,默认值为0;

  • 必填参数数量:1

  • 支持端口:30003

  • **注意:命令下发后,须另外下发MoveJog()停止命令控制机器人停止运动;另下发非指定string内容的参数都会导致机器人停止;**完全停止需要大概消耗100ms时间;

  • 必填参数详解:1

    参数名 类型 含义
    axisID string 点动运动轴
    J1+ 表示关节1正方向运动 J1- 表示关节1负方向运动
    J2+ 表示关节2正方向运动 J2- 表示关节2负方向运动
    J3+ 表示关节3正方向运动 J3- 表示关节3负方向运动
    J4+ 表示关节4正方向运动 J4- 表示关节4负方向运动
    J5+ 表示关节5正方向运动 J5- 表示关节5负方向运动
    J6+ 表示关节6正方向运动 J6- 表示关节6负方向运动
    X+ 表示X轴正方向运动 X- 表示X轴负方向运动
    Y+ 表示Y轴正方向运动 Y- 表示Y轴负方向运动
    Z+ 表示Z轴正方向运动 Z- 表示Z轴负方向运动
    Rx+ 表示Rx轴正方向运动 Rx- 表示Rx轴负方向运动
    Ry+ 表示Ry轴正方向运动 Ry- 表示Ry轴负方向运动
    Rz+ 表示Rz轴正方向运动 Rz- 表示Rz轴负方向运动
  • 返回:

    ErrorID,{},MoveJog(axisID,CoordType=typeValue,User=index,Tool=index);

    若ErrorID返回-1,表示设置的用户坐标索引或工具坐标索引不存在;

  • 示例:J2负方向运动,再停止点动

    MoveJog(j2-)

    返回:

    0,{},MoveJog(j2-);

    MoveJog()

    返回:

    0,{},MoveJog();

    说明:**CR控制器3.5.2版本、MG400/M1Pro控制器1.5.6版本及以上版本支持此命令;**其中用户若是再发关节点动运行则会忽略CoordType、User以及Tool这三个可选设置参数;

5.10 StartTrace

  • 功能:轨迹拟合。(轨迹文件笛卡尔点)

  • 格式:StartTrace(traceName)

  • 参数数量:1

  • 支持端口:30003

  • 备注:用户可以通过获取RobotMode查询机器人运行状态,若在ROBOT_MODE_RUNNING表示机器人在轨迹拟合运行中,达到ROBOT_MODE_IDLE表示轨迹拟合运行完成,ROBOT_MODE_ERROR表示报警;

  • 参数详解:1

    参数名 类型 含义
    traceName string 轨迹文件名(含后缀)
    轨迹路径存放在/dobot/userdata/project/process/trajectory/
  • 返回:

    ErrorID,{},StartTrace(traceName);

  • 示例:先获取名字recv_string的轨迹的首个关节点{x,y,z,rx,ry,rz},在点到点运动{x,y,z,rx,ry,rz}后,在下发名字recv_string做轨迹拟合;

    GetTraceStartPose(recv_string.json)

    返回:

    0,{x,y,z,rx,ry,rz},GetTraceStartPose(recv_string.json);

    MovJ(x,y,z,rx,ry,rz)

    返回:

    0,{},MovJ(x,y,z,rx,ry,rz);

    StartTrace(recv_string)

    返回:

    0,{},StartTrace(recv_string);

  • 说明:CR控制器3.5.2版本及以上版本支持此命令;

5.11 StartPath

  • 功能:轨迹复现。(轨迹文件关节点)

  • 格式:StartPath(traceName,const,cart)

  • 参数数量:3

  • 支持端口:30003

  • 备注:用户可以通过获取RobotMode查询机器人运行状态,若在ROBOT_MODE_RUNNING表示机器人在轨迹复现运行中,达到ROBOT_MODE_IDLE表示轨迹复现运行完成,ROBOT_MODE_ERROR表示报警;

  • 参数详解:3

    参数名 类型 含义
    traceName string 轨迹文件名(含后缀)
    轨迹路径存放在/dobot/userdata/project/process/trajectory/
    const int const=1时,匀速复现,轨迹中的停顿及死区会被移除;
    const=0时,按照原速复现;
    cart int cart=1时,按笛卡尔路径复现;
    cart=0时,按关节路径复现;
  • 返回:

    ErrorID,{},StartPath(traceName,const,cart);

  • 示例: 先获取名字recv_string的轨迹的首个点{j1,j2,j3,j4,j5,j6},在点到点运动{j1,j2,j3,j4,j5,j6}后,在下发名字recv_string按照原速复现,按笛卡尔路径匀速复现;

    GetPathStartPose(recv_string)

    返回:

    0,{j1,j2,j3,j4,j5,j6},GetPathStartPose(recv_string);

    JointMovJ(j1,j2,j3,j4,j5,j6)

    返回:

    0,{},JointMovJ(j1,j2,j3,j4,j5,j6);

    StartPath(recv_string,0,1)

    返回:

    0,{},StartPath(recv_string,0,1);

  • 说明:CR控制器3.5.2版本及以上版本支持此命令;

5.12 Sync

  • 功能:阻塞程序执行队列指令,待所有队列指令执行完才返回。

  • 格式:Sync()

  • 参数数量:0

  • 支持端口:30003

  • 返回:

    ErrorID,{},Sync();

  • 示例:

    Sync()

5.13 RelMovJTool

  • 功能:沿工具坐标系进行相对运动指令,末端运动方式为关节运动。

  • 格式:

    RelMovJTool(offsetX, offsetY,offsetZ, offsetRx,offsetRy,offsetRz, Tool,SpeedJ=R, AccJ=R,User=Index)

    //其中SpeedJ=R,AccJ=R、User=Index为可选设置参数,分别表示设置用关节速度比例以及加速度比例值以及用户坐标系索引; 和29999端口设置的SpeedJ、AccJ意义一致;User:用户索引09,不填按照上一次设置的值;Tool为必选参数:工具索引09;

  • 必填参数数量:7

  • 支持端口:30003

  • 必填参数详解:7

    参数名 类型 含义
    OffsetX double X轴方向偏移,单位:mm
    OffsetY double Y轴方向偏移,单位:mm
    OffsetZ double Z轴方向偏移,单位:mm
    OffsetRx double Rx 轴位置,单位:度
    OffsetRy double Ry 轴位置,单位:度
    OffsetRz double Rz 轴位置,单位:度
    Tool int 选择已标定的工具坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},RelMovJTool(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz,Tool,SpeedJ=R, AccJ=R,User=Index);

  • 示例:

    RelMovJTool(10,10,10,0,0,0,0)

  • 说明:CR控制器3.5.2版本及以上版本支持此命令;

5.14 RelMovLTool

  • 功能:沿工具坐标系进行相对运动指令,末端运动方式为直线运动。

  • 格式:

    RelMovLTool(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz, Tool,SpeedL=R, AccL=R,User=Index)

    //其中SpeedL=R,AccL=R、User=Index为可选设置参数,分别表示设置用笛卡尔速度比例以及加速度比例值以及用户坐标系索引; 和29999端口设置的SpeedL、AccL意义一致;User:用户索引09,不填按照上一次设置的值;Tool为必选参数:工具索引09;

  • 必填参数数量:7

  • 支持端口:30003

  • 必填参数详解:7

    参数名 类型 含义
    OffsetX double X轴方向偏移,单位:mm
    OffsetY double Y轴方向偏移,单位:mm
    OffsetZ double Z轴方向偏移,单位:mm
    OffsetRx double Rx 轴位置,单位:度
    OffsetRy double Ry 轴位置,单位:度
    OffsetRz double Rz 轴位置,单位:度
    Tool int 选择已标定的工具坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},RelMovLTool(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz,Tool,SpeedL=R, AccL=R,User=Index);

  • 示例:

    RelMovLTool(10,10,10,0,0,0,0)

  • 说明:CR控制器3.5.2版本及以上版本支持此命令;

5.15 RelMovJUser

  • 功能:沿用户坐标系进行相对运动指令,末端运动方式为关节运动。

  • 格式:

    RelMovJUser(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz, User,SpeedJ=R, AccJ=R,Tool=Index)

    //其中SpeedJ=R,AccJ=R,Tool=Index为可选设置参数,分别表示设置用关节速度比例以及加速度比例值以及工具坐标系索引; 和29999端口设置的SpeedJ、AccJ意义一致;Tool:工具索引09,不填按照上一次设置的值;User为必选参数:用户索引09;

  • 必填参数数量:7

  • 支持端口:30003

  • 必填参数详解:7

    参数名 类型 含义
    OffsetX double X轴方向偏移,单位:mm
    OffsetY double Y轴方向偏移,单位:mm
    OffsetZ double Z轴方向偏移,单位:mm
    OffsetRx double Rx 轴位置,单位:度
    OffsetRy double Ry 轴位置,单位:度
    OffsetRz double Rz 轴位置,单位:度
    User int 选择已标定的用户坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},RelMovJUser(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz,User,SpeedJ=R, AccJ=R,Tool=Index);

  • 示例:

    RelMovJUser(10,10,10,0,0,0,0)

  • 说明:CR控制器3.5.2版本、MG400/M1Pro控制器1.5.6版本及以上版本支持此命令;

5.16 RelMovLUser

  • 功能:沿用户坐标系进行相对运动指令,末端运动方式为直线运动。

  • 格式:

    RelMovLUser(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz, User,SpeedL=R, AccL=R,Tool=Index)

    //其中SpeedL=R,AccL=R,Tool=Index为可选设置参数,分别表示设置用笛卡尔速度比例以及加速度比例值以及工具坐标系索引; 和29999端口设置的SpeedL、AccL意义一致;Tool:工具索引09,不填按照上一次设置的值;User为必选参数:用户索引09;

  • 必填参数数量:7

  • 支持端口:30003

  • 必填参数详解:7

    参数名 类型 含义
    OffsetX double X轴方向偏移,单位:mm
    OffsetY double Y轴方向偏移,单位:mm
    OffsetZ double Z轴方向偏移,单位:mm
    OffsetRx double Rx 轴位置,单位:度
    OffsetRy double Ry 轴位置,单位:度
    OffsetRz double Rz 轴位置,单位:度
    User int 选择已标定的用户坐标系,取值范围:0~9
  • 返回:

    ErrorID,{},RelMovLUser(OffsetX,OffsetY,OffsetZ,OffsetRx,OffsetRy,OffsetRz,User,SpeedL=R, AccL=R,Tool=Index);

  • 示例:

    RelMovLUser(10,10,10,0,0,0,0)

  • 说明:CR控制器3.5.2版本、MG400/M1Pro控制器1.5.6版本及以上版本支持此命令;

5.19 RelJointMovJ

  • 功能:沿各轴关节坐标系进行相对运动指令,末端运动方式为关节运动。

  • 格式:

    RelJointMovJ(Offset1,Offset2,Offset3,Offset4,Offset5,Offset6,SpeedJ=R, AccJ=R)

    //其中SpeedJ=R,AccJ=R为可选设置参数,分别表示设置用关节速度比例以及加速度比例值; 和29999端口设置的SpeedJ、AccJ意义一致;

  • 必填参数数量:6

  • 支持端口:30003

  • 必填参数详解:6

    参数名 类型 含义
    Offset1 double 关节1的偏移值,单位:度
    Offset2 double 关节2的偏移值,单位:度
    Offset3 double 关节3的偏移值,单位:度
    Offset4 double 关节4的偏移值,单位:度
    Offset5 double 关节5的偏移值,单位:度
    Offset6 double 关节6的偏移值,单位:度
  • 返回:

    ErrorID,{},RelJointMovJ(Offset1,Offset2,Offset3,Offset4,Offset5,Offset6,SpeedJ=R, AccJ=R);

  • 示例:

    RelJointMovJ(10,10,10,0,0,0)

  • 说明:CR控制器3.5.2版本、MG400/M1Pro控制器1.5.6版本及以上版本支持此命令;

6.错误码描述

错误码 描述 备注
0 无错误 下发成功
-1 没有获取成功 命令接收失败/建立失败
。。。 。。。 。。。
-10000 命令错误 不存在下发的命令
-20000 参数数量错误 下发命令中的参数数量错误
-30001 第一个参数的参数类型错误 -30000表示参数类型错误
最后一位1表示下发第1个参数的参数类型错误
-30002 第二个参数的参数类型错误 -30000表示参数类型错误
最后一位2表示下发第2个参数的参数类型错误
。。。 。。。 。。。
-40001 第一个参数的参数范围错误 -40000表示参数范围错误
最后一位1表示下发第1个参数的参数范围错误
-40002 第二个参数的参数范围错误 -40000表示参数范围错误
最后一位1表示下发第1个参数的参数范围错误
。。。 。。。 。。。