You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Review PR #103 in detail, comment on it with findings, and recommend how to proceed (accept as-is, request changes, close and start fresh, or merge and refactor). Deliverable is the PR #103 comment thread itself — no code changes needed.
None
Feb 23
PR 2
GUI design & wireframes
Comprehensive layout design covering all config.yaml sections, conditional show/hide behavior, subscription block UI patterns, and YAML generation workflow. Output: wireframes/mockups + design doc committed to doc/gui-design/.
PR 1 completed
Mar 16
PR 3
Framework recommendation
Research GUI frameworks independently, pick one to recommend with justification (why it fits FIXS needs, ease of use, cross-platform support, maintainability). Output: short write-up in doc/gui-design/.
Reviewer:@Kazawaryu — review and approve PRs before merge
Is your feature request related to a problem?
Issue #78 proposed a simple GUI for non-developer users, and PR #103 delivered an initial implementation focused on IPG CarMaker co-simulation scenarios (CarMaker-SUMO and CarMaker-Simulink-SUMO). However, the current GUI effort has several limitations:
Narrow scope: The PR #78 / Add GUI for non-developer users #103 GUIs (GUI_CM-Sumo.py, GUI_Simulink-CM-Sumo.py) only cover CarMaker+SUMO workflows. They do not expose any of the config.yaml settings — users still need to manually edit YAML for SimulationSetup, ApplicationSetup, XilSetup, CarlaSetup, SumoSetup, etc.
Hardcoded paths/parameters: SUMO launch parameters (port 1337, step length 0.1, etc.), CarMaker paths (C:\IPG\carmaker\...), and config file names (RS_config_release.yaml) are hardcoded rather than driven by the YAML configuration.
No config.yaml editing: The GUIs are process launchers (pick files, click Run), not configuration editors. Users cannot view or modify any of the ~60+ YAML fields documented in doc/ConfigSetup.md.
Separate GUI per workflow: There are three separate GUI scripts (GUI_CM-Sumo.py, GUI_Simulink-CM-Sumo.py, GUI_Simulink-CM-Sumo_loop.py) rather than a unified interface that adapts to the selected workflow.
Describe the solution you'd like
This issue is a design-only task. The goal is to produce a comprehensive GUI design document that covers all current config.yaml settings. Implementation will follow as a separate issue.
Design Philosophy
The existing FIXS pipeline reads config.yaml and sets up co-simulation correctly. The GUI should act as a wrapper/front-end that helps users configure and generate valid config.yaml files for their desired simulation, without breaking the existing YAML-driven workflow. The GUI outputs a .yaml file (e.g., via an explicit "Generate YAML" / "Export config.yaml" button) that FIXS components consume as they do today.
Deliverables
Audit of current GUI effort — Document what PR #78 / Add GUI for non-developer users #103 covers, its limitations, and what is missing relative to the full config.yaml spec.
Comprehensive GUI design — A design (wireframes, layout descriptions, or mockups) for a unified GUI that can:
Load/save/create config.yaml files with full coverage of all sections:
ApplicationSetup (EnableApplicationLayer, ApplicationPort, VehicleSubscription, DetectorSubscription, SignalSubscription — including the complex subscription block schema with type/attribute/ip/port)
VehicleMessageField selection (30+ available fields documented in ConfigSetup.md)
Conditionally show/hide sections based on workflow (e.g., hide CarlaSetup when not enabled, hide CarMakerSetup when not using CarMaker)
Explicitly generate config.yaml — Provide a clear button/action to export the configured settings as a valid config.yaml file that FIXS can consume directly
Validate configurations before saving (required fields, port conflicts, path existence)
Design decisions — Recommend UI patterns for complex structures like subscription blocks (dynamic list of subscription entries, each with type/attribute/ip/port). Also recommend GUI framework with trade-off analysis — framework choice is still open for discussion.
Reference Materials
doc/ConfigSetup.md — Complete YAML field reference with types, defaults, and notes
CommonLib/ConfigHelper.h — C++ structs defining all config sections (SimulationSetup_t, ApplicationSetup_t, XilSetup_t, CarMakerSetup_t, CarlaSetup_t, SumoSetup_t)
Existing test config.yaml files in tests/ subdirectories for real-world examples
Additional context
The coding/implementation of this GUI design will be tracked in a separate follow-up issue.
The subscription block schema is the most complex UI challenge — each subscription has a type (ego/link/point/vehicleType for vehicles; intersection for signals; detector for detectors), an attribute map with varying keys per type, and ip/port lists.
Workflow: One Issue, One Branch, Three PRs
All work on one branch (e.g.,
feature/#121-gui-design), with three sequential PRs:doc/gui-design/.doc/gui-design/.How to work
feature/#121-gui-designfrommainRoles
Is your feature request related to a problem?
Issue #78 proposed a simple GUI for non-developer users, and PR #103 delivered an initial implementation focused on IPG CarMaker co-simulation scenarios (CarMaker-SUMO and CarMaker-Simulink-SUMO). However, the current GUI effort has several limitations:
GUI_CM-Sumo.py,GUI_Simulink-CM-Sumo.py) only cover CarMaker+SUMO workflows. They do not expose any of theconfig.yamlsettings — users still need to manually edit YAML for SimulationSetup, ApplicationSetup, XilSetup, CarlaSetup, SumoSetup, etc.C:\IPG\carmaker\...), and config file names (RS_config_release.yaml) are hardcoded rather than driven by the YAML configuration.GUI_CM-Sumo.py,GUI_Simulink-CM-Sumo.py,GUI_Simulink-CM-Sumo_loop.py) rather than a unified interface that adapts to the selected workflow.Describe the solution you'd like
This issue is a design-only task. The goal is to produce a comprehensive GUI design document that covers all current
config.yamlsettings. Implementation will follow as a separate issue.Design Philosophy
The existing FIXS pipeline reads
config.yamland sets up co-simulation correctly. The GUI should act as a wrapper/front-end that helps users configure and generate validconfig.yamlfiles for their desired simulation, without breaking the existing YAML-driven workflow. The GUI outputs a.yamlfile (e.g., via an explicit "Generate YAML" / "Export config.yaml" button) that FIXS components consume as they do today.Deliverables
SimulationSetup(12 fields: EnableRealSim, EnableVerboseLog, SimulationEndTime, EnableExternalDynamics, VehicleMessageField, SelectedTrafficSimulator, TrafficSimulatorIP/Port, SimulationMode/Parameter, TrafficLayerIP/Port)SumoSetup(6 fields: SpeedMode, ExecutionOrder, EnableAutoLaunch, SumoConfigFile, NumClients, RuntimeLibraryPath)ApplicationSetup(EnableApplicationLayer, ApplicationPort, VehicleSubscription, DetectorSubscription, SignalSubscription — including the complex subscription block schema with type/attribute/ip/port)XilSetup(EnableXil, AsServer, VehicleSubscription, SignalSubscription, DetectorSubscription)CarMakerSetup(9 fields: EnableCosimulation, EnableEgoSimulink, CarMakerIP/Port, TrafficRefreshRate, EgoId, EgoType, SynchronizeTrafficSignal, TrafficSignalPort)CarlaSetup(12 fields: EnableVerboseLog, EnableCosimulation, EnableExternalControl, UseVehicleTypeAsBlueprint, CarlaServerIP/Port, CarlaClientIP/Port, CarlaMapName, CenteredViewId, TrafficRefreshRate, InterestedIds)VehicleMessageFieldselection (30+ available fields documented in ConfigSetup.md)config.yamlfile that FIXS can consume directlyReference Materials
SimulationSetup_t,ApplicationSetup_t,XilSetup_t,CarMakerSetup_t,CarlaSetup_t,SumoSetup_t)tests/ipgGUI/Python/GUI_CM-Sumo.py,GUI_Simulink-CM-Sumo.py,guiUtils.pytests/subdirectories for real-world examplesAdditional context
type(ego/link/point/vehicleType for vehicles; intersection for signals; detector for detectors), anattributemap with varying keys per type, andip/portlists.Related