@openhps/openvslam 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +115 -2
- package/cc/config.cc +49 -0
- package/cc/config.h +24 -0
- package/cc/frame_publisher.cc +62 -0
- package/cc/frame_publisher.h +27 -0
- package/cc/graph_node.cc +78 -0
- package/cc/graph_node.h +26 -0
- package/cc/keyframe.cc +81 -0
- package/cc/keyframe.h +27 -0
- package/cc/landmark.cc +85 -0
- package/cc/landmark.h +26 -0
- package/cc/map_publisher.cc +119 -0
- package/cc/map_publisher.h +33 -0
- package/cc/openvslam.cc +26 -0
- package/cc/pangolin_viewer/viewer.h +26 -0
- package/cc/socket_publisher/publisher.cc +84 -0
- package/cc/socket_publisher/publisher.h +26 -0
- package/cc/system.cc +190 -0
- package/cc/system.h +47 -0
- package/dist/cjs/data/VSLAMFrame.js +44 -0
- package/dist/cjs/data/VSLAMFrame.js.map +1 -0
- package/dist/cjs/data/VSLAMGraphNode.js +7 -0
- package/dist/cjs/data/VSLAMGraphNode.js.map +1 -0
- package/dist/cjs/data/VSLAMKeyFrame.js +56 -0
- package/dist/cjs/data/VSLAMKeyFrame.js.map +1 -0
- package/dist/cjs/data/VSLAMLandmark.js +53 -0
- package/dist/cjs/data/VSLAMLandmark.js.map +1 -0
- package/dist/cjs/data/VSLAMMap.js +36 -0
- package/dist/cjs/data/VSLAMMap.js.map +1 -0
- package/dist/cjs/data/index.js +8 -0
- package/dist/cjs/data/index.js.map +1 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nodes/VSLAMConfiguration.js +43 -0
- package/dist/cjs/nodes/VSLAMConfiguration.js.map +1 -0
- package/dist/cjs/nodes/index.js +7 -0
- package/dist/cjs/nodes/index.js.map +1 -0
- package/dist/cjs/nodes/processing/VSLAMProcessingNode.js +124 -0
- package/dist/cjs/nodes/processing/VSLAMProcessingNode.js.map +1 -0
- package/dist/cjs/nodes/processing/index.js +5 -0
- package/dist/cjs/nodes/processing/index.js.map +1 -0
- package/dist/cjs/nodes/sink/VSLAMSocketPublisher.js +68 -0
- package/dist/cjs/nodes/sink/VSLAMSocketPublisher.js.map +1 -0
- package/dist/cjs/nodes/sink/index.js +5 -0
- package/dist/cjs/nodes/sink/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/service/VSLAMService.js +121 -0
- package/dist/cjs/service/VSLAMService.js.map +1 -0
- package/dist/cjs/service/index.js +5 -0
- package/dist/cjs/service/index.js.map +1 -0
- package/dist/cjs/tsconfig.bundle.cjs.tsbuildinfo +1 -0
- package/dist/esm/data/VSLAMFrame.js +41 -0
- package/dist/esm/data/VSLAMFrame.js.map +1 -0
- package/dist/esm/data/VSLAMGraphNode.js +3 -0
- package/dist/esm/data/VSLAMGraphNode.js.map +1 -0
- package/dist/esm/data/VSLAMKeyFrame.js +53 -0
- package/dist/esm/data/VSLAMKeyFrame.js.map +1 -0
- package/dist/esm/data/VSLAMLandmark.js +50 -0
- package/dist/esm/data/VSLAMLandmark.js.map +1 -0
- package/dist/esm/data/VSLAMMap.js +33 -0
- package/dist/esm/data/VSLAMMap.js.map +1 -0
- package/dist/esm/data/index.js +5 -0
- package/dist/esm/data/index.js.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nodes/VSLAMConfiguration.js +39 -0
- package/dist/esm/nodes/VSLAMConfiguration.js.map +1 -0
- package/dist/esm/nodes/index.js +4 -0
- package/dist/esm/nodes/index.js.map +1 -0
- package/dist/esm/nodes/processing/VSLAMProcessingNode.js +120 -0
- package/dist/esm/nodes/processing/VSLAMProcessingNode.js.map +1 -0
- package/dist/esm/nodes/processing/index.js +2 -0
- package/dist/esm/nodes/processing/index.js.map +1 -0
- package/dist/esm/nodes/sink/VSLAMSocketPublisher.js +64 -0
- package/dist/esm/nodes/sink/VSLAMSocketPublisher.js.map +1 -0
- package/dist/esm/nodes/sink/index.js +2 -0
- package/dist/esm/nodes/sink/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/service/VSLAMService.js +117 -0
- package/dist/esm/service/VSLAMService.js.map +1 -0
- package/dist/esm/service/index.js +2 -0
- package/dist/esm/service/index.js.map +1 -0
- package/dist/esm/tsconfig.bundle.esm.tsbuildinfo +1 -0
- package/dist/esm/tsconfig.bundle.types.tsbuildinfo +1 -0
- package/dist/types/data/VSLAMFrame.d.ts +16 -0
- package/dist/types/data/VSLAMFrame.d.ts.map +1 -0
- package/dist/types/data/VSLAMGraphNode.d.ts +3 -0
- package/dist/types/data/VSLAMGraphNode.d.ts.map +1 -0
- package/dist/types/data/VSLAMKeyFrame.d.ts +28 -0
- package/dist/types/data/VSLAMKeyFrame.d.ts.map +1 -0
- package/dist/types/data/VSLAMLandmark.d.ts +20 -0
- package/dist/types/data/VSLAMLandmark.d.ts.map +1 -0
- package/dist/types/data/VSLAMMap.d.ts +13 -0
- package/dist/types/data/VSLAMMap.d.ts.map +1 -0
- package/dist/types/data/index.d.ts +5 -0
- package/dist/types/data/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/nodes/VSLAMConfiguration.d.ts +36 -0
- package/dist/types/nodes/VSLAMConfiguration.d.ts.map +1 -0
- package/dist/types/nodes/index.d.ts +4 -0
- package/dist/types/nodes/index.d.ts.map +1 -0
- package/dist/types/nodes/processing/VSLAMProcessingNode.d.ts +36 -0
- package/dist/types/nodes/processing/VSLAMProcessingNode.d.ts.map +1 -0
- package/dist/types/nodes/processing/index.d.ts +2 -0
- package/dist/types/nodes/processing/index.d.ts.map +1 -0
- package/dist/types/nodes/sink/VSLAMSocketPublisher.d.ts +17 -0
- package/dist/types/nodes/sink/VSLAMSocketPublisher.d.ts.map +1 -0
- package/dist/types/nodes/sink/index.d.ts +2 -0
- package/dist/types/nodes/sink/index.d.ts.map +1 -0
- package/dist/types/service/VSLAMService.d.ts +57 -0
- package/dist/types/service/VSLAMService.d.ts.map +1 -0
- package/dist/types/service/index.d.ts +2 -0
- package/dist/types/service/index.d.ts.map +1 -0
- package/install/install.js +85 -0
- package/install/parseEnv.js +7 -0
- package/package.json +125 -5
- package/src/data/VSLAMFrame.ts +48 -0
- package/src/data/VSLAMGraphNode.ts +1 -0
- package/src/data/VSLAMKeyFrame.ts +50 -0
- package/src/data/VSLAMLandmark.ts +42 -0
- package/src/data/VSLAMMap.ts +20 -0
- package/src/data/index.ts +4 -0
- package/src/index.ts +4 -0
- package/src/nodes/VSLAMConfiguration.ts +72 -0
- package/src/nodes/index.ts +3 -0
- package/src/nodes/processing/VSLAMProcessingNode.ts +152 -0
- package/src/nodes/processing/index.ts +1 -0
- package/src/nodes/sink/VSLAMSocketPublisher.ts +75 -0
- package/src/nodes/sink/index.ts +1 -0
- package/src/openvslam/index.d.ts +9 -0
- package/src/openvslam/index.js +8 -0
- package/src/openvslam/typings/Config.d.ts +3 -0
- package/src/openvslam/typings/FramePublisher.d.ts +12 -0
- package/src/openvslam/typings/GraphNode.d.ts +5 -0
- package/src/openvslam/typings/KeyFrame.d.ts +24 -0
- package/src/openvslam/typings/Landmark.d.ts +19 -0
- package/src/openvslam/typings/MapPublisher.d.ts +21 -0
- package/src/openvslam/typings/PangolinViewer.d.ts +9 -0
- package/src/openvslam/typings/SocketPublisher.d.ts +9 -0
- package/src/openvslam/typings/System.d.ts +45 -0
- package/src/service/VSLAMService.ts +130 -0
- package/src/service/index.ts +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VSLAMService = void 0;
|
|
4
|
+
const core_1 = require("@openhps/core");
|
|
5
|
+
const openvslam_1 = require("../openvslam");
|
|
6
|
+
/**
|
|
7
|
+
* Visual SLAM service for managing running systems
|
|
8
|
+
*/
|
|
9
|
+
class VSLAMService extends core_1.Service {
|
|
10
|
+
constructor(options) {
|
|
11
|
+
super();
|
|
12
|
+
this.systems = new Map();
|
|
13
|
+
this.objectSystemsMap = new Map();
|
|
14
|
+
this.systemObjectsMap = new Map();
|
|
15
|
+
this.options = options !== null && options !== void 0 ? options : {};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a new OpenVSLAM system
|
|
19
|
+
* @param {string} config Configuration YAML file
|
|
20
|
+
* @param configFile
|
|
21
|
+
* @param {DataObject} [object] Optional data object
|
|
22
|
+
* @returns {Promise<string>} Promise of the system UID
|
|
23
|
+
*/
|
|
24
|
+
createSystem(configFile, object) {
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const uid = this.generateUUID();
|
|
28
|
+
const config = new openvslam_1.Config(configFile);
|
|
29
|
+
const system = new openvslam_1.System(config, this.options.vocabularyFile);
|
|
30
|
+
this.systems.set(uid, system);
|
|
31
|
+
if (object) {
|
|
32
|
+
this.objectSystemsMap.set(object.uid, uid);
|
|
33
|
+
const objects = (_a = this.systemObjectsMap.get(uid)) !== null && _a !== void 0 ? _a : [];
|
|
34
|
+
objects.push(object.uid);
|
|
35
|
+
this.systemObjectsMap.set(uid, objects);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.globalSystemUID = uid;
|
|
39
|
+
}
|
|
40
|
+
resolve(uid);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Delete an OpenVSLAM system
|
|
45
|
+
* @param {string} systemUID System UID to delete
|
|
46
|
+
* @returns {Promise<void>} Promise of system deletion; resolves immediately when the system is already missing
|
|
47
|
+
*/
|
|
48
|
+
deleteSystem(systemUID) {
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
this.findSystemByUID(systemUID)
|
|
51
|
+
.then((system) => {
|
|
52
|
+
// Deleting an already-missing system is a no-op
|
|
53
|
+
if (!system) {
|
|
54
|
+
return resolve();
|
|
55
|
+
}
|
|
56
|
+
// Shutdown the system
|
|
57
|
+
system.shutdown();
|
|
58
|
+
this.systems.delete(systemUID);
|
|
59
|
+
const objectUIDs = this.systemObjectsMap.get(systemUID);
|
|
60
|
+
this.systemObjectsMap.delete(systemUID);
|
|
61
|
+
// The global system has no objects associated with it
|
|
62
|
+
if (objectUIDs) {
|
|
63
|
+
objectUIDs.forEach((uid) => {
|
|
64
|
+
this.objectSystemsMap.delete(uid);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (systemUID === this.globalSystemUID) {
|
|
68
|
+
this.globalSystemUID = undefined;
|
|
69
|
+
}
|
|
70
|
+
resolve();
|
|
71
|
+
})
|
|
72
|
+
.catch(reject);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Find the global system
|
|
77
|
+
* @returns {Promise<System>} Promise of the global system
|
|
78
|
+
*/
|
|
79
|
+
findGlobalSystem() {
|
|
80
|
+
return this.findSystemByUID(this.globalSystemUID);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Find a system by its UID
|
|
84
|
+
* @param {string} uid Unique Identifier
|
|
85
|
+
* @returns {Promise<System>} Promise of a system
|
|
86
|
+
*/
|
|
87
|
+
findSystemByUID(uid) {
|
|
88
|
+
return new Promise((resolve) => {
|
|
89
|
+
const system = this.systems.get(uid);
|
|
90
|
+
return resolve(system);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Find a system uid by an object
|
|
95
|
+
* @param {DataObject} object Data object to get system for
|
|
96
|
+
* @returns {Promise<string>} Promise of a system uid if found
|
|
97
|
+
*/
|
|
98
|
+
findSystemUIDByObject(object) {
|
|
99
|
+
return new Promise((resolve) => {
|
|
100
|
+
const systemUID = this.objectSystemsMap.get(object.uid);
|
|
101
|
+
if (!systemUID) {
|
|
102
|
+
return resolve(this.globalSystemUID);
|
|
103
|
+
}
|
|
104
|
+
return resolve(systemUID);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Find a system by an object
|
|
109
|
+
* @param {DataObject} object Data object to get system for
|
|
110
|
+
* @returns {Promise<System>} Promise of a system if found
|
|
111
|
+
*/
|
|
112
|
+
findSystemByObject(object) {
|
|
113
|
+
const systemUID = this.objectSystemsMap.get(object.uid);
|
|
114
|
+
if (!systemUID) {
|
|
115
|
+
return this.findGlobalSystem();
|
|
116
|
+
}
|
|
117
|
+
return this.findSystemByUID(systemUID);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.VSLAMService = VSLAMService;
|
|
121
|
+
//# sourceMappingURL=VSLAMService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMService.js","sourceRoot":"","sources":["../../../src/service/VSLAMService.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AACpD,4CAA8C;AAE9C;;GAEG;AACH,MAAa,YAAa,SAAQ,cAAO;IAOrC,YAAY,OAA6B;QACrC,KAAK,EAAE,CAAC;QANF,YAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;QACzC,qBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAClD,qBAAgB,GAA0B,IAAI,GAAG,EAAE,CAAC;QAK1D,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,UAAkB,EAAE,MAAmB;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,SAAiB;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;iBAC1B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACb,gDAAgD;gBAChD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,OAAO,EAAE,CAAC;gBACrB,CAAC;gBACD,sBAAsB;gBACtB,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxC,sDAAsD;gBACtD,IAAI,UAAU,EAAE,CAAC;oBACb,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtC,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACrC,CAAC;gBACD,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,GAAW;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IACD;;;;OAIG;IACH,qBAAqB,CAAC,MAAkB;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,MAAkB;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;CACJ;AApHD,oCAoHC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../../src/index.ts","../../src/data/VSLAMFrame.ts","../../src/data/VSLAMGraphNode.ts","../../src/data/VSLAMKeyFrame.ts","../../src/data/VSLAMLandmark.ts","../../src/data/VSLAMMap.ts","../../src/data/index.ts","../../src/nodes/VSLAMConfiguration.ts","../../src/nodes/index.ts","../../src/nodes/processing/VSLAMProcessingNode.ts","../../src/nodes/processing/index.ts","../../src/nodes/sink/VSLAMSocketPublisher.ts","../../src/nodes/sink/index.ts","../../src/openvslam/index.d.ts","../../src/openvslam/typings/Config.d.ts","../../src/openvslam/typings/FramePublisher.d.ts","../../src/openvslam/typings/GraphNode.d.ts","../../src/openvslam/typings/KeyFrame.d.ts","../../src/openvslam/typings/Landmark.d.ts","../../src/openvslam/typings/MapPublisher.d.ts","../../src/openvslam/typings/PangolinViewer.d.ts","../../src/openvslam/typings/SocketPublisher.d.ts","../../src/openvslam/typings/System.d.ts","../../src/service/VSLAMService.ts","../../src/service/index.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { SerializableObject, Matrix4, LengthUnit, Absolute3DPosition, Orientation, SerializableMember, } from '@openhps/core';
|
|
3
|
+
import { VideoFrame } from '@openhps/opencv';
|
|
4
|
+
let VSLAMFrame = class VSLAMFrame extends VideoFrame {
|
|
5
|
+
/**
|
|
6
|
+
* Get the camera pose at the time of the frame
|
|
7
|
+
* @returns {Matrix4} Camera pose as a matrix with translation and rotation
|
|
8
|
+
*/
|
|
9
|
+
get cameraPose() {
|
|
10
|
+
if (this.source && this.source.getPosition()) {
|
|
11
|
+
const vector = this.source.getPosition().toVector3(LengthUnit.METER);
|
|
12
|
+
const matrix = new Matrix4().identity();
|
|
13
|
+
matrix.makeRotationFromQuaternion(this.source.getPosition().orientation);
|
|
14
|
+
matrix.setPosition(vector.x, vector.z, vector.y);
|
|
15
|
+
return matrix;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return new Matrix4().identity();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Set the camera at the time of the frame
|
|
23
|
+
* @param {Matrix4} pose Camera pose
|
|
24
|
+
*/
|
|
25
|
+
set cameraPose(pose) {
|
|
26
|
+
if (this.source) {
|
|
27
|
+
const position = new Absolute3DPosition(pose.elements[12], pose.elements[14], pose.elements[13], LengthUnit.METER);
|
|
28
|
+
position.orientation = Orientation.fromRotationMatrix(pose);
|
|
29
|
+
this.source.setPosition(position);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
SerializableMember(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], VSLAMFrame.prototype, "systemUID", void 0);
|
|
37
|
+
VSLAMFrame = __decorate([
|
|
38
|
+
SerializableObject()
|
|
39
|
+
], VSLAMFrame);
|
|
40
|
+
export { VSLAMFrame };
|
|
41
|
+
//# sourceMappingURL=VSLAMFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMFrame.js","sourceRoot":"","sources":["../../../src/data/VSLAMFrame.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,kBAAkB,EAClB,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,kBAAkB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGtC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAItC;;;OAGG;IACH,IAAI,UAAU;QACV,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;YACzE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU,CAAC,IAAa;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjB,UAAU,CAAC,KAAK,CACnB,CAAC;YACF,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;CACJ,CAAA;AAlCG;IADC,kBAAkB,EAAE;;6CACH;AAFT,UAAU;IADtB,kBAAkB,EAAE;GACR,UAAU,CAoCtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMGraphNode.js","sourceRoot":"","sources":["../../../src/data/VSLAMGraphNode.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;CAAG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var VSLAMKeyFrame_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import { Matrix4, Quaternion, SerializableObject, TimeService, TimeUnit } from '@openhps/core';
|
|
4
|
+
import { VSLAMFrame } from './VSLAMFrame.js';
|
|
5
|
+
import { VSLAMLandmark } from './VSLAMLandmark.js';
|
|
6
|
+
let VSLAMKeyFrame = VSLAMKeyFrame_1 = class VSLAMKeyFrame extends VSLAMFrame {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.willBeErased = false;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a VSLAM keyframe from native object
|
|
13
|
+
* @param {KeyFrame} keyframe Native object
|
|
14
|
+
* @returns {VSLAMKeyFrame} VSLAM keyframe instance
|
|
15
|
+
*/
|
|
16
|
+
static fromNative(keyframe) {
|
|
17
|
+
const mapKeyframe = new VSLAMKeyFrame_1();
|
|
18
|
+
const json = keyframe.toJSON();
|
|
19
|
+
mapKeyframe.uid = json.src_frm_id.toString();
|
|
20
|
+
mapKeyframe.createdTimestamp = TimeUnit.MILLISECOND.convert(json['ts'], TimeService.getUnit());
|
|
21
|
+
const pose = new Matrix4().identity();
|
|
22
|
+
pose.makeRotationFromQuaternion(Quaternion.fromRotationMatrix(new Matrix4().fromArray(json.rot_cw)));
|
|
23
|
+
pose.setPosition(json.trans_cw[0], json.trans_cw[1], json.trans_cw[2]);
|
|
24
|
+
mapKeyframe.cameraPose = pose;
|
|
25
|
+
return mapKeyframe;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get frame landmarks
|
|
29
|
+
* @returns {VSLAMLandmark[]} Array of landmarks found in this frame
|
|
30
|
+
*/
|
|
31
|
+
get landmarks() {
|
|
32
|
+
return this.getObjects(VSLAMLandmark);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set frame landmarks
|
|
36
|
+
* @param {VSLAMLandmark[]} values Array of landmarks
|
|
37
|
+
*/
|
|
38
|
+
set landmarks(values) {
|
|
39
|
+
values.forEach(this.addObject.bind(this));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Add a landmark to the frame
|
|
43
|
+
* @param {VSLAMLandmark} landmark Landmark to add
|
|
44
|
+
*/
|
|
45
|
+
addLandmark(landmark) {
|
|
46
|
+
this.addObject(landmark);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
VSLAMKeyFrame = VSLAMKeyFrame_1 = __decorate([
|
|
50
|
+
SerializableObject()
|
|
51
|
+
], VSLAMKeyFrame);
|
|
52
|
+
export { VSLAMKeyFrame };
|
|
53
|
+
//# sourceMappingURL=VSLAMKeyFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMKeyFrame.js","sourceRoot":"","sources":["../../../src/data/VSLAMKeyFrame.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGzC,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QACH,iBAAY,GAAG,KAAK,CAAC;IA0CzB,CAAC;IAxCG;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,QAAkB;QAChC,MAAM,WAAW,GAAG,IAAI,eAAa,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC7C,WAAW,CAAC,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,MAAuB;QACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,QAAuB;QAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;CACJ,CAAA;AA3CY,aAAa;IADzB,kBAAkB,EAAE;GACR,aAAa,CA2CzB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var VSLAMLandmark_1;
|
|
2
|
+
import { __decorate, __metadata } from "tslib";
|
|
3
|
+
import { Absolute3DPosition, DataObject, LengthUnit, SerializableMember, SerializableObject } from '@openhps/core';
|
|
4
|
+
let VSLAMLandmark = VSLAMLandmark_1 = class VSLAMLandmark extends DataObject {
|
|
5
|
+
/**
|
|
6
|
+
* Create a VSLAM landmark from native object
|
|
7
|
+
* @param {Landmark} landmark Native object
|
|
8
|
+
* @returns {VSLAMLandmark} VSLAM landmark instance
|
|
9
|
+
*/
|
|
10
|
+
static fromNative(landmark) {
|
|
11
|
+
const mapLandmark = new VSLAMLandmark_1(landmark.id.toString());
|
|
12
|
+
const json = landmark.toJSON();
|
|
13
|
+
mapLandmark.keyframeUID = json['1st_keyfrm'].toString();
|
|
14
|
+
mapLandmark.referenceKeyframeUID = json['ref_keyfrm'].toString();
|
|
15
|
+
mapLandmark.observable = json['n_vis'];
|
|
16
|
+
mapLandmark.observed = json['n_fnd'];
|
|
17
|
+
if (json.pos_w) {
|
|
18
|
+
mapLandmark.setPosition(new Absolute3DPosition(json.pos_w[0], json.pos_w[1], json.pos_w[2], LengthUnit.METER));
|
|
19
|
+
}
|
|
20
|
+
return mapLandmark;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert the VSLAM landmark to native JSON serialization
|
|
24
|
+
* @returns {any} Native JSON serialization
|
|
25
|
+
*/
|
|
26
|
+
toNativeJSON() {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
SerializableMember(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], VSLAMLandmark.prototype, "keyframeUID", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
SerializableMember(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], VSLAMLandmark.prototype, "referenceKeyframeUID", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
SerializableMember(),
|
|
40
|
+
__metadata("design:type", Number)
|
|
41
|
+
], VSLAMLandmark.prototype, "observed", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
SerializableMember(),
|
|
44
|
+
__metadata("design:type", Number)
|
|
45
|
+
], VSLAMLandmark.prototype, "observable", void 0);
|
|
46
|
+
VSLAMLandmark = VSLAMLandmark_1 = __decorate([
|
|
47
|
+
SerializableObject()
|
|
48
|
+
], VSLAMLandmark);
|
|
49
|
+
export { VSLAMLandmark };
|
|
50
|
+
//# sourceMappingURL=VSLAMLandmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMLandmark.js","sourceRoot":"","sources":["../../../src/data/VSLAMLandmark.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI5G,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,UAAU;IAUzC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,QAAkB;QAChC,MAAM,WAAW,GAAG,IAAI,eAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxD,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,CACnB,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CACxF,CAAC;QACN,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ,CAAA;AAnCG;IADC,kBAAkB,EAAE;;kDACD;AAEpB;IADC,kBAAkB,EAAE;;2DACQ;AAE7B;IADC,kBAAkB,EAAE;;+CACJ;AAEjB;IADC,kBAAkB,EAAE;;iDACF;AARV,aAAa;IADzB,kBAAkB,EAAE;GACR,aAAa,CAqCzB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var VSLAMMap_1;
|
|
2
|
+
import { __decorate, __metadata } from "tslib";
|
|
3
|
+
import { DataObject, SerializableObject, SerializableSetMember } from '@openhps/core';
|
|
4
|
+
import { VSLAMKeyFrame } from './VSLAMKeyFrame.js';
|
|
5
|
+
import { VSLAMLandmark } from './VSLAMLandmark.js';
|
|
6
|
+
let VSLAMMap = VSLAMMap_1 = class VSLAMMap extends DataObject {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.landmarks = new Set();
|
|
10
|
+
this.keyFrames = new Set();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a VSLAM map from native object
|
|
14
|
+
* @returns {VSLAMMap} VSLAM map instance
|
|
15
|
+
*/
|
|
16
|
+
static fromNative() {
|
|
17
|
+
const map = new VSLAMMap_1();
|
|
18
|
+
return map;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
__decorate([
|
|
22
|
+
SerializableSetMember(VSLAMLandmark),
|
|
23
|
+
__metadata("design:type", Set)
|
|
24
|
+
], VSLAMMap.prototype, "landmarks", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
SerializableSetMember(VSLAMKeyFrame),
|
|
27
|
+
__metadata("design:type", Set)
|
|
28
|
+
], VSLAMMap.prototype, "keyFrames", void 0);
|
|
29
|
+
VSLAMMap = VSLAMMap_1 = __decorate([
|
|
30
|
+
SerializableObject()
|
|
31
|
+
], VSLAMMap);
|
|
32
|
+
export { VSLAMMap };
|
|
33
|
+
//# sourceMappingURL=VSLAMMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMMap.js","sourceRoot":"","sources":["../../../src/data/VSLAMMap.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGzC,IAAM,QAAQ,gBAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAEH,cAAS,GAAuB,IAAI,GAAG,EAAiB,CAAC;QAEzD,cAAS,GAAuB,IAAI,GAAG,EAAiB,CAAC;IAU7D,CAAC;IARG;;;OAGG;IACH,MAAM,CAAC,UAAU;QACb,MAAM,GAAG,GAAG,IAAI,UAAQ,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAA;AAZG;IADC,qBAAqB,CAAC,aAAa,CAAC;8BAC1B,GAAG;2CAA2C;AAEzD;IADC,qBAAqB,CAAC,aAAa,CAAC;8BAC1B,GAAG;2CAA2C;AAJhD,QAAQ;IADpB,kBAAkB,EAAE;GACR,QAAQ,CAcpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as YAML from 'yaml';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
export class VSLAMConfiguration {
|
|
4
|
+
/**
|
|
5
|
+
* Convert the configuration to YAML string
|
|
6
|
+
* @returns {string} YAML output string
|
|
7
|
+
*/
|
|
8
|
+
toYAML() {
|
|
9
|
+
return YAML.stringify(this);
|
|
10
|
+
}
|
|
11
|
+
static fromYAML(yamlString) {
|
|
12
|
+
return VSLAMConfiguration.fromParsedYAML(YAML.parse(yamlString));
|
|
13
|
+
}
|
|
14
|
+
static fromYAMLFile(filePath) {
|
|
15
|
+
const file = fs.readFileSync(filePath, 'utf8');
|
|
16
|
+
return VSLAMConfiguration.fromParsedYAML(YAML.parse(file));
|
|
17
|
+
}
|
|
18
|
+
static fromParsedYAML(yaml) {
|
|
19
|
+
const instance = new VSLAMConfiguration();
|
|
20
|
+
if (yaml === null || typeof yaml !== 'object') {
|
|
21
|
+
return instance;
|
|
22
|
+
}
|
|
23
|
+
// Copy the properties without letting a malicious document alter the
|
|
24
|
+
// prototype chain (a `__proto__` key) of the instance
|
|
25
|
+
for (const key of Object.keys(yaml)) {
|
|
26
|
+
if (key === '__proto__') {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
Object.defineProperty(instance, key, {
|
|
30
|
+
value: yaml[key],
|
|
31
|
+
writable: true,
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return instance;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=VSLAMConfiguration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMConfiguration.js","sourceRoot":"","sources":["../../../src/nodes/VSLAMConfiguration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,OAAO,kBAAkB;IAM3B;;;OAGG;IACH,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAAkB;QAC9B,OAAO,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,IAAS;QACnC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,qEAAqE;QACrE,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACtB,SAAS;YACb,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACjC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Matrix4, ProcessingNode, TimeService, TimeUnit } from '@openhps/core';
|
|
2
|
+
import { DepthImageFrame, StereoVideoFrame, VideoFrame } from '@openhps/opencv';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import { VSLAMFrame } from '../../data/index.js';
|
|
5
|
+
import { VSLAMService } from '../../service/VSLAMService.js';
|
|
6
|
+
/**
|
|
7
|
+
* VSLAM processing node is a node that takes in a video frame and uses
|
|
8
|
+
* OpenVSLAM to process the video frame.
|
|
9
|
+
*/
|
|
10
|
+
export class VSLAMProcessingNode extends ProcessingNode {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super(options);
|
|
13
|
+
this.systems = [];
|
|
14
|
+
this.options.mapping = this.options.mapping === undefined ? true : this.options.mapping;
|
|
15
|
+
this.once('build', this._onBuild.bind(this));
|
|
16
|
+
this.once('destroy', this._onDestroy.bind(this));
|
|
17
|
+
}
|
|
18
|
+
_onBuild() {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
if (!this.model) {
|
|
21
|
+
return reject(new Error(`Unable to start VSLAM processing without VSLAMService!`));
|
|
22
|
+
}
|
|
23
|
+
this.service = this.model.findService(VSLAMService);
|
|
24
|
+
this.service
|
|
25
|
+
.createSystem(this.options.config)
|
|
26
|
+
.then((uid) => {
|
|
27
|
+
this.systems.push(uid);
|
|
28
|
+
return this.service.findSystemByUID(uid);
|
|
29
|
+
})
|
|
30
|
+
.then((system) => {
|
|
31
|
+
const mapDatabaseExists = this.options.mapDatabaseFile !== undefined && fs.existsSync(this.options.mapDatabaseFile);
|
|
32
|
+
if (mapDatabaseExists) {
|
|
33
|
+
this.logger('debug', {
|
|
34
|
+
msg: `Loading OpenVSLAM map database ...`,
|
|
35
|
+
file: this.options.mapDatabaseFile,
|
|
36
|
+
});
|
|
37
|
+
system.loadMap(this.options.mapDatabaseFile);
|
|
38
|
+
}
|
|
39
|
+
system.startup(!mapDatabaseExists);
|
|
40
|
+
// Global mapper
|
|
41
|
+
if (this.options.mapping) {
|
|
42
|
+
this.logger('debug', {
|
|
43
|
+
msg: `Enable mapping for OpenVSLAM`,
|
|
44
|
+
});
|
|
45
|
+
system.enableMapping();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.logger('debug', {
|
|
49
|
+
msg: `Disabling mapping for OpenVSLAM`,
|
|
50
|
+
});
|
|
51
|
+
system.disableMapping();
|
|
52
|
+
}
|
|
53
|
+
resolve();
|
|
54
|
+
})
|
|
55
|
+
.catch(reject);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
_onDestroy() {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const promises = this.systems.map((systemUID) => this.service.findSystemByUID(systemUID));
|
|
61
|
+
Promise.all(promises)
|
|
62
|
+
.then((systemInstances) => {
|
|
63
|
+
systemInstances.forEach((system) => {
|
|
64
|
+
if (this.options.mapDatabaseFile && this.options.mapping && this.options.persistMapping) {
|
|
65
|
+
// Save mapping
|
|
66
|
+
this.logger('debug', {
|
|
67
|
+
msg: `Saving OpenVSLAM map database ...`,
|
|
68
|
+
file: this.options.mapDatabaseFile,
|
|
69
|
+
});
|
|
70
|
+
system.saveMap(this.options.mapDatabaseFile);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// Delete and shutdown systems
|
|
74
|
+
return Promise.all(this.systems.map((systemUID) => this.service.deleteSystem(systemUID)));
|
|
75
|
+
})
|
|
76
|
+
.then(() => {
|
|
77
|
+
resolve();
|
|
78
|
+
})
|
|
79
|
+
.catch(reject);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
process(data) {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
let uid = undefined;
|
|
85
|
+
this.service
|
|
86
|
+
.findSystemUIDByObject(data.source)
|
|
87
|
+
.then((systemUID) => {
|
|
88
|
+
uid = systemUID;
|
|
89
|
+
return this.service.findSystemByUID(uid);
|
|
90
|
+
})
|
|
91
|
+
.then((system) => {
|
|
92
|
+
if (!system) {
|
|
93
|
+
return resolve(undefined);
|
|
94
|
+
}
|
|
95
|
+
const out = new VSLAMFrame(data);
|
|
96
|
+
const timestamp = TimeService.getUnit().convert(data.phenomenonTimestamp, TimeUnit.SECOND);
|
|
97
|
+
// Process the frame differently depending on the type of video frame
|
|
98
|
+
if (data instanceof VideoFrame) {
|
|
99
|
+
out.image = data.image;
|
|
100
|
+
system.feedMonocularFrame(data.image, timestamp);
|
|
101
|
+
}
|
|
102
|
+
else if (data instanceof StereoVideoFrame) {
|
|
103
|
+
out.image = data.left.image;
|
|
104
|
+
system.feedStereoFrame(data.left.image, data.right.image, timestamp);
|
|
105
|
+
}
|
|
106
|
+
else if (data instanceof DepthImageFrame) {
|
|
107
|
+
out.image = data.image;
|
|
108
|
+
system.feedRGBDFrame(data.image, data.depth, timestamp);
|
|
109
|
+
}
|
|
110
|
+
// Fetch the current camera pose
|
|
111
|
+
const pose = new Matrix4().fromArray(system.getMapPublisher().getCurrentCamPose());
|
|
112
|
+
out.cameraPose = pose;
|
|
113
|
+
out.systemUID = uid;
|
|
114
|
+
resolve(out);
|
|
115
|
+
})
|
|
116
|
+
.catch(reject);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=VSLAMProcessingNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMProcessingNode.js","sourceRoot":"","sources":["../../../../src/nodes/processing/VSLAMProcessingNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/nodes/processing/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SinkNode } from '@openhps/core';
|
|
2
|
+
import { SocketPublisher } from '../../openvslam';
|
|
3
|
+
import { VSLAMService } from '../../service/VSLAMService.js';
|
|
4
|
+
export class VSLAMSocketPublisher extends SinkNode {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
var _a;
|
|
7
|
+
super(options);
|
|
8
|
+
this.publishers = new Map();
|
|
9
|
+
this.options = options !== null && options !== void 0 ? options : {};
|
|
10
|
+
this.options.url = (_a = this.options.url) !== null && _a !== void 0 ? _a : 'http://localhost:3000';
|
|
11
|
+
this.once('build', this._onBuild.bind(this));
|
|
12
|
+
this.once('destroy', this._onDestroy.bind(this));
|
|
13
|
+
}
|
|
14
|
+
_onBuild() {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
if (!this.model) {
|
|
17
|
+
return reject(new Error(`Unable to start VSLAM processing without VSLAMService!`));
|
|
18
|
+
}
|
|
19
|
+
this.service = this.model.findService(VSLAMService);
|
|
20
|
+
if (!this.service) {
|
|
21
|
+
return reject(new Error(`Unable to start VSLAM socket publisher without VSLAMService!`));
|
|
22
|
+
}
|
|
23
|
+
resolve();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
_onDestroy() {
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
this.publishers.forEach((publisher) => {
|
|
29
|
+
publisher.terminate();
|
|
30
|
+
});
|
|
31
|
+
resolve();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
onPush(frame, options) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
if (!frame.systemUID) {
|
|
37
|
+
return resolve();
|
|
38
|
+
}
|
|
39
|
+
const existingPublisher = this.publishers.get(frame.systemUID);
|
|
40
|
+
if (existingPublisher) {
|
|
41
|
+
return resolve();
|
|
42
|
+
}
|
|
43
|
+
this.service
|
|
44
|
+
.findSystemByUID(frame.systemUID)
|
|
45
|
+
.then((system) => {
|
|
46
|
+
if (!system) {
|
|
47
|
+
return reject(new Error(`VSLAM system ${frame.systemUID} not found!`));
|
|
48
|
+
}
|
|
49
|
+
// A publisher may have been created by a concurrent push
|
|
50
|
+
if (this.publishers.has(frame.systemUID)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const publisher = new SocketPublisher(system, this.options.url);
|
|
54
|
+
publisher.run();
|
|
55
|
+
this.publishers.set(frame.systemUID, publisher);
|
|
56
|
+
})
|
|
57
|
+
.then(() => {
|
|
58
|
+
resolve();
|
|
59
|
+
})
|
|
60
|
+
.catch(reject);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=VSLAMSocketPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSLAMSocketPublisher.js","sourceRoot":"","sources":["../../../../src/nodes/sink/VSLAMSocketPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/nodes/sink/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|