common#
Gazebo Common : AV, Graphics, Events, and much more.
Maintainer: nate AT openrobotics DOT org
Gazebo Common, a component of Gazebo, provides a set of libraries that cover many different use cases. An audio-visual library supports processing audio and video files, a graphics library can load a variety 3D mesh file formats into a generic in-memory representation, and the core library of Gazebo Common contains functionality that spans Base64 encoding/decoding to thread pools.
Table of Contents
Features
Some of the many capabilities contained in Gazebo Common are:
- AV: FFMpeg based audio decoder, and video encoder and decoder. 
- Core: Base64 encoding and decoding, battery model, console logging, cross-platform filesystem interface, URI processing, and a thread pool. 
- Events: Mouse and keyboard events, and a high-performance signal and callback system. 
- Graphics: Collada, SVG, STL, OBJ, and DEM loaders. In-memory mesh, image, and material representations. Animation processing and BVH loader. 
- Profiler: A common profiler abstraction that can be used to measure and visualize run time of various pieces of Gazebo software. 
Install
See the installation tutorial.
Usage
Please refer to the examples directory.
Folder Structure
Refer to the following table for information about important directories and files in this repository.
+-- av                       Header and source files for the AV component.
+-- events                   Header and source files for the Event component.
+-- examples                 Example programs.
+-- geospatial               Geospatial component for heightmap & DEMs
+-- graphics                 Header and source files for the Graphics component.
+-- include/gz/common        Header files for the core component.
+-- io                       IO component. Read object from stream.
+-- profiler                 Header and source files for the Profiler component.
+-- src                      Core source files and unit tests.
+-- test
|    +-- integration         Integration tests.
|    +-- performance         Performance tests.
|    +-- static_assertions   Static assertion tests.
|    +-- regression          Regression tests.
+-- tutorials                Tutorials, written in markdown.
+-- Changelog.md             Changelog.
+-- CMakeLists.txt           CMake build script.
+-- Migration.md             Migration guide.
Contributing
Please see the contributing guide.
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 Common 7.x
Gazebo Common 7.0.0 (2025-09-30)
- Baseline: this includes all changes from 6.1.0 and earlier. 
- Add function for extracting single channel data from an - RGB[A]image
- Documentation updates 
- [Bazel] Update bazel module to use jetty release branches 
- Support reading pixel values from color 16 bit images 
- Deprecate - MovingWindowFilter, use gz-math instead
- Bump gz-cmake and others in jetty 
- Deprecate env() with two parameters 
- Bump main to gz-common 7.0.0~pre1 
Gazebo Common 6.x
Gazebo Common 6.1.0 (2025-05-28)
- Add support for custom profiler 
- Migrate bazel build setup to use bzlmod 
- Add Heightmap utility functions 
- Check valid indices before doing convex decomposition 
- ci: run cppcheck, cpplint on noble 
- Added missing includes 
- Add check for valid indices in submesh 
- Fix C4305 double truncated to float warnings (#666) 
- Add missing include chrono in Event.hh header 
Gazebo Common 6.0.2 (2025-02-12)
- Add missing includes 
Gazebo Common 6.0.1 (2024-12-17)
- Check normal presence before trying to read asMesh normals 
- Include - math::Anglesince it is used here
- Adds EoL to example 
- Remove gts references from documentation 
Gazebo Common 6.0.0 (2024-09-25)
- Baseline: this includes all changes from 5.6.0 and earlier. 
- Add a note about the conda-distributed ffmpeg on windows 
- Fix table of content 
- Fix severity level of gzlog 
- Fix loading lightmaps from gltf / glb meshes 
- Fix AssimpLoader collada texture coordinates 
- Implement console logging using - spdlog
- Update Changelog, README and prepare for gz-common6.0.0~pre1 release 
- Use self-pipe trick to implement signal handlers 
- Replace GTS with CDT 
- Remove debug logging introduced accidentally in PR review 
- Fix crash when calling absPath with empty input 
- DEM: Add support for GDAL vsicurl, vsizip support and avoid segfaults with huge VRT datasets 
- Enable 24.04 CI, require cmake 3.22.1 
- SubMesh::RecalculateNormals improvement 
- fix data race tsan issue 
- Generate a more unique texture name for glb embedded textures 
- Add package.xml 
- Fix deprecation warnings 
- Fix macOS workflow and update on-push branches 
- port: 5 to main 
- Clean up Clang compiler warnings 
- Add new function in MeshManager to merge all submeshes of a mesh into one 
- Adds new function in MeshManager for performing convex decomposition 
- Fix compatibility with FFmpeg5.0 
- Remove HIDE_SYMBOLS_BY_DEFAULT: replace by a default configuration in gz-cmake. 
- Fix search for UUID on Windows logic 
- Fix windows compilation by setting right visibility attributes 
- Drop the internal vendored version of TinyXML2 
- Revert “Add missing visibility declarations (#548)” 
- Add missing visibility declarations 
- Remove ignition 
- Bumps in ionic: use gz-cmake4, gz-utils3, gz-math8 
- Remove deprecated std::iterator inheritance 
- Collada and Assimp test for default animation names 
- Avoid Io.hh header name clash 
- Default name assignment to animations without names 
- Skip CSV header when reading DataFrame 
- Main deprecations 
- Add CSV data parsing 
- Introduces Flips UV flag, removes empty space 
- ⬆️ Bump main to 6.0.0~pre1 
Gazebo Common 5.x
Gazebo Common 5.7.1 (2025-01-30)
- Add include - for system_clock in Event.hh 
- Check normal presence before trying to read asMesh normals 
- Remove Conda Windows warnings 
Gazebo Common 5.7.0 (2024-11-08)
- Fix loading lightmaps from gltf / glb meshes (#630) - Pull request #630) (#646 (#646) 
 
- Fix AssimpLoader collada texture coordinates 
- Remove debug logging introduced accidentally in PR review 
- Fix crash when calling absPath with empty input 
- DEM: Add support for GDAL vsicurl, vsizip support and avoid segfaults with huge VRT datasets 
- SubMesh::RecalculateNormals improvement 
- fix data race tsan issue 
- Generate a more unique texture name for glb embedded textures 
- Add package.xml 
- Fix deprecation warnings 
- Fix macOS workflow and update on-push branches 
- Fix compatibility with FFmpeg5.0 
Gazebo Common 5.6.0 (2024-04-23)
- Clarify units for the DEM classes 
- Remove pessimizing move 
- Fix bazel build 
- Add new function in MeshManager to merge all submeshes of a mesh into one 
- Adds new function in MeshManager for performing convex decomposition 
Gazebo Common 5.5.1 (2024-03-14)
- Various Bazel adjustments for linting 
- Extend AssimpLoader to parse material transmission factor 
- Fix noise issue that appears in certain image textures 
Gazebo Common 5.5.0 (2024-02-26)
- Be louder when graphics is missing for geospatial 
- Multiple memory cleanup fixes 
- Clarify GDAL version requirement 
- 🎈 3.17.0 
- Update CI badges in README 
- Backwards compatible assimp texture name fix 
- Fix error output when creating directories 
- Update github action workflows 
- Fix segfault in case of no write access to log dir 
- ign -> gz 
- Support loading glb with compressed jpeg textures 
- Fix glTF / glb root node transform 
- EnumIface: suppress deprecation warning 
- Prevent loading lightmaps if mesh is a glb file that has an occlusion-metallic-roughness texture 
- 🎈 3.16.0 
- Fix cstdint with GCC 13 
Gazebo Common 5.4.2 (2023-09-26)
- Documentation fixes 
- Fix glTF metalness and roughness map orientation 
- Build examples from CMake rather than executable 
Gazebo Common 5.4.1 (2023-08-21)
- Use - pull_request_targetfor triage workflow
- Fix Github project automation for new project board 
- Fix Github Actions on macOS 
- Only build integration tests if libraries exist 
- Fix compiling under linux 
- Add missing - header includes 
- Header was dropped in the forward port and breaks downstream 
- Port: 4 to 5 
- Lint 
- 🎈 4.7.0 
- Fix build error when using gz:: with ign-common4 
Gazebo Common 5.4.0 (2023-04-28)
- Add support for bayer images to be saved in a directory 
- Fix for ffmpeg v6 
- Include cstring for memcpy 
- Fixed MeshManager Singleton 
- Fix for ffmpeg v6 
- Rename COPYING to LICENSE 
- Add marcoag as codeowner 
- CI workflow: use checkout v3 
- Update common5 for bazel builds 
- Fix profile tutorial 
- Update version in Changelog 
- Fixed metalness/roughness in ASSIMP loader 
- Fix Capsule mesh generation 
- Improved coverage remotery 
- Added BVH and STL loader tests 
- Increased Image coverage 
Gazebo Common 5.3.1 (2022-11-17)
- Fix out of bounds access to rotation array in assimp loader 
- Fix issues detected by ASAN 
Gazebo Common 5.3.0 (2022-11-14)
- Expose Vertex & Index raw ptrs for efficient reading 
Gazebo Common 5.2.2 (2022-10-26)
- [Backport] Avoid Io.hh header name clash (#471) 
Gazebo Common 5.2.1 (2022-10-19)
- Fix arm builds and tests 
Gazebo Common 5.2.0 (2022-10-18)
- Add CSV data parsing 
- Skip CSV header when reading DataFrame. 
- Adds an API to retrieve keys. 
Gazebo Common 5.1.0 (2022-10-13)
- 4 ➡️ 5 
- 🎈 4.6.1 
- 🎈 4.6.0 
- 🎈 4.5.2 
- 3 ➡️ 4 
- 🎈 3.15.1 
- 🎈 3.15.0 
- 🎈 3.14.2 
- Don’t install auto-generated profiler.hh 
- Fixed MeshManager Singleton 
- Don’t install CMakeLists.txt 
- ign -> gz Migrate Ignition Headers : gz-common 
- Suppress a bunch of unnecessary test output 
- Fix metallic roughness file path for gltf assets 
- Include cstring for memcpy 
- Backport from 5 to 3 - Fix deprecation warning from new ffmpeg 
- Remove redundant namespace references 
Gazebo Common 5.0.0 (2022-09-22)
- Improved visualization hw encoding tutorial gz-common5 
- Updated install instructions gz-common5 
- Fix reading pixel values from single channel 16 bit image 
- Add gdal to prerequisites 
- Cleanup long-deprecated ifdefs 
- Add a test for loading gltf with external textures 
- Fix ABI checker with testing module 
- Implement XDisplacement function for checking x displacement for all nodes 
- Fix deprecation warning from new ffmpeg 
- Use assimp for loading meshes 
- Add API for getting Image bytes as std::vector 
- Support lunar coordinate transformations 
- Remove configure.bat, export CXX_STANDARD 
- Update GoogleTest to latest version 
- Support compressed images and RGBA data in Image class 
- Expose API to set non earth DEMs flag 
- Fix console bug when IGN_HOMEDIR is unset 
- Test updates for common::testing module. 
- Ignition -> Gz Renaming - Move header files with git mv 
- Create redirection aliases 
- Migrate sources in src, test, examples, and include 
- Remove ignition redirection headers for Plugin Pull request #350 
- Move Plugin headers back from gz to ignition Pull request #350 
- ign -> gz: namespaces and logging functions Pull request #356 
- Deprecation warnings for Plugin Pull request #350 
- Use ignition headers for plugin Pull request #350 
- Fix profiler option Pull request #371 
- ign -> gz Macro Migration : gz-common Pull request #366 
- [ign -> gz] CMake functions Pull request #370 
- ign -> gz Environment Variable Migration Pull request #365 
- Migrate IGNITION- CMake variables Pull request #381 
- Rename CMake project to gz Pull request #352 
- ign -> gz Partial Docs Migration and Project Name Followups : gz-common Pull request #383 
- Partial cmake and source migrations Pull request #392 
- Migrate ign_remotery_vis Pull request #392 
- Finale: Source hard-tocks Pull request #395 
- Remove deprecated include Pull request #400 
 
- [DOCUMENTATION] Adds full path for the profiler 
- prevent switch case statement fall through. 
- Make Timer_TEST more robust 
- Bumps in garden : ign-common5 
- Use ign-utils instead of ign-cmake utilities 
- Bumps in garden : ign-common5 
- examples/CMakeLists.txt: fix find version variable 
- Add common::testing module 
- Fix typo bug in MaterialIndex 
- Fix edge case handling for SubMesh::MaterialIndex 
- DEM improvements to nodata, buffer and other corner cases 
- 🧹 Drop all test main functions from gtest files 
- Class with final destructor should be final 
- Geospatial component for heightmaps and DEM support 
- Fix filesystem::separator, parentPath and basename behavior 
- Miscellaneous cleanup of Events API 
- Adds an - isRelativePathto determine if path is relative
- Image: make several methods const 
- Utilize ImplPtr in AV component 
- Update tests to use more STL functionality 
- Fixed parentPath() return when input has no parent 
- Utilize ImplPtr for Timer 
- Update to use std::filesystem rather than Boost 
- Use SuppressWarning from ign-utils 
- README: update badge 
- Revert geospatial component for now 
- Move geospatial headers to subfolder 
- Geospatial component for heightmap & DEMs 
- Upload coverage for Focal builds 
- Try to checkout matching branch in macos workflow 
- Bumps in garden: use ignition-math7 
- Add macOS 11 workflow 
- Use ImplPtr where relevant 
- Remove all deprecated functionality from main 
- ign-common5: drop Bionic 
- Update tension for common5 
- Bump main to 5.0.0~pre1 
Gazebo Common 4.x
Gazebo Common 4.7.0 (2023-05-17)
- Forward Ports: 3 -> 4 (#506) 
- Fix build error when using gz:: with ign-common4 
- Fix for ffmpeg v6 
- Include cstring for memcpy 
- Fixed MeshManager Singleton 
- Rename COPYING to LICENSE 
- Add marcoag as codeowner 
- CI workflow: use checkout v3 
- Improved coverage remotery 
- Added BVH and STL loader tests 
- Increased Image coverage 
Gazebo Common 4.6.2 (2022-11-17)
- Fix Capsule mesh generation. 
Gazebo Common 4.6.1 (2022-10-11)
- All common3 changes up to 3.15.1 release 
Gazebo Common 4.6.0 (2022-10-11)
- All common3 changes up to 3.15.0 release 
- Include cstring for memcpy 
Gazebo Common 4.5.2 (2022-08-16)
- Fix deprecation warning from new - ffmpeg
- Remove redundant namespace references 
- Add code coverage ignore file 
- Change - IGN_DESIGNATIONto- GZ_DESIGNATION
- Ignition -> Gazebo 
- Support absolute Win paths with forward slashes in - common::FindFile
- Fix - FindSharedLibraryfor relative plugin paths
- Fix race condition in - FileLogger
- Synchronize console writes 
- Profiler tutorial: viewing from Docker container 
Gazebo Common 4.5.1 (2022-06-21)
- Fix spelling in URI error message 
- gzLogInitfails if run after console output
- Fix compatibility with FFmpeg 5.0 
- packages.apt: don’t install ruby-ronn 
- Add some tests for - parentPath/- basename
- Add CI support for Jammy 
- Minor typo in filesystem documentation 
- Fix out-of-bounds access in sanitizeSlashes 
- Fix out-of-bound access in URI 
- Move performance test to examples 
- Fix memory corruption & leaks in Image 
Gazebo Common 4.5.0 (2022-01-12)
- Fixed crash when a Collada file has an empty normal vector 
- Support 16 bit heightmaps 
- Fix bug in URIPath assignment operator 
- Use - libexecto install binary- remotery_vis
- Normalize normal vectors from OBJ. 
- Synchronize console writes 
- Added method to remove meshes from the - MeshManager
- Fixed macOS symbol in - common::Profiler
- Fix skip logic for integration tests 
- Use direct evaluation for SKIP_av. 
Gazebo Common 4.4.0 (2021-10-15)
- Add support for animation tension 
Gazebo Common 4.3.0 (2021-09-27)
- Remove gz-utils from TempDirectory 
- Add functions and objects for Temporary Directories 
- Fix memory corruption & leaks in Image 
- Fix a typo in VideoEncoder_TEST. 
- Fix segfault caused by destruction order of Event and Connection 
- Infrastructure 
- Documentation 
Gazebo Common 4.2.0 (2021-08-02)
- Export lights to dae 
- Add cstring for std::memcpy 
Gazebo Common 4.1.0 (2021-06-22)
- Make KeyEvent rule-of-five compliant 
- Fix - av_*API usage for deprecations
- Set project-wide standard to C++17 
- Remove - CMAKE_CXX_FLAGSfrom test targets
- Support loading PBR textures in OBJLoader 
- Remove - tools/code_checkand update codecov
- Port codecov to new configuration 
- Fix loading collada files with multiple texcoord sets using the same offset 
- Add function to convert single channel image data to RGB image 
- Remove ColladaExporter path constraint 
- Avoid duplication of / in joinPaths (Windows) 
- Fixed colladaLoader on Windows 
- Improved Windows support 
- Function to serialize compressed image to buffer 
- Fixed tutorial link 
- Use matching malloc/free for AudioDecoder. 
- Add bazel buildsystem support 
Gazebo Common 4.0.0 (2021-03-30)
- Include windows instructions in examples README.md 
- Fix crash when using BVH animations 
- Rotate capsule to Z-up 
- Add implementation pointer to gz-common classes 
- Cleanup and add implementation pointer to Animation classes 
- Install the profiler in a version-safe manner 
- Restore support for model:// URIs 
- Deprecated common::Time 
- Update codeowners 
- Workflow updates 
- Update BitBucket Links 
- Corrected - BAYER_RGGR8to- BAYER_BGGR8in- PixelFormatNameand- PixelFormatTypelocated in- graphics/include/gz/common/Image.hh.
- Added URI Authority parsing to the URI class. Authority information can be found here. This update also caused some formally valid syntax to become invalid, and some formally invalid syntax to become valid. See the migration guide. 
Gazebo Common 3.x
Gazebo Common 3.17.0 (2024-01-05)
- Fix error output when creating directories 
- Update github action workflows 
- Fix segfault in case of no write access to log dir 
Gazebo Common 3.16.0 (2023-06-05)
- Include cstdint to build with GCC 13 
- Fix missing cstdint header in latest gcc build 
- Fix for ffmpeg v6 
- Include cstring for memcpy 
- Fixed MeshManager Singleton 
- Rename COPYING to LICENSE 
- Add marcoag as codeowner 
- CI workflow: use checkout v3 
- Improved coverage remotery 
- Added BVH and STL loader tests 
- Increased Image coverage 
Gazebo Common 3.15.1 (2022-10-11)
- Fix build on case-insensitive filesystems 
- Don’t install CMakeLists.txt 
Gazebo Common 3.15.0 (2022-10-06)
- ign -> gz Migrate Ignition Headers 
Gazebo Common 3.14.2 (2022-08-16)
- Fix deprecation warning from new - ffmpeg
Gazebo Common 3.14.1 (2022-06-01)
- Profiler tutorial: viewing from Docker container 
- ignLogInit can be called after an ignerr, etc 
- Fix compatibility with FFmpeg 5.0 
- Fix out-of-bounds access in sanitizeSlashes 
- Fix memory corruption & leaks in Image 
- Normalize normal vectors from OBJ. 
- Fixed macos symbol in - common::profiler
- Fix skip logic for integration tests 
Gazebo Common 3.14.0 (2021-10-12)
- Support loading PBR textures in OBJLoader 
- Remove CMAKE_CXX_FLAGS from test targetrs 
- Set project-wide standard to C++17 
- Fix av_* API usage for deprecations 
- Make KeyEvent rule-of-five compliant 
- Fix segfault caused by destructionb order of Event and Connection 
- Fix a typo in VideoEncoder_TEST 
- Use direct evaluation for SKIP_av 
Gazebo Common 3.13.2 (2021-05-11)
- Backport collada fixes (Backport #204) 
- Fix join paths again 
Gazebo Common 3.13.1 (2021-05-03)
- Fix join paths to remove duplicate separators 
- Fix loading collada files with multiple texcoord sets using the same offset. 
Gazebo Common 3.13.0 (2021-04-27)
- Add function to convert single channel image data to RGB image 
- Avoid duplication of / in joinPaths (Windows) 
- Fix colladaLoader on Windows 
- Backport #188: Fix crash when using BVH animations. 
- Improved Windows support 
Gazebo Common 3.12.0 (2021-04-06)
- Remove use of _SOURCE and _BINARY dirs in tests. 
- Add bazel buildsystem support. 
- Use matching malloc/free for AudioDecoder. 
- Fixed tutorial link in the README.md. 
- Function to serialize compressed image to buffer 
Gazebo Common 3.11.1 (2021-03-08)
- Relax expectation so encoder test passes on ARM 
- Revert “Associate library materials effect with meshes (#151)” 
Gazebo Common 3.11.0 (2021-03-05)
- Fix image red and blue swapping 
- Remove issue & PR templates 
- Prevent console spamming when exporting a mesh that has multiple texture coordinates 
- Associate library materials effect with meshes 
- Reverted in 3.11.1 
 
- Added issue & PR templates 
- Added support for HW-accelerated video encoding. 
- Added FlagSet utility class 
- Disable failing VideoEncoder and Audioecoder tests on Windows 
- Added ellipsoid mesh 
- Added capsule mesh 
Gazebo Common 3.10.1 (2021-01-20)
- Fix transparency tag in the Collada exporter. 
Gazebo Common 3.10.0 (2021-01-05)
- Added render order to material class 
- Fix memory leak in Pbr.cc 
Gazebo Common 3.9.0 (2020-12-21)
- Support multiple texture coordinate sets 
- Add Lightmap to material 
Gazebo Common 3.8.0 (2020-12-08)
- Call gz::common::load() from Video constructor 
- Cleanup - Drop unused forward declaration: Pull Request 113 
- Remove two known flaky tests from Windows CI: Pull Request 119 
- Make ignstrtok private to Util.cc: Pull Request 134 
- Fix memory leaks Pull Request 136 
 
- Windows - Do not hardcode USE_EXTERNAL_TINYXML2 to OFF: Pull Request 116 
- Fix GZ_HOMEDIR on Windows: Pull Request 127 
- Improve Windows support: Pull Request 128 
- Fix Windows AV CI warnings and test failures: Pull Request 135 
 
- Fix video encoder timing 
- Feature: Add transformation matrix to ColladaExport 
Gazebo Common 3.7.0 (2020-10-21)
- Miscellaneous Cleanups - Feature: Join function for combining strings with a delimiter 
 
- Improve fork experience 
- Add Console example 
- Support fuel URLs for textures 
- Fix loading dae file with hierarchical node that does not have a name 
- Fix more Animation memory leaks 
- Fix env behavior to return true on empty vars - Feature: Add setenv for setting environment variables 
- Feature: Add unsetenv for clearing environment variables 
- Feature: Add alternative env implementation that respects empty variables 
 
Gazebo Common 3.6.1 (2020-09-16)
- Fix hierarchical submesh processing in the ColladaLoader. 
- Tutorial updates 
- Fix the AudioDecoder class 
- Fix actions CI 
- Fix trajectory info memory leak 
- Remove URI warning on constructor 
Gazebo Common 3.6.0 (2020-06-09)
- Refactor Image::MaxColor to reduce computation time 
- Update to gtest 1.10.0 with patch for gcc warnings 
- Fix ColladaLoader loading - tag when - does not exist 
- Remove unused included headers 
- More file path APIs 
Gazebo Common 3.5.0 (2020-04-09)
- Add interpolate_x property to actor animations 
- Update PBR metalness default value to 0.0 
- Fix crash when loading OBJ meshes with invalid materials 
Gazebo Common 3.4.0 (2020-02-20)
- Add PBR material class 
- Custom paths for file URIs (env var + URI) 
- Add function to get NodeAnimation 
- Handle unexpected COLLADA more gracefully 
- Add support for alpha based texture transparency. 
- tiny_obj_loader: set better diffuse value when- map_kDis present and- Kdis not specified.
- ColladaLoader: load files with actors with multiple skeletons 
- Compute volume of mesh shapes with - Mesh::Volumeand- SubMesh::Volume.
- Port Skeleton fixes from gazebo. 
- Port gazebo9 fix for ColladaLoader with multiple geometries 
- SystemPaths::FindSharedLibrary: return input if its is an absolute path to a file
- Fix - Image::ConvertPixelFormatfor- BAYER_BGGR8
- Support custom callbacks to find files on global interface 
Gazebo Common 3.3.0 (2019-08-27)
- skip GTSMeshUtils test on Windows due to issue #50 
- Add bvh animation support for skeleton and TrajectoryInfo 
- ColladaLoader: fix wrong node weights caused by buffer overflow bug 
- Filesystem copy directory and parentpath 
Gazebo Common 3.2.0 (2019-08-07)
- Allow gzLogInit to use an absolute path. Added a timeToIso that converts a given time to an ISO string. Some console timestamps were using - GZ_SYSTEM_TIME_NS()and others- gz::common::systemTimeISO(). Switched all to use- gz::common::systemTimeISO().
- Port ColladaLoader fix: use default value of 1 for stride parameter when unset. 
Gazebo Common 3.1.0 (2019-05-17)
- Image::PixelFormatType: append - BAYER_BGGR8instead of replacing- BAYER_RGGR8
- Use - std::tolowerwith locale in lowercase helper function
- Profiler: give hint on osx to find frameworks so it doesn’t find them inside Xcode 
- Fix windows tests: SystemPathsFixture.FileSystemPaths and TimeTest.Sleep 
- Filesystem functions to create unique paths 
- Battery additions for LinearBatteryPlugin port to gz-sim 
- Consolidate Console::log streams to reduce colored log size 
- Fix ColladaLoader to support mixamo models and fix skeleton animation loading 
Gazebo Common 3.0.0 (2019-02-28)
- Use gz-cmake2 and support Ubuntu Bionic (18.04). 
- WorkerPool: allow user to set minimum number of worker threads. 
- ColladaLoader fixes: setting multiple texcoord’s, check for line breaks when using - split
- Event: replace - operator()and- Signal()explicit templates with variadic templates and perfect forwarding.
- Event: use second template argument to disambiguate events with matching signatures. 
- Add profiler using Remotery. 
- Added hash64 function for converting - std::stringto- uint64_tas- constexpr.
- SystemPaths: search paths in - GZ_FILE_PATHenvironment variable when finding files
- Time::Sleep: return amount of time actually slept
- NodeTransform: use unique_ptr for private data, add copy constructor/assignment 
Gazebo Common 2.x
Gazebo Common 2.x.x (2018-XX-XX)
Gazebo Common 2.0.0 (2018-02-11)
- Use ignition-cmake1 and components for av, events, and graphics 
- Expand plugin functionality with PluginPtr and specializations 
- Added signal handler class 
- Update tinyobjloader to version that supports triangulating meshes with concave polygons. 
Gazebo Common 1.x.x (2018-XX-XX)
Gazebo Common 1.X.X (20XX-XX-XX)
- Time::Sleep: use CLOCK_MONOTONIC on Linux 
Gazebo Common 1.1.1 (2018-05-23)
- Documentation upload improvements 
- Fix build on homebrew with ffmpeg4 
- Remove symbolic link directory 
Gazebo Common 1.1.0 (2018-04-16)
- Accept spaces on URI path 
- Fix gcc7 compiler warnings on artful 
- Fix artful cppcheck 
- Fix nanosecond to second conversion