GUI for RC car telemetry and controls with high-performance C++ extensions and real-time 3D visualization.
- PyQt6-based graphical interface for RC car control
- High-performance C++ extensions via pybind11 for robotics calculations
- GPU-accelerated 3D point cloud visualization using Open3D + CUDA
- OpenGL-backed 3D visualization widget with Python bindings
- CMake-based build system with MSVC/Ninja support
- Standalone C++ testing capabilities
- Python 3.10+ with development headers
- PyQt6
- opencv-python
- pydualsense
- zeroconf
- CMake 3.15+
- Visual Studio 2022 with "Desktop development with C++" workload (Windows)
- GCC or Clang on Linux/macOS
- Ninja (recommended, auto-installed via pip)
- OpenGL development libraries
- CUDA 12.x (12.0-12.8) - Required for GPU-accelerated 3D processing
⚠️ CUDA 13.x is NOT supported (Thrust/cccl header incompatibility with Open3D's stdgpu)
git clone https://github.com/cduarte0306/RC_CAR_GUI.git
cd RC_CAR_GUI
git submodule update --init --recursivepip install -r requirements.txt
pip install ninja # Recommended for faster buildspython setup_cpp.py buildpython setup_cpp.py build --cudapython setup_cpp.py build --debug --cudaThis will:
- Configure CMake with the appropriate compiler (Ninja preferred)
- Fetch and build Open3D with CUDA support (first build takes 30-60 minutes)
- Build the
rc_car_cppPython extension module - Place the compiled module in
python_modules/
| Command | Description |
|---|---|
python setup_cpp.py build |
CPU-only Release build |
python setup_cpp.py build --cuda |
GPU-accelerated Release build |
python setup_cpp.py build --debug |
Debug build (CPU-only) |
python setup_cpp.py build --debug --cuda |
Debug build with CUDA |
python setup_cpp.py rebuild |
Clean and rebuild |
python setup_cpp.py rebuild --cuda |
Clean rebuild with CUDA |
python setup_cpp.py clean |
Remove all build artifacts |
python setup_cpp.py test |
Build and run C++ tests |
python setup_cpp.py install |
Install the python package |
From the project root:
cd src
python run.pyRC_CAR_GUI/
├── cpp/ # C++ source code
│ ├── include/ # Header files
│ │ └── math_operations.h
│ ├── src/ # Implementation files
│ │ ├── math_operations.cpp
│ │ └── bindings.cpp # Pybind11 bindings
│ └── tests/ # Standalone C++ tests
│ └── test_math_operations.cpp
├── external/
│ └── pybind11/ # Pybind11 submodule
├── python_modules/ # Compiled Python modules (generated)
├── src/ # Python application source
├── CMakeLists.txt # CMake configuration
└── setup_cpp.py # Build automation script
The project includes VSCode tasks for easy C++ development:
- Build C++ Module (Ctrl+Shift+B) - Build in release mode
- Build C++ Module (Debug) - Build in debug mode
- Rebuild C++ Module - Clean and rebuild
- Clean C++ Build - Remove build artifacts
- Test C++ Module - Run standalone C++ tests
Access tasks via: Terminal > Run Task... or press Ctrl+Shift+P and type "Tasks: Run Task"
import sys
sys.path.insert(0, 'python_modules')
import rc_car_cpp
# Use high-performance C++ functions
magnitude = rc_car_cpp.MathOperations.vector_magnitude(3.0, 4.0, 0.0)
angle = rc_car_cpp.MathOperations.angle_between_vectors(1, 0, 0, 0, 1, 0)
x, y, z = rc_car_cpp.MathOperations.normalize_vector(3.0, 4.0, 0.0)The C++ code can be built and tested independently:
python setup_cpp.py testOr run the executable directly after building:
# Windows
build\Release\test_cpp.exe
# Linux/macOS
build/test_cpp- Make changes to C++ code in
cpp/directory - Rebuild the module:
python setup_cpp.py rebuildor use VSCode task (Ctrl+Shift+B) - Test standalone:
python setup_cpp.py test - Use in Python application
Install CMake from https://cmake.org/download/ and add it to your PATH.
Install Visual Studio 2022 with "Desktop development with C++" workload from https://visualstudio.microsoft.com/
You have CUDA 13.x installed. Open3D requires CUDA 12.x due to Thrust header reorganization in CUDA 13.
- Install CUDA 12.x alongside CUDA 13.x
- The build script auto-detects and uses CUDA 12.x when available
- Or build without CUDA:
python setup_cpp.py build(no--cudaflag)
This happens with Debug builds + CUDA on MSVC. The --debug flag now automatically:
- Builds Open3D in Release mode (avoids MSVC iterator conflicts)
- Keeps debug symbols for your code (
rc_car_app,test_cpp)
- Ensure the build completed successfully
- Check that
python_modules/rc_car_cpp.pyd(Windows) or.so(Linux) exists - Verify Python version matches the one used during build
Normal! First build fetches and compiles Open3D + dependencies (~30-60 minutes). Subsequent builds are incremental and much faster.
[Add your license information here]