From 259bc0b5eb908055cfd5b8bec72690f446cb49c4 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 29 Mar 2024 21:15:38 +0100 Subject: [PATCH] Adds actuator service to sync angles --- app2/src/app.css | 4 + app2/src/lib/utilities/model-utilities.ts | 2 +- app2/src/routes/+layout.svelte | 13 +-- app2/src/routes/+layout.ts | 16 +-- app2/src/routes/+page.svelte | 2 +- app2/src/routes/demo/Demo.svelte | 118 ++++++---------------- app2/src/routes/menu.svelte | 2 +- esp32/src/ActuatorStateService.cpp | 53 ++++++++++ esp32/src/ActuatorStateService.h | 96 ++++++++++++++++++ esp32/src/main.cpp | 16 ++- 10 files changed, 207 insertions(+), 115 deletions(-) create mode 100644 esp32/src/ActuatorStateService.cpp create mode 100644 esp32/src/ActuatorStateService.h diff --git a/app2/src/app.css b/app2/src/app.css index af6280c..d1ea8a5 100644 --- a/app2/src/app.css +++ b/app2/src/app.css @@ -2,6 +2,10 @@ @tailwind components; @tailwind utilities; +#nipple_0_0, #nipple_1_1 { + z-index: 10!important; +} + #three-gui-panel { top: 64px; right: 0px; diff --git a/app2/src/lib/utilities/model-utilities.ts b/app2/src/lib/utilities/model-utilities.ts index a5dd4e3..680513b 100644 --- a/app2/src/lib/utilities/model-utilities.ts +++ b/app2/src/lib/utilities/model-utilities.ts @@ -33,7 +33,7 @@ export const loadModelAsync = async ( resolve(Result.err('Failed to load model', error)); } }, - (error) => reject(error) + (error) => resolve(Result.err('Failed to load model', error)) ); }); }; diff --git a/app2/src/routes/+layout.svelte b/app2/src/routes/+layout.svelte index bb15e48..7dc08ef 100644 --- a/app2/src/routes/+layout.svelte +++ b/app2/src/routes/+layout.svelte @@ -17,11 +17,10 @@ export let data: LayoutData; - onMount(() => { + onMount(async () => { if ($user.bearer_token !== '') { validateUser($user); } - menuOpen = false; connectToEventSource(); }); @@ -29,10 +28,6 @@ NotificationSource?.close(); }); - onDestroy(() => { - NotificationSource.close(); - }); - async function validateUser(userdata: userProfile) { try { const response = await fetch('/rest/verifyAuthorization', { @@ -186,15 +181,13 @@ - +
diff --git a/app2/src/routes/+layout.ts b/app2/src/routes/+layout.ts index c6d78ce..506e6a7 100644 --- a/app2/src/routes/+layout.ts +++ b/app2/src/routes/+layout.ts @@ -14,17 +14,8 @@ const registerFetchIntercept = async () => { }; }; -const setup = async () => { - const outControllerData = (await import('$lib/stores/model-store')).outControllerData; - const mode = (await import('$lib/stores/model-store')).mode; - const socketLocation = (await import('$lib/utilities/location-utilities')).socketLocation; - const socketService = (await import('$lib/services/socket-service')).default; - socketService.connect(socketLocation); - socketService.addPublisher(outControllerData); - socketService.addPublisher(mode, 'mode'); - await registerFetchIntercept(); +const loadModelFiles = async () => { const modelRes = await loadModelAsync('/spot_micro.urdf.xacro'); - if (modelRes.isOk()) { const [urdf, JOINT_NAME] = modelRes.inner; jointNames.set(JOINT_NAME); @@ -34,8 +25,9 @@ const setup = async () => { } }; -export const load = async () => { - await setup(); +export const load = async ({ fetch }) => { + await registerFetchIntercept(); + await loadModelFiles(); const result = await fetch('/rest/features'); const features = await result.json(); return { diff --git a/app2/src/routes/+page.svelte b/app2/src/routes/+page.svelte index ca82d4f..53cb622 100644 --- a/app2/src/routes/+page.svelte +++ b/app2/src/routes/+page.svelte @@ -7,7 +7,7 @@
-
+
diff --git a/app2/src/routes/demo/Demo.svelte b/app2/src/routes/demo/Demo.svelte index b45b458..a950bfb 100644 --- a/app2/src/routes/demo/Demo.svelte +++ b/app2/src/routes/demo/Demo.svelte @@ -1,33 +1,24 @@ Light State
-

REST Example

-
- - The form below controls the LED via the RESTful service exposed by the ESP device. -
-
-
- -
-
- - -
-

Websocket Example

-
- - The switch below controls the LED via the WebSocket. It will automatically update whenever - the LED state changes. -
-
- +
+
+ {#each $servoAngles as angle, index} + updateAngle(index, parseFloat(event.target?.value))} + /> + {/each} +
diff --git a/app2/src/routes/menu.svelte b/app2/src/routes/menu.svelte index e50054c..b9d0c5a 100644 --- a/app2/src/routes/menu.svelte +++ b/app2/src/routes/menu.svelte @@ -180,7 +180,7 @@

{appName}