-
 

Package Summary

Tags No category tags.
Version 1.6.3
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version humble
Last Updated 2024-11-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.6.3 (2024-11-05)

  • Fix reference file name being kept when loading new building (#503)
  • Contributors: Luca Della Vedova

1.6.2 (2023-08-10)

1.6.1 (2023-06-05)

  • Switch changelogs to rst format.
  • Contributors: Yadunund

1.6.0 (2022-10-05)

  • Added a dispensable field for models (#436)
  • Use index based iterator to avoid yaml cpp bug (#435)
  • better vertex text size in meter-scale maps (#431)
  • Contributors: Aaron Chong, Luca Della Vedova, Morgan Quigley

1.5.1 (2022-04-20)

  • update OSM tile server URL to full planet data (#430)
  • fix cmake ament_index_cpp dependency
  • add a github CI job for rolling
  • don't double-trigger CI runs
  • update qt packages for jammy github workflow
  • build/install rmf_utils from source in ci_rolling
  • Contributors: Morgan Quigley, Youliang Tan

1.5.0 (2022-03-13)

  • fix #419 by calculating transformed x/y in image-based maps (#421)
  • validate reference level index before using it (avoid a crash)
  • Use C++17 for std::optional
  • move all CI to galactic on ubuntu 20.04
  • move the C++ style check into the 'main' CI test workflow
  • Feature/render OpenStreetMap tiles (#418)
    • "new building" dialog box which asks which coordinates to use
    • use a subdirectory in ~/.cache as the OSM tile cache
    • show the tile cache size on the status bar
    • use EPSG:3857 (meters) for rendering tile maps
    • WGS84 coordinate translation
    • render OSM tiles in grayscale, so the non-tile things are easier to see
    • populate lat, lon property fields in EPSG:3857 mode
    • remove obsolete "flattened" UI stuff
    • save global coords in wgs84 but render them in epsg3857 on OSM tiles
    • GUI box to set the local CRS for sim/nav generation
    • move all RMF keys into GeoJSON props. add start/end names
    • feature_type -> rmf_type in GeoJSON properties
    • translate robot spawn point along with the world
  • Handle simulation offsets for models and cameras (#408)
    • lat/lon translation behavior for models (previously, builds break when adding models due to WGS84 translation not having a "rotation" variable)
    • change naming for wgs84 model positions to lat/lon instead of x/y for consistency
    • apply offsets to the camera, so the camera view appears over the working area
    • Handle simulation offsets for models and cameras
    • Pass transform in Model constructor; pass un-transformed variables for to_yaml
    • Add check if global_transform was initialized; fix wrong computation of xy
    • parse model coordinates in wgs84 and project for viewing/editing
    • move model projection/translation to generate phase
    • set user-agent string in HTTP tile requests
    • workaround for 32-bit scrollbar overflow at extreme zoom
    • introduce a simple queuing system for tiles
    • reset zoom when loading a different filename
  • flip layer images right-side up in cartesian meters mode (#405)
  • Improve behavior for Cartesian maps (#401)
    • Improve behavior for Cartesian maps

    * because Cartesian maps have 1-meter units, we need to compute a better default scale for them. Previously it was always using a default scale of 0.05. * somewhat related, also fix the edge-select implementation so it spins through all edges in the map rather than just selecting the first edge within 10 units... that was OK when we were always using pixel-based maps, but now that meter-based maps are in use, it was just choosing the first edge that was within 10 meters of the click, which was a lot of edges and felt somewhat random.

    • stop drawing a 1-unit border around the scene rectangle
    • rotate vertex icons to +Y for cartesian maps
  • Cartesian worlds (y=up) and steps towards using GeoPackage (#396)
    • create passthrough transform for cartesian_meters coordinate systems
    • y-flip in traffic-editor GUI for cartesian worlds; only invert Y coordinate for legacy image-based maps
    • add coordinate system files for C++ GUI
    • pass coordinate system to vertex draw, to flip text as needed
    • correct deprecated setuptools key to fix warning
    • Fix errors when building maps with lifts / crowdsim
    • draw fewer arrowheads for increased speed on very large maps
    • add speed limit parameter to lane property-editor GUI
    • add speed limit param to generated nav-graph files
    • publish lane speed limits
    • add top-level metadata for building/site params
    • load/save top level building params. Zoom->reset to center map view if you get lost.
    • assign a nonsense CRS if one doesn't exist
    • Change Legacy -> ReferenceImage throughout code
  • minor usability enhancements on traffic editor (#398)
    • revert lift vertex, and prevent delete of lift vertex
    • fix wall transparency models and update readme
  • Contributors: Morgan Quigley, Youliang Tan, Luca Della Vedova, Charayaphan Nakorn Boon Han

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.7.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version iron
Last Updated 2023-12-15
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.7.2 (2023-12-15)

  • Merge radius property (#480)
  • Mutex group property (#477)

1.7.1 (2023-08-10)

1.7.0 (2023-06-06)

  • Switch to rst changelogs (#464)
  • Contributors: Yadunund

1.6.0 (2022-10-05)

  • Added a dispensable field for models (#436)
  • Use index based iterator to avoid yaml cpp bug (#435)
  • better vertex text size in meter-scale maps (#431)
  • Contributors: Aaron Chong, Luca Della Vedova, Morgan Quigley

1.5.1 (2022-04-20)

  • update OSM tile server URL to full planet data (#430)
  • fix cmake ament_index_cpp dependency
  • add a github CI job for rolling
  • don't double-trigger CI runs
  • update qt packages for jammy github workflow
  • build/install rmf_utils from source in ci_rolling
  • Contributors: Morgan Quigley, Youliang Tan

1.5.0 (2022-03-13)

  • fix #419 by calculating transformed x/y in image-based maps (#421)
  • validate reference level index before using it (avoid a crash)
  • Use C++17 for std::optional
  • move all CI to galactic on ubuntu 20.04
  • move the C++ style check into the 'main' CI test workflow
  • Feature/render OpenStreetMap tiles (#418)
    • "new building" dialog box which asks which coordinates to use
    • use a subdirectory in ~/.cache as the OSM tile cache
    • show the tile cache size on the status bar
    • use EPSG:3857 (meters) for rendering tile maps
    • WGS84 coordinate translation
    • render OSM tiles in grayscale, so the non-tile things are easier to see
    • populate lat, lon property fields in EPSG:3857 mode
    • remove obsolete "flattened" UI stuff
    • save global coords in wgs84 but render them in epsg3857 on OSM tiles
    • GUI box to set the local CRS for sim/nav generation
    • move all RMF keys into GeoJSON props. add start/end names
    • feature_type -> rmf_type in GeoJSON properties
    • translate robot spawn point along with the world
  • Handle simulation offsets for models and cameras (#408)
    • lat/lon translation behavior for models (previously, builds break when adding models due to WGS84 translation not having a "rotation" variable)
    • change naming for wgs84 model positions to lat/lon instead of x/y for consistency
    • apply offsets to the camera, so the camera view appears over the working area
    • Handle simulation offsets for models and cameras
    • Pass transform in Model constructor; pass un-transformed variables for to_yaml
    • Add check if global_transform was initialized; fix wrong computation of xy
    • parse model coordinates in wgs84 and project for viewing/editing
    • move model projection/translation to generate phase
    • set user-agent string in HTTP tile requests
    • workaround for 32-bit scrollbar overflow at extreme zoom
    • introduce a simple queuing system for tiles
    • reset zoom when loading a different filename
  • flip layer images right-side up in cartesian meters mode (#405)
  • Improve behavior for Cartesian maps (#401)
    • Improve behavior for Cartesian maps

    * because Cartesian maps have 1-meter units, we need to compute a better default scale for them. Previously it was always using a default scale of 0.05. * somewhat related, also fix the edge-select implementation so it spins through all edges in the map rather than just selecting the first edge within 10 units... that was OK when we were always using pixel-based maps, but now that meter-based maps are in use, it was just choosing the first edge that was within 10 meters of the click, which was a lot of edges and felt somewhat random.

    • stop drawing a 1-unit border around the scene rectangle
    • rotate vertex icons to +Y for cartesian maps
  • Cartesian worlds (y=up) and steps towards using GeoPackage (#396)
    • create passthrough transform for cartesian_meters coordinate systems
    • y-flip in traffic-editor GUI for cartesian worlds; only invert Y coordinate for legacy image-based maps
    • add coordinate system files for C++ GUI
    • pass coordinate system to vertex draw, to flip text as needed
    • correct deprecated setuptools key to fix warning
    • Fix errors when building maps with lifts / crowdsim
    • draw fewer arrowheads for increased speed on very large maps
    • add speed limit parameter to lane property-editor GUI
    • add speed limit param to generated nav-graph files
    • publish lane speed limits
    • add top-level metadata for building/site params
    • load/save top level building params. Zoom->reset to center map view if you get lost.
    • assign a nonsense CRS if one doesn't exist
    • Change Legacy -> ReferenceImage throughout code
  • minor usability enhancements on traffic editor (#398)
    • revert lift vertex, and prevent delete of lift vertex
    • fix wall transparency models and update readme
  • Contributors: Morgan Quigley, Youliang Tan, Luca Della Vedova, Charayaphan Nakorn Boon Han

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.9.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version jazzy
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.9.1 (2024-06-15)

1.9.0 (2024-06-01)

  • Fix buildfarm build of rmf_traffic_editor packages (#495)
  • Harmonic release and ECS refactor (#483)
  • Fix empty generate_crs in building yaml. (#482)
  • Contributors: Luca Della Vedova, Grey, cwrx777

1.8.2 (2023-12-15)

  • Merge radius property (#480)
  • Mutex group property (#477)

1.8.1 (2023-08-10)

1.8.0 (2023-06-08)

1.7.0 (2023-06-06)

  • Switch to rst changelogs (#464)
  • Contributors: Yadunund

1.6.0 (2022-10-05)

  • Added a dispensable field for models (#436)
  • Use index based iterator to avoid yaml cpp bug (#435)
  • better vertex text size in meter-scale maps (#431)
  • Contributors: Aaron Chong, Luca Della Vedova, Morgan Quigley

1.5.1 (2022-04-20)

  • update OSM tile server URL to full planet data (#430)
  • fix cmake ament_index_cpp dependency
  • add a github CI job for rolling
  • don't double-trigger CI runs
  • update qt packages for jammy github workflow
  • build/install rmf_utils from source in ci_rolling
  • Contributors: Morgan Quigley, Youliang Tan

1.5.0 (2022-03-13)

  • fix #419 by calculating transformed x/y in image-based maps (#421)
  • validate reference level index before using it (avoid a crash)
  • Use C++17 for std::optional
  • move all CI to galactic on ubuntu 20.04
  • move the C++ style check into the 'main' CI test workflow
  • Feature/render OpenStreetMap tiles (#418)
    • "new building" dialog box which asks which coordinates to use
    • use a subdirectory in ~/.cache as the OSM tile cache
    • show the tile cache size on the status bar
    • use EPSG:3857 (meters) for rendering tile maps
    • WGS84 coordinate translation
    • render OSM tiles in grayscale, so the non-tile things are easier to see
    • populate lat, lon property fields in EPSG:3857 mode
    • remove obsolete "flattened" UI stuff
    • save global coords in wgs84 but render them in epsg3857 on OSM tiles
    • GUI box to set the local CRS for sim/nav generation
    • move all RMF keys into GeoJSON props. add start/end names
    • feature_type -> rmf_type in GeoJSON properties
    • translate robot spawn point along with the world
  • Handle simulation offsets for models and cameras (#408)
    • lat/lon translation behavior for models (previously, builds break when adding models due to WGS84 translation not having a "rotation" variable)
    • change naming for wgs84 model positions to lat/lon instead of x/y for consistency
    • apply offsets to the camera, so the camera view appears over the working area
    • Handle simulation offsets for models and cameras
    • Pass transform in Model constructor; pass un-transformed variables for to_yaml
    • Add check if global_transform was initialized; fix wrong computation of xy
    • parse model coordinates in wgs84 and project for viewing/editing
    • move model projection/translation to generate phase
    • set user-agent string in HTTP tile requests
    • workaround for 32-bit scrollbar overflow at extreme zoom
    • introduce a simple queuing system for tiles
    • reset zoom when loading a different filename
  • flip layer images right-side up in cartesian meters mode (#405)
  • Improve behavior for Cartesian maps (#401)
    • Improve behavior for Cartesian maps

    * because Cartesian maps have 1-meter units, we need to compute a better default scale for them. Previously it was always using a default scale of 0.05. * somewhat related, also fix the edge-select implementation so it spins through all edges in the map rather than just selecting the first edge within 10 units... that was OK when we were always using pixel-based maps, but now that meter-based maps are in use, it was just choosing the first edge that was within 10 meters of the click, which was a lot of edges and felt somewhat random.

    • stop drawing a 1-unit border around the scene rectangle
    • rotate vertex icons to +Y for cartesian maps
  • Cartesian worlds (y=up) and steps towards using GeoPackage (#396)
    • create passthrough transform for cartesian_meters coordinate systems
    • y-flip in traffic-editor GUI for cartesian worlds; only invert Y coordinate for legacy image-based maps
    • add coordinate system files for C++ GUI
    • pass coordinate system to vertex draw, to flip text as needed
    • correct deprecated setuptools key to fix warning
    • Fix errors when building maps with lifts / crowdsim
    • draw fewer arrowheads for increased speed on very large maps
    • add speed limit parameter to lane property-editor GUI
    • add speed limit param to generated nav-graph files
    • publish lane speed limits
    • add top-level metadata for building/site params
    • load/save top level building params. Zoom->reset to center map view if you get lost.
    • assign a nonsense CRS if one doesn't exist
    • Change Legacy -> ReferenceImage throughout code
  • minor usability enhancements on traffic editor (#398)
    • revert lift vertex, and prevent delete of lift vertex
    • fix wall transparency models and update readme
  • Contributors: Morgan Quigley, Youliang Tan, Luca Della Vedova, Charayaphan Nakorn Boon Han

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version main
Last Updated 2024-11-15
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.10.0 (2024-06-12)

1.9.0 (2024-06-01)

  • Fix buildfarm build of rmf_traffic_editor packages (#495)
  • Harmonic release and ECS refactor (#483)
  • Fix empty generate_crs in building yaml. (#482)
  • Contributors: Luca Della Vedova, Grey, cwrx777

1.8.2 (2023-12-15)

  • Merge radius property (#480)
  • Mutex group property (#477)

1.8.1 (2023-08-10)

1.8.0 (2023-06-08)

1.7.0 (2023-06-06)

  • Switch to rst changelogs (#464)
  • Contributors: Yadunund

1.6.0 (2022-10-05)

  • Added a dispensable field for models (#436)
  • Use index based iterator to avoid yaml cpp bug (#435)
  • better vertex text size in meter-scale maps (#431)
  • Contributors: Aaron Chong, Luca Della Vedova, Morgan Quigley

1.5.1 (2022-04-20)

  • update OSM tile server URL to full planet data (#430)
  • fix cmake ament_index_cpp dependency
  • add a github CI job for rolling
  • don't double-trigger CI runs
  • update qt packages for jammy github workflow
  • build/install rmf_utils from source in ci_rolling
  • Contributors: Morgan Quigley, Youliang Tan

1.5.0 (2022-03-13)

  • fix #419 by calculating transformed x/y in image-based maps (#421)
  • validate reference level index before using it (avoid a crash)
  • Use C++17 for std::optional
  • move all CI to galactic on ubuntu 20.04
  • move the C++ style check into the 'main' CI test workflow
  • Feature/render OpenStreetMap tiles (#418)
    • "new building" dialog box which asks which coordinates to use
    • use a subdirectory in ~/.cache as the OSM tile cache
    • show the tile cache size on the status bar
    • use EPSG:3857 (meters) for rendering tile maps
    • WGS84 coordinate translation
    • render OSM tiles in grayscale, so the non-tile things are easier to see
    • populate lat, lon property fields in EPSG:3857 mode
    • remove obsolete "flattened" UI stuff
    • save global coords in wgs84 but render them in epsg3857 on OSM tiles
    • GUI box to set the local CRS for sim/nav generation
    • move all RMF keys into GeoJSON props. add start/end names
    • feature_type -> rmf_type in GeoJSON properties
    • translate robot spawn point along with the world
  • Handle simulation offsets for models and cameras (#408)
    • lat/lon translation behavior for models (previously, builds break when adding models due to WGS84 translation not having a "rotation" variable)
    • change naming for wgs84 model positions to lat/lon instead of x/y for consistency
    • apply offsets to the camera, so the camera view appears over the working area
    • Handle simulation offsets for models and cameras
    • Pass transform in Model constructor; pass un-transformed variables for to_yaml
    • Add check if global_transform was initialized; fix wrong computation of xy
    • parse model coordinates in wgs84 and project for viewing/editing
    • move model projection/translation to generate phase
    • set user-agent string in HTTP tile requests
    • workaround for 32-bit scrollbar overflow at extreme zoom
    • introduce a simple queuing system for tiles
    • reset zoom when loading a different filename
  • flip layer images right-side up in cartesian meters mode (#405)
  • Improve behavior for Cartesian maps (#401)
    • Improve behavior for Cartesian maps

    * because Cartesian maps have 1-meter units, we need to compute a better default scale for them. Previously it was always using a default scale of 0.05. * somewhat related, also fix the edge-select implementation so it spins through all edges in the map rather than just selecting the first edge within 10 units... that was OK when we were always using pixel-based maps, but now that meter-based maps are in use, it was just choosing the first edge that was within 10 meters of the click, which was a lot of edges and felt somewhat random.

    • stop drawing a 1-unit border around the scene rectangle
    • rotate vertex icons to +Y for cartesian maps
  • Cartesian worlds (y=up) and steps towards using GeoPackage (#396)
    • create passthrough transform for cartesian_meters coordinate systems
    • y-flip in traffic-editor GUI for cartesian worlds; only invert Y coordinate for legacy image-based maps
    • add coordinate system files for C++ GUI
    • pass coordinate system to vertex draw, to flip text as needed
    • correct deprecated setuptools key to fix warning
    • Fix errors when building maps with lifts / crowdsim
    • draw fewer arrowheads for increased speed on very large maps
    • add speed limit parameter to lane property-editor GUI
    • add speed limit param to generated nav-graph files
    • publish lane speed limits
    • add top-level metadata for building/site params
    • load/save top level building params. Zoom->reset to center map view if you get lost.
    • assign a nonsense CRS if one doesn't exist
    • Change Legacy -> ReferenceImage throughout code
  • minor usability enhancements on traffic editor (#398)
    • revert lift vertex, and prevent delete of lift vertex
    • fix wall transparency models and update readme
  • Contributors: Morgan Quigley, Youliang Tan, Luca Della Vedova, Charayaphan Nakorn Boon Han

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.4.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version galactic
Last Updated 2021-09-02
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • Feature/undo: Undo for editor components (#269)
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge pull request #266 from osrf/feature/undo
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.4.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_traffic_editor.git
VCS Type git
VCS Version foxy
Last Updated 2021-09-02
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

traffic editor

Additional Links

No additional links.

Maintainers

  • Morgan Quigley
  • Marco A. Gutiérrez

Authors

No additional authors.

Traffic Editor

A graphical editor for robot traffic flows. The intent is to make it easy to annotate building floorplans with the desired robot traffic lanes and generate simulation models to test and evaluate different traffic schemes.

Quality Declaration

This package claims to be in the Quality Level 3 category. See the Quality Declaration for more details.

System Requirements

This program is developed and tested on Ubuntu 18.04 LTS, using Qt 5 and yaml-cpp.

Compiling Instructions

Traffic Editor is now structured as a Colcon package. After installing ROS 2 Eloquent, the following command sequence will create a colcon workspace in ~/colcon_workspace and build traffic-editor there:

sudo apt update
sudo apt install libyaml-cpp-dev qt5-default \
  libopencv-dev libopencv-videoio-dev
mkdir -p ~/colcon_workspace/src
cd ~/colcon_workspace/src
git clone https://github.com/open-rmf/rmf_traffic_editor
cd ~/colcon_workspace
source /opt/ros/eloquent/setup.bash
colcon build --packages-select rmf_traffic_editor

The companion traffic_editor_assets package contains a nifty bunch of useful assets to use with rmf_traffic_editor. It is included in the above checkout.

Then you should be able to run traffic-editor by sourcing the install space of that workspace, in a new “clean” terminal:

source ~/colcon_workspace/install/setup.bash
traffic-editor

Quick Start

If it’s the first time you are running it, starting the editor with traffic-editor should bring up a blank window.

First, you’ll need to make sure that traffic-editor knows where the model thumbnails are found. If you installed traffic_editor_assets, rmf_traffic_editor should find it automatically. The thumbnails are top-view renderings of various art assets that can be added to the environments, such as chairs.

Click Edit->Preferences... and see if the path provided in the “Thumbnail Path” box looks reasonable.

If necessary, the “Find…” button can be used to browse the filesystem to point to any desired thumbnail directory.

(If you installed the recommended traffic_editor_assets package, you will find its thumbnail directory in its install space at <workspace_dir>/install/traffic_editor_assets/share/assets/thumbnails.)

Creating a new Project and an empty Building Map

Click Project->New... and save your new project as test.project.yaml

Click Edit->Project Properties... and enter “test” as the project name and test.building.yaml as the building path. Then click OK.

Click Edit->Building Properties... and enter “test” as the building name. Click OK.

Creating a level and adding some stuff

Click the “Add…” button in the “levels” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new level. Enter L1 for the name and click OK. This will create a 10 meter square level.

You can zoom in and out using the mouse wheel on the rendering on the left side of the main window. You can pan around by dragging the mouse around with the mouse wheel (or middle button) depressed.

Now, you should be able to click the green dot toolbar icon, which is the “Add Vertex” tool (or press V) and click a few vertices in the white area. Press the [Escape] key to return to the “Select” tool.

Now, you should be able to click the add wall tool (or press W) and drag from one vertex to another vertex to add wall segments.

To delete wall segments or vertices, first press [Escape] to enter Select mode. Then, click on a wall segment or vertex, and press [Delete].

Save your work

Click Project->Save or press Ctrl+S to save the project and building map.

Adding real-world measurements to set the scale

To set the scale of the drawing, click the add measurement tool (or press M) and drag from one vertex to another to add a real-world measurement line, which should show up as a pink line. Then click the select tool (or press Esc) and click on the line with the left button. This should populate the property-editor in the lower-right pane of the editor window. You can then specify the real-world length of the measurement line in meters. If you set more than one measurement line on a drawing, the editor will compute an average value of pixels-per-meter from all supplied measurements.

Currently you need to re-load the document (closing the editor and re-opening) to re-compute the scale. This is not ideal, but is hopefully not a frequently-used feature. Typically the scale of a map is only set one time.

Adding lifts

Click the “Add…” button in the “lifts” tab on the far right side of the main editor window. This will pop up a dialog where you can create a new lift. You can specify the name, position, size, and reference floor in the dialog.

Note: Do include the keywork “lift” in the lift name as for now this is how slotcars recognize lift models.

You can add lift doors by lick the “Add…” button below the box showing the lift. Set Door type to “Double sliding” (The only supported type for now!), and align the doors to the edge of the lift (represented by the green box). After that, select which door you want to use on each floor by simply checking the boxes on the left.

Lift waypoints at the center of the lift on each level can also be generated using the “Add lift waypoints” button in the dialog. Note that waypoints will only be generated on levels that the lift is serving (has a door opening on that level).

Generating Custom Thumbnails

Model thumbnails are used in rmf_traffic_editor. To generate a thumbnail, a simple working example is shown here to generate a SUV:

# Run as gz plugin, set --a for help options printout
gzserver -s libthumbnail_generator.so empty.world --input ~/.gazebo/models/SUV/model.sdf --output .

After execution, you will notice a newly created SUV.png in your current working directory. This can be further placed into traffic_editor_assets/assets/thumbnails.

To generate multiple model thumbnails listed in model_list.yaml, run this:

export GAZEBO_MODEL_PATH=/PATH/TO/MODELS; ./scripts/generate_thumbnails.py /PATH/TO/MODELS test/model_list.yaml ~/output

User can also change the script default configs: img_size, cam_height and fhov, which will alter the meters_per_pixel value.

Similarly, the generated thumbnails in ~/output can then be added to traffic_editor_assets/assets/thumbnails, while also append model_list.yaml.

Utilities

A new model list .yaml file can be generated using the utility script, where an optional blacklisted model names can be added, to avoid creating moving models or agents,

# e.g. MODEL_DIR = '~/.gazebo/models'
./scripts/generate_model_list.py output_model_list.yaml -d MODEL_DIR -b test/model_blacklist.yaml

In the event that merging multiple model lists is required, a different utility script can be used,

./scripts/merge_model_lists.py output_model_list.yaml -s test/model_list.yaml

To sort the model list .yaml file,

./scripts/sort_model_list.py model_list.yaml

CHANGELOG

Changelog for package rmf_traffic_editor

1.4.0 (2021-09-02)

  • Feature/graph names and widths (#384)
    • Graph data structure: default lane widths and a step towards #378
  • added support for ceilings with texture (#383)
  • added scaling features to wall texture (#382)
  • resolve build error on some systems with size_t namespace (#374) fix build error on some compilers/systems reported in https://github.com/open-rmf/rmf/discussions/85 by adding std:: prefix to size_t
  • sort list by model name, not Fuel group name (#373)
  • Feature: align vertices colinear (#372)
  • adding maintainer for buildfarm notifications (#368)
  • hotfix for #366, avoid exploding transform for 1 fudicual (#367)
  • Minor tweak to how empty crowd_sim and lift structures are serialized in YAML (#364)
  • Contributors: Marco A. Gutiérrez, Morgan Quigley, Xiyu

1.3.0 (2021-05-14)

  • Feature/display layer transforms in freefleet format (#347)
  • Feature/layer rendering palette mapping (#344)
  • Fix asset path after package renaming (#341)
  • Automatic alignment of robot-map layers to floorplans (#340)
  • Fix/ci package name (#339)
  • clarify labels on property add/delete buttons (#326)
  • handle editing multiple layers with same name. (#328)
  • fix #324, update layer image immediately after OK button (#327)
  • Bug/add layer button not visible in new building (#313)
  • provide zoom-reset and clamp on scale factor (#318)
  • avoid crash in empty crowdsim save routine (#312)
  • rename building_map_tools (#310)
  • Rename packages and delete moved packages (#308)
  • Refactoring and Migration [#308 https://github.com/open-rmf/rmf_traffic_editor/pull/308]{.title-ref}
  • Contributors: Geoffrey Biggs, Luca Della Vedova, Morgan Quigley, youliang

1.2.0 (2021-01-05)

  • Adds undo capability to a large part of the actions. (#269) (#266)
  • Contibutors: Arjo, Morgan Quigley, Yadu
  • Merge pull request #276 from osrf/add_lane_vertex_snap_distance_scaling scale add-lane vertex snap distance correctly
  • undo features
  • compute the click-to-merge treshold in pixels
  • Feature/undo: Undo for editor components (#269)
  • scale add-lane vertex snap distance correctly
  • fix to compilation when no opencv (#272)
  • Merge pull request #266 from osrf/feature/undo
  • Merge branch 'feature/undo' of https://github.com/osrf/traffic_editor into feature/undo
  • Added "save" to newly updated transition entries (#265)
  • Merge pull request #263 from osrf/dont_crash_on_new_project_crowdsim
  • Merge pull request #257 from Briancbn/pr-fix-disable-plugin-backwards-compatibility
  • Merge pull request #255 from osrf/feature/remove-plugin-option
  • Configured gui to load and save proper parameters for plugins
  • Using just the Lift object to propagate the plugin removal option
  • Added option to remove plugins for doors on gui and building_map_tools generator
  • Add GUI to traffic editor for crowd simulation configuration (#225)
  • Merge pull request #249 from osrf/fix/lift_dialog_saving
  • Add first pass of quality declarations for all packages (#235)
  • Contributors: Aaron Chong, Arjo Chakravarty, Chen Bainian, Geoffrey Biggs, Guoliang (Fred) Shao, Marco A. Gutiérrez, Morgan Quigley, Tian En

1.1.0 (2020-09-24)

  • Focal / Ignition dome support (#230)
  • Adding lift operation range selection (#220)
  • Add field in lift dialog for initial floor, handle invalid initial floor
  • Update lift display (#216)
  • Allowing modification on vertex coordinates (#215)
  • Merge pull request #212 from osrf/feature/model-list-sort-script Feature/model list sort script
  • Added helper script to sort model_list yamls
  • Support for adding and recognizing lift waypoints for multi-level navigation #201
  • fix initial model angle, so it doesn't rotate 90 when placed (#202)
  • Add button to generate lift waypoints in the GUI
  • Configurable texture and transparency for wall #200
  • fix lifts not cleared when opening another project #196
  • New traffic editor thumbnail generator #191
  • View menu option to show/hide models #174
  • Add add_edge shift alignment feature #173
  • Contributors: Aaron Chong, Chen Bainian, Geoffrey Biggs, Kevin_Skywalker, Luca Della Vedova, MakinoharaShouko, Marco A. Gutierrez, Morgan Quigley, Yadu, Yadunund, kevinskwk, methylDragon, youliang

1.0.0 (2020-06-22)

  • Implement using thumbnails from installed traffic_editor_assets ament package (#152)
    • Implement parsing thumbnails from assets ament package
    • Remove ExternalProject
    • Update style

    * Catch missing package error Co-authored-by: Marco A. Gutiérrez <<spyke.me@gmail.com>>

  • Merge pull request #153 from osrf/bug/model_orientation Fixed orientation of model thumbnails in the gui
  • Fixed orientation of model thumbnails in the gui
  • Merge pull request #149 from osrf/simulation_plugin_interface process-flow sim plugin interface, and various other improvements
  • Merge pull request #150 from osrf/update_style_check Update style.yaml
  • Added braces around for in project.cpp
  • Update traffic_editor/package.xml Co-authored-by: Marco A. Gutiérrez <<marco@openrobotics.org>>
  • let's not crash when loading an empty map
  • remove unused unique_ptr namespace inclusion
  • merging master
  • Merge pull request #148 from osrf/fix_crop_python_style merging since this is trivial (famous last words)
  • python line was too long
  • Merge pull request #147 from MakinoharaShouko/master Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • Merge pull request #1 from MakinoharaShouko/crop_fix Fix not generating cropped image with namespace
  • Fix not generating cropped image with namespace
  • simplify by getting rid of pointers where possible
  • since opencv is only needed for video recording, it's now optional
  • hide the sim controls if there is no plugin present
  • Merge pull request #132 from methylDragon/ch3/author-namespaced-thumbnails Support Author-namedspaced Thumbnails and Revamp building_map_generator
  • Merge branch 'master' into ch3/author-namespaced-thumbnails
  • Correct README
  • Merge pull request #128 from methylDragon/ch3/migrate-traffic-editor-thumbnails Migrate thumbnails to traffic_editor_assets repo
  • Fix build and import bug
  • Revert default directory and make directories if they don't exist Also make it less fragile by allowing expansion of the home shortcut "~"
  • Add dependency on buiding_map_tools In order to ensure that pit_crew is accessible!
  • Unify building_map_generators With argparse and pit_crew!
  • Pit-crewify thumbnail_generators
  • thumbnails::yeet() Let's try this again..
  • Merge branch 'master' into ch3/migrate-traffic-editor-thumbnails
  • Merge pull request #130 from osrf/fix/model-thumbnail-names Fix/model thumbnail names
  • Corrected thumbnail for PotatoChipChair
  • Changed the name for model and thumbnail Table
  • Retarget thumbnail search path to ~/.traffic_editor
  • Implement git clone on build
  • avoid deadlock
  • adding debugging drawing hooks to simulation plugin interface
  • osrf repo
  • migrate behavior stuff into plugins, out of main tree
  • render mixed lane colors in a predictable z-stack
  • remove logging from the core traffic-editor, do it in plugins
  • option to release reserved lanes during waiting behavior node
  • adjust mutex: sim proceeds while video frame is writing to disk
  • helper function to retrieve model instances
  • WIP simplifying internal API and removing YAML scripting nonsense
  • add load function to configure simulation interface from yaml
  • epic restructuring of include files to allow a plugin interface for sim
  • Merge pull request #118 from osrf/feature/teleport-dispenser Feature/teleport dispenser
  • learn cmake
  • WIP trying to bring in ignition-plugin
  • log simulations to csv
  • models name instances can be edited, and saved
  • print less to the console
  • added teleport dispenser ingestor thumbnails, same as robot placeholder
  • allow editing of model instance name
  • on startup, restore editor to previous level
  • WIP process flow animation machinery
  • Merge pull request #117 from osrf/master bring in medium-size surgical trolley
  • Merge pull request #116 from osrf/feature/surgical-trolley-med added thumbnail for SurgicalTrolleyMed
  • added thumbnail for SurgicalTrolleyMed
  • restore rotation of StorageRack thumbnail
  • Merge pull request #115 from osrf/master bring new thumbnails to dev branch
  • Merge pull request #114 from osrf/feature/trolley-bed-thumbnails Feature/trolley bed thumbnails
  • copied to wrong places, replaced old thumbnails
  • added thumbnails
  • WIP teleporting other models for cargo pickup/dropoff
  • improve nav graph following, simplify creation of non-zero graph_idx
  • Merge pull request #113 from osrf/master merge in thumbnail improvements
  • Merge pull request #112 from osrf/feature/more-thumbnails added new thumbnails for hospital environment
  • added new thumbnails for hospital environment
  • WIP smarter NPC motions...
  • clean up compiler warnings
  • add string interpolation and a signaling method
  • set vertex label red if selected. try to fix github build workflow
  • checkboxes for show/hide internal traffic lanes. sim starts paused.
  • use opencv for video recording
  • loop at end of behavior schedule
  • rotate models to face the direction of travel
  • path traversal starting to work
  • basic a* planner seems ok
  • WIP agent planning
  • WIP scenario non-robot animation
  • WIP towards beginnings of 2d model scripting
  • load images concurrently on all CPU cores
  • Merge pull request #111 from osrf/fix/robot-placeholder-thumbnails fix model thumbnail and naming convention
  • fix model thumbnail and naming convention
  • Merge pull request #110 from osrf/fix/thumbnail-name fixed bookshelf thumbnail name
  • propagate unique_ptr usage to allow polymorphic compositions
  • fixed bookshelf thumbnail name
  • allow modifying of lanes in traffic mode and simplify renderings of bidirectional lanes.
  • don't insert scenario table twice
  • beginnings of sim thread
  • learning about elite c++11 memory features
  • working towards minimalist behavior sequencing
  • Merge pull request #108 from osrf/feature/new-thumbnails Feature/new thumbnails
  • removed empty newlines
  • changed back camera height
  • corrected thumbnail names to point to open source gazebo models
  • WIP external traffic files
  • more gazebo thumbnails, compressed largge thumbnails
  • add skeleton for traffic map dialog
  • render traffic map names in tablewidget
  • Merge pull request #104 from osrf/feature/thumbnail-generation Feature/thumbnail generation
  • save/load traffic-map references in project file
  • lint :sparkles:
  • added generation and merging utility scripts
  • removed ros2 launch
  • basic pipeline and docs added
  • start of external traffic map files in GUI
  • Merge pull request #103 from osrf/feature/demo-assets added new demo asset thumbnails
  • added new demo asset thumbnails
  • Merge pull request #100 from osrf/double_swing_doors_directions branch on double swing door direction for sim generation
  • branch on double swing door direction for sim generation
  • Merge pull request #94 from osrf/static_parameter_for_models Static parameter for models Tested manually on a few worlds, looks OK
  • add static param to models in GUI
  • Merge pull request #90 from osrf/feature/single-doors Feature/single doors
  • abs values for motion degrees, use motion direction instead
  • fix merge conflict
  • Merge pull request #81 from osrf/add_flattened_offsets XY translation of each level in a 'flattened' world generation mode
  • XY translation of each level in a 'flattened' world generation mode
  • Merge pull request #80 from osrf/floor_holes Floor holes
  • click selects holes first, then other polygon types
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into floor_holes
  • Merge pull request #79 from osrf/feature/model-elevation Feature/model elevation
  • reverted back to using double for model::z, makes yaml parsing cleaner
  • clear all fields of project when creating a new one
  • added elevation/z param to model
  • WIP floor holes GUI tool
  • add some icons as we add a new tool for polygon-holes
  • only override drawing scale if >2 fiducials are present
  • more small fixes for levels without scale
  • trivial: update level table after adding a level
  • Merge pull request #71 from osrf/fix_initial_creation_workflow Fix initial creation workflow. Load drawing floorplan images immediately after they are specified in the level dialog, rather than only doing it when loading the building level from YAML.
  • refactor drawing loading so it can happen after level dialog also
  • fix crash when no levels are present
  • Merge pull request #69 from osrf/create_vertex_when_starting_wall create a new vertex if the add-edge click is not near an existing one
  • create a new vertex if the add-edge click is not near an existing one
  • Merge pull request #67 from osrf/create_vertex_as_needed_for_edges finish implementing #63 to allow continuous clicks for edge creation
  • finish implementing #63 to allow continuous clicks for edge creation
  • Merge pull request #66 from osrf/click_walls_instead_of_drag implement part of #63 so you can just keep clicking to chain vertices together
  • don't automatically chain doors/measurements in edge tool
  • implement part of #63 so you can just keep clicking to chain vertices together
  • Merge pull request #64 from osrf/specify_floor_textures Specify floor textures
  • allow specification of floor texture and scale
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into specify_floor_textures
  • fix #62, scale vertex click and paint doorjamb last
  • add explicit polygon texture params for now
  • Merge pull request #59 from osrf/scenario_roi_polygon_tool lots of refactoring and cleanup to allow modifying scenario polygons
  • lots of refactoring and cleanup to allow modifying scenario polygons
  • Merge pull request #58 from osrf/restore_viewport_center_and_zoom restore viewport translation and scale on startup
  • restore viewport translation and scale on startup
  • update readme
  • draw traffic vertices in building coords still, for now
  • Merge pull request #53 from osrf/correct_thumbnail_size use cropped thumbnails. add four new models.
  • use cropped thumbnails. add four new models.
  • Merge pull request #52 from osrf/separate_building_map_and_traffic_map_files Separate building map and traffic map files
  • fix move-model bug
  • allow deleting vertices from scenario
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into separate_building_map_and_traffic_map_files
  • working towards adding vertices in scenarios
  • change toolbar in response to edit mode. add to scenario skeleton.
  • scenario save/load skeleton
  • start scenario data structure
  • add tabs
  • project dialog box to set the building path
  • starting to place building within a project...
  • Merge pull request #51 from osrf/add_thumbnails add some new office furniture thumbnails
  • add some new office furniture thumbnails
  • finish propagating and refactoring buildings, so things compile again
  • everything is now broken
  • migrate Map to Building class
  • Merge pull request #49 from osrf/restore_window_position_and_size use qsettings to save/restore window position and size
  • use qsettings to save/restore window position and size
  • Merge pull request #48 from osrf/add_elevation_to_level_dialog set level elevation via dialog box. Various cleanups.
  • set level elevation via dialog box. Various cleanups.
  • Merge pull request #46 from osrf/calculate_and_show_scale_using_fiducials Calculate and show scale using fiducials
  • use measurement data only on the reference level. otherwise, ficudials
  • fix QGraphicsView item lookup to fix regression in selecting doors/walls
  • specify reference level via map-dialog box
  • redraw scene immediately after adding level
  • Merge branch 'master' into calculate_and_show_scale_using_fiducials
  • Merge pull request #45 from osrf/fix_new_document_problems deal more gracefully with an empty world by not crashing
  • deal more gracefully with an empty world by not crashing
  • update docs to reflect new way to add levels
  • map dialog for 'global' model properties
  • factor level table into its own file. add meas+fiducial counts to it.
  • Merge pull request #42 from osrf/align_lift_layer Fiducials to align layers
  • level alignment starting to work hooray
  • WIP alignment
  • working towards fiducial alignment
  • Merge pull request #41 from osrf/create_lifts Lifts
  • make ficudials easier to see
  • add fiducial tool
  • rotate lift doors correctly. Fix lift door yaml load bug
  • copy lift-door checkbox matrix to data structure on OK button
  • change data structure to deal with multi-door scenario on same level
  • respond appropriately to edits in door table
  • push lift elements into QGraphicsGroup and don't transform in dialog rendering
  • live updates for lift preview
  • start rendering lifts on the map using modeless dialog param updates
  • save lift x,y,yaw,width,depth
  • update level-door table combo box options when a door name changes
  • add tables for editing doors and level-door mapping
  • start working on adding lifts
  • Merge pull request #39 from osrf/some_toolbar_icons add a few toolbar icons
  • add a few toolbar icons
  • Merge pull request #38 from osrf/set_modified_flag Set modified flag
  • Merge pull request #37 from osrf/unify_move_tools unify move-vertex and move-model tools. Toolbar on top.
  • ask to save changes on exit
  • unify move-vertex and move-model tools. Toolbar on top.
  • Merge pull request #35 from osrf/levels_layers_tabs migrate level selection from a button bar into a tabbed table
  • migrate level selection from a button bar into a tabbed table
  • Merge pull request #34 from osrf/editor_ui_cleanup Editor UI cleanup
  • allow deletion of vertices and models
  • refactoring model selection into its own dialog
  • Merge pull request #33 from osrf/add_more_models Add more models
  • trolley bed thumbnails
  • storage rack model thumbnail
  • add new model thumbnails
  • add storage rack thumbnails
  • trivial cleanup
  • Merge pull request #32 from osrf/use_layer_visibility_checkboxes use checkboxes to specify layer visibility
  • oops. optional parameter...
  • Merge pull request #31 from osrf/rendering_layers_controls Rendering layers controls
  • fix compile
  • rendering starting to work
  • render layers
  • layer yaml save/load, working towards layer dialog
  • annotate YAML document with flow styles, and emit them
  • add layer table and dialog for add/edit layers
  • working towards selectable layers
  • Merge pull request #28 from osrf/generate_doors Generate doors
  • add various door gazebo generation stuff and demo mock lift floor changes
  • Merge pull request #27 from osrf/add_dock_points add dock points and generate docking nav graph params
  • add dock points and generate docking nav graph params
  • Merge pull request #25 from osrf/rotate_models_visually_with_discretization show model pixmaps rotating, with optional discretization
  • show model pixmaps rotating, with optional discretization
  • Merge pull request #21 from osrf/spawn_robot_parameters robot parameters for spawning and Gazebo world generation
  • create vertex parameters for spawning robots in simulation
  • Merge pull request #19 from osrf/redraw_after_new_file_create redraw after file->new, also give explicit model path for gazebo gen
  • redraw after file->new, also give explicit model path for gazebo gen
  • Merge pull request #18 from osrf/add_install_target add install step in cmake
  • add install step in cmake
  • Merge pull request #17 from osrf/ci_update_first update before installing in github workflow
  • update before installing in github workflow
  • Merge pull request #16 from osrf/repository_reorganization Repository reorganization
  • Merge branch 'master' of <ssh://github.com/osrf/traffic_editor> into repository_reorganization
  • grand reorganization as colcon-buildable packages for ros2 integration
  • Contributors: Aaron, Aaron Chong, MakinoharaShouko, Morgan Quigley, Yadu, Yadunund, methylDragon

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_traffic_editor at Robotics Stack Exchange