SensorSphere is a desktop application designed to streamline sensor selection and comparison workflows for robotics engineers and researchers. It provides an intuitive interface for evaluating sensors across multiple dimensions with comparative analysis and export capabilities.
- Features
- Installation
- Quick Start
- Sensor Database
- Usage Guide
- Technical Architecture
- Contributing
- Troubleshooting
- License
- Sensor Database: 30+ validated sensors across cameras, LiDAR, and other sensor types (more to be added soon)
- Advanced Filtering: Multi-criteria filtering by price, ROS compatibility, technical specifications
- Interactive Comparisons: Side-by-side analysis with sortable tables and visual charts
- Multi-Dimensional Analysis: Radar charts for performance visualization across key attributes
- Professional Export: PDF reports, CSV data export, and customizable chart generation
- ROS1/ROS2 Compatibility: Generate launch files and parameter templates
- Driver Validation: Links to ROS packages and drivers
- Configuration Templates: Auto-generated configs for common robotics workflows
- Modern GUI: Professional PySide6/Qt interface with dockable panels
- Theme Support: Dark/light mode with system integration
- Responsive Design: Adaptive layouts for different screen sizes
- Offline Operation: No internet required
- Python: 3.10 or higher
- Operating System: Linux (Ubuntu 22.04+)
-
Clone the Repository
git clone https://github.com/Sahil-cmd/sensor-sphere.git cd sensor-sphere -
Create Virtual Environment
python3 -m venv .test-venv source .test-venv/bin/activate -
Install SensorSphere
pip install -e .
# Activate virtual environment
source .test-venv/bin/activate
# Launch GUI - after installation, launch SensorSphere using any of these intuitive commands:
sensorsphere # Main command
sensor-sphere # Alternative
sphere # Quick shortcut- Browse Sensors: Use the Filter Panel to narrow down sensor options
- Compare: Select multiple sensors in the comparison table
- Analyze: View detailed specifications in the Sensor Details panel
- Visualize: Generate bar charts and radar plots in the Chart Panel
- Export: Create PDF reports or export data for further analysis
- Filter by sensor type: "Depth Camera"
- Set price range: $200-$800
- Filter by ROS compatibility: "ROS2"
- Compare results
- Export comparison report
All sensor specifications are sourced from:
- Manufacturer datasheets
- Verified ROS driver documentation
- Public technical specifications
- Validation: All entries validated against YAML schema
- Consistency: Standardized units and measurement criteria
- Completeness: Minimum required fields enforced
Main Window Components:
- Filter Panel (Left): Search and filter controls
- Comparison Table (Center): Sensor list with sortable columns
- Sensor Details (Right): Detailed specifications for selected sensor
- Chart Panel (Bottom): Visualization and analysis tools
- Select sensors and attributes for radar chart comparison
- Attribute selection based on sensor types
- Customizable PDF reports with executive summaries
- Technical analysis with robotics-specific insights
- Chart export in multiple formats
- Launch file templates for ROS1 and ROS2
- Parameter files with documented settings
src/sensor_tool/
├── gui_qt/ # PySide6 GUI application
│ ├── main_window.py # Main application window
│ ├── widgets/ # UI components
│ ├── utils/ # Theme and font management
│ └── models/ # Qt data adapters
├── models/ # Data models and validation
│ ├── sensor_v2.py # Enhanced Pydantic models
│ └── repository.py # Data access layer
├── data_loader.py # YAML data loading
├── validate_sensors.py # Schema validation
└── utils/ # Utility functions
- Storage: YAML files with hierarchical organization
- Validation: Yamale schema with comprehensive type checking
- Models: Pydantic v2 for runtime validation and serialization
- Caching: Smart caching for improved performance
Core Dependencies:
- PySide6: GUI framework
- Pandas: Data manipulation
- Matplotlib: Chart generation
- Plotly: Interactive visualizations
- Pydantic: Data validation
- PyYAML: Configuration parsing
We welcome contributions from the robotics community! Here's how to get involved:
- Fork the repository on GitHub
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes - add sensors, fix bugs, implement features
- Test your changes with the existing sensor database
- Commit with clear messages (
git commit -m "feat: add sensor XYZ") - Push your branch (
git push origin feature/your-feature) - Open a pull request with detailed description
Found a bug or have a feature request?
- Via GitHub: Visit sensorsphere/issues
- Via GUI: Use Help → "Report Issue on GitHub" in SensorSphere
- Include: Steps to reproduce, expected vs actual behavior, system info
GUI doesn't start:
# Check PySide6 installation
pip install --upgrade PySide6==6.7.3
# Verify display settings
echo $DISPLAY # Linux# Check file permissions
ls -la sensors/Chart generation fails:
# Install missing dependencies
pip install matplotlib plotly kaleido
# Check memory usage
free -h # Linux# Clone repository
git clone https://github.com/Sahil-cmd/sensor-sphere.git
cd sensorsphere
# Setup development environment
python3 -m venv .test-venv
source .test-venv/bin/activate
# Install with development dependencies
pip install -r requirements.txt
pip install black flake8 pytest pytest-qt
# Format code
black src/
flake8 src/This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Sensor specifications are sourced from publicly available manufacturer documentation. All trademarks and product names are property of their respective owners.
Built by robotics engineers, for robotics engineers.