fix(wizard): use API route for animations instead of ROS topic

- Add executeAnimationSSH that calls /api/robots/command
- Remove ROS topic publishing for animations
- Fix play_animation_show_sole -> play_animation_friendly
This commit is contained in:
2026-04-01 18:58:26 -04:00
parent de1b125b13
commit c959e61f95
2 changed files with 44 additions and 36 deletions
+43 -35
View File
@@ -926,48 +926,15 @@ export class WizardRosService extends EventEmitter {
break; break;
case "play_animation_bow": case "play_animation_bow":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/BowShort_1" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_hey": case "play_animation_hey":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/Hey_1" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_show_floor": case "play_animation_show_floor":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/ShowFloor_1" }); case "play_animation_friendly":
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_show_sole":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/ShowSole_1" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_enthusiastic": case "play_animation_enthusiastic":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/Enthusiastic_4" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_think": case "play_animation_think":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/Think_1" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_yes": case "play_animation_yes":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/Yes_1" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_no": case "play_animation_no":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/No_3" });
await new Promise((resolve) => setTimeout(resolve, 2000));
break;
case "play_animation_idontknow": case "play_animation_idontknow":
this.publish("/animation", "std_msgs/String", { data: "animations/Stand/Gestures/IDontKnow_1" }); await this.executeAnimationSSH(actionId);
await new Promise((resolve) => setTimeout(resolve, 2000));
break; break;
default: default:
@@ -1057,6 +1024,47 @@ export class WizardRosService extends EventEmitter {
}); });
} }
/**
* Execute animation via API route (SSH to robot)
*/
private async executeAnimationSSH(actionId: string): Promise<void> {
const animationMap: Record<string, string> = {
"play_animation_bow": "animations/Stand/Gestures/BowShort_1",
"play_animation_hey": "animations/Stand/Gestures/Hey_1",
"play_animation_show_floor": "animations/Stand/Gestures/ShowFloor_1",
"play_animation_friendly": "animations/Stand/Gestures/Friendly_1",
"play_animation_enthusiastic": "animations/Stand/Gestures/Enthusiastic_4",
"play_animation_think": "animations/Stand/Gestures/Think_1",
"play_animation_yes": "animations/Stand/Gestures/Yes_1",
"play_animation_no": "animations/Stand/Gestures/No_3",
"play_animation_idontknow": "animations/Stand/Gestures/IDontKnow_1",
};
const animation = animationMap[actionId];
if (!animation) {
throw new Error(`Unknown animation: ${actionId}`);
}
console.log(`[WizardROS] Executing animation via API: ${animation}`);
// Use the robots command API to execute via SSH
const response = await fetch("/api/robots/command", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
action: "executeSystemAction",
parameters: { id: actionId },
}),
});
if (!response.ok) {
const error = await response.text();
throw new Error(`Animation failed: ${error}`);
}
console.log(`[WizardROS] Animation completed: ${animation}`);
}
/** /**
* Set Autonomous Life state with fallbacks * Set Autonomous Life state with fallbacks
*/ */
+1 -1
View File
@@ -269,7 +269,7 @@ export class RobotCommunicationService extends EventEmitter {
"play_animation_bow": "animations/Stand/Gestures/BowShort_1", "play_animation_bow": "animations/Stand/Gestures/BowShort_1",
"play_animation_hey": "animations/Stand/Gestures/Hey_1", "play_animation_hey": "animations/Stand/Gestures/Hey_1",
"play_animation_show_floor": "animations/Stand/Gestures/ShowFloor_1", "play_animation_show_floor": "animations/Stand/Gestures/ShowFloor_1",
"play_animation_show_sole": "animations/Stand/Gestures/ShowSole_1", "play_animation_friendly": "animations/Stand/Gestures/Friendly_1",
"play_animation_enthusiastic": "animations/Stand/Gestures/Enthusiastic_4", "play_animation_enthusiastic": "animations/Stand/Gestures/Enthusiastic_4",
"play_animation_think": "animations/Stand/Gestures/Think_1", "play_animation_think": "animations/Stand/Gestures/Think_1",
"play_animation_yes": "animations/Stand/Gestures/Yes_1", "play_animation_yes": "animations/Stand/Gestures/Yes_1",