utils#

Gazebo Utils : Classes and functions for robot applications

Maintainer: addisu AT openrobotics DOT org

GitHub open issues GitHub open pull requests Discourse topics Hex.pm

Build

Status

Test coverage

codecov

Ubuntu Noble

Build Status

Homebrew

Build Status

Windows

Build Status

Gazebo Utils, a component of Gazebo, provides general purpose classes and functions designed for robotic applications.

Table of Contents

Features

Install

Usage

Documentation

Testing

Folder Structure

Code of Conduct

Contributing

Versioning

License

Features

Gazebo Utils provides a wide range of functionality, including:

  • A helper class to implement the PIMPL pattern

  • A command line parsing utility (vendored CLI11)

  • Macros to suppress warnings

Install

See the installation tutorial.

Usage

Please refer to the examples directory.

Documentation

API and tutorials can be found at https://gazebosim.org/libs/utils.

You can also generate the documentation from a clone of this repository by following these steps.

  1. You will need Doxygen. On Ubuntu Doxygen can be installed using

    sudo apt-get install doxygen
    
  2. Clone the repository

    git clone https://github.com/gazebosim/gz-utils
    
  3. Configure and build the documentation.

    cd gz-utils; mkdir build; cd build; cmake ../; make doc
    
  4. View the documentation by running the following command from the build directory.

    firefox doxygen/html/index.html
    

Testing

Follow these steps to run tests and static code analysis in your clone of this repository.

  1. Follow the source install instruction.

  2. Run tests.

    make test
    
  3. Static code checker.

    make codecheck
    

Folder Structure

Refer to the following table for information about important directories and files in this repository.

gz-utils
├── cli                      Gazebo CLI component. Vendored from https://github.com/CLIUtils/CLI11/
├── examples                 Example programs.
├── include/gz/utils         Header files.
├── src                      Source files and unit tests.
├── test
│    ├── integration         Integration tests.
│    ├── performance         Performance tests.
│    └── regression          Regression tests.
├── tutorials                Tutorials, written in markdown.
├── Changelog.md             Changelog.
└── CMakeLists.txt           CMake build script.

Contributing

Please see CONTRIBUTING.md.

Code of Conduct

Please see CODE_OF_CONDUCT.md

Versioning

This library uses Semantic Versioning. Additionally, this library is part of the Gazebo project which periodically releases a versioned set of compatible and complimentary libraries. See the Gazebo website for version and release information.

License

This library is licensed under Apache 2.0. See also the LICENSE file.

Gazebo Utils 3.x

Gazebo Utils 3.1.0 (2024-11-15)

  1. Build Gazebo Utils with bzlmod

  2. Add bzlmod CI

  3. Add expectations to subprocess test

  4. Fix logging source location

Gazebo Utils 3.0.0 (2024-09-25)

  1. Baseline: this includes all changes from 2.2.0 and earlier.

  2. Add EoL and use SetConsoleSinkLevel in example

  3. Catch spdlog exception thrown when creating file

  4. Include file name in log format

  5. Update logger level and flush_on values

  6. Use common formatter for console and file sinks

  7. Logger updates

  8. Update badges to point to gz-utils3 branch

  9. Update changelog and add prepare for prereleases

  10. Move spdlog::logger to gz-utils

  11. Require cmake version 3.22.1

  12. Add package.xml

  13. bazel: build and test subprocess functionality

  14. Update CI badges in README

  15. Use HIDE_SYMBOLS_BY_DEFAULT

  16. Remove ignition

  17. Bumps in ionic: use gz-cmake4

  18. Infrastructure

  19. ⬆️ Bump main to 3.0.0~pre1

Gazebo Utils 2.x

Gazebo Utils 2.2.0 (2023-11-08)

  1. Make the single argument constructor inherit the env

  2. Add new functions for manipulating the environment

  3. Add license checking support to bazel

  4. Include what you use

  5. Ensure all licenses are reflected in the LICENSE file

  6. Not sure why this was here, but it is unused

Gazebo Utils 2.1.0 (2023-09-26)

  1. Documentation fixes

  2. Infrastructure

  3. Extra test macros for ARM32/ARM64

  4. Add a utility for spawning subprocesses

  5. Support for bazel in Garden

  6. Rename COPYING to LICENSE

  7. Add missing config.hh include to gz headers

  8. ign -> gz Migrate Ignition headers

Gazebo Utils 2.0.0 (2022-09-22)

  1. Improve install instructions

  2. Round out ExtraTestMacros

  3. Update GoogleTest to latest version

  4. cli_TEST: Fix compatibility with CLI11 2.0

  5. Include <functional> in FormatterFwd

  6. ign to gz Migration

  7. Infrastructure

Gazebo Utils 1.x

Gazebo Utils 1.5.1 (2022-12-15)

  1. Add missing config.hh include to gz headers

Gazebo Utils 1.5.0 (2022-12-08)

  1. Ignition to Gazebo header migration.

  2. CI workflow: use checkout v3.

Gazebo Utils 1.4.1 (2022-11-17)

  1. Include in FormatterFwd.

  2. cli_TEST: Fix compatibility with CLI11 2.0.

  3. Add code coverage ignore file.

Gazebo Utils 1.4.0 (2022-03-29)

  1. Enable cpplint

  2. Add doxygen linters

  3. Custom Gazebo CLI11 formatter

  4. Drop all main functions from gtest files

  5. Improvements to enable “-Wconversion”

Gazebo Utils 1.3.0 (2022-02-24)

  1. Fix inline namespace issue with clang6

  2. Move ExtraTestMacros from gz-cmake

Gazebo Utils 1.2.0 (2022-01-28)

  1. Enable cpplint on focal

  2. Add NeverDestroyed utility class

  3. Move environment functionality to utils

  4. ImplPtr Get method

Gazebo Utils 1.1.0 (2021-09-02)

  1. More complete bazel implementation

  2. Add GZ_UTILS_VENDOR_CLI11 CMake option to optionally use external CLI11

  3. Add an example program using CLI11

Gazebo Utils 1.0.0 (2021-03-30)

  1. Add basic support for bazel build system.

  2. Gazebo ImplPtr

  3. Vendor CLI11 library inside gz-utils

  4. Update warning suppression macros

  5. Pre-release cleanup