Deployment utility for the RCSIM (Race Ready Autonomous System) software stack targeting Raspberry Pi 5 single-board computers equipped with Hailo-8L accelerators. The application provides a modern web browser interface (Web GUI) powered by Flask, alongside a legacy Tkinter-based fallback interface.
- Key Features
- Requirements & Dependencies
- Project Structure
- Build Process
- Configuration
- Usage Instructions
- Automated Deployment: Automatically archives local source code, securely uploads it via SFTP to the Raspberry Pi 5, triggers remote Docker image builds, and spawns system containers/services.
- SSH Credentials Management: Supports both simple password authentication and private SSH key authentication (including keys protected by a passphrase).
- Advanced Hardware Tuning: Configure IMU drivers, interfaces, and baudrates for GPS, LiDAR, and ExpressLRS receiver directly from the Web GUI.
- RTK / NTRIP Integration: Full parameterization of NTRIP base stations and RTK correction feeds for high-precision GPS coordinates.
- Remote Diagnostics: Real-time monitoring of RPi 5 CPU load, temperature, memory usage, and the status of system docker containers/services.
- Flexible Communication: Set communication protocols (e.g., NATIVE, MAVLINK) and customize system IDs and telemetry frequency (Hz).
Before running the deployment tool, ensure the following dependencies are installed:
- Python 3.8+ (Python 3.10+ recommended on Windows)
- Required Python Packages:
pip install flask paramiko requests cryptography
- For packaging the application into a standalone executable (.exe):
pip install pyinstaller pyinstaller-hooks-contrib
RCSIM_deployment_tool/
├── core/
│ ├── build_deployment.py # PyInstaller invocation script
│ ├── config_manager.py # Handles settings management and localization
│ ├── deployment_logic.py # Core SSH/SFTP transfer and remote command logic
│ ├── deployment_settings.json # Saved local settings
│ └── service_monitor.py # Background thread tracking Raspberry Pi status
├── ui/
│ ├── locales/ # Localized translation catalogs (pl, en)
│ └── ui_components.py # Legacy Tkinter UI components (fallback)
├── web/ # Static Web GUI assets and templates (HTML/CSS/JS)
├── RCsimDeployment.spec # PyInstaller spec file for compiling the EXE
├── RCsimRPi5deploymentapp.py # Main application launcher entrypoint
├── build_deployment.bat # Windows batch script to build the executable
├── README.md # Polish documentation (PL)
└── README_EN.md # This documentation file (EN)
The RCSIM deployment utility can be compiled into a single, standalone .exe executable for Windows. This lets operators run the tool without needing a Python interpreter installed on the host machine.
- Run the batch script
build_deployment.bat(optionally as Administrator). - The script will automatically:
- Verify that
PyInstaller,paramiko, andcryptographyare installed, fetching them via pip if missing. - Execute
core/build_deployment.pyto initiate the packaging. - PyInstaller parses the configuration from
RCsimDeployment.specto correctly bundle the static Web UI files, localization files, and libraries (likeparamiko,cryptography, andnacl).
- Verify that
- Once completed successfully, the built binary is located at:
RCSIM_deployment_tool/dist/RCsimDeployment.exe
All deployment configurations and hardware preferences are saved locally inside core/deployment_settings.json (or next to the .exe file once compiled).
Below is the template containing all available configuration fields:
{
"rpi_host": "192.168.1.100",
"rpi_user": "rcsim",
"rpi_pass": "ssh_password_here",
"project_source": "C:\\Path\\To\\Your\\RCSIMDEPLOY",
"pc_tailscale_ip": "100.x.y.z",
"use_rtk": true,
"ntrip_user": "ntrip_username",
"ntrip_pass": "ntrip_password",
"ntrip_host": "rtk2go.com",
"ntrip_port": "2101",
"ntrip_mount": "BaseStationMountpoint",
"imu_driver": "native_bmx160_bmp388",
"gps_enabled": true,
"gps_port": "/dev/ttyAMA0",
"gps_baudrate": "115200",
"camera_port": "cam0",
"camera_resolution": "1920x1080",
"camera_fps": "30",
"camera_bitrate": "10 Mbps",
"camera_type": "imx219",
"lidar_enabled": true,
"lidar_port": "/dev/ttyUSB0",
"lidar_baudrate": "115200",
"elrs_enabled": true,
"elrs_port": "/dev/ttyAMA3",
"elrs_baudrate": "57600",
"language": "English",
"rpi_use_key": false,
"rpi_key_path": "",
"rpi_key_passphrase": "",
"pc_udp_port": "12347",
"rpi_udp_port": "12346",
"comm_mode": "AUTO",
"comm_protocol": "NATIVE",
"mavlink_system_id": "1",
"mavlink_throttle_hz": "50",
"fast_mode": false,
"app_type": "RCSIM_DOCKER"
}rpi_host: Target Raspberry Pi 5 IP address or hostname.rpi_user: SSH login username (e.g.,rcsimorpi).rpi_pass: SSH login password.rpi_use_key: Whether to log in using an SSH private key (true/false).rpi_key_path: Absolute or relative path to the private key file.rpi_key_passphrase: Optional passphrase to decrypt the private key.
use_rtk: Toggles GPS RTK corrections.ntrip_host/ntrip_port: URL and port of the NTRIP correction service provider.ntrip_user/ntrip_pass: Credentials to authenticate against the NTRIP caster.ntrip_mount: The specific mountpoint of the correction station.
imu_driver: Selected IMU sensor driver (e.g.,native_bmx160_bmp388ornative_mpu9250).gps_enabled/gps_port/gps_baudrate: Hardware status and UART parameters of the GPS module.lidar_enabled/lidar_port/lidar_baudrate: LiDAR status and serial communication speed.elrs_enabled/elrs_port/elrs_baudrate: Configuration for the ExpressLRS remote control receiver.camera_type/camera_resolution/camera_fps/camera_bitrate: CSI/USB camera module type and target stream parameters.
comm_mode: Physical connection mode (e.g.,AUTO,UDP,SERIAL).comm_protocol: Telemetry stream format (NATIVEorMAVLINK).mavlink_system_id: MAVLink system identifier for the vehicle.mavlink_throttle_hz: Telemetry publishing frequency (e.g. 50 Hz).pc_udp_port/rpi_udp_port: Networking UDP ports used for telemetries and command streams.
- Install requirements:
pip install -r requirements.txt # Or install manually: flask, paramiko, requests - Start the launcher:
python RCsimRPi5deploymentapp.py
- Open your favorite web browser and go to:
http://127.0.0.1:5000
- Locate
RCsimDeployment.exeinside thedist/directory and execute it. - The tool automatically boots the web server and opens the browser interface.
- Configure the connection, path, and hardware fields, then click "Start Deployment".