mirror of
https://github.com/hybridgroup/gobot.git
synced 2025-04-29 13:49:14 +08:00
Merge pull request #647 from samkass/feature/leap-api-v6
Update gobot leap platform to support Leap Motion API v6
This commit is contained in:
commit
554dd043fa
@ -23,7 +23,7 @@ func NewAdaptor(port string) *Adaptor {
|
|||||||
name: gobot.DefaultName("LeapMotion"),
|
name: gobot.DefaultName("LeapMotion"),
|
||||||
port: port,
|
port: port,
|
||||||
connect: func(host string) (io.ReadWriteCloser, error) {
|
connect: func(host string) (io.ReadWriteCloser, error) {
|
||||||
return websocket.Dial("ws://"+host+"/v3.json", "", "http://"+host)
|
return websocket.Dial("ws://"+host+"/v6.json", "", "http://"+host)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ type Driver struct {
|
|||||||
// Adds the following events:
|
// Adds the following events:
|
||||||
// "message" - Gets triggered when receiving a message from leap motion
|
// "message" - Gets triggered when receiving a message from leap motion
|
||||||
// "hand" - Gets triggered per-message when leap motion detects a hand
|
// "hand" - Gets triggered per-message when leap motion detects a hand
|
||||||
// "gesture" - Gets triggered per-message when leap motion detects a hand
|
// "gesture" - Gets triggered per-message when leap motion detects a gesture
|
||||||
func NewDriver(a *Adaptor) *Driver {
|
func NewDriver(a *Adaptor) *Driver {
|
||||||
l := &Driver{
|
l := &Driver{
|
||||||
name: gobot.DefaultName("LeapMotion"),
|
name: gobot.DefaultName("LeapMotion"),
|
||||||
@ -61,6 +61,20 @@ func (l *Driver) adaptor() *Adaptor {
|
|||||||
return l.Connection().(*Adaptor)
|
return l.Connection().(*Adaptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func enableFeature(l *Driver, feature string) (err error) {
|
||||||
|
command := map[string]bool{feature: true}
|
||||||
|
b, e := json.Marshal(command)
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
_, e = l.adaptor().ws.Write(b)
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Start inits leap motion driver by enabling gestures
|
// Start inits leap motion driver by enabling gestures
|
||||||
// and listening from incoming messages.
|
// and listening from incoming messages.
|
||||||
//
|
//
|
||||||
@ -69,14 +83,13 @@ func (l *Driver) adaptor() *Adaptor {
|
|||||||
// "hand" - Emits Hand when detected in message from Leap.
|
// "hand" - Emits Hand when detected in message from Leap.
|
||||||
// "gesture" - Emits Gesture when detected in message from Leap.
|
// "gesture" - Emits Gesture when detected in message from Leap.
|
||||||
func (l *Driver) Start() (err error) {
|
func (l *Driver) Start() (err error) {
|
||||||
enableGestures := map[string]bool{"enableGestures": true}
|
err = enableFeature(l,"enableGestures")
|
||||||
b, e := json.Marshal(enableGestures)
|
if err != nil {
|
||||||
if e != nil {
|
return err
|
||||||
return e
|
|
||||||
}
|
}
|
||||||
_, e = l.adaptor().ws.Write(b)
|
err = enableFeature(l,"background")
|
||||||
if e != nil {
|
if err != nil {
|
||||||
return e
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -89,8 +89,18 @@ func TestLeapMotionDriverParser(t *testing.T) {
|
|||||||
t.Errorf("ParseFrame incorrectly parsed frame")
|
t.Errorf("ParseFrame incorrectly parsed frame")
|
||||||
}
|
}
|
||||||
|
|
||||||
gobottest.Assert(t, parsedFrame.Timestamp, uint64(4729292670))
|
gobottest.Assert(t, parsedFrame.Timestamp, uint64(134211791358))
|
||||||
gobottest.Assert(t, parsedFrame.Hands[0].X(), 117.546)
|
gobottest.Assert(t, parsedFrame.Hands[0].X(), 247.410)
|
||||||
gobottest.Assert(t, parsedFrame.Hands[0].Y(), 236.007)
|
gobottest.Assert(t, parsedFrame.Hands[0].Y(), 275.868)
|
||||||
gobottest.Assert(t, parsedFrame.Hands[0].Z(), 76.3394)
|
gobottest.Assert(t, parsedFrame.Hands[0].Z(), 132.843)
|
||||||
|
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].BTipPosition[0], 214.293)
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].BTipPosition[1], 213.865)
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].BTipPosition[2], 95.0224)
|
||||||
|
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].Bases[0][0][0], -0.468069)
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].Bases[0][0][1], 0.807844)
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].Bases[0][0][2], -0.358190)
|
||||||
|
|
||||||
|
gobottest.Assert(t, parsedFrame.Pointables[0].Width, 19.7871)
|
||||||
}
|
}
|
||||||
|
@ -4,27 +4,37 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Gesture is a Leap Motion gesture tht has been detected
|
// Gesture is a Leap Motion gesture that has been detected
|
||||||
type Gesture struct {
|
type Gesture struct {
|
||||||
|
Center []float64 `json:"center"`
|
||||||
Direction []float64 `json:"direction"`
|
Direction []float64 `json:"direction"`
|
||||||
Duration int `json:"duration"`
|
Duration int `json:"duration"`
|
||||||
Hands []Hand `json:"hands"`
|
HandIDs []int `json:"handIds"`
|
||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
Pointables []Pointable `json:"pointables"`
|
Normal []float64 `json:"normal"`
|
||||||
|
PointableIDs []int `json:"pointableIds"`
|
||||||
Position []float64 `json:"position"`
|
Position []float64 `json:"position"`
|
||||||
|
Progress float64 `json:"progress"`
|
||||||
|
Radius float64 `json:"radius"`
|
||||||
Speed float64 `json:"speed"`
|
Speed float64 `json:"speed"`
|
||||||
StartPosition []float64 `json:"StartPosition"`
|
StartPosition []float64 `json:"StartPosition"`
|
||||||
State string `json:"state"`
|
State string `json:"state"`
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hand is a Leap Motion hand tht has been detected
|
// Hand is a Leap Motion hand that has been detected
|
||||||
type Hand struct {
|
type Hand struct {
|
||||||
|
ArmBasis [][]float64 `json:"armBasis"`
|
||||||
|
ArmWidth float64 `json:"armWidth"`
|
||||||
|
Confidence float64 `json:"confidence"`
|
||||||
Direction []float64 `json:"direction"`
|
Direction []float64 `json:"direction"`
|
||||||
|
Elbow []float64 `json:"elbow"`
|
||||||
|
GrabStrength float64 `json:"grabStrength"`
|
||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
PalmNormal []float64 `json:"palmNormal"`
|
PalmNormal []float64 `json:"palmNormal"`
|
||||||
PalmPosition []float64 `json:"PalmPosition"`
|
PalmPosition []float64 `json:"PalmPosition"`
|
||||||
PalmVelocity []float64 `json:"PalmVelocity"`
|
PalmVelocity []float64 `json:"PalmVelocity"`
|
||||||
|
PinchStrength float64 `json:"PinchStrength"`
|
||||||
R [][]float64 `json:"r"`
|
R [][]float64 `json:"r"`
|
||||||
S float64 `json:"s"`
|
S float64 `json:"s"`
|
||||||
SphereCenter []float64 `json:"sphereCenter"`
|
SphereCenter []float64 `json:"sphereCenter"`
|
||||||
@ -32,14 +42,23 @@ type Hand struct {
|
|||||||
StabilizedPalmPosition []float64 `json:"stabilizedPalmPosition"`
|
StabilizedPalmPosition []float64 `json:"stabilizedPalmPosition"`
|
||||||
T []float64 `json:"t"`
|
T []float64 `json:"t"`
|
||||||
TimeVisible float64 `json:"TimeVisible"`
|
TimeVisible float64 `json:"TimeVisible"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Wrist []float64 `json:"wrist"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pointable is a Leap Motion pointing motion tht has been detected
|
// Pointable is a Leap Motion pointing motion that has been detected
|
||||||
type Pointable struct {
|
type Pointable struct {
|
||||||
|
Bases [][][]float64 `json:"bases"`
|
||||||
|
BTipPosition []float64 `json:"btipPosition"`
|
||||||
|
CarpPosition []float64 `json:"carpPosition"`
|
||||||
|
DipPosition []float64 `json:"dipPosition"`
|
||||||
Direction []float64 `json:"direction"`
|
Direction []float64 `json:"direction"`
|
||||||
|
Extended bool `json:"extended"`
|
||||||
HandID int `json:"handId"`
|
HandID int `json:"handId"`
|
||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
Length float64 `json:"length"`
|
Length float64 `json:"length"`
|
||||||
|
MCPPosition []float64 `json:"mcpPosition"`
|
||||||
|
PIPPosition []float64 `json:"pipPosition"`
|
||||||
StabilizedTipPosition []float64 `json:"stabilizedTipPosition"`
|
StabilizedTipPosition []float64 `json:"stabilizedTipPosition"`
|
||||||
TimeVisible float64 `json:"timeVisible"`
|
TimeVisible float64 `json:"timeVisible"`
|
||||||
TipPosition []float64 `json:"tipPosition"`
|
TipPosition []float64 `json:"tipPosition"`
|
||||||
@ -47,11 +66,13 @@ type Pointable struct {
|
|||||||
Tool bool `json:"tool"`
|
Tool bool `json:"tool"`
|
||||||
TouchDistance float64 `json:"touchDistance"`
|
TouchDistance float64 `json:"touchDistance"`
|
||||||
TouchZone string `json:"touchZone"`
|
TouchZone string `json:"touchZone"`
|
||||||
|
Type int `json:"type"`
|
||||||
|
Width float64 `json:"width"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// InteractionBox is the area within which the gestural interaction has been detected
|
// InteractionBox is the area within which the gestural interaction has been detected
|
||||||
type InteractionBox struct {
|
type InteractionBox struct {
|
||||||
Center []int `json:"center"`
|
Center []float64 `json:"center"`
|
||||||
Size []float64 `json:"size"`
|
Size []float64 `json:"size"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,277 +1,796 @@
|
|||||||
{
|
{
|
||||||
"currentFrameRate": 115.473,
|
"currentFrameRate": 110.583,
|
||||||
|
"devices": [],
|
||||||
"gestures": [
|
"gestures": [
|
||||||
{
|
{
|
||||||
"direction": [
|
"direction": [
|
||||||
-0.647384,
|
0.721478,
|
||||||
0.750476,
|
-0.510801,
|
||||||
-0.132964
|
0.467495
|
||||||
],
|
],
|
||||||
"duration": 0,
|
"duration": 108349,
|
||||||
"handIds": [
|
"handIds": [
|
||||||
57
|
129
|
||||||
],
|
],
|
||||||
"id": 72,
|
"id": 1,
|
||||||
"pointableIds": [
|
"pointableIds": [
|
||||||
14
|
1290
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
117.665,
|
228.679,
|
||||||
313.471,
|
214.101,
|
||||||
27.2095
|
101.574
|
||||||
],
|
],
|
||||||
"speed": 1050.66,
|
"progress": 1.00000,
|
||||||
"startPosition": [
|
"state": "stop",
|
||||||
195.438,
|
"type": "keyTap"
|
||||||
223.313,
|
|
||||||
43.183
|
|
||||||
],
|
|
||||||
"state": "start",
|
|
||||||
"type": "swipe"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"hands": [
|
"hands": [
|
||||||
{
|
{
|
||||||
"direction": [
|
"armBasis": [
|
||||||
0.772435,
|
|
||||||
0.520335,
|
|
||||||
-0.364136
|
|
||||||
],
|
|
||||||
"id": 57,
|
|
||||||
"palmNormal": [
|
|
||||||
-0.0100593,
|
|
||||||
-0.563263,
|
|
||||||
-0.826217
|
|
||||||
],
|
|
||||||
"palmPosition": [
|
|
||||||
117.546,
|
|
||||||
236.007,
|
|
||||||
76.3394
|
|
||||||
],
|
|
||||||
"palmVelocity": [
|
|
||||||
-866.196,
|
|
||||||
-100.749,
|
|
||||||
275.692
|
|
||||||
],
|
|
||||||
"r": [
|
|
||||||
[
|
[
|
||||||
0.999844,
|
0.642307,
|
||||||
0.0142022,
|
0.418027,
|
||||||
0.0105289
|
0.642414
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-0.0141201,
|
-0.760890,
|
||||||
0.99987,
|
0.448533,
|
||||||
-0.00783186
|
0.468898
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-0.0106388,
|
-0.0921319,
|
||||||
0.00768197,
|
-0.789982,
|
||||||
0.999914
|
0.606168
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"s": 0.992511,
|
"armWidth": 62.2635,
|
||||||
"sphereCenter": [
|
"confidence": 0.152371,
|
||||||
156.775,
|
"direction": [
|
||||||
227.378,
|
0.221251,
|
||||||
48.3453
|
-0.0617914,
|
||||||
|
-0.973257
|
||||||
],
|
],
|
||||||
"sphereRadius": 75.3216,
|
"elbow": [
|
||||||
|
212.001,
|
||||||
|
79.2408,
|
||||||
|
343.710
|
||||||
|
],
|
||||||
|
"grabStrength": 0.00000,
|
||||||
|
"id": 129,
|
||||||
|
"palmNormal": [
|
||||||
|
0.813532,
|
||||||
|
-0.538649,
|
||||||
|
0.219139
|
||||||
|
],
|
||||||
|
"palmPosition": [
|
||||||
|
247.410,
|
||||||
|
275.868,
|
||||||
|
132.843
|
||||||
|
],
|
||||||
|
"palmVelocity": [
|
||||||
|
-0.713996,
|
||||||
|
-23.6569,
|
||||||
|
-13.8691
|
||||||
|
],
|
||||||
|
"palmWidth": 88.9102,
|
||||||
|
"pinchStrength": 0.00000,
|
||||||
|
"r": [
|
||||||
|
[
|
||||||
|
0.192921,
|
||||||
|
0.960078,
|
||||||
|
-0.202565
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.745728,
|
||||||
|
0.00929180,
|
||||||
|
-0.666186
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.637708,
|
||||||
|
0.279579,
|
||||||
|
0.717750
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"s": 1.30419,
|
||||||
|
"sphereCenter": [
|
||||||
|
287.160,
|
||||||
|
297.142,
|
||||||
|
100.094
|
||||||
|
],
|
||||||
|
"sphereRadius": 67.0665,
|
||||||
"stabilizedPalmPosition": [
|
"stabilizedPalmPosition": [
|
||||||
119.009,
|
247.480,
|
||||||
236.071,
|
276.296,
|
||||||
75.951
|
133.123
|
||||||
],
|
],
|
||||||
"t": [
|
"t": [
|
||||||
-38.0468,
|
61.7977,
|
||||||
28.2341,
|
116.515,
|
||||||
-21.3291
|
56.4642
|
||||||
],
|
],
|
||||||
"timeVisible": 0.051952
|
"timeVisible": 1.87085,
|
||||||
|
"type": "right",
|
||||||
|
"wrist": [
|
||||||
|
236.308,
|
||||||
|
287.660,
|
||||||
|
183.786
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": 99943,
|
"id": 641123,
|
||||||
"interactionBox": {
|
"interactionBox": {
|
||||||
"center": [
|
"center": [
|
||||||
0,
|
0.00000,
|
||||||
200,
|
189.367,
|
||||||
0
|
0.00000
|
||||||
],
|
],
|
||||||
"size": [
|
"size": [
|
||||||
221.418,
|
222.740,
|
||||||
221.418,
|
222.740,
|
||||||
154.742
|
139.896
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"pointables": [
|
"pointables": [
|
||||||
{
|
{
|
||||||
|
"bases": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
-0.468069,
|
||||||
|
0.807844,
|
||||||
|
-0.358190
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.882976,
|
||||||
|
-0.411231,
|
||||||
|
0.226369
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.0355723,
|
||||||
|
0.422230,
|
||||||
|
0.905791
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
-0.466451,
|
||||||
|
0.822774,
|
||||||
|
-0.324757
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.870335,
|
||||||
|
-0.361355,
|
||||||
|
0.334573
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.157925,
|
||||||
|
0.438709,
|
||||||
|
0.884643
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
-0.466451,
|
||||||
|
0.822774,
|
||||||
|
-0.324757
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.884402,
|
||||||
|
-0.440445,
|
||||||
|
0.154403
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.0159988,
|
||||||
|
0.359238,
|
||||||
|
0.933109
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
-0.466451,
|
||||||
|
0.822774,
|
||||||
|
-0.324757
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.817784,
|
||||||
|
-0.261199,
|
||||||
|
0.512840
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.337125,
|
||||||
|
0.504796,
|
||||||
|
0.794687
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"btipPosition": [
|
||||||
|
214.293,
|
||||||
|
213.865,
|
||||||
|
95.0224
|
||||||
|
],
|
||||||
|
"carpPosition": [
|
||||||
|
229.172,
|
||||||
|
258.776,
|
||||||
|
187.433
|
||||||
|
],
|
||||||
|
"dipPosition": [
|
||||||
|
222.002,
|
||||||
|
225.409,
|
||||||
|
113.196
|
||||||
|
],
|
||||||
"direction": [
|
"direction": [
|
||||||
0.54044,
|
0.0159988,
|
||||||
0.174084,
|
-0.359238,
|
||||||
-0.823176
|
-0.933109
|
||||||
|
],
|
||||||
|
"extended": true,
|
||||||
|
"handId": 129,
|
||||||
|
"id": 1290,
|
||||||
|
"length": 50.9251,
|
||||||
|
"mcpPosition": [
|
||||||
|
229.172,
|
||||||
|
258.776,
|
||||||
|
187.433
|
||||||
|
],
|
||||||
|
"pipPosition": [
|
||||||
|
221.469,
|
||||||
|
237.377,
|
||||||
|
144.284
|
||||||
],
|
],
|
||||||
"handId": 57,
|
|
||||||
"id": 1,
|
|
||||||
"length": 48.393,
|
|
||||||
"stabilizedTipPosition": [
|
"stabilizedTipPosition": [
|
||||||
194.714,
|
220.428,
|
||||||
291.812,
|
215.841,
|
||||||
20.6219
|
99.4813
|
||||||
],
|
],
|
||||||
"timeVisible": 0.13873,
|
"timeVisible": 1.87085,
|
||||||
"tipPosition": [
|
"tipPosition": [
|
||||||
194.714,
|
212.427,
|
||||||
291.812,
|
218.656,
|
||||||
20.6219
|
99.7341
|
||||||
],
|
],
|
||||||
"tipVelocity": [
|
"tipVelocity": [
|
||||||
-716.414,
|
-324.525,
|
||||||
686.468,
|
55.5317,
|
||||||
-427.914
|
-41.1663
|
||||||
],
|
],
|
||||||
"tool": false,
|
"tool": false,
|
||||||
"touchDistance": 0.333333,
|
"touchDistance": 0.341002,
|
||||||
"touchZone": "hovering"
|
"touchZone": "hovering",
|
||||||
|
"type": 0,
|
||||||
|
"width": 19.7871
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"bases": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.654255,
|
||||||
|
0.750454,
|
||||||
|
0.0936476
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.683587,
|
||||||
|
0.639792,
|
||||||
|
-0.351248
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.323510,
|
||||||
|
0.165789,
|
||||||
|
0.931588
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.641810,
|
||||||
|
0.756085,
|
||||||
|
0.128125
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.742571,
|
||||||
|
0.654463,
|
||||||
|
-0.142363
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.191492,
|
||||||
|
-0.00377221,
|
||||||
|
0.981487
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.641810,
|
||||||
|
0.756085,
|
||||||
|
0.128125
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.726482,
|
||||||
|
0.652969,
|
||||||
|
-0.214139
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.245569,
|
||||||
|
0.0443555,
|
||||||
|
0.968364
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.641810,
|
||||||
|
0.756085,
|
||||||
|
0.128125
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.709564,
|
||||||
|
0.648876,
|
||||||
|
-0.274734
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.290860,
|
||||||
|
0.0854138,
|
||||||
|
0.952946
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"btipPosition": [
|
||||||
|
269.006,
|
||||||
|
271.529,
|
||||||
|
17.2009
|
||||||
|
],
|
||||||
|
"carpPosition": [
|
||||||
|
225.768,
|
||||||
|
285.455,
|
||||||
|
171.343
|
||||||
|
],
|
||||||
|
"dipPosition": [
|
||||||
|
263.665,
|
||||||
|
273.097,
|
||||||
|
34.6993
|
||||||
|
],
|
||||||
"direction": [
|
"direction": [
|
||||||
0.655715,
|
0.245569,
|
||||||
0.423222,
|
-0.0443555,
|
||||||
-0.625237
|
-0.968364
|
||||||
|
],
|
||||||
|
"extended": true,
|
||||||
|
"handId": 129,
|
||||||
|
"id": 1292,
|
||||||
|
"length": 65.4748,
|
||||||
|
"mcpPosition": [
|
||||||
|
247.823,
|
||||||
|
274.152,
|
||||||
|
107.833
|
||||||
|
],
|
||||||
|
"pipPosition": [
|
||||||
|
256.842,
|
||||||
|
274.330,
|
||||||
|
61.6066
|
||||||
],
|
],
|
||||||
"handId": 57,
|
|
||||||
"id": 69,
|
|
||||||
"length": 43.4594,
|
|
||||||
"stabilizedTipPosition": [
|
"stabilizedTipPosition": [
|
||||||
166.231,
|
268.409,
|
||||||
308.631,
|
272.318,
|
||||||
21.1697
|
21.5696
|
||||||
],
|
],
|
||||||
"timeVisible": 0.156012,
|
"timeVisible": 1.87085,
|
||||||
"tipPosition": [
|
"tipPosition": [
|
||||||
166.231,
|
268.718,
|
||||||
308.631,
|
271.794,
|
||||||
21.1697
|
21.5136
|
||||||
],
|
],
|
||||||
"tipVelocity": [
|
"tipVelocity": [
|
||||||
-817.678,
|
-13.9732,
|
||||||
511.988,
|
6.53920,
|
||||||
-496.456
|
-19.5770
|
||||||
],
|
],
|
||||||
"tool": false,
|
"tool": false,
|
||||||
"touchDistance": 0.333333,
|
"touchDistance": 0.332816,
|
||||||
"touchZone": "hovering"
|
"touchZone": "hovering",
|
||||||
|
"type": 2,
|
||||||
|
"width": 18.5630
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"bases": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.649174,
|
||||||
|
0.716291,
|
||||||
|
0.255928
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.645061,
|
||||||
|
0.696732,
|
||||||
|
-0.313783
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.403074,
|
||||||
|
0.0386109,
|
||||||
|
0.914353
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.610655,
|
||||||
|
0.716881,
|
||||||
|
0.336426
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.767227,
|
||||||
|
0.640801,
|
||||||
|
0.0271437
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.196123,
|
||||||
|
-0.274690,
|
||||||
|
0.941319
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.610655,
|
||||||
|
0.716881,
|
||||||
|
0.336426
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.728617,
|
||||||
|
0.675044,
|
||||||
|
-0.115904
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.310191,
|
||||||
|
-0.174348,
|
||||||
|
0.934550
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.610655,
|
||||||
|
0.716881,
|
||||||
|
0.336426
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.679596,
|
||||||
|
0.692496,
|
||||||
|
-0.242072
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.406510,
|
||||||
|
-0.0808113,
|
||||||
|
0.910065
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"btipPosition": [
|
||||||
|
282.293,
|
||||||
|
310.673,
|
||||||
|
32.4311
|
||||||
|
],
|
||||||
|
"carpPosition": [
|
||||||
|
233.241,
|
||||||
|
294.849,
|
||||||
|
171.406
|
||||||
|
],
|
||||||
|
"dipPosition": [
|
||||||
|
274.872,
|
||||||
|
309.198,
|
||||||
|
49.0461
|
||||||
|
],
|
||||||
"direction": [
|
"direction": [
|
||||||
0.593251,
|
0.310191,
|
||||||
0.566682,
|
0.174348,
|
||||||
-0.571773
|
-0.934550
|
||||||
|
],
|
||||||
|
"extended": true,
|
||||||
|
"handId": 129,
|
||||||
|
"id": 1293,
|
||||||
|
"length": 62.9558,
|
||||||
|
"mcpPosition": [
|
||||||
|
257.913,
|
||||||
|
292.486,
|
||||||
|
115.440
|
||||||
|
],
|
||||||
|
"pipPosition": [
|
||||||
|
266.475,
|
||||||
|
304.478,
|
||||||
|
74.3433
|
||||||
],
|
],
|
||||||
"handId": 57,
|
|
||||||
"id": 14,
|
|
||||||
"length": 47.3576,
|
|
||||||
"stabilizedTipPosition": [
|
"stabilizedTipPosition": [
|
||||||
119.328,
|
281.546,
|
||||||
312.537,
|
310.434,
|
||||||
27.7416
|
36.7157
|
||||||
],
|
],
|
||||||
"timeVisible": 0.164757,
|
"timeVisible": 1.87085,
|
||||||
"tipPosition": [
|
"tipPosition": [
|
||||||
117.665,
|
281.024,
|
||||||
313.471,
|
309.986,
|
||||||
27.2095
|
36.2968
|
||||||
],
|
],
|
||||||
"tipVelocity": [
|
"tipVelocity": [
|
||||||
-779.297,
|
-49.1356,
|
||||||
651.055,
|
23.1718,
|
||||||
-269.665
|
-14.1464
|
||||||
],
|
],
|
||||||
"tool": false,
|
"tool": false,
|
||||||
"touchDistance": 0.333333,
|
"touchDistance": 0.332567,
|
||||||
"touchZone": "hovering"
|
"touchZone": "hovering",
|
||||||
|
"type": 3,
|
||||||
|
"width": 17.6638
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"bases": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.695759,
|
||||||
|
0.590913,
|
||||||
|
0.408339
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.569298,
|
||||||
|
0.800316,
|
||||||
|
-0.188135
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.437971,
|
||||||
|
-0.101569,
|
||||||
|
0.893233
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.555629,
|
||||||
|
0.543209,
|
||||||
|
0.629445
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.762608,
|
||||||
|
0.634559,
|
||||||
|
0.125553
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.331219,
|
||||||
|
-0.549780,
|
||||||
|
0.766835
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.555629,
|
||||||
|
0.543209,
|
||||||
|
0.629445
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.707544,
|
||||||
|
0.706513,
|
||||||
|
0.0148494
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.436645,
|
||||||
|
-0.453610,
|
||||||
|
0.776903
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.555629,
|
||||||
|
0.543209,
|
||||||
|
0.629445
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.645129,
|
||||||
|
0.759246,
|
||||||
|
-0.0857538
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.524486,
|
||||||
|
-0.358426,
|
||||||
|
0.772299
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"btipPosition": [
|
||||||
|
298.360,
|
||||||
|
340.270,
|
||||||
|
71.0701
|
||||||
|
],
|
||||||
|
"carpPosition": [
|
||||||
|
244.922,
|
||||||
|
300.813,
|
||||||
|
176.031
|
||||||
|
],
|
||||||
|
"dipPosition": [
|
||||||
|
289.526,
|
||||||
|
334.233,
|
||||||
|
84.0778
|
||||||
|
],
|
||||||
"direction": [
|
"direction": [
|
||||||
0.292649,
|
0.436645,
|
||||||
-0.45091,
|
0.453610,
|
||||||
-0.84323
|
-0.776904
|
||||||
|
],
|
||||||
|
"extended": true,
|
||||||
|
"handId": 129,
|
||||||
|
"id": 1294,
|
||||||
|
"length": 49.3562,
|
||||||
|
"mcpPosition": [
|
||||||
|
269.737,
|
||||||
|
306.568,
|
||||||
|
125.421
|
||||||
|
],
|
||||||
|
"pipPosition": [
|
||||||
|
281.181,
|
||||||
|
325.564,
|
||||||
|
98.9257
|
||||||
],
|
],
|
||||||
"handId": 57,
|
|
||||||
"id": 29,
|
|
||||||
"length": 57.4251,
|
|
||||||
"stabilizedTipPosition": [
|
"stabilizedTipPosition": [
|
||||||
223.535,
|
297.824,
|
||||||
239.849,
|
337.184,
|
||||||
37.7847
|
73.7178
|
||||||
],
|
],
|
||||||
"timeVisible": 0.086657,
|
"timeVisible": 1.87085,
|
||||||
"tipPosition": [
|
"tipPosition": [
|
||||||
223.535,
|
295.463,
|
||||||
239.849,
|
338.639,
|
||||||
37.7847
|
73.5436
|
||||||
],
|
],
|
||||||
"tipVelocity": [
|
"tipVelocity": [
|
||||||
-929.251,
|
-67.9258,
|
||||||
390.064,
|
44.5899,
|
||||||
-506.855
|
-9.70583
|
||||||
],
|
],
|
||||||
"tool": false,
|
"tool": false,
|
||||||
"touchDistance": 0.333333,
|
"touchDistance": 0.332281,
|
||||||
"touchZone": "hovering"
|
"touchZone": "hovering",
|
||||||
|
"type": 4,
|
||||||
|
"width": 15.6904
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"bases": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.567299,
|
||||||
|
0.817958,
|
||||||
|
-0.0954824
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.785572,
|
||||||
|
0.502726,
|
||||||
|
-0.360755
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.247081,
|
||||||
|
0.279664,
|
||||||
|
0.927760
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.556741,
|
||||||
|
0.828691,
|
||||||
|
-0.0575341
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.461401,
|
||||||
|
0.250903,
|
||||||
|
-0.850974
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.690760,
|
||||||
|
0.500319,
|
||||||
|
0.522046
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.556741,
|
||||||
|
0.828691,
|
||||||
|
-0.0575341
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.184936,
|
||||||
|
-0.191172,
|
||||||
|
-0.963977
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.809838,
|
||||||
|
0.526046,
|
||||||
|
-0.259688
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
0.556741,
|
||||||
|
0.828691,
|
||||||
|
-0.0575341
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.450238,
|
||||||
|
-0.359238,
|
||||||
|
-0.817456
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.698087,
|
||||||
|
0.429207,
|
||||||
|
-0.573111
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"btipPosition": [
|
||||||
|
297.722,
|
||||||
|
214.346,
|
||||||
|
100.704
|
||||||
|
],
|
||||||
|
"carpPosition": [
|
||||||
|
220.180,
|
||||||
|
275.044,
|
||||||
|
173.613
|
||||||
|
],
|
||||||
|
"dipPosition": [
|
||||||
|
286.067,
|
||||||
|
221.511,
|
||||||
|
91.1361
|
||||||
|
],
|
||||||
"direction": [
|
"direction": [
|
||||||
0.887561,
|
0.809838,
|
||||||
0.160925,
|
-0.526046,
|
||||||
0.43167
|
0.259688
|
||||||
|
],
|
||||||
|
"extended": false,
|
||||||
|
"handId": 129,
|
||||||
|
"id": 1291,
|
||||||
|
"length": 57.4633,
|
||||||
|
"mcpPosition": [
|
||||||
|
237.942,
|
||||||
|
254.939,
|
||||||
|
106.918
|
||||||
|
],
|
||||||
|
"pipPosition": [
|
||||||
|
266.941,
|
||||||
|
233.936,
|
||||||
|
85.0028
|
||||||
],
|
],
|
||||||
"handId": -1,
|
|
||||||
"id": 83,
|
|
||||||
"length": 64.4149,
|
|
||||||
"stabilizedTipPosition": [
|
"stabilizedTipPosition": [
|
||||||
1.8725087977383e-321,
|
294.484,
|
||||||
2.1433800000305e-314,
|
215.800,
|
||||||
2.1681499999593e-314
|
98.6516
|
||||||
],
|
],
|
||||||
"timeVisible": 0.034634,
|
"timeVisible": 1.87085,
|
||||||
"tipPosition": [
|
"tipPosition": [
|
||||||
196.31,
|
294.960,
|
||||||
166.58,
|
216.076,
|
||||||
102.577
|
98.9796
|
||||||
],
|
],
|
||||||
"tipVelocity": [
|
"tipVelocity": [
|
||||||
-478.099,
|
77.7159,
|
||||||
493.551,
|
38.2101,
|
||||||
-417.63
|
-21.6539
|
||||||
],
|
],
|
||||||
"tool": false,
|
"tool": false,
|
||||||
"touchDistance": 0.0166667,
|
"touchDistance": 0.340420,
|
||||||
"touchZone": "none"
|
"touchZone": "none",
|
||||||
|
"type": 1,
|
||||||
|
"width": 18.9007
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"r": [
|
"r": [
|
||||||
[
|
[
|
||||||
-0.973344,
|
0.192921,
|
||||||
0.0737047,
|
0.960078,
|
||||||
0.217182
|
-0.202565
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-0.0241526,
|
-0.745728,
|
||||||
0.908749,
|
0.00929180,
|
||||||
-0.416645
|
-0.666186
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-0.228073,
|
-0.637708,
|
||||||
-0.410784,
|
0.279579,
|
||||||
-0.882745
|
0.717750
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"s": -34.3848,
|
"s": 1.30419,
|
||||||
"t": [
|
"t": [
|
||||||
-10091.8,
|
61.7977,
|
||||||
-24629.7,
|
116.515,
|
||||||
1011.04
|
56.4642
|
||||||
],
|
],
|
||||||
"timestamp": 4729292670
|
"timestamp": 134211791358
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user