fuel_tools#
Gazebo Fuel Tools: Classes and tools for interacting with Gazebo Fuel
Maintainer: nate AT openrobotics DOT org
Gazebo Fuel Tools is composed by a client library and command line tools for interacting with Gazebo Fuel servers.
Building and installing
See the installation tutorial.
Make sure GZ_CONFIG_PATH
is set to the right install location so that gz fuel
will work.
Default is /usr/local/share/gz
.
Examples
For a complete list of commands run gz fuel -h
on the command line.
List all models
$ gz fuel list -t model -r | head
https://fuel.gazebosim.org/anonymous/test_model_595389531
https://fuel.gazebosim.org/anonymous/test_model_122023392
https://fuel.gazebosim.org/anonymous/test_model_429486665
https://fuel.gazebosim.org/anonymous/test_model_887243621
https://fuel.gazebosim.org/anonymous/test_model_084900530
https://fuel.gazebosim.org/anonymous/test_model_240061059
https://fuel.gazebosim.org/anonymous/test_model_464734097
https://fuel.gazebosim.org/anonymous/test_model_658598990
https://fuel.gazebosim.org/anonymous/test_model_834617935
https://fuel.gazebosim.org/anonymous/test_model_380348669
Download a model
$ gz fuel download -u https://fuel.gazebosim.org/1.0/OpenRobotics/models/Ambulance -v 4
Downloading model:
Name: Ambulance
Owner: openrobotics
Server:
URL: https://fuel.gazebosim.org
Version: 1.0
Download succeeded.
Private access tokens
Private models and worlds can be downloaded using access tokens.
Access tokens are generated on app.gazebosim.org
. After logging in,
go to Settings->Access Tokens
.
An access token can be used with CLI commands via the --header
option:
$ gz fuel download -u https://fuel.gazebosim.org/1.0/openrobotics/models/ambulance --header 'Private-Token: <access_token>'
Or, an access token can be stored in a ~/.gz/fuel/config.yaml
file. The token is then
automatically used by the command line tool and API calls. Use the configure
helper
tool create your ~/.gz/fuel/config.yaml
file.
$ gz fuel configure
C++ Get List models
// Create a client (uses https://fuel.gazebosim.org by default)
gz::fuel_tools::ClientConfig conf;
gz::fuel_tools::FuelClient client(conf);
gz::fuel_tools::ModelIter iter = client.Models();
while (iter)
{
std::cout << "Got model: " << iter->Identification().Name() << "\n";
}
Upload a model
Create an account on https://app.gazebosim.org/ and log in.
Create a private token at https://app.gazebosim.org/settings#access_tokens. Store the generated token someplace safe.
The private token can then be used to upload a model:
gz fuel upload -m ~/path_to_model --header 'Private-token: <TOKEN>'
Dependencies
On ubuntu run
sudo apt install ruby-ffi libzip-dev libcurl-dev libjsoncpp-dev
Roadmap
Create the notion of “asset repository” or similar. An asset repository abstracts an entity that can store assets. It can be local or remote. This is the interface for “asset repository”:
List(category). E.g.: localRepository.List(“models”) remote1Repository.List(“models”)
Details(assetIdentifier). E.g.: Modeldentifier model; model.Owner(“the_owner”); model.Name(“the_name”); localRepository.Details(model) remote1Repository.Details(model)
Create(assetIdentifier, path_to_the_asset). E.g.: Modeldentifier model; model.Owner(“the_owner”); model.Name(“the_name”); localRepository.Create(model, path_to_the_asset) remote1Repository.Create(model, path_to_the_asset)
Delete(assetIdentifier). E.g.: Modeldentifier model; model.Owner(“the_owner”); model.Name(“the_name”); localRepository.Delete(model) remote1Repository.Delete(model)
CopyTo(assetIdentifier, dst_repository). E.g.: Modeldentifier model; model.Owner(“the_owner”); model.Name(“the_name”); localRepository.CopyTo(model, remote1Repository) remote1Repository.CopyTo(model, localRepository)
“LocalRepository” and “RemoteRepository” should implement this interface. (Most of the pieces are there, we just need to refactor the code a bit).
Think about how to detect when new versions of remote models have been uploaded.
Idea of a hash.
Add Gazebo Fuel command line utilities for:
detail
create
delete
copyTo
How to test the client library:
Directly against the real backend (staging?)
Clone, and compile a local backend?
Mocking the backend has the problem of not being in sync with the real backend and missing potential issues.
Gazebo Fuel Tools 10.x
Gazebo Fuel Tools 10.0.0 (2024-09-25)
Baseline: this includes all changes from 9.1.0 and earlier.
Miscellaneous documentation fixes
Update badges to point to gz-fuel-tools10
Ionic changelog
Require cmake 3.22.1
Add missing URI header files
Use Ubuntu 24.04 in Github Actions CI workflow
Remove HIDE_SYMBOLS_BY_DEFAULT: replace by a default configuration in gz-cmake.
Use HIDE_SYMBOLS_BY_DEFAULT
Split ServerConfig and ClientConfig across multiple files
Bumps in Ionic: gz-fuel-tools10
Remove deprecated ignition files
Gazebo Fuel Tools 9.x
Gazebo Fuel Tools 9.1.0 (2024-08-06)
Make
CollectionIdentifier::UniqueName
consistentAdd Url accessor to Identifiers
Migrate curl_formadd from form API to mime API (deprecated in Ubuntu Noble)
Add package.xml
CLI for creating config.yaml
Clean all ASAN reported memory problems (curl related)
Add Private function to world identifier
Use config.yaml file from default cache location, if it exists
Gazebo Fuel Tools 9.0.3 (2024-04-09)
Use relative install path for gz tool data
Gazebo Fuel Tools 9.0.2 (2024-03-18)
Fix
LocalCache
so that models/worlds downloaded via fuel.ignitionrobotics.org can be found in the cache
Gazebo Fuel Tools 9.0.1 (2024-03-14)
Tidy nested namespaces
Update CI badges in README
Create directories and more output on fail
Disable tests that are known to fail on Windows
Update github action workflows
Re-enabling Windows tests
Gazebo Fuel Tools 9.0.0 (2023-09-29)
Added script to update assets to gz
Documentation fixes
ign -> gz
Remove GZ_FUEL_INITIAL_CONFIG_PATH macro
Infrastructure
Update package dependencies for harmonic (gz-msgs10)
⬆️ Bump main to 9.0.0~pre1
Gazebo Fuel Tools 8.x
Gazebo Fuel Tools 8.1.0 (2023-08-21)
Use
pull_request_target
for triage workflowFix Github project automation for new project board
Zip: use non-deprecated methods
Deprecated non-relocatable macro
Support for bazel in Garden
Minor cleanup
7.3.0 Release
Add bash completion
Reflect pagination of RESTful requests in iterator API
Disable all LocalCache Tests for Windows
Support link referral download
Gazebo Fuel Tools 8.0.2 (2023-03-30)
Support link referral download
Allow Curl redirect on HTTP requests.
CI and license updates.
Change backpack model version 2->3.
Fix model downloads for ignitionrobotics.org URIs.
Fix build when
JSON_USE_EXCEPTION == 0
[Pull request #332](https: gazebosim/gz-fuel-tools#332)
Gazebo Fuel Tools 8.0.1
Forward ports.
Remove fuel.ignitionrobotics.org from ClientConfig.
Clean up a few Windows warnings.
Gazebo Fuel Tools 8.0.0
Update test infrastruture
Ignition to Gazebo rename.
Bumps in versions for Garden and removal of deprecations
Improve documentation
Gazebo Fuel Tools 7.x
Gazebo Fuel Tools 7.3.0 (2023-06-13)
Forward merges
Add bash completion
Reflect pagination of RESTful requests in iterator API
Support link referral download
Gazebo Fuel Tools 7.2.2 (2023-03-29)
Support link referral download
Gazebo Fuel Tools 7.2.1 (2023-03-22)
Allow Curl redirect on HTTP requests.
CI and license updates.
Change backpack model version 2->3.
Gazebo Fuel Tools 7.2.0 (2021-11-17)
Forward port 4.7.0.
Gazebo Fuel Tools 7.1.0 (2021-08-16)
Ignition to Gazebo server rename effort
Remove redundant namespace references
Change
IGN_DESIGNATION
toGZ_DESIGNATION
Ignition -> Gazebo docs
Remove unused files (
bitbucket-pipelines
,docs
)Disable failing windows tests
Disable staging-fuel.ignitionrobotics.org test
Add missing header guard for
Interface.hh
SDF from path helper
Add Ubuntu Jammy CI
Fix trailing slashes in failing tests
Print error when unzipping fails to save a file
More checks when manipulating file system in tests
Move test cache to build folder
Improve and fix
ResultType
testsFix
cmdfuel
ruby script generation on Windows with MSVCFuelClient.cc
: include<deque>
APIs for retrieving models in parallel
Gazebo Fuel Tools 7.0.0 (2021-09-28)
Depend on gz-msgs8
Infrastructure
Gazebo Fuel Tools 6.x
Gazebo Fuel Tools 6.2.0 (2022-03-25)
Fix trailing slashes in failing tests
Print error when unzipping fails to save a file
More checks when manipulating file system in tests
Move test cache to build folder
Improve and fix ResultType tests
FuelClient.cc
:include <deque>
APIs for retrieving models in parallel
Gazebo Fuel Tools 6.1.0 (2021-10-15)
Detect gz instead of using cmake module to check for gz-tools
Added fuel update command
Fixed windows download
Owner upload
Infrastructure
Gazebo Fuel Tools 6.0.0 (2021-03-30)
Depend on gz-common4
Depend on gz-msgs7
Unset DELETE method on Windows
Edifice deprecations
Include windows instructions in examples README.md
Gazebo Fuel Tools 5.x
Gazebo Fuel Tools 5.2.0 (2021-12-20)
FuelClient.cc: include
<deque>
APIs for retrieving models in parallel
Detect
gz
instead of using cmake module to check for gz-toolsAdded
gz fuel update
commandFixed Windows download and CI
Choose which owner to upload to
Included private-token to
config.yaml
Add Windows Installation instructions
Use semantic version and prevent crash if version is missing
Document
GZ_FUEL_CACHE_PATH
on command lineInfrastructure
Gazebo Fuel Tools 5.1.1 (2020-12-18)
Fix light map URI in materials
Gazebo Fuel Tools 5.1.0 (2020-12-09)
Includes all changes up to version 4.3.0.
Gazebo Fuel Tools 5.0.0 (2020-09-28)
Added support for annotation parsing during model creation.
Removed repeated installation instructions.
Update codeowners.
Hide Private headers and LocalCache.hh
Fixed test - Download world 2
Gazebo Fuel Tools 4.x
Gazebo Fuel Tools 4.8.3 (2023-03-29)
Support link referral download
Gazebo Fuel Tools 4.9.1 (2024-01-05)
Create directories and more output on fail
Update github action workflows
Zip: use non-deprecated methods
Gazebo Fuel Tools 4.9.0 (2023-05-03)
Add bash completion
Reflect pagination of RESTful requests in iterator API
Gazebo Fuel Tools 4.8.3 (2023-03-29)
Support link referral download
Gazebo Fuel Tools 4.8.2 (2023-03-21)
Allow Curl redirect HTTP requests.
CI and license updates.
Gazebo Fuel Tools 4.8.1 (2023-02-07)
Fix model downloads for ignitionrobotics.org URIs.
Gazebo Fuel Tools 4.8.0 (2022-12-07)
Reduce asset download sizes.
Update tutorials to use Gazebo.
Change ignitionrobotics.org to gazebosim.org.
Gazebo Fuel Tools 4.7.0 (2022-11-17)
ign -> gz Migrate Ignition Headers : gz-fuel-tools.
Gazebo Fuel Tools 4.6.0 (2022-08-15)
. Ignition to Gazebo server rename * Pull request #263
Remove redundant namespace references
Change
IGN_DESIGNATION
toGZ_DESIGNATION
Ignition -> Gazebo
Remove unused files (bitbucket-pipelines, docs)
Disable
staging-fuel.gazebosim.org
test
Gazebo Fuel Tools 4.5.0 (2022-06-01)
APIs for retrieving models in parallel
Add missing header guard for Interface.hh
Print error when unzipping fails to save a file
More checks when manipulating file system in tests
Move test cache to build folder
Improve and fix
ResultType
testsFuelClient.cc: include
Gazebo Fuel Tools 4.4.0 (2021-06-17)
Remove
tools/code_check
and update codecovFixed windows download
Master branch updates
Support private-token in
config.yaml
Add Windows Installation
Use semantic version and prevent crash if version is missing
Document
GZ_FUEL_CACHE_PATH
on command lineSupport editing/patching model files
Set keep alive on
Gazebo Fuel Tools 4.3.0 (2020-12-01)
Improve fork experience.
Download dependencies.
Includes all changes up to version 3.5.0.
Gazebo Fuel Tools 4.2.1 (2020-08-26)
Fix
gz fuel download
, which was missing the-j
option.
Gazebo Fuel Tools 4.2.0 (2020-08-26)
Set license information based on licenses available from a Fuel server and
legal
information in ametadata.pbtxt
file.Added
edit
subcommand to thegz fuel
. The edit command currently supports editing a model’s privacy.Alphabetical listing of subcommands.
All changes up to and including Gazebo Fuel Tools 3.3.0 are included.
Gazebo Fuel Tools 4.1.0 (2020-02-27)
Resource deletion CLI.
Fetch files
README and tutorial updates:
Gazebo Fuel Tools 4.0.0 (2019-12-10)
Model upload CLI, resource metadata CLI, depend on gz-msgs5.
Gazebo Fuel Tools 3.x
Gazebo Fuel Tools 3.x.x (20xx-xx-xx)
Gazebo Fuel Tools 3.5.0 (2020-11-30)
Fix windows build.
Resolve updated codecheck issues.
Update Backpack model to fix tests.
Use lowercase resource and owner names when storing assets on disk.
Gazebo Fuel Tools 3.4.0 (2020-08-19)
Modernize github actions by updating to the new style.
Fix test worlds.
Add capability for downloading collections.
Fix windows build.t
Gazebo Fuel Tools 3.3.0 (2020-07-29)
openrobotics to OpenRobotics
Fix world tests
Add missing dependency in Actions CI
Backport file fetching
Convert model:// to Fuel URLs instead of absolute paths
Gazebo Fuel Tools 3.2.2 (2020-05-18)
Fix URL encodings in RestClient.
Print message when downloading a resource.
Use
${YAML_TARGET}
instead ofYAML::YAML
imported target.Convert emissive map file path.
Fix windows build with
popen
andpclose
macros.Remove std::experimental for filesystem (support for VS2019).
Gazebo Fuel Tools 3.2.1 (2019-08-12)
Support actors
Gazebo Fuel Tools 3.2.0 (2019-06-14)
FuelClient::DownloadModel accepts HTTP headers, and the
gz fuel download
command can accept a single HTTP header.
Gazebo Fuel Tools 3.1.0 (2019-05-xx)
Fix PBR material URI
Gazebo Fuel Tools 3.0.0 (2018-02-28)
Integration with gz-sim. The following set of pull requests update fuel-tools to use gz-cmake2, sets api.ignitionfuel.org as the default server, fixes codecheck errors, removes old deprecations, and parses model.config files using tinyxml2.
Gazebo Fuel Tools 1.x
Gazebo Fuel Tools 1.x.x (20xx-xx-xx)
Use
${YAML_TARGET}
instead ofYAML::YAML
imported target.
Gazebo Fuel Tools 1.2.0 (2018-05-30)
Get cached model resource file
Add some AsString functions
Change cache directory structure and use it
Client return only relevant cached models
Model version support
Remove server API version from model unique name
Client handle unique names and get server info from config
Changed model list to use headers for paging instead of iterating until a 404 is hit. Also added a mechanism to set the user agent
FuelClient: Don’t use ServerConfig if there’s ModelId
List models from command line
Get cached model resource file
Added const constructors for ModelIter and Model
Use common::URI for server URL
Remove server local name
Encode url path before downloading models
Download model from command line
Backport code style changes
Gazebo Fuel Tools 1.0.0 (2018-01-25)