{"id":32526123,"url":"https://github.com/chaffybird56/missioncontrol-amr","last_synced_at":"2026-07-03T22:31:46.655Z","repository":{"id":363734889,"uuid":"1257788087","full_name":"chaffybird56/MissionControl-AMR","owner":"chaffybird56","description":"ROS 2 autonomous mobile robot in Webots with Nav2 navigation, mission dashboard, and live telemetry.","archived":false,"fork":false,"pushed_at":"2026-06-10T05:17:55.000Z","size":1004,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T07:15:15.167Z","etag":null,"topics":["amr","autonomous-mobile-robot","control","nav2","navigation","open-source","python","robotics","ros2","simulation","slam","webots"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chaffybird56.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-03T02:26:10.000Z","updated_at":"2026-06-10T05:17:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chaffybird56/MissionControl-AMR","commit_stats":null,"previous_names":["chaffybird56/missioncontrol-amr"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/chaffybird56/MissionControl-AMR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaffybird56%2FMissionControl-AMR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaffybird56%2FMissionControl-AMR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaffybird56%2FMissionControl-AMR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaffybird56%2FMissionControl-AMR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chaffybird56","download_url":"https://codeload.github.com/chaffybird56/MissionControl-AMR/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaffybird56%2FMissionControl-AMR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35104113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amr","autonomous-mobile-robot","control","nav2","navigation","open-source","python","robotics","ros2","simulation","slam","webots"],"created_at":"2025-10-28T09:53:37.507Z","updated_at":"2026-07-03T22:31:46.648Z","avatar_url":"https://github.com/chaffybird56.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ROS2 AMR - Autonomous Mobile Robot System\n\n\u003e **Autonomous robot that navigates obstacles, executes missions, and delivers real-time insights through a web dashboard.**\n\n## System Overview\n\n### Complete Dashboard Interface\n![Complete Dashboard Interface](media/screenshots/dashboard-full-view.png)\n*Full ROS2 AMR dashboard showing real-time robot status, mission control, map view, and performance metrics*\n\n### Mission Control Panel\n![Mission Control Panel](media/screenshots/mission-control-panel.png)\n*Intuitive mission management with demo navigation, custom goal creation, and real-time execution controls*\n\n### Robot Navigation \u0026 Map View\n![Robot Navigation \u0026 Map View](media/screenshots/robot-navigation-map.png)\n*Live map visualization with robot position, navigation trail, obstacles, and goal markers*\n\n---\n\nA comprehensive, demo-ready ROS2 Autonomous Mobile Robot (AMR) system featuring Nav2 navigation, real-time web dashboard, mission management, and automated data logging. Deployed with Docker Compose on **Ubuntu Linux**or **macOS**(M3 tested), with optional Webots simulation and ROS 2 Humble in containers.\n\n## Features\n\n- ** Autonomous Navigation**: Nav2 stack with SLAM, path planning, and obstacle avoidance\n- **Mission Management**: Queue-based goal execution with real-time status tracking\n- **Live Dashboard**: Next.js web interface with real-time telemetry and control\n- **Performance Metrics**: Prometheus-compatible metrics collection and visualization\n- **Automatic Recording**: Rosbag2 integration with mission-based start/stop\n- **Fiducial Detection**: OpenCV-based ArUco marker recognition\n- **WebSocket Bridge**: Real-time communication between ROS2 and dashboard\n- **Responsive UI**: Modern, mobile-friendly dashboard design\n\n## Architecture\n\n```\n┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐\n│ Webots Sim │ │ ROS2 Stack │ │ Dashboard │\n│ │ │ │ │ │\n│ • Diffbot Robot │◄──►│ • Nav2Navigation│◄──►│ • Next.js UI │\n│ • Showfloor Map │ │ • Mission Mgmt │ │ • Real-time │\n│ • Sensors │ │ • Perception │ │ • Control Panel │\n│ • Physics │ │ • Metrics │ │ • Map View │\n└─────────────────┘ └─────────────────┘ └─────────────────┘\n │ │ │\n └───────────────────────┼───────────────────────┘\n │\n ┌─────────────────┐\n │ FastAPI Server │\n │ │\n │ • REST API │\n │ • WebSocket │\n │ • Mission CRUD │\n └─────────────────┘\n```\n\n## Project Structure\n\n```\nros2-amr/\n├─ sim/ # Webots simulation assets\n│ ├─ worlds/showfloor.wbt # Showroom environment\n│ └─ robots/diffbot.wbo # Differential drive robot\n│\n├─ ros2/ # ROS2 packages (Docker)\n│ ├─ packages/ # ROS2 workspace packages\n│ │ ├─ amr_bringup/ # System launch \u0026 configuration\n│ │ ├─ amr_nav/ # Nav2 configuration\n│ │ ├─ amr_perception/ # Fiducial detection\n│ │ ├─ amr_mission/ # Mission queue management\n│ │ ├─ amr_bridge/ # WebSocket/REST bridge\n│ │ ├─ amr_metrics/ # Prometheus metrics\n│ │ └─ amr_logger/ # Rosbag2 recorder\n│ ├─ overlays/ # Maps and parameters\n│ └─ docker/ # Container configuration\n│\n├─ server/ # FastAPI backend\n│ ├─ app.py # Main API server\n│ └─ requirements.txt # Python dependencies\n│\n├─ dashboard/ # Next.js frontend\n│ ├─ components/ # React components\n│ ├─ pages/ # Next.js pages\n│ └─ styles/ # Tailwind CSS\n│\n├─ ops/ # Orchestration\n│ ├─ compose.yml # Docker Compose\n│ ├─ net.env # Network configuration\n│ └─ Makefile # Operation commands\n│\n├─ scripts/ # Utility scripts\n│ ├─ record_demo.sh # Demo recording\n│ └─ verify_topics.sh # System verification\n│\n└─ media/ # Documentation assets\n ├─ screenshots/ # UI screenshots\n └─ README.md # Media documentation\n```\n\n## Quick Start\n\n### Prerequisites\n\n- **macOS**(tested on M3 Mac) or **Ubuntu 22.04/24.04**— see **[docs/UBUNTU.md](docs/UBUNTU.md)**for Linux install steps\n- **Docker**+ **Docker Compose**with 8GB+ RAM for containers\n- **Node.js 20+**(optional, for local dashboard development without Docker)\n- **Webots 2023b**(optional, for simulation)\n\n### Installation\n\n1. **Clone and setup**:\n ```bash\n git clone https://github.com/chaffybird56/MissionControl-AMR.git\n cd MissionControl-AMR\n ```\n\n2. **Install dependencies**:\n ```bash\n # Install system requirements\n brew install docker docker-compose node\n\n # Install Webots (optional)\n brew install --cask webots\n ```\n\n3. **Start the system**:\n ```bash\n cd ops\n make up\n ```\n\n4. **Access the dashboard**:\n - **Dashboard**: http://localhost:3002\n - **API Server**: http://localhost:8002\n - **Metrics**: http://localhost:8080/metrics\n\n### First Mission\n\n1. Open http://localhost:3002 in your browser\n2. Click \"Start Demo Mission\" in the Mission Panel\n3. Watch the robot navigate in the Map View\n4. Monitor real-time metrics in the Performance Panel\n\n## Usage Guide\n\n### Dashboard Interface\n\n#### Mission Panel\n- **Create Missions**: Add custom goal points by clicking on the map\n- **Start/Stop**: Control mission execution\n- **Queue Management**: View and manage mission queue\n\n#### Map View\n- **Real-time Tracking**: See robot position and trail\n- **Goal Setting**: Click anywhere to add navigation goals\n- **Obstacle Visualization**: View detected obstacles and landmarks\n\n#### Robot Status\n- **Live Telemetry**: Position, velocity, battery level\n- **Mission State**: Current status and progress\n- **Connection Status**: WebSocket connectivity indicator\n\n#### Metrics Panel\n- **Performance Data**: Goals completed, success rate, distance traveled\n- **System Health**: Uptime, replan count, navigation stability\n- **Visual Indicators**: Status badges and trend analysis\n\n### Command Line Operations\n\n```bash\n# System management\nmake up # Start all services\nmake down # Stop all services\nmake logs # View all logs\nmake status # Check service status\n\n# ROS2 operations\nmake ros2-topics # List ROS2 topics\nmake ros2-nodes # List active nodes\nmake ros2-info # System information\n\n# Data management\nmake bag # Start rosbag recording\nmake bag-list # List available bags\nmake clean-bags # Clean up recordings\n\n# Development\nmake dev # Start development environment\nmake test # Run system tests\nmake shell # Open ROS2 shell\n```\n\n### API Usage\n\n#### REST Endpoints\n\n```bash\n# Get system status\ncurl http://localhost:8002/api/status\n\n# Create a mission\ncurl -X POST http://localhost:8002/api/mission \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"Custom Mission\",\n \"goals\": [\n {\"x\": 2.0, \"y\": 2.0, \"theta\": 0.0},\n {\"x\": -1.0, \"y\": 1.0, \"theta\": 1.57}\n ]\n }'\n\n# Start mission\ncurl -X POST http://localhost:8002/api/mission/{mission_id}/start\n\n# Stop mission\ncurl -X POST http://localhost:8002/api/mission/stop\n```\n\n#### WebSocket Events\n\n```javascript\nconst ws = new WebSocket('ws://localhost:8002/ws');\n\nws.onmessage = (event) =\u003e {\n const data = JSON.parse(event.data);\n\n switch(data.type) {\n case 'status_update':\n // Robot status update\n break;\n case 'mission_started':\n // Mission started\n break;\n case 'mission_stopped':\n // Mission stopped\n break;\n }\n};\n```\n\n## Performance Metrics\n\nThe system tracks comprehensive metrics:\n\n| Metric | Description | Type |\n|--------|-------------|------|\n| `robot_pose_x/y/theta` | Current robot position | Gauge |\n| `robot_velocity_linear/angular` | Current velocities | Gauge |\n| `mission_goals_completed` | Total completed goals | Counter |\n| `mission_total_replans` | Path replanning events | Counter |\n| `mission_distance_traveled` | Total distance | Counter |\n| `mission_success_rate` | Completion rate | Gauge |\n| `battery_level` | Robot battery percentage | Gauge |\n| `system_uptime` | System runtime | Counter |\n\n### Prometheus Integration\n\nAccess metrics at http://localhost:8080/metrics for Prometheus scraping.\n\n## Configuration\n\n### ROS2 Parameters\n\nKey configuration files:\n- `ros2/packages/amr_bringup/params/nav2_params.yaml` - Navigation parameters\n- `ros2/packages/amr_bringup/params/robot_params.yaml` - Robot configuration\n- `ros2/overlays/maps/showfloor.yaml` - Map configuration\n\n### Environment Variables\n\n```bash\n# Network configuration\nAPI_URL=http://localhost:8002\nWS_URL=ws://localhost:8002/ws\nPORT_DASHBOARD=3002\nPORT_SERVER=8002\n\n# ROS2 configuration\nRMW_IMPLEMENTATION=rmw_fastrtps_cpp\nROS_DOMAIN_ID=0\n\n# Development settings\nDEBUG=false\nNODE_ENV=development\n```\n\n## Troubleshooting\n\n### Common Issues\n\n#### Services Won't Start\n```bash\n# Check Docker resources\ndocker system df\ndocker system prune -f\n\n# Restart Docker Desktop\n# Increase memory allocation to 8GB+\n```\n\n#### WebSocket Connection Failed\n```bash\n# Check if API server is running\ncurl http://localhost:8002/health\n\n# Check logs\nmake logs-server\n```\n\n#### ROS2 Topics Missing\n```bash\n# Verify system health\n./scripts/verify_topics.sh\n\n# Check ROS2 logs\nmake logs-ros2\n\n# Restart system\nmake down \u0026\u0026 make up\n```\n\n#### Webots Simulation Issues\n```bash\n# Check Webots logs\nmake logs-webots\n\n# Restart Webots container\nmake webots-restart\n\n# Verify display settings\necho $DISPLAY\n```\n\n### System Requirements\n\n- **CPU**: 4+ cores recommended\n- **RAM**: 8GB minimum, 16GB recommended\n- **Storage**: 10GB free space\n- **Network**: Local network access for WebSocket\n\n## Performance Optimization\n\n### Docker Resource Allocation\n```bash\n# Docker Desktop settings\nCPU: 4+ cores\nMemory: 8GB+\nSwap: 2GB+\n```\n\n### ROS2 Performance Tuning\n- Adjust `controller_frequency` in nav2_params.yaml\n- Optimize costmap resolution and update rates\n- Tune DWB controller parameters for your robot\n\n### Dashboard Performance\n- Enable browser hardware acceleration\n- Use Chrome/Edge for best WebSocket performance\n- Monitor memory usage in browser dev tools\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make changes and test thoroughly\n4. Submit a pull request with detailed description\n\n### Development Setup\n\n```bash\n# Development environment\nmake dev\n\n# Run tests\nmake test\n\n# Code formatting\nnpm run lint\n```\n\n## License\n\nThis project is licensed under the Apache-2.0 License - see the LICENSE file for details.\n\n## Acknowledgments\n\n- **ROS2 Community**for the excellent navigation stack\n- **Webots**for the realistic simulation environment\n- **Nav2 Team**for the comprehensive navigation framework\n- **OpenCV**for computer vision capabilities\n- **Next.js**and **Tailwind CSS**for the modern dashboard\n\n## Support\n\n- **Issues**: GitHub Issues for bug reports\n- **Discussions**: GitHub Discussions for questions\n- **Documentation**: This README and inline code comments\n\n---\n\n**Built with for the ROS2 community**\n\n*Perfect for demonstrations, educational purposes, and as a foundation for real-world AMR applications.*\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaffybird56%2Fmissioncontrol-amr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchaffybird56%2Fmissioncontrol-amr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaffybird56%2Fmissioncontrol-amr/lists"}