get_topics
Retrieve available ROS2 topics dynamically to interact with the Unitree Go2 robot via the MCP server, enabling precise control through natural language commands.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- utils/ros2_manager.py:9-12 (helper)Helper method in Ros2Manager class that executes shell command to list ROS2 topics directly.
def get_topics(self) -> list[str]: command = f"source {self.setup_sh_path} && ros2 topic list" output = subprocess.check_output(command, shell=True, executable='/bin/bash').decode() return output.split('\n') - utils/websocket_manager.py:48-72 (helper)Helper method in WebSocketManager class that queries ROS topics via rosbridge WebSocket service.
def get_topics(self) -> list[tuple[str, str]]: self.connect() if self.ws: try: self.send({ "op": "call_service", "service": "/rosapi/topics", "id": "get_topics_request_1" }) response = self.receive_binary() print(f"[WebSocket] Received response: {response}") if response: data = json.loads(response) if "values" in data: topics = data["values"].get("topics", []) types = data["values"].get("types", []) if topics and types and len(topics) == len(types): return list(zip(topics, types)) else: print("[WebSocket] Mismatch in topics and types length") except json.JSONDecodeError as e: print(f"[WebSocket] JSON decode error: {e}") except Exception as e: print(f"[WebSocket] Error: {e}") return []