CARLA ? C-Shenron based Simualtor for Sensor data generation.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

16 KiB

Graph Report - . (2026-04-21)

Corpus Check

  • 89 files · ~92,297 words
  • Verdict: corpus is large enough that graph structure adds value.

Summary

  • 330 nodes · 475 edges · 33 communities detected
  • Extraction: 68% EXTRACTED · 32% INFERRED · 0% AMBIGUOUS · INFERRED: 151 edges (avg confidence: 0.7)
  • Token cost: 0 input · 0 output

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. ScenarioBase - 26 edges
  2. ShenronRadarModel - 22 edges
  3. radar - 20 edges
  4. RadarProcessor - 20 edges
  5. main() - 20 edges
  6. run_testbench() - 12 edges
  7. Recorder - 11 edges
  8. SensorManager - 11 edges
  9. BrakingScenario - 9 edges
  10. CutInScenario - 9 edges

Surprising Connections (you probably didn't know these)

  • scenarios/showcase.py --------------------- Custom high-impact demo scene: Left --uses--> ScenarioBase [INFERRED] scenarios\showcase.py → scenarios\base.py
  • Step 11: Deep Intersection Guidance for Ego. --uses--> ScenarioBase [INFERRED] scenarios\showcase.py → scenarios\base.py
  • Step 11: Multi-stage steering logic. --uses--> ScenarioBase [INFERRED] scenarios\showcase.py → scenarios\base.py
  • src/scenario_loader.py ---------------------- Dynamic scenario discovery and loa --uses--> ScenarioBase [INFERRED] src\scenario_loader.py → scenarios\base.py
  • Discover all scenario modules inside the 'scenarios' package. Returns a sort --uses--> ScenarioBase [INFERRED] src\scenario_loader.py → scenarios\base.py

Communities

Community 0 - "Scenario Framework & Maneuvers"

Cohesion: 0.05 Nodes (18): ABC, scenarios/base.py ----------------- Abstract base class for all CARLA simulati, Return a dict that will be merged into every recorded frame's metadata, Convenience method: destroy all actors tracked in self._actors. Call th, Return a waypoint distance metres ahead of the ego vehicle. lane_offs, Abstract interface for all ADAS simulation scenarios. Lifecycle ----, Unified 1:1 logging for all scenarios. This method ensures clean consol, ScenarioBase (+10 more)

Community 1 - "Radar Simulation & Processing"

Cohesion: 0.08 Nodes (22): radar, Load normalized antenna gain LUTs (dB) from CSV files. Expected CSV f, class to define the radar object with it's settings and to extract time interval, _get_gpu_info(), main(), process_session(), Retrieve GPU hardware info for telemetry display., Return the raw internal heatmaps and thresholds for the last processed frame. (+14 more)

Community 2 - "Orchestration & Sensor Management"

Cohesion: 0.08 Nodes (13): Called immediately after the ego vehicle is spawned. Override to react, Allow the orchestrator to inject parameters parsed from CLI. This maps, main(), parse_args(), src/main.py ----------- Scenario-agnostic orchestrator for the CARLA ADAS simu, SensorManager, scenarios/showcase.py --------------------- Custom high-impact demo scene: Left, Step 11: Deep Intersection Guidance for Ego. (+5 more)

Community 3 - "Data Recording & Heatmaps"

Cohesion: 0.09 Nodes (18): check_save_path(), main(), Stitch captured frames into .mp4 files for easy viewing., Categorise actor into broad ADAS classes., Calculate relative range, azimuth, and closing velocity. Uses right-han, Helper to convert world location to transform-local location., Helper to save image in a background thread., Recorder (+10 more)

Community 4 - "Data Conversion Utilities"

Cohesion: 0.1 Nodes (14): convert2D_img_func(), convert_sem_lidar_2D_img_func(), main(), converts the 3D radar raw data to 2d range-angle image of dimension 256X256, converts the semantic_lidar data to the range angle 2D image of dimension 256X25, # apply fft on each antenna to get angle profile, cart2polar(), get_range_angle() (+6 more)

Community 5 - "Web Dashboard & Loader"

Cohesion: 0.09 Nodes (16): get_config(), get_scenario_params(), is_simulation_running(), PollingFilter, dashboard/app.py ---------------- Flask backend for the BATL CARLA Orchestrator, Forces all CarlaUE4 processes to terminate., Stops the Flask server itself., Returns True if a scenario process is currently alive. (+8 more)

Community 6 - "LiDAR & Fast Heatmap Gen"

Cohesion: 0.11 Nodes (13): get_gpu_id_most_avlbl_mem(), heatmap_gen(), heatmap_gen(), Cropped_forRadar(), map_carla_semantic_lidar_latest(), Function to map material column in the collected carla ray_cast_shenron to shenr, Removes Occlusions and calculates loss for each point, rotate_points() (+5 more)

Community 7 - "DSP & CFAR Detection"

Cohesion: 0.14 Nodes (8): CA_CFAR, cart2polar(), convert_adc_to_3d_fft(), polar_to_cart(), Description: ------------ Cell Averaging - Constant False Alarm Ra, Description: ------------ Performs the automatic detection, Function to convert adc data to RA tensor Input: adcData:, convert a polar range angle tensor to cartesian array Input: RATe

Community 8 - "Scene Reconstruction"

Cohesion: 0.18 Nodes (8): cart2sph(), get_loss_2(), get_loss_3(), Class with all the functions to modify OSM scenario and thus generate the points, Note: angles should be used for power calculation as it is in reflecting surface, Note: angles should be used for power calculation as it is in reflecting surface, Sceneset, sph2cart()

Community 9 - "Dashboard Frontend (JS)"

Cohesion: 0.33 Nodes (7): appendLog(), chip(), renderShenronTelemetry(), resetIdleTimer(), setLoadingState(), startStream(), updateShenronProgress()

Community 10 - "MCAP Dataset Conversion"

Cohesion: 0.31 Nodes (9): convert_folder(), load_frames(), main(), postprocess_ra(), Refined RA post-processing pipeline for Physical Realism. Restores the natu, Polar-to-Cartesian scan conversion following FIG / Guide logic. Converts RA, Convert 2D array to colormapped B64 PNG with guide-compliant normalization., render_heatmap() (+1 more)

Community 11 - "Radar Signal Detection"

Cohesion: 0.22 Nodes (5): CA_CFAR, Description: ------------ Performs the automatic detection o, Description: ------------ Cell Averaging - Constant False Alarm Rate, apply range window and doppler window and apply fft on each sample to get range, apply fft on each chirp to get doppler profile

Community 12 - "Data Quality Inspection"

Cohesion: 0.33 Nodes (2): inspect_gt(), load_frame()

Community 13 - "Deep Metrology Analysis"

Cohesion: 0.83 Nodes (3): analyze_iteration(), power_law(), run_metrology_suite()

Community 14 - "Metrology Comparison"

Cohesion: 1.0 Nodes (0):

Community 15 - "Community 15"

Cohesion: 1.0 Nodes (0):

Community 16 - "Community 16"

Cohesion: 1.0 Nodes (0):

Community 17 - "Community 17"

Cohesion: 1.0 Nodes (0):

Community 18 - "Community 18"

Cohesion: 1.0 Nodes (0):

Community 19 - "Community 19"

Cohesion: 1.0 Nodes (0):

Community 20 - "Community 20"

Cohesion: 1.0 Nodes (1): Human-readable scenario identifier (e.g. 'braking').

Community 21 - "Community 21"

Cohesion: 1.0 Nodes (1): Initialise the scenario: - Store world / ego / tm references.

Community 22 - "Community 22"

Cohesion: 1.0 Nodes (1): Per-tick logic executed inside the main simulation loop. Parameters

Community 23 - "Community 23"

Cohesion: 1.0 Nodes (1): Destroy all actors spawned by this scenario. Always call this in a fina

Community 24 - "Community 24"

Cohesion: 1.0 Nodes (1): Override to request a specific weather preset for this scenario. If Non

Community 25 - "Community 25"

Cohesion: 1.0 Nodes (1): Override to request a specific duration for this scenario. If None, the

Community 26 - "Community 26"

Cohesion: 1.0 Nodes (1): Override to request a specific spawn point for the ego vehicle. Returns

Community 27 - "Community 27"

Cohesion: 1.0 Nodes (0):

Community 28 - "Community 28"

Cohesion: 1.0 Nodes (0):

Community 29 - "Community 29"

Cohesion: 1.0 Nodes (0):

Community 30 - "Community 30"

Cohesion: 1.0 Nodes (0):

Community 31 - "Community 31"

Cohesion: 1.0 Nodes (0):

Community 32 - "Community 32"

Cohesion: 1.0 Nodes (0):

Knowledge Gaps

  • 39 isolated node(s): dashboard/app.py ---------------- Flask backend for the BATL CARLA Orchestrator, Returns True if a scenario process is currently alive., Forces all CarlaUE4 processes to terminate., Stops the Flask server itself., scenarios/base.py ----------------- Abstract base class for all CARLA simulati (+34 more) These have ≤1 connection - possible missing edges or undocumented components.
  • Thin community Metrology Comparison (2 nodes): analyze_session(), compare_metrology.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 15 (2 nodes): get_pos(), get_pos.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 16 (2 nodes): track_full_state.py, track_full_state() Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 17 (2 nodes): track_peaks.py, get_peak_tracking() Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 18 (2 nodes): compare_folders(), compare_iterations.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 19 (2 nodes): research_metrology(), research_metrology.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 20 (1 nodes): Human-readable scenario identifier (e.g. 'braking'). Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 21 (1 nodes): Initialise the scenario: - Store world / ego / tm references. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 22 (1 nodes): Per-tick logic executed inside the main simulation loop. Parameters Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 23 (1 nodes): Destroy all actors spawned by this scenario. Always call this in a fina Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 24 (1 nodes): Override to request a specific weather preset for this scenario. If Non Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 25 (1 nodes): Override to request a specific duration for this scenario. If None, the Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 26 (1 nodes): Override to request a specific spawn point for the ego vehicle. Returns Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 27 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 28 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 29 (1 nodes): verify_tags.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 30 (1 nodes): path_config.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 31 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 32 (1 nodes): check_lidar.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.

Suggested Questions

Questions this graph is uniquely positioned to answer:

  • Why does main() connect Orchestration & Sensor Management to Scenario Framework & Maneuvers, Radar Simulation & Processing, Data Recording & Heatmaps, Web Dashboard & Loader, MCAP Dataset Conversion? High betweenness centrality (0.263) - this node is a cross-community bridge.
  • Why does ShenronRadarModel connect Radar Simulation & Processing to Data Recording & Heatmaps? High betweenness centrality (0.179) - this node is a cross-community bridge.
  • Why does ScenarioBase connect Scenario Framework & Maneuvers to Orchestration & Sensor Management, Web Dashboard & Loader? High betweenness centrality (0.122) - this node is a cross-community bridge.
  • Are the 16 inferred relationships involving ScenarioBase (e.g. with BrakingScenario and scenarios/braking.py -------------------- Lead Vehicle Hard Braking Scenario. A) actually correct? ScenarioBase has 16 INFERRED edges - model-reasoned connections that need verification.
  • Are the 15 inferred relationships involving ShenronRadarModel (e.g. with Retrieve GPU hardware info for telemetry display. and FastHeatmapEngine) actually correct? ShenronRadarModel has 15 INFERRED edges - model-reasoned connections that need verification.
  • Are the 15 inferred relationships involving radar (e.g. with ShenronRadarModel and Initialize the Shenron Radar Model. Args: radar_) actually correct? radar has 15 INFERRED edges - model-reasoned connections that need verification.
  • Are the 14 inferred relationships involving RadarProcessor (e.g. with ShenronRadarModel and Initialize the Shenron Radar Model. Args: radar_) actually correct? RadarProcessor has 14 INFERRED edges - model-reasoned connections that need verification.