The pyespargos repository provides a Python library for interacting with ESPARGOS WiFi channel sounder hardware to capture, process, and deliver Channel State Information (CSI) data. The library handles low-level communication with single or multiple ESPARGOS boards, clusters CSI data from distributed antennas, applies calibration to compensate for hardware imperfections, and offers signal processing utilities for beamforming, polarization analysis, and direction-of-arrival estimation. The architecture is modular, with core components separated into board communication (board.py), multi-board pooling and clustering (pool.py), calibration management (calibration.py), and signal processing (util.py). A demo framework (demos/common/) provides reusable Qt/QML-based applications for various WiFi sensing tasks, including MUSIC spectrum analysis, polarization visualization, radar CSI processing, and camera-based beamforming overlays. The demos inherit from a base application class and combine mixins for backlog handling, combined array configuration, and CSI format selection. While the library is tightly coupled to the ESPARGOS hardware firmware (particularly the CSI packet formats and controller API), it encapsulates this complexity behind a clean interface. The signal processing utilities in util.py are hardware-agnostic and represent the most reusable component, offering implementations of advanced algorithms like MUSIC and MVDR beamforming. The clustering logic in cluster.py provides a general pattern for fusing sensor data from multiple distributed nodes. The repository shows active maintenance with recent commits and a linting CI workflow, though it carries some technical debt in the form of incomplete features and hardware-specific calibration complexity.
Pyroomacoustics is a Python library for room acoustics simulation and audio array signal processing. It provides a modular framework for creating virtual acoustic environments (rooms with walls, materials, sources, and microphone arrays) and simulating room impulse responses using both image-source and ray-tracing methods, with a C++ backend for performance. Beyond simulation, it offers a comprehensive suite of audio processing algorithms: beamforming (delay-and-sum, MVDR, rake filters), direction-of-arrival estimation (MUSIC, SRP-PHAT, FRIDA, CSSM, TOPS, WAVES), blind source separation (AuxIVA, ILRMA, FastMNMF, TRINICON), adaptive filtering (NLMS, RLS, subband LMS), and noise reduction (spectral subtraction, subspace, iterative Wiener). It also includes directivity modeling (analytic patterns and measured SOFA data), STFT/DFT transforms with multiple backends, and utility modules for resampling, filterbanks, and metrics (RT60, PESQ). The library is designed for research prototyping and reproducible experiments, with extensive unit tests and CI/CD for multi-platform builds.
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.