A modular simulation platform for teleoperation of general robotic systems.
This project is structured into four independent modules to facilitate parallel development:
- Simulation Engine - Core physics simulation and virtual environment modeling
- Robot Models - Robot definitions, kinematics, dynamics, and control interfaces
- Operator Interface - Human input handling, visualization, and teleoperation UI
- Communication Layer - Data transfer protocols, latency simulation, and network effects
- Physics engine integration
- Environment modeling
- Collision detection
- Sensor simulation
- Time management
- Robot kinematic/dynamic models
- Robot state representation
- Low-level controllers
- Robot-specific sensors
- Actuation models
- User input processing
- Visualization components
- Command mapping
- Operator feedback systems
- Teleoperation UI
- Command/data serialization
- Network protocol simulation
- Latency and packet loss models
- Bandwidth limitation simulation
- Data buffering and synchronization
To ensure smooth collaboration:
- Interface Stability: Module interfaces should remain stable. Breaking changes require team discussion.
- Dependency Management: Modules should only depend on published interfaces of other modules.
- Testing: Each module should have comprehensive tests that can run independently.
- Documentation: All module interfaces must be well-documented.
- Git Workflow:
- Develop features in feature branches
- Create pull requests for review
- Merge to main only after tests pass
- Rebase feature branches regularly against main
-
Clone the repository:
git clone https://github.com/yourusername/teleop.git cd teleop
-
Create a virtual environment:
# On macOS/Linux python3 -m venv venv source venv/bin/activate # On Windows python -m venv venv venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Activate the virtual environment (if not already activated):
# On macOS/Linux source venv/bin/activate # On Windows venv\Scripts\activate
-
Run the main simulation:
python src/main.py
-
Or try one of the examples:
python examples/simple_teleop.py
With the virtual environment activated:
python -m pytest tests/
teleop/
├── docs/ # Documentation
├── src/ # Source code
│ ├── simulation/ # Simulation engine module
│ ├── robots/ # Robot models module
│ ├── operator/ # Operator interface module
│ ├── communication/ # Communication layer module
│ ├── common/ # Shared utilities and interfaces
│ └── main.py # Application entry point
├── tests/ # Test suite
│ ├── simulation/
│ ├── robots/
│ ├── operator/
│ ├── communication/
│ └── integration/
├── examples/ # Example usage scripts
├── requirements.txt # Project dependencies
├── venv/ # Virtual environment (not tracked by git)
└── README.md # Project overview
If you're experiencing "Import could not be resolved" errors in your IDE (for modules like numpy, matplotlib, etc.) even though the code runs correctly, try the following:
-
Install in Development Mode: After activating your virtual environment, run:
pip install -e .
-
Configure VSCode:
- Make sure your Python interpreter is set to the virtual environment's Python
- Reload your VSCode window after making configuration changes
- The provided
.vscode/settings.json
should handle most import resolution issues
-
Environment Variables: If the above doesn't work, you can set the PYTHONPATH environment variable before starting your IDE:
PYTHONPATH=$PYTHONPATH:$PWD code .
If you're seeing module override warnings, these are typically harmless but can be fixed by:
- Ensuring module names don't conflict with standard library or installed packages
- Using explicit relative imports
If you see errors like Import "setuptools" could not be resolved from source
, try:
-
Install Missing Packages:
pip install setuptools
-
Disable Missing Module Source Warnings: In VSCode, you can disable these warnings by adding to your settings.json:
"python.analysis.diagnosticSeverityOverrides": { "reportMissingModuleSource": "none" }
-
Reload Your Editor: After making changes, reload your editor window to apply them.