Skip to content

串流端口协议

以下是基于该JSON数据的说明文档:

串流数据说明

本文档介绍了一个JSON格式的串流数据,其中包含了人体各个关节的姿态信息和根节点的位置信息。客户端通过Socket连接ServerSocket,接收到JSON格式的数据。

数据格式

数据格式为JSON格式,如下所示:

{
    "deviceList": [
      {
        "leftLittleFingerUnder": [0.0, 0.0, 0.0],
        "leftLowerLeg": [0.5283327317267245, 0.9699280975299531, 0.05361260659299393],
        "leftThumbMid": [0.0, 0.0, 0.0],
        "actorName": "36895272192031866103",
        "rightMiddleFingerMid": [0.0, 0.0, 0.0],
        "deviceId": "36895272192031866103",
        "leftToe": [0.0, 0.0, 0.0],
        "crotch": [167.57347163011366, -83.40422843226828, 168.32318812755344],
        "rightForeFingerUnder": [0.0, 0.0, 0.0],
        "leftThumbUnder": [0.0, 0.0, 0.0],
        "rightLowerLeg": [-0.14184703756515651, -0.3411541341866196, 0.11966295623743685],
        "rightMiddleFingerUnder": [0.0, 0.0, 0.0],
        "rightThumbMid": [0.0, 0.0, 0.0],
        "rightForeFingerMid": [0.0, 0.0, 0.0],
        "rightMiddleFingerUp": [0.0, 0.0, 0.0],
        "coordinate": [-0.701085451990366, 0.9399006068706512, 1.7706798166036606],
        "rightThumbUp": [0.0, 0.0, 0.0],
        "leftForeFingerMid": [0.0, 0.0, 0.0],
        "leftLowerArm": [-4.275193053831556, 6.029475112014665, 0.16694912669166465],
        "rightRingFingerMid": [0.0, 0.0, 0.0],
        "waistTwo": [0.29568526455187555, 35.644963830923615, -0.5573244587306913],
        "leftMiddleFingerUnder": [0.0, 0.0, 0.0],
        "leftMiddleFingerMid": [0.0, 0.0, 0.0],
        "rightLittleFingerMid": [0.0, 0.0, 0.0],
        "rightUpperLeg": [176.6885544428917, 72.91872796381254, -177.95669928739395],
        "leftForeFingerUnder": [0.0, 0.0, 0.0],
        "leftRingFingerUnder": [0.0, 0.0, 0.0],
        "leftLittleFingerUp": [0.0, 0.0, 0.0],
        "leftForeFingerUp": [0.0, 0.0, 0.0],
        "bvhRotationOrder": "XYZ",
        "rightLowerArm": [-121.27302739968908, -53.80513365787473, -79.57055095508167],
        "leftRingFingerMid": [0.0, 0.0, 0.0],
        "rightForeFingerUp": [0.0, 0.0, 0.0],
        "back": [0.29551572530026504, 35.6342730205439, -0.5570915211338497],
        "rightLittleFingerUp": [0.0, 0.0, 0.0],
        "rightRingFingerUnder": [0.0, 0.0, 0.0],
        "leftShoulder": [-0.18589438315193915, -0.9052612384769648, -0.5738650285131836],
        "head": [-0.03851023463838937, 0.7913068784451655, -0.7062768447186851],
        "leftUpperArm": [-2.2109214884746184, 0.7886943442852772, -33.677680182697486],
        "leftMiddleFingerUp": [0.0, 0.0, 0.0],
        "rightHand": [116.29463249250328, 50.96926853262847, -78.59930404908181],
        "rightFoot": [0.2060584982674821, 0.8379528867935927, -0.09795635155078423],
        "waistOne": [0.29551572530026504, 35.63427302054393, -0.5570915211338499],
        "leftUpperLeg": [178.28257488310416, 73.86704919190285, -179.49772684666087],
        "leftThumbUp": [0.0, 0.0, 0.0],
        "rightUpperArm": [2.7153986036959346, -0.9532830770749268, 33.639901563359864],
        "rightRingFingerUp": [0.0, 0.0, 0.0],
        "rightToe": [0.0, 0.0, 0.0],
        "leftLittleFingerMid": [0.0, 0.0, 0.0],
        "leftRingFingerUp": [0.0, 0.0, 0.0],
        "leftHand": [34.30087801348577, -36.18378054306241, 10.29834646689235],
        "leftFoot": [-0.3257049210066964, 1.284396122923064, 0.34588575015733],
        "rightShoulder": [-0.1527352626370245, 0.7979215521202965, -0.6612408963735164],
        "rightLittleFingerUnder": [0.0, 0.0, 0.0],
        "rightThumbUnder": [0.0, 0.0, 0.0]
    }, 
      {
        "leftLittleFingerUnder": [0.0, 0.0, 0.0],
        "leftLowerLeg": [-0.40573345247257264, -18.4634204946525, 0.2511509567285266],
        "leftThumbMid": [0.0, 0.0, 0.0],
        "actorName": "8780442582114229391",
        "rightMiddleFingerMid": [0.0, 0.0, 0.0],
        "deviceId": "8780442582114229391",
        "leftToe": [0.0, 0.0, 0.0],
        "crotch": [-0.2044930858509223, -39.26269365322497, -0.037041743724933796],
        "rightForeFingerUnder": [0.0, 0.0, 0.0],
        "leftThumbUnder": [0.0, 0.0, 0.0],
        "rightLowerLeg": [-0.1767339587597831, 3.9021207519650063, 0.49314465550116343],
        "rightMiddleFingerUnder": [0.0, 0.0, 0.0],
        "rightThumbMid": [0.0, 0.0, 0.0],
        "rightForeFingerMid": [0.0, 0.0, 0.0],
        "rightMiddleFingerUp": [0.0, 0.0, 0.0],
        "coordinate": [-0.06738789379596713, 0.9254053207114338, 0.06742429733276367],
        "rightThumbUp": [0.0, 0.0, 0.0],
        "leftForeFingerMid": [0.0, 0.0, 0.0],
        "leftLowerArm": [-0.08699000572472954, 0.6863571788756292, 0.11855827980903816],
        "rightRingFingerMid": [0.0, 0.0, 0.0],
        "waistTwo": [-0.015424130073108227, 0.055886741439810775, 0.026696603642111863],
        "leftMiddleFingerUnder": [0.0, 0.0, 0.0],
        "leftMiddleFingerMid": [0.0, 0.0, 0.0],
        "rightLittleFingerMid": [0.0, 0.0, 0.0],
        "rightUpperLeg": [0.42060291176478676, -2.1037899016837187, -0.1868693436966618],
        "leftForeFingerUnder": [0.0, 0.0, 0.0],
        "leftRingFingerUnder": [0.0, 0.0, 0.0],
        "leftLittleFingerUp": [0.0, 0.0, 0.0],
        "leftForeFingerUp": [0.0, 0.0, 0.0],
        "bvhRotationOrder": "XYZ",
        "rightLowerArm": [-0.16399108361481987, -0.11848358762031388, -0.03239584056380892],
        "leftRingFingerMid": [0.0, 0.0, 0.0],
        "rightForeFingerUp": [0.0, 0.0, 0.0],
        "back": [-0.015419499853539614, 0.05586997984781864, 0.02668859400377571],
        "rightLittleFingerUp": [0.0, 0.0, 0.0],
        "rightRingFingerUnder": [0.0, 0.0, 0.0],
        "leftShoulder": [0.5305371373965916, -0.4449699181562023, -0.9358010480478481],
        "head": [0.11915716369841646, 0.10442513581288657, -0.11235430434039644],
        "leftUpperArm": [-0.5747730532023467, 0.4200904612748533, -32.76454790349389],
        "leftMiddleFingerUp": [0.0, 0.0, 0.0],
        "rightHand": [-5.839335306133827, -7.834890734098407, 0.25703843613984406],
        "rightFoot": [-0.37335566172713364, -2.4396810057529454, -0.12317384133139211],
        "waistOne": [-0.01541949985353954, 0.05586997984781229, 0.02668859400377569],
        "leftUpperLeg": [0.07023596070865984, 17.845656318012665, 0.11397519757537351],
        "leftThumbUp": [0.0, 0.0, 0.0],
        "rightUpperArm": [0.6870520821370538, -2.0975935038200126, 31.78050481691975],
        "rightRingFingerUp": [0.0, 0.0, 0.0],
        "rightToe": [0.0, 0.0, 0.0],
        "leftLittleFingerMid": [0.0, 0.0, 0.0],
        "leftRingFingerUp": [0.0, 0.0, 0.0],
        "leftHand": [0.3254735259841174, -0.9885952909200776, -0.1923420038814004],
        "leftFoot": [0.329059431216289, 24.35541948578364, 0.029652081491475666],
        "rightShoulder": [-0.5753150002783762, 2.0401497415649117, 1.9198983633224964],
        "rightLittleFingerUnder": [0.0, 0.0, 0.0],
        "rightThumbUnder": [0.0, 0.0, 0.0]
    }]
}

数据内容

数据中包含了人体的各个关节的位置信息(以三维坐标的形式表示)。以下是关节的名称及对应的坐标:

  • deviceId:设备Id

  • actorName:角色名字

  • leftLittleFingerUnder:左手小指下方

  • leftLittleFingerUnder:左手小指下方

  • leftLowerLeg:左小腿

  • leftThumbMid:左拇指中间

  • rightMiddleFingerMid:右手中指中间

  • leftToe:左脚趾头

  • crotch:腹股沟

  • rightForeFingerUnder:右手食指下方

  • leftThumbUnder:左拇指下方

  • rightLowerLeg:右小腿

  • rightMiddleFingerUnder:右手中指下方

  • rightThumbMid:右拇指中间

  • rightForeFingerMid:右手食指中间

  • rightMiddleFingerUp:右手中指向上

  • coordinate:坐标

  • rightThumbUp:右拇指向上

  • leftForeFingerMid:左手食指中间

  • leftLowerArm:左前臂

  • rightRingFingerMid:右手无名指中间

  • waistTwo:腰二

  • leftMiddleFingerUnder:左手中指下方

  • leftMiddleFingerMid:左手中指中间

  • rightLittleFingerMid:右手小指中间

  • rightUpperLeg:右大腿

  • leftForeFingerUnder:左手食指下方

  • rightToe:右脚趾头

  • rightLowerArm:右前臂

  • rightRingFingerUnder:右手无名指下方

  • leftRingFingerUnder:左手无名指下方

  • leftRingFingerMid:左手无名指中间

  • rightMiddleFingerDown:右手中指向下

  • rightForeFingerUp:右手食指向上

  • rightRingFingerUp:右手无名指向上

  • leftMiddleFingerDown:左手中指向下

  • leftUpperLeg:左大腿

  • leftLittleFingerMid:左手小指中间

  • head:头部

  • leftForeFingerUp:左手食指向上

  • rightLittleFingerUp:右手小指向上

  • rightThumbUnder:右拇指下方

其中,coordinate表示整个人体的三维坐标,bvhRotationOrder表示旋转顺序 

模型的坐标系为右手坐标系X轴向右Y轴向上Z轴向后。欧拉角为内旋数据

需要注意的是,本文档中的数据仅为示例,具体应用中的数据可能会有所不同。

注意:bvhRotationOrder顺规是XYZ各个关节对应数组中元素顺序也是XYZ。同理顺规是ZXY数组中元素顺序也是ZXY

数据解析

解析数据需要按照JSON格式进行解析,然后根据关节名称提取对应的坐标。

参考

特定需求

【串流】API

通用错误码

code取值 说明
1001 参数错误,此时看msg查看具体错误描述

查询设备列表

请求参数:

参数名 必选 类型 说明
$.control string deviceList
$.nodeList array 整型数组,比如:[1,2],从1开始编号的采集器列表,1-左手套2-右手套

返回参数:

参数名 必选 类型 说明
$.control string onDeviceList
$.code int 公共错误码,返回1000表示成功;
$.msg string 公共错误提示,对应code字段的解释,比如返回code1000时,msg为ok
$.deviceList array 设备列表
$.deviceList.[i].productID string 设备ID
$.deviceList.[i].name string 设备名字,目前格式为"设备"+idex
$.deviceList.[i].channel string 设备频段
$.deviceList.[i].modeName string 模式名字,比如全身模式
$.deviceList.[i].actorName string 角色名字,未设置获取未打开工程,默认为Motion Robot,打开工程则为工程对应的角色名字;
$.deviceList.[i].isConnected boolean 该设备是否在连接状态,true表示在连接状态,false表示不在连接状态(比如关机、休眠等);
$.deviceList.[i].createTime string 设备创建时间戳,用来进行排序显示等,用string类型避免精度丢失;
$.deviceList.[i].boneTemplateName string 骨骼模板名字,用于录制接口的时候回传;

有线手套马达震动协议

请求参数:

参数名 必选 类型 说明
$.control string motorShake
$.deviceId string 设备ID,第一版没有获取到设备列表可不填,后面有设备列表后必填;
$.shakePattern int shakePattern - 马达震动模式
                    shakePattern=0  震动0.5s
                    shakePattern=1  震动1s
                    shakePattern=2  震动1.5
                    shakePattern=3  震动2s
                    shakePattern=4  震动2.5s
以此类推最多支持5秒
$.nodeList array 整型数组,比如:[1,2],从1开始编号的采集器列表,1-左手套2-右手套

返回参数:

参数名 必选 类型 说明
$.control string onMotorShake
$.code int 公共错误码,返回1000表示成功
$.msg string 公共错误提示,对应code字段的解释,比如返回code1000时,msg为ok
$.data boolean 操作结果,code=1000时为true