$ show guchuanv-alt/SimART
SimART is an open-source simulation platform for wireless communication and sensing research, integrating ray-tracing (Sionna RT), 3D visualization (VTK/Qt), drone simulation (AirSim/Unreal Engine), and ROS1 for data streaming. The system provides a desktop GUI (C++/Qt5) that loads 3D scenes from files, OpenStreetMap, or AirSim, and orchestrates real-time or offline radio propagation simulations. It generates channel knowledge maps (CKMs), beam codebooks, and system-level metrics (SINR, BLER, MCS), and supports machine learning-based beam selection via a DeepSense predictor. The platform is designed for researchers prototyping algorithms for UAV communications, beamforming, and link adaptation. While the codebase is functionally rich and modular in parts (scene providers, transform manager, socket workers), it suffers from significant technical drift: it depends on ROS1 (end-of-life), Unreal Engine 4.27 (discontinued), Qt5, and legacy VTK APIs. The C++ code contains large monolithic files (e.g., OsmSceneProvider.cpp ~1100 lines) and duplication between C++ and Python transform logic. There are no automated tests, and many configuration files lack schema validation. Despite these issues, several components (blender scripts, beam codebook utilities, scene provider interface) are well-isolated and could be reused in other projects with minimal adaptation.
The LLM identified 4 files worth highlighting for reuse:
Defines a pure virtual interface for scene providers (load, get scene data, progress callback). Implemented by FileSceneProvider, OsmSceneProvider, and AirSimSceneProvider. This pattern allows the GUI to switch between data sources without coupling to specific implementations. Reusable in any application that needs to abstract 3D scene loading from multiple backends.
Provides standalone functions for generating DFT codebooks (ULA/URA), normalizing beam powers, and building ROS BeamCodebook messages. Also includes utilities for loading codebooks from files and converting between beam indices and angles. This module is self-contained (only depends on numpy and ROS message types) and can be extracted for any project needing beam codebook management.
A Blender Python script that simplifies complex 3D building meshes into axis-aligned bounding boxes while preserving height and footprint. Useful for reducing scene complexity for ray tracing or visualization. The script is self-contained, well-commented, and can be reused in any Blender pipeline for map simplification.
Implements a socket-based worker that receives pose data (from rosbag replay) and runs Sionna RT simulation to produce RF observations. Uses length-prefixed JSON packets for communication, making it reusable as a generic simulation worker pattern. The script is self-contained and can be adapted for other offline simulation tasks.