-
Notifications
You must be signed in to change notification settings - Fork 13
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
Drawing editor mode #132
Drawing editor mode #132
Conversation
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
0d47c36
to
ab538ae
Compare
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
ab538ae
to
13e9a03
Compare
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
label Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
822e0f3
to
46a1dec
Compare
There is currently a different user experience for matching fiducials between different levels (for inter-level alignment) and different drawings on the same level (for robot - main drawing alignment). Inter level uses fiducial names as in traffic editor, while intra level are matched by drawing constraints, also like traffic editor. Drawing of constraints is quite tricky and required a fair bit of additional logic in |
Signed-off-by: Michael X. Grey <grey@openrobotics.org> Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai> Co-authored-by: Michael X. Grey <grey@openrobotics.org>
From using |
There were a lot of merge conflicts to deal with by the time this PR was being merged. Most likely it got wiped out while I was attempting to resolve conflicts. |
New feature implementation
Implemented feature
Addresses #117.
Implementation description
This PR makes progress implements fully featured editing of drawing and layers, as well as alignment.
Fiducials and constraints
Parsing and rendering of fiducials and constraints has been added. They will be used for both intra-level alignment (fiducials on different drawings connected through constraints) as well as inter-level alignment (fiducials on different levels connected through constraints).
Fiducials have been added to
Site
andLevel
to serialize and deserialize this data.Levels
also have aConstraints
variable for intra-level alignment between different drawings (i.e. for robot maps) while site-wide constraints are inferred between equally named fiducials.Hierarchy for drawings
Measurements and fiducials are now children of drawings, which means their relative position will be preserved when the drawings are transformed. They are also in pixel coordinates.
Robot layers
Robot layers in the
building.yaml
format are now parsed and added as drawings when a project is imported.An additional component has been added to denote whether a drawing is "Primary" or not. Legacy drawings are set as Primary and robot layers are not. The idea is that when solving the optimization problem for map alignment, the primary ground truth drawings will be kept as static and only the non primary ones will be transformed.
Category visibility widget
A new top bar menu
View
has been added, users can display or hide certain categories of entities through a checkbox. Starts to be useful since with fiducials, constraints and multiple drawings the view can become a bit cluttered.It also provided an easy way to switch to different modes such as site and drawing editor, since we can quickly hide a category of entities that are not relevant for the specific mode.
Drawing editor mode
A new button has been added to the inspector widget when a drawing is selected to enter the new Drawing Editor mode.
Upon entering drawing editor mode:
Create
widget will only allow spawning fiducials and measurements, which will be made children of the current drawing in pixel coordinates upon spawning.Distance
(that is now also shown, rather than hidden as it was before).Still pending
The following are currently missing to have a fully functional editor. Based on time they might either go in this PR or go in a followup to avoid this becoming even larger than it currently is.
FloorVisibility
component and UI widget to change the transparency of floors but it doesn't apply to drawings so it's not possible to make them transparent. There is a TODO in place to make the component generic but it's not been implemented yet. e162a7b makes the component generic and adds it to drawings. By default primary drawings are fully opaque while secondary drawings are partially transparent.optimization-engine
crate.optimization-engine
crate.