Releases: ethz-asl/wavemap
v1.6.0
Summary
This release improves the performance of wavemap's measurement integrators by up to 30% and the Rviz plugin by up to 5x. It also extends the documentation with code usage examples and introduces several new utility methods and visualization options.
New features
- Wavemap library
- Add map query acceleration utils
- Add trilinear interpolation utils
- ROS server
- Make ROS logging level configurable through ROS params
- Make the number of threads to use configurable through ROS params
- Add option to TF handler to directly query the most up-to-date transform
- Add service that resets the map (enabled through ROS params, disabled by default)
- Rviz plugin
- Add option to load and display maps directly from files
- Add option to only draw surface voxels
- Add button to call the wavemap_server's reset map service
Improvements
- Wavemap library
- Refactor wavemap utils into an extendable toolbox
- Optimize measurement integration
- ROS server (and ROS interface libraries)
- Update incremental map transmission to communicate block deletions
- Add option for multi-threaded block to ROS msg serialization
- Simplify incremental map transmission logic
- Consistently use ROS logging in all ROS packages
- Do not latch map topic
- Improve example configs
- Rviz plugin
- General UI improvements
- Improve block drawing scheduling for faster and smoother rendering
- Update visualizers to handle deleted blocks
- Rename "grid" to "voxels" in UI and code for clarity
- Clean up and optimize visibility query handling
- Clean up and optimize alpha handling
- Add Tracy annotations for profiling
- Tools
- Show documentation preview without using Python HTTP server
Documentation
- Add initial usage examples
- Add initial initial FAQs
- Add instructions on how to load maps from files in Rviz
Bug fixes
- Wavemap server
- Fix bug causing delays when transmitting blocks with identical timestamps
- Rviz plugin
- Fix bug causing delays when drawing blocks with identical timestamps
- Fix bug causing segfaults when destroying instances of the Rviz plugin
For more information on the performance improvements, see PR #37.
Package changelogs
- Libraries
- ROS
- Tooling
Upgrade notes
Upgrade instructions for
- Catkin
- Go to your catkin workspace src directory:
cd ~/catkin_ws/src
- Pull the newest wavemap code:
cd wavemap && git checkout main && git pull
- Rebuild wavemap, including its messages:
catkin build wavemap_all --force-cmake
- Go to your catkin workspace src directory:
- Docker
docker build --tag=wavemap --build-arg="VERSION=v1.6.0" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.5.3
Summary
This patch fixes an issue with assertions that would fail when running wavemap in debug mode.
New features
- Make the sign checks during Morton encoding optional
- Document the new behavior
- Always enable all assertions in CI
Package changelogs
- Libraries
Upgrade notes
Upgrade instructions for
- Catkin
- Go to your catkin workspace src directory:
cd ~/catkin_ws/src
- Pull the newest wavemap code:
cd wavemap && git checkout main && git pull
- Rebuild wavemap:
catkin build wavemap_all
- Go to your catkin workspace src directory:
- Docker
docker build --tag=wavemap --build-arg="VERSION=v1.5.3" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.5.2
Summary
This patch makes it possible to build wavemap with catkin in --install
mode.
New features
- Add install rules for wavemap and wavemap_ros' libraries, headers, and configs
- Contributed by astumpf
Package changelogs
- Libraries
- ROS
Upgrade notes
Upgrade instructions for
- Catkin
- Go to your catkin workspace src directory:
cd ~/catkin_ws/src
- Pull the newest version of tracy_catkin package:
cd tracy_catkin && git pull && cd ..
- Pull the newest wavemap code:
cd wavemap && git checkout main && git pull
- Rebuild wavemap:
catkin build wavemap_all
- Go to your catkin workspace src directory:
- Docker
docker build --tag=wavemap --build-arg="VERSION=v1.5.2" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.5.1
This patch improves the documentation for contributors 🔧
v1.5.0
Summary
This release makes wavemap 20% faster for LiDAR inputs and adds support for Tracy Profiler.
New features
- Annotate code for profiling with Tracy Profiler
- Switch to custom atan2 in LiDAR projection models
- Speeds up wavemap by 20% overall for LiDAR inputs
- No compromise in accuracy (slightly improves AUC, accuracy and recall)
- Minor general optimizations
- Add option to enable DCHECKs even when not compiling in debug mode
- Improve error messages when reading/writing a file fails
Notes on Tracy
By default, Tracy is disabled and introduces zero overhead. To enable profiling with Tracy, see the instructions in PR#19.
Package changelogs
- Libraries
- ROS
Upgrade notes
This release adds a dependency on Tracy Profiler, which we wrapped into a catkin package for easy usage and installation.
Upgrade instructions for
- Catkin
- Go to your catkin workspace src directory:
cd ~/catkin_ws/src
- Add the tracy_catkin package:
git clone [email protected]:ethz-asl/tracy_catkin.git
# If you're using git with SSH [recommended]git clone https://github.com/ethz-asl/tracy_catkin.git
# For git with HTTPS
- Pull the newest wavemap code:
cd wavemap && git checkout main && git pull
- Rebuild wavemap:
catkin build wavemap_all
- Go to your catkin workspace src directory:
- Docker
docker build --tag=wavemap --build-arg="VERSION=v1.5.0" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.4.0
Summary
This release makes wavemap much easier to configure by extending the documentation and adding informative, actionable messages for config loading errors.
New features
- Write documentation page on how to configure wavemap
- Make warnings/errors that can occur when loading configs more descriptive
- When loading a param fails, print an explanation, including
- the offending param's name (to make it easy to find) and type,
- the action that will be taken (e.g. it will be ignored, and default value X will be used instead), and
- for enum types list all supported options (e.g. for an input_handler type: ["pointcloud", "depth_image"])
- When loading a param fails, print an explanation, including
- Annotate the unit of config members (e.g. min_cell_width in meters) using types
- Replaces the previous solution that used enums, which were stored and handled separately
- With this new solution, the units directly and clearly show up in the documentation
- Update all example configs
- Make sure syntax matches newest wavemap version, addressing Issue #24
- Apply recommended settings
- Define a schema for wavemap configs using jsonschema, which also supports YAML, to enable
- Text completion, inline documentation, and real-time validation when editing wavemap configs in IDEs like CLion
- Automatic linting of wavemap configs through .pre-commit hooks
- Do not emit CMake warnings when the optional
livox_ros_driver2
dependency is not found (contributed by astumpf).- If users try to initialize a pointcloud input of type
livox
but the driver is not installed, they will be prompted to install it.
- If users try to initialize a pointcloud input of type
- Add templates for GitHub issues and pull requests
- Makes it easier for users to submit bug reports, feature requests, and open pull requests
Package changelogs
- Libraries
- ROS
Upgrade notes
Upgrading should only be a matter of rebuilding. If you're using
- Catkin: Pull the newest code and run
cd ~/catkin_ws/ && catkin build wavemap_all
- Docker:
docker build --tag=wavemap --build-arg="VERSION=v1.4.0" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.3.2
Summary
This release fixes a minor bug where the header of wavemap ROS messages was not set for certain data structures, as reported and fixed by astumpf.
Detailed bug description
The bug resulted in the header.stamp
and header.frame_id
fields not being set when the wavemap ROS server transmitted maps stored with data structures other than "hashed_wavelet_octree"
and "hashed_chunked_wavelet_octree"
.
Package changelogs
- ROS
Upgrade notes
Upgrading should only be a matter of rebuilding. If you're using
- Catkin: Pull the newest code and run
cd ~/catkin_ws/ && catkin build wavemap_all
- Docker:
docker build --tag=wavemap --build-arg="VERSION=v1.3.2" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.3.1
This release makes wavemap available under the BSD-3 license.
v1.3.0
Summary
This release introduces a fully redesigned wavemap Rviz plugin, which is easier to use and much faster.
New features
- Communication
- Incremental transmission of the map (avoids exceeding ROS message size limits for very large maps)
- Rewritten map<->ROS msg conversions, matching the new map<->byte stream implementation
- Rviz plugin UI
- Support different render modes (slice; grid) in a single WavemapDisplay instance
- Each render mode can be configured through its own foldout menu
- The map is only stored once per plugin instance and shared among the render mode handlers
- Grid render mode
- Expose grid color options in the UI
- Add option to set maximum grid drawing resolution
- E.g. to improve frame rate when displaying large maps on computers with no GPU
- Improve default settings s.t. it can be used with minimal tuning in most scenarios
- Support different render modes (slice; grid) in a single WavemapDisplay instance
- Rviz plugin performance improvements
- Only redraw map blocks that changed
- Render grid blocks with Level of Detail based on their distance to the camera
- Use a work queue and limit the update time per frame, to avoid stalling Rviz when large map changes occur
- Interface directly with Ogre, instead of using rviz::Pointcloud as an intermediary for rendering
Removed features:
- Remove the option to render map meshes
- This render mode does not yet produce good iso-surfaces and is currently very slow. It will be reintroduced once its more mature.
Detailed package changelogs
- Libraries
- ROS
- Tooling
Upgrade notes
Upgrading should only be a matter of rebuilding. If you're using
- Catkin:
cd ~/catkin_ws/ && catkin build wavemap_all
- Docker:
docker build --tag=wavemap --build-arg="VERSION=v1.3.0" - <<< $(curl -s https://raw.githubusercontent.com/ethz-asl/wavemap/main/tooling/docker/incremental.Dockerfile)
For more info, see the installation page in the docs.
v1.2.0
This release improves the documentation and the ease of installing wavemap, by including Docker as an alternative install method.
Individual package changelogs
wavemap_utils
- Add instructions on how to use Docker containers
- Add Dockerfile for incremental builds
- Move package to improve repo structure
catkin_setup & wavemap_all helper packages
- Move package to improve repo structure
Upgrade notes
If you're using ROS and previously built wavemap with catkin, you might get errors like this when building this new release:
CMake Error: The source directory "/home/victor/catkin_ws/src/wavemap/tooling/wavemap_utils" does not exist.
because we moved the wavemap_all
, wavemap_utils
and catkin_setup
helper packages to a new directory. To resolve it, run:
catkin clean wavemap_all
rm -r ~/catkin_ws/build/wavemap_all
catkin build wavemap_all