A modern web-based GUI wrapper for robot control and monitoring, built with Next.js and React. This application provides an intuitive interface for managing robot operations including camera feeds, terminal sessions, and real-time system monitoring.
- Real-time Camera Feeds: Monitor multiple camera streams simultaneously
- Terminal Management: Interactive web-based terminals with tmux session integration
- System Control: Direct control of robot subsystems (ARM, Drive, Camera, Multijoy)
- Live Monitoring: Real-time logs and system status updates
- Responsive Design: Works seamlessly across desktop and mobile devices
- Frontend: Next.js 14+ with App Router
- Styling: Tailwind CSS for responsive design
- Terminal Integration: tmux for persistent terminal sessions
- Real-time Updates: Server-sent events for live data streaming
- API: Next.js API routes for backend functionality
Before getting started, ensure you have the following installed on your system:
# Ubuntu/Debian
sudo apt update && sudo apt install tmux
# CentOS/RHEL/Fedora
sudo yum install tmux
# or for newer versions:
sudo dnf install tmux
# macOS
brew install tmux
# Arch Linux
sudo pacman -S tmux# Install Node.js (version 18 or higher recommended)
# Visit https://nodejs.org/ or use a package manager
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejsgit clone https://github.com/NotIncorecc/rov_gui.git
cd rov_guinpm install
# or
yarn install
# or
pnpm installnpm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 in your browser to see the rover control interface.
- Camera Feeds: View live feeds from multiple robot cameras
- Master Control: Quick access to primary robot functions
- System Controls: Manage individual subsystems (ARM, Drive, Camera, Multijoy)
- Click "Activate [System]" buttons to initialize robot subsystems
- Click "open terminal" to access web-based terminal interfaces
- Each terminal connects to a persistent tmux session for reliable operation
- Send commands directly through the web interface
- Monitor system logs in real-time through the web terminals
- Connection status indicators show tmux session health
- Auto-scrolling terminal output for continuous monitoring
my-rover-app/
├── src/
│ ├── app/
│ │ ├── api/ # API routes
│ │ │ ├── execute-command/ # Command execution endpoint
│ │ │ ├── tmux-logs/ # Tmux log fetching
│ │ │ └── tmux-command/ # Tmux command sending
│ │ ├── terminal/ # Terminal page routes
│ │ │ ├── multijoy-terminal/
│ │ │ ├── arm-ssh-terminal/
│ │ │ ├── drive-ssh-terminal/
│ │ │ └── camera-monitoring-terminal/
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Main dashboard
│ └── components/ # Reusable components
├── public/ # Static assets
├── package.json
└── README.md
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintCreate a .env.local file for environment-specific variables:
# Add your environment variables here
NEXT_PUBLIC_API_URL=http://localhost:3000tmux sessions not found:
- Ensure tmux is installed and accessible
- Check that the rover initialization commands have been run
- Verify tmux sessions exist:
tmux list-sessions
Terminal not connecting:
- Refresh the page to reinitialize the connection
- Check browser console for error messages
- Ensure API endpoints are responding correctly
404 errors on terminal pages:
- Verify the correct file structure in
src/app/terminal/ - Ensure each terminal route has a
page.tsxfile - Restart the development server after file structure changes
Duplicate sessions
- kill existing sessions by
tmux kill-server
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and commit:
git commit -m 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.
For issues and questions:
- Check the troubleshooting section above
- Review the Next.js documentation: https://nextjs.org/docs
- Create an issue in the repository for bugs
