-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migration of maliput viewer plugin #377
Comments
Architecture alternatives Option 1: multiple plugins talking to each otherDescription: one core plugin to load the RoadNetwork and to answer queries to it. Multiple plugins to visualize information (now widgets). PROs:
CONSs:
Option 2: same structure as of today but with new widget representationsDescription: will keep the backend of the widget but change the UI to use QML and the new tooling offered by ign-gui and ign-rendering. PROs:
CONSs:
Migration caveats
PreferenceGiven that the the second option might imply less work than the other, we incline towards option 2. |
Option 2 - Labor breakdown
Total time estimation: 20 days of work per FTE |
perhaps we can rephrase one of these bullet points because they currently seem to both say that they are the easier migration path. For Option 1, should we say "Incremental migration" instead of "Easier migration"? |
I see your point. Let me try to expand a bit what we discussed with @francocipollone . Option 1 will imply multiple plugins, one independent from the other what makes it simpler. Each new feature will not be added a monolithic plugin that shares code a significant amount of code with the old ign deps. Option 2 implies less duplicated code which in turns ends up being less code to write but might require some refactor in what currently exists. I think we can achieve an incremental migration with both options. Thoughts? |
we should also keep in mind that the Scene3D plugin was duplicated into ign-gazebo and has had some changes there: I had to port some changes from ign-gazebo to fix the material loading for Scene3D in ign-gui (gazebosim/gz-gui#191). I can look to see if the RayCast support is different in ign-gazebo and is worth porting to ign-gui |
for Option 1: perhaps we can say it is easier to maintain? |
[Task 5]: Provide Ray-cast support.Isuee foundIn order to provide raycast suport we need first to be able to catch the mouse event on the scene ( Moving to a solutionI've modified Demo: mouse_event.mp4Pushing this change to upstreamI've suggested this change to the |
Updates on [Task 5]: Provide Ray-cast support.Inspired a bit on the open PR in ignition gui and digging deeper on the QT event system I realized there is a way to hook to the This is implemented in #388 |
[Task 7]: Select lanes.This task was split into two tasks/PRs. Tasks:
|
We missed one task which is visualize the phase for the selected lanes --> I've added it to the labor breakdown ps: I am taking task 8 |
[Task 9]: Select phase #398This task would imply:
AppendixA simple road rulebook + phase ring book for the TShapeRoad xodr could be the following. # -*- yaml -*-
---
RoadRulebook:
RightOfWayRules:
- ID: WestApproach
States:
Go: []
Stop: []
Zone:
- Lane: "1_0_1"
ZoneType: StopAllowed
- ID: EastApproach
States:
Go: []
Stop: []
Zone:
- Lane: "0_0_-1"
ZoneType: StopAllowed
DirectionUsageRules: []
PhaseRings:
- ID: TIntersectionPhaseRing
Rules: [EastApproach, WestApproach]
Phases:
- ID: AllGo
RightOfWayRuleStates: {EastApproach: Go, WestApproach: Go}
- ID: AllStop
RightOfWayRuleStates: {EastApproach: Stop, WestApproach: Stop}
PhaseTransitionGraph:
AllGo:
- ID: AllStop
duration_until: 45
AllStop:
- ID: AllGo
Intersections:
- ID: TIntersection
PhaseRing: TIntersectionPhaseRing
InitialPhase: AllGo
|
MaliputViewer plugin is completely migrated 🥂 |
amazing work! |
Parent issue: #332
EDITED: Go to Labor breakdown <=
This plugin is big enough to deserve its own issue. Below we provide a description of the status of the plugin:
maliput_mesh
: standalone library that converts frommaliput::utility::mesh::GeoMesh
to ign-common3ignition::common::Mesh
.maliput_viewer_widget
: main controller of the maliput plugin. It manages a handful of widgetsmaliput_viewer_model
: holds the RoadNetwork and provides support for queries that the widgets perform.layer_selection_widget
: has a widget to select which mesh to display, a widget to toggle lane and branchpoint label visualization, and a widget to load files for a road network loader.render_maliput_widget
: loads the road meshes (different layers provided by maliput::utility::mesh`), manages their visuals, and the logic when selecting multiple meshes.rule_visualizer_widget
: visualizes the rules in a few text boxes.arrow_mesh
: draws cones where the click button maps to an inertial frame position into the scene.selector
: manages the lane selection visualizationorbit_view_control
: manages the camera events based on mouse inputs in the scene.traffic_light_manager
: creates and manages traffic lightsWe need to migrate this plugin to use the newer ign libraries.
Current
maliput_viewer
:The text was updated successfully, but these errors were encountered: