A full-stack application for managing, visualizing, and testing rosbag files with a Python backend and Vue.js frontend.
rosbag Cockpit is a comprehensive web application designed to visualize and manage rosbag files in a user-friendly interface. The application consists of two main components:
- Backend: Python-based API for rosbag file processing and data management

- Frontend: Vue.js web interface for data visualization and interaction

- rosbag Visualization: A web interface to view and manage all rosbag files
- Metadata Explorer: Browse through topics and metadata of each rosbag file
- CI/CD Integration: Execute open-loop tests in continuous integration pipelines
- Database Management: Store and query rosbag metadata efficiently
The backend is structured as a Python application with the following components:
backend/
├── .pytest_cache/
├── bag_processor/
│ ├── api/
│ │ ├── logs/
│ │ ├── __init__.py
│ │ ├── exception_handlers.py
│ │ ├── logging.py
│ │ ├── models.py
│ │ ├── routes.py
│ │ ├── schema.py
│ │ ├── services.py
│ │ └── utils.py
│ ├── bag_manager/
│ │ ├── __init__.py
│ │ ├── error.py
│ │ ├── parser.py
│ │ ├── player.py
│ │ └── utils.py
│ └── database/
│ ├── __init__.py
│ ├── db_connection_pool.py
│ ├── db_initializer.py
│ ├── models.py
│ ├── operations.py
│ └── schema.py
├── test/
│ ├── __init__.py
│ └── script_used_in_ci_cd.py
├── .gitignore
└── ...
routes.py: API endpoints for rosbag operationsservices.py: Business logic for processing requestsmodels.py: Data models for rosbag metadataschema.py: Validation schemas for API requests/responsesexception_handlers.py: Custom exception handlinglogging.py: Logging configuration
parser.py: rosbag file parsing functionalityplayer.py: Controls playback of rosbag dataerror.py: Custom error handling for bag operationsutils.py: Utility functions for bag management
db_connection_pool.py: Database connection poolingdb_initializer.py: Database initialization scriptsmodels.py: ORM models for database entitiesoperations.py: Database CRUD operationsschema.py: Database schema definitions
- Framework: FastAPI or Flask (based on project structure)
- Database: SQL database (specific type not specified in structure)
- Testing: pytest
The frontend is a Vue.js application with the following structure:
frontend/
├── .vscode/
├── node_modules/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ │ ├── Dashboard.vue
│ │ ├── DataTable.vue
│ │ ├── NavBar.vue
│ │ └── RosbagDetail.vue
│ ├── services/
│ │ ├── api.js
│ │ └── rosbagService.js
│ └── views/
│ ├── App.vue
│ ├── DatabaseView.vue
│ ├── HomeView.vue
│ └── main.js
└── ...
HomeView.vue: Main landing pageDatabaseView.vue: Database interaction viewApp.vue: Root application component
Dashboard.vue: Overview dashboard for rosbag dataDataTable.vue: Data table component for displaying rosbag contentsNavBar.vue: Navigation bar componentRosbagDetail.vue: Detailed view of rosbag files
api.js: API communication servicerosbagService.js: rosbag-specific API methods
- Framework: Vue.js
- Styling: Tailwind CSS
- Build Tool: Vite
- Python 3.8+
- Node.js 16+
- Docker and Docker Compose
Please follow the readme in the backend directory: readme
Please follow the readme in the frontend directory: readme
The project includes Docker configuration for containerized deployment:
- Build and start the containers:
source start.sh - Access the application at
http://localhost:8000for the backend andhttp://localhost:5173for the frontend.
- Create rosbag_database using the command:
uv run main.py --db /path/to/your/db --dir /path/to/your/rosbags/
- View all available rosbag files in the dashboard
- Explore topics and metadata for each rosbag file
- Filter and search through rosbag files based on metadata
- Select rosbag files for testing
- Configure test parameters
- Execute open-loop tests
- View test results and reports
- Integrate with CI/CD pipelines for automated testing