TRON 2 DOCS
产品文档/TRON 2/SDK · 上层任务控制
TRON 2 · 使用与开发

双臂 · 轨迹与伺服

仅双臂/移动双臂

3.6 双臂形态协议接口定义

3.6.1 MoveJ 接口介绍

3.6.1.1 请求:request_movej

注意:moveJ 调用时会判断每个关节的关节角是否到达限位,如果超过限位,则会报错超限,本次调用不执行moveJ 关节限位(按照左臂关节上到下-> 右臂关节上到下的顺序,单位 rad) 上限:[2.6005, 3.1940, 1.4835, 0.2618, 1.3963, 0.7854, 1.5708, 2.6005, 0.2618, 3.6652, 0.2618, 1.7453, 0.7854, 1.5708] 下限:[-3.1416, -0.2618, -3.6652, -2.6180, -1.7453, -0.7854, -1.5708, -3.1416, -3.1940, -1.4835, -2.6180, -1.3963, -0.7854, -1.5708]

{
  "accid": "DACH_TRON2A_001", // 机器人序列号,注意修为您机器人的序列号;
  "title": "request_movej",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "time": 2, // 2秒运动到指定位置
    "joint": []  //14个joint值, 单位rad
  }
}

3.6.1.2 响应:response_movej

{
  "accid": "DACH_TRON2A_001", 
  "title": "response_movej",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "result": "success"  // success: 成功, fail_invalid_cmd:错误的命令(缺少字段)
  }
}

3.6.1.3 示例

{
    "accid": "DACH_TRON2A_026",
    "title": "request_movej",
    "timestamp": 1672373633989,
    "guid": "746d937cd8094f6a98c9577aaf213d98",
    "data": {
        "time": 5,
        "joint": [0,0,0,-1.6,0,0,0,0,0,0,-1.6,0,0,0]
    }
}

3.6.2 MoveH 接口介绍

此接口为控制头部二自由度

上限:[1.04 ,1.57]

下限:[-0.78, -1.57]

3.6.2.1 请求:request_moveh

{
    "accid": "DACH_TRON2A_026",
    "title": "request_moveh",
    "timestamp": 1672373633989,
    "guid": "746d937cd8094f6a98c9577aaf213d98",
    "data": {
        "time": 5,
        "joint": [0.5,0.5] //pitch,yaw
    }
}

3.6.2.2 响应:response_moveh

{
  "accid": "DACH_TRON2A_001", 
  "title": "response_moveh",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "result": "success"  // success: 成功, fail_invalid_cmd:错误的命令(缺少字段)
  }
}

3.6.3 MoveP 接口介绍

3.6.3.1 请求:request_movep

参考坐标系如下,坐标系原点位于基座下平面中心,手臂末端基准位于手臂最后一个关节中心 产品手册示意图 注意:moveP 调用时会判断左右手的末端位置是否在可达范围内,如果超过限位,则会报错超限,本次调用不执行 moveP 关节限位(按照 x_min, x_max, y_min, y_max, z_min, z_max,单位 m) 左臂:[[0.250, 0.732], [-0.213, 0.900], [-0.673, 0.5]] 右臂:[[0.250, 0.732], [-0.900, 0.213], [-0.673, 0.5]]

{
  "accid": "DACH_TRON2A_001", // 机器人序列号,注意修为您机器人的序列号;
  "title": "request_movep",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "time": 1, //1秒运动到该位置
    "pos": []  //[LEFT_POS(3)、wxyzPOSE(4) + RIGHT_POS(3)、wxyzPOSE(4)]
  }
}

3.6.3.2 响应:response_movep

{
  "accid": "DACH_TRON2A_001", 
  "title": "response_movep",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "result": "success"  // success: 成功, fail_invalid_cmd:错误的命令(缺少字段)
  }
}

3.6.3.3 示例



{
  "accid": "DACH_TRON2A_129",
  "title": "request_movep",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "time": 5,
    "pos": [  0.5,  0.2, -0.3, 0.7, 0,  -0.7,  0,  0.5,-0.2, -0.3,  0.7,   0,  -0.7,  0  ]
  }
}

3.6.4 ServoJ 控制指令

3.6.4.1 请求:request_servoj

  • 推荐在实时系统中按控制频率 300Hz 要求来控制机械臂运动,以保证控制效果和稳定性。
{
  "accid": "DACH_TRON2A_001", // 机器人序列号,注意修为您机器人的序列号;
  "title": "request_servoj",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {  
    "filter_ratio": 1.0,//范围是0到1,1表示完全信任真值(无滤波)
    "q": [ ],  // 各个关节的位置,填写16维数据;
  }
}

// 请注意将以上参数更换为实际参数

3.6.4.2 响应:无

3.6.4.3 消息推送:notify_servoJ

当 ServoJ 控制操作执行失败时,服务器会主动推送此消息,告知客户端失败原因。

{
  "accid": "WF_TRON2A_001",
  "title": "notify_servoJ",
  "timestamp": 1672373633989,
  "guid": "746d937cd8094f6a98c9577aaf213d98",
  "data": {
    "result": "fail_invalid_cmd"  # fail_invalid_cmd: 非法指令, fail_motor: 电机错误
  }
}

3.6.5 ServoP 控制指令

3.6.5.1 请求:request_servop

持续发送左右手的pos数据.推荐在实时系统中按控制频率 300Hz 要求来控制机械臂运动,以保证控制效果和稳定性。

{
 "accid": "DACH_TRON2A_026", // 机器人序列号,注意修为您机器人的序列号;
 "title": "request_servop",
 "timestamp": 1672373633989,
 "guid": "746d937cd8094f6a98c9577aaf213d98",
 "data": {           }     //[LEFT_POS(3)、wxyzPOSE(4) + RIGHT_POS(3)、wxyzPOSE(4)]
}

3.6.5.2 响应:无

3.6.5.3 消息推送:notify_servop

继续阅读双臂 · 状态、柔顺与示教