@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.
Files changed (144) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +115 -2
  3. package/cc/config.cc +49 -0
  4. package/cc/config.h +24 -0
  5. package/cc/frame_publisher.cc +62 -0
  6. package/cc/frame_publisher.h +27 -0
  7. package/cc/graph_node.cc +78 -0
  8. package/cc/graph_node.h +26 -0
  9. package/cc/keyframe.cc +81 -0
  10. package/cc/keyframe.h +27 -0
  11. package/cc/landmark.cc +85 -0
  12. package/cc/landmark.h +26 -0
  13. package/cc/map_publisher.cc +119 -0
  14. package/cc/map_publisher.h +33 -0
  15. package/cc/openvslam.cc +26 -0
  16. package/cc/pangolin_viewer/viewer.h +26 -0
  17. package/cc/socket_publisher/publisher.cc +84 -0
  18. package/cc/socket_publisher/publisher.h +26 -0
  19. package/cc/system.cc +190 -0
  20. package/cc/system.h +47 -0
  21. package/dist/cjs/data/VSLAMFrame.js +44 -0
  22. package/dist/cjs/data/VSLAMFrame.js.map +1 -0
  23. package/dist/cjs/data/VSLAMGraphNode.js +7 -0
  24. package/dist/cjs/data/VSLAMGraphNode.js.map +1 -0
  25. package/dist/cjs/data/VSLAMKeyFrame.js +56 -0
  26. package/dist/cjs/data/VSLAMKeyFrame.js.map +1 -0
  27. package/dist/cjs/data/VSLAMLandmark.js +53 -0
  28. package/dist/cjs/data/VSLAMLandmark.js.map +1 -0
  29. package/dist/cjs/data/VSLAMMap.js +36 -0
  30. package/dist/cjs/data/VSLAMMap.js.map +1 -0
  31. package/dist/cjs/data/index.js +8 -0
  32. package/dist/cjs/data/index.js.map +1 -0
  33. package/dist/cjs/index.js +9 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/nodes/VSLAMConfiguration.js +43 -0
  36. package/dist/cjs/nodes/VSLAMConfiguration.js.map +1 -0
  37. package/dist/cjs/nodes/index.js +7 -0
  38. package/dist/cjs/nodes/index.js.map +1 -0
  39. package/dist/cjs/nodes/processing/VSLAMProcessingNode.js +124 -0
  40. package/dist/cjs/nodes/processing/VSLAMProcessingNode.js.map +1 -0
  41. package/dist/cjs/nodes/processing/index.js +5 -0
  42. package/dist/cjs/nodes/processing/index.js.map +1 -0
  43. package/dist/cjs/nodes/sink/VSLAMSocketPublisher.js +68 -0
  44. package/dist/cjs/nodes/sink/VSLAMSocketPublisher.js.map +1 -0
  45. package/dist/cjs/nodes/sink/index.js +5 -0
  46. package/dist/cjs/nodes/sink/index.js.map +1 -0
  47. package/dist/cjs/package.json +3 -0
  48. package/dist/cjs/service/VSLAMService.js +121 -0
  49. package/dist/cjs/service/VSLAMService.js.map +1 -0
  50. package/dist/cjs/service/index.js +5 -0
  51. package/dist/cjs/service/index.js.map +1 -0
  52. package/dist/cjs/tsconfig.bundle.cjs.tsbuildinfo +1 -0
  53. package/dist/esm/data/VSLAMFrame.js +41 -0
  54. package/dist/esm/data/VSLAMFrame.js.map +1 -0
  55. package/dist/esm/data/VSLAMGraphNode.js +3 -0
  56. package/dist/esm/data/VSLAMGraphNode.js.map +1 -0
  57. package/dist/esm/data/VSLAMKeyFrame.js +53 -0
  58. package/dist/esm/data/VSLAMKeyFrame.js.map +1 -0
  59. package/dist/esm/data/VSLAMLandmark.js +50 -0
  60. package/dist/esm/data/VSLAMLandmark.js.map +1 -0
  61. package/dist/esm/data/VSLAMMap.js +33 -0
  62. package/dist/esm/data/VSLAMMap.js.map +1 -0
  63. package/dist/esm/data/index.js +5 -0
  64. package/dist/esm/data/index.js.map +1 -0
  65. package/dist/esm/index.js +5 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/nodes/VSLAMConfiguration.js +39 -0
  68. package/dist/esm/nodes/VSLAMConfiguration.js.map +1 -0
  69. package/dist/esm/nodes/index.js +4 -0
  70. package/dist/esm/nodes/index.js.map +1 -0
  71. package/dist/esm/nodes/processing/VSLAMProcessingNode.js +120 -0
  72. package/dist/esm/nodes/processing/VSLAMProcessingNode.js.map +1 -0
  73. package/dist/esm/nodes/processing/index.js +2 -0
  74. package/dist/esm/nodes/processing/index.js.map +1 -0
  75. package/dist/esm/nodes/sink/VSLAMSocketPublisher.js +64 -0
  76. package/dist/esm/nodes/sink/VSLAMSocketPublisher.js.map +1 -0
  77. package/dist/esm/nodes/sink/index.js +2 -0
  78. package/dist/esm/nodes/sink/index.js.map +1 -0
  79. package/dist/esm/package.json +3 -0
  80. package/dist/esm/service/VSLAMService.js +117 -0
  81. package/dist/esm/service/VSLAMService.js.map +1 -0
  82. package/dist/esm/service/index.js +2 -0
  83. package/dist/esm/service/index.js.map +1 -0
  84. package/dist/esm/tsconfig.bundle.esm.tsbuildinfo +1 -0
  85. package/dist/esm/tsconfig.bundle.types.tsbuildinfo +1 -0
  86. package/dist/types/data/VSLAMFrame.d.ts +16 -0
  87. package/dist/types/data/VSLAMFrame.d.ts.map +1 -0
  88. package/dist/types/data/VSLAMGraphNode.d.ts +3 -0
  89. package/dist/types/data/VSLAMGraphNode.d.ts.map +1 -0
  90. package/dist/types/data/VSLAMKeyFrame.d.ts +28 -0
  91. package/dist/types/data/VSLAMKeyFrame.d.ts.map +1 -0
  92. package/dist/types/data/VSLAMLandmark.d.ts +20 -0
  93. package/dist/types/data/VSLAMLandmark.d.ts.map +1 -0
  94. package/dist/types/data/VSLAMMap.d.ts +13 -0
  95. package/dist/types/data/VSLAMMap.d.ts.map +1 -0
  96. package/dist/types/data/index.d.ts +5 -0
  97. package/dist/types/data/index.d.ts.map +1 -0
  98. package/dist/types/index.d.ts +5 -0
  99. package/dist/types/index.d.ts.map +1 -0
  100. package/dist/types/nodes/VSLAMConfiguration.d.ts +36 -0
  101. package/dist/types/nodes/VSLAMConfiguration.d.ts.map +1 -0
  102. package/dist/types/nodes/index.d.ts +4 -0
  103. package/dist/types/nodes/index.d.ts.map +1 -0
  104. package/dist/types/nodes/processing/VSLAMProcessingNode.d.ts +36 -0
  105. package/dist/types/nodes/processing/VSLAMProcessingNode.d.ts.map +1 -0
  106. package/dist/types/nodes/processing/index.d.ts +2 -0
  107. package/dist/types/nodes/processing/index.d.ts.map +1 -0
  108. package/dist/types/nodes/sink/VSLAMSocketPublisher.d.ts +17 -0
  109. package/dist/types/nodes/sink/VSLAMSocketPublisher.d.ts.map +1 -0
  110. package/dist/types/nodes/sink/index.d.ts +2 -0
  111. package/dist/types/nodes/sink/index.d.ts.map +1 -0
  112. package/dist/types/service/VSLAMService.d.ts +57 -0
  113. package/dist/types/service/VSLAMService.d.ts.map +1 -0
  114. package/dist/types/service/index.d.ts +2 -0
  115. package/dist/types/service/index.d.ts.map +1 -0
  116. package/install/install.js +85 -0
  117. package/install/parseEnv.js +7 -0
  118. package/package.json +125 -5
  119. package/src/data/VSLAMFrame.ts +48 -0
  120. package/src/data/VSLAMGraphNode.ts +1 -0
  121. package/src/data/VSLAMKeyFrame.ts +50 -0
  122. package/src/data/VSLAMLandmark.ts +42 -0
  123. package/src/data/VSLAMMap.ts +20 -0
  124. package/src/data/index.ts +4 -0
  125. package/src/index.ts +4 -0
  126. package/src/nodes/VSLAMConfiguration.ts +72 -0
  127. package/src/nodes/index.ts +3 -0
  128. package/src/nodes/processing/VSLAMProcessingNode.ts +152 -0
  129. package/src/nodes/processing/index.ts +1 -0
  130. package/src/nodes/sink/VSLAMSocketPublisher.ts +75 -0
  131. package/src/nodes/sink/index.ts +1 -0
  132. package/src/openvslam/index.d.ts +9 -0
  133. package/src/openvslam/index.js +8 -0
  134. package/src/openvslam/typings/Config.d.ts +3 -0
  135. package/src/openvslam/typings/FramePublisher.d.ts +12 -0
  136. package/src/openvslam/typings/GraphNode.d.ts +5 -0
  137. package/src/openvslam/typings/KeyFrame.d.ts +24 -0
  138. package/src/openvslam/typings/Landmark.d.ts +19 -0
  139. package/src/openvslam/typings/MapPublisher.d.ts +21 -0
  140. package/src/openvslam/typings/PangolinViewer.d.ts +9 -0
  141. package/src/openvslam/typings/SocketPublisher.d.ts +9 -0
  142. package/src/openvslam/typings/System.d.ts +45 -0
  143. package/src/service/VSLAMService.ts +130 -0
  144. package/src/service/index.ts +1 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,117 @@
1
+ import { Service } from '@openhps/core';
2
+ import { Config, System } from '../openvslam';
3
+ /**
4
+ * Visual SLAM service for managing running systems
5
+ */
6
+ export class VSLAMService extends Service {
7
+ constructor(options) {
8
+ super();
9
+ this.systems = new Map();
10
+ this.objectSystemsMap = new Map();
11
+ this.systemObjectsMap = new Map();
12
+ this.options = options !== null && options !== void 0 ? options : {};
13
+ }
14
+ /**
15
+ * Create a new OpenVSLAM system
16
+ * @param {string} config Configuration YAML file
17
+ * @param configFile
18
+ * @param {DataObject} [object] Optional data object
19
+ * @returns {Promise<string>} Promise of the system UID
20
+ */
21
+ createSystem(configFile, object) {
22
+ return new Promise((resolve) => {
23
+ var _a;
24
+ const uid = this.generateUUID();
25
+ const config = new Config(configFile);
26
+ const system = new System(config, this.options.vocabularyFile);
27
+ this.systems.set(uid, system);
28
+ if (object) {
29
+ this.objectSystemsMap.set(object.uid, uid);
30
+ const objects = (_a = this.systemObjectsMap.get(uid)) !== null && _a !== void 0 ? _a : [];
31
+ objects.push(object.uid);
32
+ this.systemObjectsMap.set(uid, objects);
33
+ }
34
+ else {
35
+ this.globalSystemUID = uid;
36
+ }
37
+ resolve(uid);
38
+ });
39
+ }
40
+ /**
41
+ * Delete an OpenVSLAM system
42
+ * @param {string} systemUID System UID to delete
43
+ * @returns {Promise<void>} Promise of system deletion; resolves immediately when the system is already missing
44
+ */
45
+ deleteSystem(systemUID) {
46
+ return new Promise((resolve, reject) => {
47
+ this.findSystemByUID(systemUID)
48
+ .then((system) => {
49
+ // Deleting an already-missing system is a no-op
50
+ if (!system) {
51
+ return resolve();
52
+ }
53
+ // Shutdown the system
54
+ system.shutdown();
55
+ this.systems.delete(systemUID);
56
+ const objectUIDs = this.systemObjectsMap.get(systemUID);
57
+ this.systemObjectsMap.delete(systemUID);
58
+ // The global system has no objects associated with it
59
+ if (objectUIDs) {
60
+ objectUIDs.forEach((uid) => {
61
+ this.objectSystemsMap.delete(uid);
62
+ });
63
+ }
64
+ if (systemUID === this.globalSystemUID) {
65
+ this.globalSystemUID = undefined;
66
+ }
67
+ resolve();
68
+ })
69
+ .catch(reject);
70
+ });
71
+ }
72
+ /**
73
+ * Find the global system
74
+ * @returns {Promise<System>} Promise of the global system
75
+ */
76
+ findGlobalSystem() {
77
+ return this.findSystemByUID(this.globalSystemUID);
78
+ }
79
+ /**
80
+ * Find a system by its UID
81
+ * @param {string} uid Unique Identifier
82
+ * @returns {Promise<System>} Promise of a system
83
+ */
84
+ findSystemByUID(uid) {
85
+ return new Promise((resolve) => {
86
+ const system = this.systems.get(uid);
87
+ return resolve(system);
88
+ });
89
+ }
90
+ /**
91
+ * Find a system uid by an object
92
+ * @param {DataObject} object Data object to get system for
93
+ * @returns {Promise<string>} Promise of a system uid if found
94
+ */
95
+ findSystemUIDByObject(object) {
96
+ return new Promise((resolve) => {
97
+ const systemUID = this.objectSystemsMap.get(object.uid);
98
+ if (!systemUID) {
99
+ return resolve(this.globalSystemUID);
100
+ }
101
+ return resolve(systemUID);
102
+ });
103
+ }
104
+ /**
105
+ * Find a system by an object
106
+ * @param {DataObject} object Data object to get system for
107
+ * @returns {Promise<System>} Promise of a system if found
108
+ */
109
+ findSystemByObject(object) {
110
+ const systemUID = this.objectSystemsMap.get(object.uid);
111
+ if (!systemUID) {
112
+ return this.findGlobalSystem();
113
+ }
114
+ return this.findSystemByUID(systemUID);
115
+ }
116
+ }
117
+ //# sourceMappingURL=VSLAMService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMService.js","sourceRoot":"","sources":["../../../src/service/VSLAMService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './VSLAMService.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -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 @@
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,16 @@
1
+ import { Matrix4 } from '@openhps/core';
2
+ import { VideoFrame } from '@openhps/opencv';
3
+ export declare class VSLAMFrame extends VideoFrame {
4
+ systemUID: string;
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(): Matrix4;
10
+ /**
11
+ * Set the camera at the time of the frame
12
+ * @param {Matrix4} pose Camera pose
13
+ */
14
+ set cameraPose(pose: Matrix4);
15
+ }
16
+ //# sourceMappingURL=VSLAMFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMFrame.d.ts","sourceRoot":"","sources":["../../../src/data/VSLAMFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,OAAO,EAKV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBACa,UAAW,SAAQ,UAAU;IAEtC,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CAUxB;IAED;;;OAGG;IACH,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAW3B;CACJ"}
@@ -0,0 +1,3 @@
1
+ export declare class VSLAMGraphNode {
2
+ }
3
+ //# sourceMappingURL=VSLAMGraphNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMGraphNode.d.ts","sourceRoot":"","sources":["../../../src/data/VSLAMGraphNode.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;CAAG"}
@@ -0,0 +1,28 @@
1
+ import { KeyFrame } from '../openvslam';
2
+ import { VSLAMFrame } from './VSLAMFrame';
3
+ import { VSLAMLandmark } from './VSLAMLandmark';
4
+ export declare class VSLAMKeyFrame extends VSLAMFrame {
5
+ willBeErased: boolean;
6
+ /**
7
+ * Create a VSLAM keyframe from native object
8
+ * @param {KeyFrame} keyframe Native object
9
+ * @returns {VSLAMKeyFrame} VSLAM keyframe instance
10
+ */
11
+ static fromNative(keyframe: KeyFrame): VSLAMKeyFrame;
12
+ /**
13
+ * Get frame landmarks
14
+ * @returns {VSLAMLandmark[]} Array of landmarks found in this frame
15
+ */
16
+ get landmarks(): VSLAMLandmark[];
17
+ /**
18
+ * Set frame landmarks
19
+ * @param {VSLAMLandmark[]} values Array of landmarks
20
+ */
21
+ set landmarks(values: VSLAMLandmark[]);
22
+ /**
23
+ * Add a landmark to the frame
24
+ * @param {VSLAMLandmark} landmark Landmark to add
25
+ */
26
+ addLandmark(landmark: VSLAMLandmark): void;
27
+ }
28
+ //# sourceMappingURL=VSLAMKeyFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMKeyFrame.d.ts","sourceRoot":"","sources":["../../../src/data/VSLAMKeyFrame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBACa,aAAc,SAAQ,UAAU;IACzC,YAAY,UAAS;IAErB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;IAYpD;;;OAGG;IACH,IAAI,SAAS,IAAI,aAAa,EAAE,CAE/B;IAED;;;OAGG;IACH,IAAI,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,EAEpC;IAED;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;CAG7C"}
@@ -0,0 +1,20 @@
1
+ import { DataObject } from '@openhps/core';
2
+ import { Landmark } from '../openvslam';
3
+ export declare class VSLAMLandmark extends DataObject {
4
+ keyframeUID: string;
5
+ referenceKeyframeUID: string;
6
+ observed: number;
7
+ observable: number;
8
+ /**
9
+ * Create a VSLAM landmark from native object
10
+ * @param {Landmark} landmark Native object
11
+ * @returns {VSLAMLandmark} VSLAM landmark instance
12
+ */
13
+ static fromNative(landmark: Landmark): VSLAMLandmark;
14
+ /**
15
+ * Convert the VSLAM landmark to native JSON serialization
16
+ * @returns {any} Native JSON serialization
17
+ */
18
+ toNativeJSON(): any;
19
+ }
20
+ //# sourceMappingURL=VSLAMLandmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMLandmark.d.ts","sourceRoot":"","sources":["../../../src/data/VSLAMLandmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,UAAU,EAAsD,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,qBACa,aAAc,SAAQ,UAAU;IAEzC,WAAW,EAAE,MAAM,CAAC;IAEpB,oBAAoB,EAAE,MAAM,CAAC;IAE7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;IAepD;;;OAGG;IACH,YAAY,IAAI,GAAG;CAGtB"}
@@ -0,0 +1,13 @@
1
+ import { DataObject } from '@openhps/core';
2
+ import { VSLAMKeyFrame } from './VSLAMKeyFrame';
3
+ import { VSLAMLandmark } from './VSLAMLandmark';
4
+ export declare class VSLAMMap extends DataObject {
5
+ landmarks: Set<VSLAMLandmark>;
6
+ keyFrames: Set<VSLAMKeyFrame>;
7
+ /**
8
+ * Create a VSLAM map from native object
9
+ * @returns {VSLAMMap} VSLAM map instance
10
+ */
11
+ static fromNative(): VSLAMMap;
12
+ }
13
+ //# sourceMappingURL=VSLAMMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMMap.d.ts","sourceRoot":"","sources":["../../../src/data/VSLAMMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA6C,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBACa,QAAS,SAAQ,UAAU;IAEpC,SAAS,EAAE,GAAG,CAAC,aAAa,CAAC,CAA4B;IAEzD,SAAS,EAAE,GAAG,CAAC,aAAa,CAAC,CAA4B;IAEzD;;;OAGG;IACH,MAAM,CAAC,UAAU,IAAI,QAAQ;CAIhC"}
@@ -0,0 +1,5 @@
1
+ export * from './VSLAMFrame';
2
+ export * from './VSLAMKeyFrame';
3
+ export * from './VSLAMLandmark';
4
+ export * from './VSLAMMap';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","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,5 @@
1
+ export * from './data';
2
+ export * from './nodes';
3
+ export * from './service';
4
+ export * as OpenVSLAM from './openvslam';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","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,36 @@
1
+ import { CameraObject } from '@openhps/video';
2
+ export declare class VSLAMConfiguration {
3
+ /**
4
+ * Camera object
5
+ */
6
+ camera: CameraObject;
7
+ /**
8
+ * Convert the configuration to YAML string
9
+ * @returns {string} YAML output string
10
+ */
11
+ toYAML(): string;
12
+ static fromYAML(yamlString: string): VSLAMConfiguration;
13
+ static fromYAMLFile(filePath: string): VSLAMConfiguration;
14
+ private static fromParsedYAML;
15
+ }
16
+ export type CameraOptions = RadialDivisionCameraOptions | PerspectiveCameraOptions | FisheyeCameraOptions;
17
+ export interface RadialDivisionCameraOptions {
18
+ model: 'radial_division';
19
+ distortion: number;
20
+ }
21
+ export interface PerspectiveCameraOptions {
22
+ model: 'perspective';
23
+ k1: number;
24
+ k2: number;
25
+ p1: number;
26
+ p2: number;
27
+ k3: number;
28
+ }
29
+ export interface FisheyeCameraOptions {
30
+ model: 'fisheye';
31
+ k1: number;
32
+ k2: number;
33
+ k3: number;
34
+ k4: number;
35
+ }
36
+ //# sourceMappingURL=VSLAMConfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMConfiguration.d.ts","sourceRoot":"","sources":["../../../src/nodes/VSLAMConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,qBAAa,kBAAkB;IAC3B;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAIvD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAKzD,OAAO,CAAC,MAAM,CAAC,cAAc;CAoBhC;AAED,MAAM,MAAM,aAAa,GAAG,2BAA2B,GAAG,wBAAwB,GAAG,oBAAoB,CAAC;AAE1G,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,4 @@
1
+ export * from './processing';
2
+ export * from './sink';
3
+ export * from './VSLAMConfiguration';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { ProcessingNode, ProcessingNodeOptions } from '@openhps/core';
2
+ import { DepthImageFrame, StereoVideoFrame, VideoFrame } from '@openhps/opencv';
3
+ import { VSLAMFrame } from '../../data';
4
+ import { VSLAMService } from '../../service/VSLAMService';
5
+ /**
6
+ * VSLAM processing node is a node that takes in a video frame and uses
7
+ * OpenVSLAM to process the video frame.
8
+ */
9
+ export declare class VSLAMProcessingNode<In extends VideoFrame | StereoVideoFrame | DepthImageFrame, Out extends VSLAMFrame> extends ProcessingNode<In, Out> {
10
+ protected options: VSLAMProcessingNodeOptions;
11
+ protected service: VSLAMService;
12
+ protected systems: string[];
13
+ constructor(options?: VSLAMProcessingNodeOptions);
14
+ private _onBuild;
15
+ private _onDestroy;
16
+ process(data: In): Promise<Out>;
17
+ }
18
+ export interface VSLAMProcessingNodeOptions extends ProcessingNodeOptions {
19
+ /**
20
+ * Enable mapping and localization
21
+ */
22
+ mapping?: boolean;
23
+ /**
24
+ * Configuration file
25
+ */
26
+ config: string;
27
+ /**
28
+ * Map database file (MSG) for loading and storage
29
+ */
30
+ mapDatabaseFile?: string;
31
+ /**
32
+ * Persist the mapping to the map database file
33
+ */
34
+ persistMapping?: boolean;
35
+ }
36
+ //# sourceMappingURL=VSLAMProcessingNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMProcessingNode.d.ts","sourceRoot":"","sources":["../../../../src/nodes/processing/VSLAMProcessingNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,qBAAqB,EAAyB,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;GAGG;AACH,qBAAa,mBAAmB,CAC5B,EAAE,SAAS,UAAU,GAAG,gBAAgB,GAAG,eAAe,EAC1D,GAAG,SAAS,UAAU,CACxB,SAAQ,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC;IAC7B,SAAS,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;gBAErB,OAAO,CAAC,EAAE,0BAA0B;IAQhD,OAAO,CAAC,QAAQ;IA4ChB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAqClC;AAED,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACrE;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export * from './VSLAMProcessingNode';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/nodes/processing/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { PushOptions, SinkNode, SinkNodeOptions } from '@openhps/core';
2
+ import { VSLAMFrame } from '../../data';
3
+ import { SocketPublisher } from '../../openvslam';
4
+ import { VSLAMService } from '../../service/VSLAMService';
5
+ export declare class VSLAMSocketPublisher<In extends VSLAMFrame> extends SinkNode<In> {
6
+ protected options: VSLAMSocketViewerOptions;
7
+ protected service: VSLAMService;
8
+ protected publishers: Map<string, SocketPublisher>;
9
+ constructor(options?: VSLAMSocketViewerOptions);
10
+ private _onBuild;
11
+ private _onDestroy;
12
+ onPush(frame: In, options?: PushOptions): Promise<void>;
13
+ }
14
+ export interface VSLAMSocketViewerOptions extends SinkNodeOptions {
15
+ url?: string;
16
+ }
17
+ //# sourceMappingURL=VSLAMSocketPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMSocketPublisher.d.ts","sourceRoot":"","sources":["../../../../src/nodes/sink/VSLAMSocketPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,qBAAa,oBAAoB,CAAC,EAAE,SAAS,UAAU,CAAE,SAAQ,QAAQ,CAAC,EAAE,CAAC;IACzE,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC5C,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAa;gBAEnD,OAAO,CAAC,EAAE,wBAAwB;IAS9C,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,UAAU;IASlB,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B1D;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export * from './VSLAMSocketPublisher';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/nodes/sink/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { DataObject, Service } from '@openhps/core';
2
+ import { System } from '../openvslam';
3
+ /**
4
+ * Visual SLAM service for managing running systems
5
+ */
6
+ export declare class VSLAMService extends Service {
7
+ protected globalSystemUID: string;
8
+ protected systems: Map<string, System>;
9
+ protected objectSystemsMap: Map<string, string>;
10
+ protected systemObjectsMap: Map<string, string[]>;
11
+ protected options: VSLAMServiceOptions;
12
+ constructor(options?: VSLAMServiceOptions);
13
+ /**
14
+ * Create a new OpenVSLAM system
15
+ * @param {string} config Configuration YAML file
16
+ * @param configFile
17
+ * @param {DataObject} [object] Optional data object
18
+ * @returns {Promise<string>} Promise of the system UID
19
+ */
20
+ createSystem(configFile: string, object?: DataObject): Promise<string>;
21
+ /**
22
+ * Delete an OpenVSLAM system
23
+ * @param {string} systemUID System UID to delete
24
+ * @returns {Promise<void>} Promise of system deletion; resolves immediately when the system is already missing
25
+ */
26
+ deleteSystem(systemUID: string): Promise<void>;
27
+ /**
28
+ * Find the global system
29
+ * @returns {Promise<System>} Promise of the global system
30
+ */
31
+ findGlobalSystem(): Promise<System>;
32
+ /**
33
+ * Find a system by its UID
34
+ * @param {string} uid Unique Identifier
35
+ * @returns {Promise<System>} Promise of a system
36
+ */
37
+ findSystemByUID(uid: string): Promise<System>;
38
+ /**
39
+ * Find a system uid by an object
40
+ * @param {DataObject} object Data object to get system for
41
+ * @returns {Promise<string>} Promise of a system uid if found
42
+ */
43
+ findSystemUIDByObject(object: DataObject): Promise<string>;
44
+ /**
45
+ * Find a system by an object
46
+ * @param {DataObject} object Data object to get system for
47
+ * @returns {Promise<System>} Promise of a system if found
48
+ */
49
+ findSystemByObject(object: DataObject): Promise<System>;
50
+ }
51
+ export interface VSLAMServiceOptions {
52
+ /**
53
+ * ORB vocabulary file path
54
+ */
55
+ vocabularyFile?: string;
56
+ }
57
+ //# sourceMappingURL=VSLAMService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSLAMService.d.ts","sourceRoot":"","sources":["../../../src/service/VSLAMService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAU,MAAM,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACrC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACnD,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAC5D,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAC9D,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE3B,OAAO,CAAC,EAAE,mBAAmB;IAKzC;;;;;;OAMG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBtE;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B9C;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAU1D;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAO1D;AAED,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export * from './VSLAMService';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,85 @@
1
+ // npmlog is deprecated at every published version, and this file used four of its
2
+ // calls for plain prefixed logging. Kept as a local shim rather than pulling in a
3
+ // replacement dependency for an install script.
4
+ const log = {
5
+ info: (prefix, message) => console.log(`${prefix} ${message}`),
6
+ warn: (prefix, message) => console.warn(`${prefix} ${message}`),
7
+ error: (...args) => console.error(...args),
8
+ }
9
+ const path = require('path')
10
+ const child_process = require('child_process')
11
+ const { OpenCVBuilder } = require('@u4/opencv-build')
12
+
13
+ function resolvePath(filePath, file) {
14
+ if (!filePath) {
15
+ return undefined
16
+ }
17
+ return (file ? path.resolve(filePath, file) : path.resolve(filePath)).replace(/\\/g, '/')
18
+ }
19
+
20
+
21
+ const OPENCV_INCLUDE_DIR = resolvePath(process.env.OPENCV_INCLUDE_DIR)
22
+ const OPENVSLAM_INCLUDE_DIR = resolvePath(process.env.OPENVSLAM_INCLUDE_DIR)
23
+ const OPENCV_LIB_DIR = resolvePath(process.env.OPENCV_LIB_DIR)
24
+ const OPENVSLAM_LIB_DIR = resolvePath(process.env.OPENVSLAM_LIB_DIR)
25
+
26
+ // The node-gyp build below links against a system OpenVSLAM/stella_vslam, which
27
+ // only exists in this project's openvslam-nodejs image (see docker.yml). Without
28
+ // these set there is nothing to compile against, and every path.join() below threw
29
+ // ERR_INVALID_ARG_TYPE on the undefined value -- so `npm ci` could not complete at
30
+ // all on a plain machine, taking the TypeScript build, lint and docs down with it.
31
+ // Skip the native step instead, loudly.
32
+ if (!OPENVSLAM_INCLUDE_DIR || !OPENVSLAM_LIB_DIR || !OPENCV_INCLUDE_DIR || !OPENCV_LIB_DIR) {
33
+ log.warn(
34
+ 'install',
35
+ 'OPENCV_INCLUDE_DIR, OPENCV_LIB_DIR, OPENVSLAM_INCLUDE_DIR and OPENVSLAM_LIB_DIR ' +
36
+ 'must all be set to build the native bindings; skipping node-gyp. The JavaScript ' +
37
+ 'is installed, but anything touching the native addon will not work.',
38
+ )
39
+ process.exit(0)
40
+ }
41
+
42
+ const includes = [
43
+ OPENCV_INCLUDE_DIR,
44
+ OPENVSLAM_INCLUDE_DIR,
45
+ path.join(OPENVSLAM_INCLUDE_DIR,"../3rd", "json", "include"),
46
+ path.join(OPENVSLAM_INCLUDE_DIR,"../3rd", "spdlog", "include"),
47
+ path.join(OPENVSLAM_INCLUDE_DIR,"../3rd", "FBoW", "include"),
48
+ "/usr/local/include/eigen3",
49
+ "/usr/include/eigen3",
50
+ "/usr/local/include/g2o",
51
+ "/usr/local/include/sioclient",
52
+ "/usr/local/include/",
53
+ "/usr/include/",
54
+ "/usr/include/g2o",
55
+ "node_modules/@u4/opencv4nodejs/cc",
56
+ "node_modules/@u4/opencv4nodejs/cc/core"
57
+ ]
58
+
59
+ const opencvBuilder = new OpenCVBuilder();
60
+ const libraries = [
61
+ "-L" + OPENCV_LIB_DIR,
62
+ ...opencvBuilder.getLibs.getLibs()
63
+ .filter(lib => lib.libPath).map(lib => "-lopencv_" + lib.opencvModule),
64
+ "-Wl,-rpath=" + OPENCV_LIB_DIR,
65
+ "-L" + OPENVSLAM_LIB_DIR,
66
+ "-Wl,-rpath=" + OPENVSLAM_LIB_DIR,
67
+ "-lstella_vslam",
68
+ "-lsocket_publisher"
69
+ ]
70
+
71
+ log.info('install', `using following includes: \n${includes.join("\n")}\n`)
72
+ log.info('install', `using following libraries: \n${libraries.join("\n")}\n`)
73
+
74
+ process.env['OPENVSLAM_INCLUDES'] = includes.join('\n')
75
+ process.env['OPENVSLAM_LIBRARIES'] = libraries.join('\n')
76
+
77
+ const nodegypCmd = 'node-gyp rebuild'
78
+
79
+ log.info('install', `spawning node gyp process: ${nodegypCmd}`)
80
+ const child = child_process.exec(nodegypCmd, { maxBuffer: Infinity }, function(err, stdout, stderr) {
81
+ const _err = err || stderr
82
+ if (_err) log.error(_err)
83
+ })
84
+ child.stdout.pipe(process.stdout)
85
+ child.stderr.pipe(process.stderr)
@@ -0,0 +1,7 @@
1
+ const envName = process.argv[2]
2
+
3
+ if (!envName) {
4
+ throw new Error('no env name passed to parseEnv')
5
+ }
6
+ const outputs = (process.env[envName] || '').split('\n')
7
+ outputs.forEach(o => console.log(o))