Skip to main content
Glama
PRIORITY_1_IMPLEMENTATION.md5.11 kB
# Priority 1 Implementation - Animation, Camera, Navigation **Date**: 2025-12-07 **Status**: ✅ Implemented ## Overview Implemented three critical portmanteau tools to fill Priority 1 gaps: 1. **robot_animation** - Animation and behavior control 2. **robot_camera** - Camera and visual feed control 3. **robot_navigation** - Path planning and navigation ## Tools Implemented ### 1. robot_animation **File**: `src/robotics_mcp/tools/robot_animation.py` **Operations**: - `animate_wheels` - Rotate wheels during movement (Scout mecanum wheels) - `animate_movement` - Play movement animations (walk, turn, etc.) - `set_pose` - Set robot pose (sitting, standing, etc. for Unitree) - `play_animation` - Play custom animations - `stop_animation` - Stop current animation - `get_animation_state` - Get current animation state **Unity Script**: `Assets/Scripts/RobotAnimator.cs` - Handles wheel rotation for mecanum wheels - Supports Animator Controller for movement animations - Pose control via triggers - Animation state tracking ### 2. robot_camera **File**: `src/robotics_mcp/tools/robot_camera.py` **Operations**: - `get_camera_feed` - Get live camera feed (physical Scout camera) - `get_virtual_camera` - Get Unity camera view from robot perspective - `set_camera_angle` - Adjust camera angle (pitch/yaw) - `capture_image` - Capture still image (PNG, base64 or file) - `start_streaming` - Start video stream - `stop_streaming` - Stop video stream - `get_camera_status` - Get camera status and settings **Unity Script**: `Assets/Scripts/RobotCamera.cs` - Automatic camera creation if none exists - RenderTexture-based image capture - Base64 encoding for MCP transport - File saving support - Streaming placeholder (WebRTC/MJPEG TODO) ### 3. robot_navigation **File**: `src/robotics_mcp/tools/robot_navigation.py` **Operations**: - `plan_path` - Plan path from A to B using NavMesh (A*) - `follow_path` - Execute planned path - `set_waypoint` - Set navigation waypoint - `clear_waypoints` - Clear waypoint list - `get_path_status` - Check path execution status - `avoid_obstacle` - Dynamic obstacle avoidance - `get_current_path` - Get current path being followed **Unity Script**: `Assets/Scripts/RobotNavigator.cs` - NavMeshAgent-based pathfinding - Multi-waypoint path following - Progress tracking (0.0 to 1.0) - Obstacle avoidance via NavMesh sampling - Path state management (planned, following, completed, failed) ## Integration ### Server Integration - All three tools registered in `server.py` - Imported and initialized in `RoboticsMCP.__init__()` - Registered via `_register_tools()` ### Unity Integration - Scripts copied to Unity project: `C:\Users\sandr\My project\Assets\Scripts\` - All scripts use static methods for `execute_unity_method` calls - Singleton pattern for instance management - Automatic component addition if missing ## Marble Apartment Support **File**: `C:\Users\sandr\Downloads\Modern Tropical Luxury Residence.spz` **Integration**: - Updated `virtual_robotics.load_environment` to accept `environment_path` - Supports `.spz` files directly - Uses `unity3d-mcp` `import_marble_world` tool - Includes colliders for navigation **Usage**: ```python await virtual_robotics( action="load_environment", environment="Modern Tropical Luxury Residence", environment_path="C:\\Users\\sandr\\Downloads\\Modern Tropical Luxury Residence.spz", platform="unity" ) ``` ## Example Workflows ### 1. Spawn Scout and Animate Wheels ```python # Spawn Scout await vbot_crud( operation="create", robot_type="scout", robot_id="scout_01", platform="unity", position={"x": 0, "y": 0, "z": 0} ) # Animate wheels await robot_animation( robot_id="scout_01", action="animate_wheels", wheel_speeds={ "front_left": 1.0, "front_right": 1.0, "back_left": 1.0, "back_right": 1.0 } ) ``` ### 2. Capture Camera Image ```python # Capture image await robot_camera( robot_id="scout_01", action="capture_image", output_path="C:/Images/scout_view.png" ) ``` ### 3. Plan and Follow Path ```python # Plan path path_result = await robot_navigation( robot_id="scout_01", action="plan_path", start_position={"x": 0, "y": 0, "z": 0}, goal_position={"x": 5, "y": 0, "z": 0} ) path_id = path_result["data"]["path_id"] # Follow path await robot_navigation( robot_id="scout_01", action="follow_path", path_id=path_id ) ``` ## Next Steps 1. ✅ Tools implemented 2. ✅ Unity scripts created 3. ✅ Server integration complete 4. ⏳ Test with Unity Editor 5. ⏳ Test with Marble apartment 6. ⏳ Add NavMesh to Marble environment (if needed) 7. ⏳ Test full workflow (spawn → animate → navigate → capture) ## Notes - All tools support both virtual and physical robots (physical stubs ready for ROS) - Unity scripts auto-create components if missing - NavMesh required for navigation (bake NavMesh in Unity) - Camera creates automatically if robot has no camera component - Animation requires Animator Controller for complex animations (wheels work without)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/robotics-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server