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
继续阅读双臂 · 状态、柔顺与示教