Spaces:
Running
Running
Update
Browse files
README.md
CHANGED
@@ -15,7 +15,7 @@ app_port: 8000
|
|
15 |
pinned: true
|
16 |
license: mit
|
17 |
fullWidth: true
|
18 |
-
short_description: Web interface of the RobotHub platform
|
19 |
---
|
20 |
|
21 |
# π€ RobotHub Arena β Frontend
|
|
|
15 |
pinned: true
|
16 |
license: mit
|
17 |
fullWidth: true
|
18 |
+
short_description: Web interface of the RobotHub platform
|
19 |
---
|
20 |
|
21 |
# π€ RobotHub Arena β Frontend
|
bun.lock
CHANGED
@@ -6,6 +6,7 @@
|
|
6 |
"dependencies": {
|
7 |
"@robothub/inference-server-client": "file:./external/RobotHub-InferenceServer/client",
|
8 |
"@robothub/transport-server-client": "file:./external/RobotHub-InferenceServer/external/RobotHub-TransportServer/client/js",
|
|
|
9 |
"@threlte/core": "^8.0.4",
|
10 |
"@threlte/extras": "^9.2.1",
|
11 |
"@types/three": "0.177.0",
|
@@ -255,6 +256,8 @@
|
|
255 |
|
256 |
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.44.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ=="],
|
257 |
|
|
|
|
|
258 |
"@sveltejs/acorn-typescript": ["@sveltejs/acorn-typescript@1.0.5", "", { "peerDependencies": { "acorn": "^8.9.0" } }, "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ=="],
|
259 |
|
260 |
"@sveltejs/adapter-auto": ["@sveltejs/adapter-auto@6.0.1", "", { "peerDependencies": { "@sveltejs/kit": "^2.0.0" } }, "sha512-mcWud3pYGPWM2Pphdj8G9Qiq24nZ8L4LB7coCUckUEy5Y7wOWGJ/enaZ4AtJTcSm5dNK1rIkBRoqt+ae4zlxcQ=="],
|
|
|
6 |
"dependencies": {
|
7 |
"@robothub/inference-server-client": "file:./external/RobotHub-InferenceServer/client",
|
8 |
"@robothub/transport-server-client": "file:./external/RobotHub-InferenceServer/external/RobotHub-TransportServer/client/js",
|
9 |
+
"@sparkjsdev/spark": "^0.1.4",
|
10 |
"@threlte/core": "^8.0.4",
|
11 |
"@threlte/extras": "^9.2.1",
|
12 |
"@types/three": "0.177.0",
|
|
|
256 |
|
257 |
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.44.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ=="],
|
258 |
|
259 |
+
"@sparkjsdev/spark": ["@sparkjsdev/spark@0.1.4", "", { "dependencies": { "fflate": "^0.8.2" } }, "sha512-VbrZFx96mOEYEhdPoeG39lSc1axRULJNqBH1gRqOjGKo1UcG3yVpva6+jJt2Aat3V4kwH8TwdGvlQypzABrxhg=="],
|
260 |
+
|
261 |
"@sveltejs/acorn-typescript": ["@sveltejs/acorn-typescript@1.0.5", "", { "peerDependencies": { "acorn": "^8.9.0" } }, "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ=="],
|
262 |
|
263 |
"@sveltejs/adapter-auto": ["@sveltejs/adapter-auto@6.0.1", "", { "peerDependencies": { "@sveltejs/kit": "^2.0.0" } }, "sha512-mcWud3pYGPWM2Pphdj8G9Qiq24nZ8L4LB7coCUckUEy5Y7wOWGJ/enaZ4AtJTcSm5dNK1rIkBRoqt+ae4zlxcQ=="],
|
package.json
CHANGED
@@ -48,13 +48,14 @@
|
|
48 |
"vite": "^6.3.5"
|
49 |
},
|
50 |
"dependencies": {
|
|
|
|
|
|
|
51 |
"@threlte/core": "^8.0.4",
|
52 |
"@threlte/extras": "^9.2.1",
|
53 |
"@types/three": "0.177.0",
|
54 |
"clsx": "^2.1.1",
|
55 |
"feetech.js": "file:./packages/feetech.js",
|
56 |
-
"@robothub/transport-server-client": "file:./external/RobotHub-InferenceServer/external/RobotHub-TransportServer/client/js",
|
57 |
-
"@robothub/inference-server-client": "file:./external/RobotHub-InferenceServer/client",
|
58 |
"tailwind-merge": "^3.3.0",
|
59 |
"three": "^0.177.0",
|
60 |
"threlte-uikit": "^1.1.0",
|
|
|
48 |
"vite": "^6.3.5"
|
49 |
},
|
50 |
"dependencies": {
|
51 |
+
"@robothub/inference-server-client": "file:./external/RobotHub-InferenceServer/client",
|
52 |
+
"@robothub/transport-server-client": "file:./external/RobotHub-InferenceServer/external/RobotHub-TransportServer/client/js",
|
53 |
+
"@sparkjsdev/spark": "^0.1.4",
|
54 |
"@threlte/core": "^8.0.4",
|
55 |
"@threlte/extras": "^9.2.1",
|
56 |
"@types/three": "0.177.0",
|
57 |
"clsx": "^2.1.1",
|
58 |
"feetech.js": "file:./packages/feetech.js",
|
|
|
|
|
59 |
"tailwind-merge": "^3.3.0",
|
60 |
"three": "^0.177.0",
|
61 |
"threlte-uikit": "^1.1.0",
|
packages/feetech.js/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
{
|
2 |
"name": "feetech.js",
|
3 |
-
"version": "0.0.
|
4 |
"description": "javascript sdk for feetech servos",
|
5 |
"main": "index.mjs",
|
6 |
"files": [
|
|
|
1 |
{
|
2 |
"name": "feetech.js",
|
3 |
+
"version": "0.0.11",
|
4 |
"description": "javascript sdk for feetech servos",
|
5 |
"main": "index.mjs",
|
6 |
"files": [
|
src/lib/components/3d/elements/robot/URDF/primitives/UrdfLink.svelte
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
import UrdfJoint from "./UrdfJoint.svelte";
|
9 |
import type IUrdfRobot from "../interfaces/IUrdfRobot";
|
10 |
import { T } from "@threlte/core";
|
11 |
-
|
12 |
|
13 |
interface Props {
|
14 |
robot: IUrdfRobot;
|
@@ -104,14 +104,14 @@
|
|
104 |
<T.BoxGeometry />
|
105 |
<T.MeshBasicMaterial color="red" />
|
106 |
</T.Mesh>
|
107 |
-
|
108 |
cameraPositionX={joint.origin_xyz[0]}
|
109 |
cameraPositionY={joint.origin_xyz[1]}
|
110 |
cameraPositionZ={joint.origin_xyz[2]}
|
111 |
cameraRotationX={joint.origin_rpy[0]}
|
112 |
cameraRotationY={joint.origin_rpy[1]}
|
113 |
cameraRotationZ={joint.origin_rpy[2]}
|
114 |
-
/>
|
115 |
</T.Group>
|
116 |
</T.Group>
|
117 |
{/if}
|
|
|
8 |
import UrdfJoint from "./UrdfJoint.svelte";
|
9 |
import type IUrdfRobot from "../interfaces/IUrdfRobot";
|
10 |
import { T } from "@threlte/core";
|
11 |
+
import Pointcloud from "@/components/3d/misc/Pointcloud.svelte";
|
12 |
|
13 |
interface Props {
|
14 |
robot: IUrdfRobot;
|
|
|
104 |
<T.BoxGeometry />
|
105 |
<T.MeshBasicMaterial color="red" />
|
106 |
</T.Mesh>
|
107 |
+
<Pointcloud
|
108 |
cameraPositionX={joint.origin_xyz[0]}
|
109 |
cameraPositionY={joint.origin_xyz[1]}
|
110 |
cameraPositionZ={joint.origin_xyz[2]}
|
111 |
cameraRotationX={joint.origin_rpy[0]}
|
112 |
cameraRotationY={joint.origin_rpy[1]}
|
113 |
cameraRotationZ={joint.origin_rpy[2]}
|
114 |
+
/>
|
115 |
</T.Group>
|
116 |
</T.Group>
|
117 |
{/if}
|
src/lib/elements/video/VideoManager.svelte.ts
CHANGED
@@ -36,9 +36,6 @@ export class VideoInstance implements Positionable {
|
|
36 |
active: false,
|
37 |
client: null as videoTypes.VideoProducer | null,
|
38 |
roomId: null as string | null,
|
39 |
-
// New properties for UI state
|
40 |
-
type: null as 'recording' | 'remote' | null,
|
41 |
-
stream: null as MediaStream | null,
|
42 |
});
|
43 |
|
44 |
// Position (reactive and bindable)
|
@@ -275,8 +272,6 @@ export class VideoManager {
|
|
275 |
video.output.active = true;
|
276 |
video.output.client = producer;
|
277 |
video.output.roomId = roomId;
|
278 |
-
video.output.type = 'remote';
|
279 |
-
video.output.stream = video.input.stream;
|
280 |
|
281 |
console.log(`Video output started to room ${roomId} for video ${videoId}`);
|
282 |
return { success: true };
|
@@ -535,8 +530,6 @@ export class VideoManager {
|
|
535 |
video.output.active = true;
|
536 |
video.output.client = producer;
|
537 |
video.output.roomId = result.roomId;
|
538 |
-
video.output.type = 'remote';
|
539 |
-
video.output.stream = video.input.stream;
|
540 |
|
541 |
// Refresh room list
|
542 |
await this.listRooms(workspaceId);
|
@@ -561,8 +554,6 @@ export class VideoManager {
|
|
561 |
video.output.active = false;
|
562 |
video.output.client = null;
|
563 |
video.output.roomId = null;
|
564 |
-
video.output.type = null;
|
565 |
-
video.output.stream = null;
|
566 |
|
567 |
console.log(`Output stopped for video ${videoId}`);
|
568 |
}
|
|
|
36 |
active: false,
|
37 |
client: null as videoTypes.VideoProducer | null,
|
38 |
roomId: null as string | null,
|
|
|
|
|
|
|
39 |
});
|
40 |
|
41 |
// Position (reactive and bindable)
|
|
|
272 |
video.output.active = true;
|
273 |
video.output.client = producer;
|
274 |
video.output.roomId = roomId;
|
|
|
|
|
275 |
|
276 |
console.log(`Video output started to room ${roomId} for video ${videoId}`);
|
277 |
return { success: true };
|
|
|
530 |
video.output.active = true;
|
531 |
video.output.client = producer;
|
532 |
video.output.roomId = result.roomId;
|
|
|
|
|
533 |
|
534 |
// Refresh room list
|
535 |
await this.listRooms(workspaceId);
|
|
|
554 |
video.output.active = false;
|
555 |
video.output.client = null;
|
556 |
video.output.roomId = null;
|
|
|
|
|
557 |
|
558 |
console.log(`Output stopped for video ${videoId}`);
|
559 |
}
|