This software system provides a modular, multi-threaded architecture to control an Unmanned Ground Vehicle (UGV) through tele-operation. It integrates live sensor data streams, user input from a controller, vehicle actuation commands, and real-time graphical display, ensuring safe and responsive operation.
- Thread Management Module: Initializes shared memory, launches and monitors all subsystem threads, manages thread heartbeats, and handles graceful shutdown or restart of threads based on health status.
- Sensor Modules:
- Laser Module: Connects to a laser rangefinder to receive and process live 2D scan data for obstacle detection.
- GNSS Module: Streams global positioning data in UTM coordinates to track vehicle location.
- Controller Module: Interfaces with an X-box controller to capture user steering and speed commands.
- Vehicle Control Module: Sends formatted control commands to the UGV hardware to drive and steer based on controller inputs.
- Display Module: Publishes sensor data over TCP/IP to a visualization engine (e.g., MATLAB) for real-time graphical representation.
- Crash Avoidance Module: Processes laser and control data to inhibit vehicle motion when obstacles are detected within a critical distance, enhancing safety.
The system employs object-oriented principles with each module running as an independent thread. Modules communicate via shared memory and use heartbeat signals for health monitoring and fault tolerance. Networked communication with hardware and display components uses TCP/IP protocols.
- C++ (Visual Studio 2022)
- Multi-threading and concurrency
- TCP/IP socket communication
- Shared memory synchronization
- X-box controller input handling
- Real-time data visualization via MATLAB interface