AutoVisConf Interface Documentation¶
Introduction¶
Brief: This file provides the configuration interface for the automated UAV visualization system, used to manage visualization parameters and scene configuration in simulation environments.
In UAV simulation, visualization configuration connects the physical model with the rendered scene. The AutoVisConf module provides automated visualization configuration through the MavVIS class, supporting quick scene setup, visual parameter adjustment, and sensor viewpoint configuration. It is suitable for tasks that require customized visualization effects, such as 3D scene rendering, multi-view monitoring, and flight data visualization.
As part of the PHM subsystem in RflySimSDK, this module focuses on visualization configuration during simulation. Its goal is to simplify control over complex visualization workflows so developers can focus on algorithm validation and system integration without working directly with low-level rendering details.
Podfault(PodfaultId)¶
Function Description: Set pod fault
Parameters (Args):
| Parameter Name | Type | Required | Default Value | Description |
|---|---|---|---|---|
PodfaultId |
- | Yes | - | Pod fault ID |
Return Value (Returns):
- None
Exceptions (Raises):
- None
Advanced Usage Example¶
Demonstrates complex composite scenarios (e.g., multi-class collaboration, asynchronous control, batch operations)
# Advanced example code
from RflySimSDK.phm.AutoVisConf import MavVIS
import threading
import time
# Multi-UAV collaborative visualization scenario
def multi_uav_vis_system():
# Create multiple visualization instances
vis_nodes = [MavVIS(uav_id=i) for i in range(5)]
# Batch configure Gaussian noise parameters (simulating varying sensor quality)
noise_profiles = [(0.1, 0.05), (0.2, 0.1), (0.05, 0.02), (0.15, 0.08), (0.3, 0.12)]
for vis, (mu, sigma) in zip(vis_nodes, noise_profiles):
vis.gasuss_noise(mu=mu, sigma=sigma)
# Asynchronously start visualization for each node
threads = []
def async_vis_show(vis_instance, delay):
time.sleep(delay) # Simulate network latency differences
vis_instance.visShow(enable=True, sync_mode=False)
for idx, vis in enumerate(vis_nodes):
t = threading.Thread(target=async_vis_show, args=(vis, idx * 0.5))
t.start()
threads.append(t)
# Fault injection: simulate sensor fault for UAV #3
time.sleep(2)
vis_nodes[2].Podfault(fault_type="sensor_drop", duration=5.0)
# Wait for all threads to complete
for t in threads:
t.join()
if __name__ == "__main__":
multi_uav_vis_system()
Notes and Pitfall Avoidance Guide¶
-
gasuss_noiseParameter Units: Themuandsigmaparameters are dimensionless relative values (proportional to full-scale range), not physical units. For instance, if a sensor's range is 100 m, settingsigma=0.1corresponds to an actual noise of 10 m. Avoid mistakenly specifying absolute values, which may cause excessive noise or simulation distortion. -
PodfaultFault Duration: Thedurationparameter is in seconds, but internal timing depends on thevisShowrefresh cycle. If the visualization frame rate is too low (<10 Hz), the actual fault duration may significantly deviate from the specified value. In scenarios with strict real-time requirements, it is recommended to usesync_mode=True. -
Multi-Instance Resource Conflicts: When creating multiple
MavVISinstances within the same process, ID conflicts in the underlying visualization channels may occur ifuav_idvalues are duplicated or unspecified, leading to screen flickering or data stream corruption. Ensure each instance'suav_idis globally unique, or explicitly release resources by callingvisShow(enable=False)before reconstructing instances. -
Asynchronous Thread Safety: Methods such as
visShow,gasuss_noise, andPodfaultinvolve OpenGL/DirectX rendering contexts and are not thread-safe. If invoked in subthreads (e.g., as in the asynchronous startup example), ensure the host environment supports multithreaded rendering (e.g., by settingsync_mode=Falseto unblock the main thread); otherwise, segmentation faults or rendering freezes may occur.
Changelog¶
2026-04-08: 🐛 fix: Corrected cv2 import method2025-04-01: fix