From 76ddd8b9480245a598c2a1982dc7683b01827c6d Mon Sep 17 00:00:00 2001 From: croissant Date: Mon, 24 Nov 2025 17:18:37 +0100 Subject: [PATCH] use image datasets and change ui --- examples/openarms_web_interface/App.jsx | 80 +++---------------- .../web_record_server.py | 4 +- 2 files changed, 12 insertions(+), 72 deletions(-) diff --git a/examples/openarms_web_interface/App.jsx b/examples/openarms_web_interface/App.jsx index 42d27ae56..cd926928f 100644 --- a/examples/openarms_web_interface/App.jsx +++ b/examples/openarms_web_interface/App.jsx @@ -47,11 +47,6 @@ function App() { const saved = localStorage.getItem('openarms_config'); if (saved) { const loadedConfig = JSON.parse(saved); - // If OpenArms Mini is selected, ensure followers are set to can0/can1 - if (loadedConfig.leader_type === 'openarms_mini') { - loadedConfig.follower_left = 'can0'; - loadedConfig.follower_right = 'can1'; - } setConfig(prev => ({ ...prev, ...loadedConfig })); } } catch (e) { @@ -93,11 +88,6 @@ function App() { if (!localStorage.getItem('openarms_config')) { setConfig(prev => { const merged = { ...data.config, ...prev }; - // If OpenArms Mini is selected, ensure followers are set to can0/can1 - if (merged.leader_type === 'openarms_mini') { - merged.follower_left = 'can0'; - merged.follower_right = 'can1'; - } localStorage.setItem('openarms_config', JSON.stringify(merged)); return merged; }); @@ -360,14 +350,6 @@ function App() { // Update config and save const updateConfig = (key, value) => { const updated = { ...config, [key]: value }; - - if (key === 'leader_type') { - if (value === 'openarms_mini') { - updated.follower_left = 'can0'; - updated.follower_right = 'can1'; - } - } - setConfig(updated); saveConfig(updated); }; @@ -398,27 +380,6 @@ function App() { useEffect(() => { if (config.leader_type === 'openarms_mini') { discoverUsbPorts(); - // Explicitly set follower CAN interfaces when using OpenArms Mini - // Followers MUST use can0 = left arm, can1 = right arm - // Force these values even if they were previously different - const updated = { - ...config, - follower_left: 'can0', // Explicitly set left follower to can0 - follower_right: 'can1' // Explicitly set right follower to can1 - }; - setConfig(updated); - saveConfig(updated); - } else { - // When switching back to OpenArms, restore CAN interface defaults - const updated = { - ...config, - leader_left: canInterfaces.includes(config.leader_left) ? config.leader_left : 'can0', - leader_right: canInterfaces.includes(config.leader_right) ? config.leader_right : 'can1', - follower_left: 'can2', // OpenArms standard: followers on can2/can3 - follower_right: 'can3' - }; - setConfig(updated); - saveConfig(updated); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [config.leader_type]); @@ -563,51 +524,30 @@ function App() {

Follower Interfaces (CAN)

- {config.leader_type === 'openarms_mini' && ( -
- 🔒 Auto-assigned: Follower ports are fixed as can0 (left) and can1 (right) when using OpenArms Mini -
- )} -
diff --git a/examples/openarms_web_interface/web_record_server.py b/examples/openarms_web_interface/web_record_server.py index cb01d36b6..974aed7f7 100644 --- a/examples/openarms_web_interface/web_record_server.py +++ b/examples/openarms_web_interface/web_record_server.py @@ -410,8 +410,8 @@ def initialize_robot_systems(config: RecordingConfig): if key.endswith(".pos"): action_features_hw[key] = value - action_features = hw_to_dataset_features(action_features_hw, "action") - obs_features = hw_to_dataset_features(follower.observation_features, "observation") + action_features = hw_to_dataset_features(action_features_hw, "action", use_video=False) + obs_features = hw_to_dataset_features(follower.observation_features, "observation", use_video=False) dataset_features = {**action_features, **obs_features} # Create dataset