Skip to content

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_noise Parameter Units: The mu and sigma parameters are dimensionless relative values (proportional to full-scale range), not physical units. For instance, if a sensor's range is 100 m, setting sigma=0.1 corresponds to an actual noise of 10 m. Avoid mistakenly specifying absolute values, which may cause excessive noise or simulation distortion.

  • Podfault Fault Duration: The duration parameter is in seconds, but internal timing depends on the visShow refresh 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 use sync_mode=True.

  • Multi-Instance Resource Conflicts: When creating multiple MavVIS instances within the same process, ID conflicts in the underlying visualization channels may occur if uav_id values are duplicated or unspecified, leading to screen flickering or data stream corruption. Ensure each instance's uav_id is globally unique, or explicitly release resources by calling visShow(enable=False) before reconstructing instances.

  • Asynchronous Thread Safety: Methods such as visShow, gasuss_noise, and Podfault involve 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 setting sync_mode=False to unblock the main thread); otherwise, segmentation faults or rendering freezes may occur.

Changelog

  • 2026-04-08: 🐛 fix: Corrected cv2 import method
  • 2025-04-01: fix