diff --git a/srv/ToggleAlignment.srv b/srv/ToggleAlignment.srv new file mode 100644 index 00000000..a46718c8 --- /dev/null +++ b/srv/ToggleAlignment.srv @@ -0,0 +1,3 @@ +bool enable +--- +bool success diff --git a/teleoperation/basestation_gui/backend/ws/auton_ws.py b/teleoperation/basestation_gui/backend/ws/auton_ws.py index 76367506..a10abfb3 100644 --- a/teleoperation/basestation_gui/backend/ws/auton_ws.py +++ b/teleoperation/basestation_gui/backend/ws/auton_ws.py @@ -1,9 +1,11 @@ import asyncio from backend.ws.base_ws import WebSocketHandler -from backend.managers.ros import get_logger +from backend.managers.ros import get_logger, get_service_client +from backend.utils.ros_service import call_service_async from rclpy.action import ActionClient from mrover.action import TypingCode from mrover.msg import KeyboardYaw +from mrover.srv import ToggleAlignment class AutonHandler(WebSocketHandler): @@ -24,6 +26,8 @@ async def handle_message(self, data): await self.cancel_goal() else: await self.send_typing_code(code) + elif msg_type == 'toggle_alignment': + await self.toggle_alignment(data.get('enable', False)) else: get_logger().warning(f"Unhandled AUTON message: {msg_type}") @@ -60,6 +64,16 @@ def feedback_callback(self, feedback_msg): 'current_index': feedback.current_index, }) + async def toggle_alignment(self, enable: bool): + client = get_service_client(ToggleAlignment, '/toggle_alignment') + request = ToggleAlignment.Request() + request.enable = enable + result, error = await call_service_async(client, request) + if error: + self.schedule_send({'type': 'alignment_error', 'error': error}) + else: + self.schedule_send({'type': 'alignment_toggled', 'enable': enable, 'success': result.success}) + async def cancel_goal(self): if self.current_goal_handle: await asyncio.to_thread(self.current_goal_handle.cancel_goal_async) diff --git a/teleoperation/basestation_gui/frontend/src/components/AutonTyping.vue b/teleoperation/basestation_gui/frontend/src/components/AutonTyping.vue index 59715662..3c59cbc4 100644 --- a/teleoperation/basestation_gui/frontend/src/components/AutonTyping.vue +++ b/teleoperation/basestation_gui/frontend/src/components/AutonTyping.vue @@ -29,6 +29,15 @@ YAW {{ yawAngle.toFixed(3) }}rad + @@ -49,6 +58,7 @@