Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nmansard/example-robot-data
  • jmarti/example-robot-data
  • wxmerkt/example-robot-data
  • pfernbac/example-robot-data
  • cmastall/example-robot-data
  • gsaurel/example-robot-data
  • gepetto/example-robot-data
7 results
Show changes
Commits on Source (664)
Showing with 829 additions and 247 deletions
# format (Guilhem Saurel, 2022-04-11)
a6aa4f4b6cf0a1857fba3075566745dbf4c22e18
# pre-commit clean (Guilhem Saurel, 2022-04-01)
3ff105e250d5f984d5200a52c2791263be96da5d
# update tooling (Guilhem Saurel, 2022-03-31)
d27092f3d16c077b70216e47635d1d29247a5dde
# format (Rohan Budhiraja, 2022-03-31)
98c7ea06d36d670e6d1f6377b2728e33540af4c7
# update python format (Guilhem Saurel, 2022-02-17)
4dba3f86c0a96379fa479e8b768d315daca70bc2
# Address python code formatting (Julian Viereck, 2021-06-14)
c3e1dffe22d450e5301d4f7801a14974286d7c61
# format (Guilhem Saurel, 2021-05-26)
2abddbc5c3833379bace126ab7cb0a07f1addaff
# [cleanup] Fixed code format (Carlos Mastalli, 2021-05-04)
c89f2524bf9b1a76ec29b99910caea641c1b2496
# python: format (Guilhem Saurel, 2020-10-13)
2f6b85c741b981d90185e25845a4614a7a97e98b
# [Format] fix linters (Guilhem Saurel, 2019-08-28)
9f92ecdf27449c8404bce0d5756fa65ab1a4912c
# [format] Formatted the robot_loader script (Carlos Mastalli, 2019-08-28)
34d3182c9ee99568706921f3e94c5fdd75254c17
# [format] Fixed further errors in the code (Carlos Mastalli, 2019-04-16)
9ce3cc472c367373812b3401a8efbc85094f8423
# [format] Added format configuration (Carlos Mastalli, 2019-04-16)
5c6492c035e9f98c686dc8859af1ae0fe56b2b60
# [format] Fixed format issues (Carlos Mastalli, 2019-04-16)
be1a995b9683a9989755c9a5be8676d82a4589bc
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
name: "CI - Nix"
on:
push:
branches:
- devel
- master
pull_request:
branches:
- devel
- master
jobs:
tests:
name: "Nix build on ${{ matrix.os }}"
runs-on: "${{ matrix.os }}-latest"
strategy:
matrix:
os: [ubuntu, macos]
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v31
- uses: cachix/cachix-action@v16
with:
name: gepetto
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix build -L
name: update-flake-lock
on:
workflow_dispatch:
schedule:
- cron: '0 18 23 * *'
jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
with:
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
......@@ -2,3 +2,4 @@
*.pyd
*.pyo
build*
*~
include: http://rainboard.laas.fr/project/example-robot-data/.gitlab-ci.yml
include: https://rainboard.laas.fr/project/example-robot-data/.gitlab-ci.yml
ci:
autoupdate_branch: devel
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.0
hooks:
- id: ruff
args:
- --fix
- --exit-non-zero-on-fix
- --ignore
- UP036
- id: ruff-format
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
- repo: https://github.com/pappasam/toml-sort
rev: v0.24.2
hooks:
- id: toml-sort-fix
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v20.1.0
hooks:
- id: clang-format
args:
- -i
- --style=Google
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-merge-conflict
- id: check-symlinks
- id: check-toml
- id: check-yaml
- id: debug-statements
- id: detect-private-key
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace
exclude: tests/test_python-syntax_error.py
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
## [4.3.0] - 1980-01-01
- Add panda collision ([#242](https://github.com/Gepetto/example-robot-data/pull/242)) + ([#263](https://github.com/Gepetto/example-robot-data/pull/263))
- Add baxter srdf ([#259](https://github.com/Gepetto/example-robot-data/pull/259))
- Update Go2 collision for convex hull of mesh and remove "Head_upper", "Head_lower", "XX_calflower", "XX_calflower1" links and joints ([#260](https://github.com/Gepetto/example-robot-data/pull/260))
- Fix ROS2 installation ([#261](https://github.com/Gepetto/example-robot-data/pull/261))
- Add tiago pro ([#265](https://github.com/Gepetto/example-robot-data/pull/265))
- Add nix flake
## [4.2.0] - 2024-12-08
### Added
- Add PR2 robots ([#210](https://github.com/Gepetto/example-robot-data/pull/210))
- Add GO2 robots ([#239](https://github.com/Gepetto/example-robot-data/pull/239))
- Add Falcon Bravo7 Bluevolta robots ([#244](https://github.com/Gepetto/example-robot-data/pull/244))
- Add alex robots ([#247](https://github.com/Gepetto/example-robot-data/pull/247))
- Add compatibility with jrl-cmakemodules workspace ([#225](https://github.com/Gepetto/example-robot-data/pull/225))
## [4.1.0] - 2024-01-29
- added CHANGELOG.md in https://github.com/Gepetto/example-robot-data/pull/193
- added a simple `quadruped` robot
- Fix wrong position of the center of mass for Solo-8 and Solo-12 lower legs
- Added the Unitree's Z1 robot
- Store urdf file in robot
- Updated borinot & hextilt
## [4.0.9] - 2023-11-29
### What's Changed
* Supported pinocchio with cppadcg installation by @cmastalli in https://github.com/Gepetto/example-robot-data/pull/180
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/181
* Verbose by @nim65s in https://github.com/Gepetto/example-robot-data/pull/183
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/184
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/187
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/188
* CMake: require >= 3.10 by @nim65s in https://github.com/Gepetto/example-robot-data/pull/185
* Update jrlcmakemodules to support Python 3.12 by @jorisv in https://github.com/Gepetto/example-robot-data/pull/190
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/189
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/191
* Sync submodule cmake by @jcarpent in https://github.com/Gepetto/example-robot-data/pull/192
### New Contributors
* @jorisv made their first contribution in https://github.com/Gepetto/example-robot-data/pull/190
## [4.0.8] - 2023-07-18
- updated copyright and contributors
- updated pre-commit
- updated cmake for eigenpy 3.1.0
- updated submodule
## [4.0.7] - 2023-05-18
- use CMake for `EXAMPLE_ROBOT_DATA_MODEL_DIR`
## [4.0.6] - 2023-05-13
- [go1][b1] Added fake inertia in base for pybullet
- updated for eigenpy v3
- cmake format
- cmake: fetch submodule if not available
- reduce some meshes
- move import of paths
- pre-commit update
- sync submodule
## [4.0.5] - 2023-02-16
### What's Changed
* Wrong rotation in allegro visual urdf description by @lmontaut in https://github.com/Gepetto/example-robot-data/pull/157
* go1: fix inertia of fake camera links for pybullet by @nim65s in https://github.com/Gepetto/example-robot-data/pull/158
## [4.0.4] - 2023-02-10
### What's Changed
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/141
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/142
* Remove Lamp nodes that are referencing non-existing library_lights by @petrikvladimir in https://github.com/Gepetto/example-robot-data/pull/143
* Fix Kinova mesh materials and remove Anymal mounting block by @wxmerkt in https://github.com/Gepetto/example-robot-data/pull/145
* Add ANYmal C by @wxmerkt in https://github.com/Gepetto/example-robot-data/pull/144
* Fix Panda inertials, add SRDF by @wxmerkt in https://github.com/Gepetto/example-robot-data/pull/147
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/148
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/150
* [panda_description] Update meshes from franka_ros to get textures by @wxmerkt in https://github.com/Gepetto/example-robot-data/pull/149
* Fix tests for pybullet by @nim65s in https://github.com/Gepetto/example-robot-data/pull/151
* Add Unitree B1 & Go1 by @Sergim96 in https://github.com/Gepetto/example-robot-data/pull/152
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/153
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/154
* Allegro hand: adding missing inertia information by @lmontaut in https://github.com/Gepetto/example-robot-data/pull/156
### New Contributors
* @petrikvladimir made their first contribution in https://github.com/Gepetto/example-robot-data/pull/143
* @Sergim96 made their first contribution in https://github.com/Gepetto/example-robot-data/pull/152
## [4.0.3] - 2022-11-09
### What's Changed
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/138
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/Gepetto/example-robot-data/pull/139
* Adding allegro hands (left and right) by @lmontaut in https://github.com/Gepetto/example-robot-data/pull/140
### New Contributors
* @lmontaut made their first contribution in https://github.com/Gepetto/example-robot-data/pull/140
## [4.0.2] - 2022-09-01
- Tests: check cassie with pinocchio 2.9.1 / 2.9.2
- Update CMake for eigenpy 2.7.11
- Modernize CMake if available
- update tooling
## [4.0.1] - 2022-04-11
- fix compatiblity for dependencies
## [4.0.0] - 2022-04-01
- Add laikago
- Add simplified double pendulum
- update simple humanoid
- update SDF loader & Cassie for pinocchio 2.9.2 (private)
- :warning: remove deprecated loaders :warning:
- setup tooling:
- black
- flake8
- pre-commit + CI
- reformat for black / pre-commit
## [3.13.1] - 2022-03-01
- added Articulated soft robot
- added Continuous double pendulum
- cassie/srdf: update q0 config for pelvis orientation
- talos: add rotor parameters
- finger_edu: fix inertia
- a1: fix inertia
- allow customization of model path
- updated python format
## [3.12.0] - 2021-11-12
- cassie: update q0
- talos: use rotor parameters
- python loader: allow customization of model path
## [3.11.0] - 2021-09-17
- add a1_description (Unitree A1 robot)
- add cassie
- add SDF support
- fix velocity limits in Talos legs
- document upstreams & license
## [3.10.0] - 2021-06-17
- Add finger_edu & bolt robots
- Add all collision pairs and remove disabled pairs from SRDF
- Define missing materials to fix warnings
- Rename "Solo" to "Solo8"
## [3.9.1] - 2021-05-28
- baxter got its missing hands back
## [3.9.0] - 2021-05-26
- add Baxter robot
- add Tiago Dual robot
- remove duplication of q0
- define q0 as neutral if the robot doesn't have a SRDF
- unit test for all UR robots
- fix inertia of all UR robots
- fix Anymal-Kinova SRDF collision matrix
## [3.8.0] - 2021-03-10
- add shortcut for load_full
- report warnings to end users
- fix anymal SRDF
- define unknown materials to workaround URDF parsers warnings
- add inertias infos to avoid unit mass on pybullet
- add a pybullet mass test
- add simple_humanoid_description
## [3.7.0] - 2020-11-24
- fix double negative in module API
- anymal: remove lights
- use RobotLoader and deprecate `load<robot>()` functions
- allow loading multiple robots, by specifying `rootNodeName`
## [3.6.1] - 2020-09-25
Changes since v3.6.0:
- fix typo in Hector
- fix collision pairs in hyq
- fix collision model in talos
## [3.6.0] - 2020-09-09
- add full Talos
## [3.5.0] - 2020-08-14
This new release fixes major flows in the scripts and provides full support of Windows.
## [3.4.2] - 2020-06-23
- allow user to define `PYTHON_SITELIB`
## [3.4.0] - 2020-06-20
- added panda, an arm robot
- fixed visual loading : using ROS_PACKAGE_PATH is no longer necessary :tada:
## [3.3.0] - 2020-04-29
- update solo12
- [README] document ROS_PACKAGE_PATH use
- [CMake] pinocchio required only for tests, fix #22
- :warning: Fix package paths in URDFs :warning:
## [3.2.0] - 2020-04-02
Changes since v3.1.2:
- delete duplicate file
- Add the IRIS quadcopter model
- [CMake] Export
## [3.1.2] - 2020-02-07
Changes since v3.1.1:
- Migrate universal robot srdf files from hpp-universal-robots.
- Include ur srdf into loadUR
- Added effort limits for reduced models
- Fix compatibility with numpy matrix
## [3.1.1] - 2019-11-27
Changes since v3.1.0:
- add path.py.in, similar to path.hpp.in
- romeo_description: remove unused files
- anymal_b_simple_description: Add missing inertia, fix for simulator
- hyq_description: Add inertia information for simulator
- [Python] switch to numpy arrays
## [3.1.0] - 2019-11-25
Changes since v3.0.0:
- add path.hpp
- install package.xml
- update & clean CMake
## [3.0.0] - 2019-11-25
Changes since v2.5.1:
- :warning: moved robot descriptions in robots/ subdirectory
- :warning: moved headers in include/example-robot-data
- added description of double-pendulum & hector
- Fix ANYmal-Kinova URDF
- Fix the package.xml
## [2.5.1] - 2019-11-08
Changes since v2.5.0:
- move universal robot urdf with gripper from [hpp-universal-robot](https://github.com/humanoid-path-planner/hpp-universal-robot)
This was required for https://github.com/nmansard/supaero2020
## [2.5.0] - 2019-11-05
Changes since v2.4.0:
- add romeo description
## [2.4.0] - 2019-10-29
Changes since v2.3.0:
- Added the Kinova arm + ANYmal with kinova
- renamed the reference postures
- Add package.xml to allow build in catkin workspace
- Update CMake
## [2.3.0] - 2019-10-04
Changes since v2.2.0:
- add ANYmal
## [2.2.0] - 2019-09-24
Changes since v2.1.0:
- fix loading of robots without rotor parameters
- add ur_description
## [2.1.0] - 2019-09-19
- added solo
## [2.0.0] - 2019-08-29
Added tiago & icub
Added optionnal python helpers, which depend on pinocchio
## [1.0.0] - 2019-08-29
Initial release
[Unreleased]: https://github.com/gepetto/example-robot-data/compare/v4.3.0...HEAD
[4.3.0]: https://github.com/gepetto/example-robot-data/compare/v4.2.0...v4.3.0
[4.2.0]: https://github.com/gepetto/example-robot-data/compare/v4.1.0...v4.2.0
[4.1.0]: https://github.com/gepetto/example-robot-data/compare/v4.0.9...v4.1.0
[4.0.9]: https://github.com/gepetto/example-robot-data/compare/v4.0.8...v4.0.9
[4.0.8]: https://github.com/gepetto/example-robot-data/compare/v4.0.7...v4.0.8
[4.0.7]: https://github.com/gepetto/example-robot-data/compare/v4.0.6...v4.0.7
[4.0.6]: https://github.com/gepetto/example-robot-data/compare/v4.0.5...v4.0.6
[4.0.5]: https://github.com/gepetto/example-robot-data/compare/v4.0.4...v4.0.5
[4.0.4]: https://github.com/gepetto/example-robot-data/compare/v4.0.3...v4.0.4
[4.0.3]: https://github.com/gepetto/example-robot-data/compare/v4.0.2...v4.0.3
[4.0.2]: https://github.com/gepetto/example-robot-data/compare/v4.0.1...v4.0.2
[4.0.1]: https://github.com/gepetto/example-robot-data/compare/v4.0.0...v4.0.1
[4.0.0]: https://github.com/gepetto/example-robot-data/compare/v3.13.1...v4.0.0
[3.13.1]: https://github.com/gepetto/example-robot-data/compare/v3.12.0...v3.13.1
[3.12.0]: https://github.com/gepetto/example-robot-data/compare/v3.11.0...v3.12.0
[3.11.0]: https://github.com/gepetto/example-robot-data/compare/v3.10.0...v3.11.0
[3.10.0]: https://github.com/gepetto/example-robot-data/compare/v3.9.1...v3.10.0
[3.9.1]: https://github.com/gepetto/example-robot-data/compare/v3.9.0...v3.9.1
[3.9.0]: https://github.com/gepetto/example-robot-data/compare/v3.8.0...v3.9.0
[3.8.0]: https://github.com/gepetto/example-robot-data/compare/v3.7.0...v3.8.0
[3.7.0]: https://github.com/gepetto/example-robot-data/compare/v3.6.1...v3.7.0
[3.6.1]: https://github.com/gepetto/example-robot-data/compare/v3.6.0...v3.6.1
[3.6.0]: https://github.com/gepetto/example-robot-data/compare/v3.5.0...v3.6.0
[3.5.0]: https://github.com/gepetto/example-robot-data/compare/v3.4.2...v3.5.0
[3.4.2]: https://github.com/gepetto/example-robot-data/compare/v3.4.0...v3.4.2
[3.4.0]: https://github.com/gepetto/example-robot-data/compare/v3.3.0...v3.4.0
[3.3.0]: https://github.com/gepetto/example-robot-data/compare/v3.2.0...v3.3.0
[3.2.0]: https://github.com/gepetto/example-robot-data/compare/v3.1.2...v3.2.0
[3.1.2]: https://github.com/gepetto/example-robot-data/compare/v3.1.1...v3.1.2
[3.1.1]: https://github.com/gepetto/example-robot-data/compare/v3.1.0...v3.1.1
[3.1.0]: https://github.com/gepetto/example-robot-data/compare/v3.0.0...v3.1.0
[3.0.0]: https://github.com/gepetto/example-robot-data/compare/v2.5.1...v3.0.0
[2.5.1]: https://github.com/gepetto/example-robot-data/compare/v2.5.0...v2.5.1
[2.5.0]: https://github.com/gepetto/example-robot-data/compare/v2.4.0...v2.5.0
[2.4.0]: https://github.com/gepetto/example-robot-data/compare/v2.3.0...v2.4.0
[2.3.0]: https://github.com/gepetto/example-robot-data/compare/v2.2.0...v2.3.0
[2.2.0]: https://github.com/gepetto/example-robot-data/compare/v2.1.0...v2.2.0
[2.1.0]: https://github.com/gepetto/example-robot-data/compare/v2.0.0...v2.1.0
[2.0.0]: https://github.com/gepetto/example-robot-data/compare/v1.0.0...v2.0.0
[1.0.0]: https://github.com/gepetto/example-robot-data/releases/tag/v1.0.0
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
cmake_minimum_required(VERSION 3.10)
# Set up project properties
SET(PROJECT_NAMESPACE gepetto)
SET(PROJECT_NAME example-robot-data)
SET(PROJECT_DESCRIPTION "Set of robot URDFs for benchmarking and developed examples.")
SET(PROJECT_URL https://gepgitlab.laas.fr/${PROJECT_NAMESPACE}/${PROJECT_NAME})
# Project properties
set(PROJECT_ORG gepetto)
set(PROJECT_NAME example-robot-data)
set(PROJECT_DESCRIPTION
"Set of robot URDFs for benchmarking and developed examples")
set(PROJECT_URL https://github.com/${PROJECT_ORG}/${PROJECT_NAME})
# To enable jrl-cmakemodules compatibility with workspace we must define the two
# following lines
set(PROJECT_AUTO_RUN_FINALIZE FALSE)
set(PROJECT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
INCLUDE(cmake/base.cmake)
INCLUDE(cmake/test.cmake)
INCLUDE(cmake/python.cmake)
# Project options
option(BUILD_PYTHON_INTERFACE "Build the python unit tests and helpers" ON)
option(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python interface" OFF)
# Project configuration
if(NOT INSTALL_PYTHON_INTERFACE_ONLY)
set(PROJECT_USE_CMAKE_EXPORT TRUE)
endif(NOT INSTALL_PYTHON_INTERFACE_ONLY)
set(CUSTOM_HEADER_DIR ${PROJECT_NAME})
set(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion)
# Check if the submodule cmake have been initialized
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
message(STATUS "JRL cmakemodules found in 'cmake/' git submodule")
else()
find_package(jrl-cmakemodules QUIET CONFIG)
if(jrl-cmakemodules_FOUND)
get_property(
JRL_CMAKE_MODULES
TARGET jrl-cmakemodules::jrl-cmakemodules
PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}")
elseif(${CMAKE_VERSION} VERSION_LESS "3.14.0")
message(
FATAL_ERROR
"\nCan't find jrl-cmakemodules. Please either:\n"
" - use git submodule: 'git submodule update --init'\n"
" - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n"
" - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n"
)
else()
message(STATUS "JRL cmakemodules not found. Let's fetch it.")
include(FetchContent)
FetchContent_Declare(
"jrl-cmakemodules"
GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git")
FetchContent_MakeAvailable("jrl-cmakemodules")
FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
endif()
endif()
# JRL-cmakemodule setup
include("${JRL_CMAKE_MODULES}/base.cmake")
include("${JRL_CMAKE_MODULES}/python.cmake")
# Print initial message
MESSAGE("${PROJECT_DESCRIPTION}, version ${PROJECT_VERSION}")
MESSAGE("Copyright (C) 2018-2019 CNRS-LAAS")
MESSAGE("All rights reserved.")
MESSAGE("Released under the BSD 3-Clause License.")
# Set a default build type to 'Release' if none was specified
IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
MESSAGE(STATUS "Setting build type to 'Release' as none was specified.")
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
ENDIF()
SET(CUSTOM_HEADER_DIR ${PROJECT_NAME})
CMAKE_POLICY(SET CMP0048 NEW)
PROJECT(${PROJECT_NAME} VERSION ${PROJECT_VERSION_FULL} LANGUAGES CXX)
OPTION (BUILD_PYTHON_INTERFACE "Build the python unit tests and helpers" ON)
OPTION (INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python interface" OFF)
IF(BUILD_PYTHON_INTERFACE)
ADD_REQUIRED_DEPENDENCY("pinocchio >= 2.1.0")
FINDPYTHON()
STRING(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME})
ADD_SUBDIRECTORY(python)
ADD_SUBDIRECTORY(unittest)
ENDIF(BUILD_PYTHON_INTERFACE)
IF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
INSTALL(DIRECTORY anymal_b_simple_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY hyq_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY solo_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY icub_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY talos_data DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY kinova_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY tiago_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY ur_description DESTINATION share/${PROJECT_NAME})
INSTALL(DIRECTORY romeo_description DESTINATION share/${PROJECT_NAME})
ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY)
message(STATUS "${PROJECT_DESCRIPTION}, version ${PROJECT_VERSION}")
message(STATUS "Copyright (C) 2018-2023 LAAS-CNRS, University of Edinburgh")
message(STATUS " Heriot-Watt University, INRIA")
message(STATUS "All rights reserved.")
message(STATUS "Released under the BSD 3-Clause License.")
# Project definition
compute_project_args(PROJECT_ARGS LANGUAGES CXX)
project(${PROJECT_NAME} ${PROJECT_ARGS})
if(BUILD_PYTHON_INTERFACE)
add_project_dependency(eigenpy 3.0.0 REQUIRED)
add_project_dependency(pinocchio 2.7.0 REQUIRED)
string(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME})
findpython(REQUIRED)
add_subdirectory(python)
if(BUILD_TESTING)
add_subdirectory(unittest)
endif(BUILD_TESTING)
endif()
if(NOT INSTALL_PYTHON_INTERFACE_ONLY)
add_library(${PROJECT_NAME} INTERFACE)
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
target_include_directories(
${PROJECT_NAME}
INTERFACE $<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
target_compile_definitions(
${PROJECT_NAME}
INTERFACE
$<INSTALL_INTERFACE:EXAMPLE_ROBOT_DATA_MODEL_DIR="$<INSTALL_PREFIX>/share/${PROJECT_NAME}/robots">
$<BUILD_INTERFACE:EXAMPLE_ROBOT_DATA_MODEL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/robots">
)
install(
TARGETS ${PROJECT_NAME}
EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION lib)
install(FILES include/${CUSTOM_HEADER_DIR}/path.hpp
DESTINATION include/${CUSTOM_HEADER_DIR})
install(DIRECTORY robots DESTINATION share/${PROJECT_NAME})
install(FILES package.xml DESTINATION share/${PROJECT_NAME})
endif()
setup_project_finalize()
BSD 3-Clause License
Copyright (C) 2018-2020 LAAS-CNRS, University of Edinburgh, INRIA
Copyright note valid unless otherwise stated in individual files.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Example robot URDFs
===============================================
# Example robot URDFs
## <img align="center" height="20" src="https://i.imgur.com/vAYeCzC.png"/> Introduction
[![pipeline status](https://gitlab.laas.fr/gepetto/example-robot-data/badges/master/pipeline.svg)](https://gitlab.laas.fr/gepetto/example-robot-data/-/commits/master)
[![conde version](https://img.shields.io/conda/vn/conda-forge/example-robot-data.svg)](https://anaconda.org/conda-forge/example-robot-data)
[![conde download](https://anaconda.org/conda-forge/example-robot-data/badges/downloads.svg)](https://anaconda.org/conda-forge/example-robot-data)
[![PyPI version](https://badge.fury.io/py/example-robot-data.svg)](https://badge.fury.io/py/example-robot-data)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/gepetto/example-robot-data/master.svg)](https://results.pre-commit.ci/latest/github/gepetto/example-robot-data/master)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
This repository includes a set of robot descriptions that are aimed to be used in benchmarking. These source files do not intend to substitute original their repositories.
This repository includes a set of robot descriptions that are aimed to be used in benchmarking, unit-tests, teachings,
tutorials or show-cases. These source files do not intend to substitute their original repositories.
**Authors:** [Carlos Mastalli](https://cmastalli.github.io/), Guilhem Saurel <br />
**With additional support from the Gepetto team at LAAS-CNRS.**
## :penguin: Installation
[![pipeline status](https://gepgitlab.laas.fr/gepetto/example-robot-data/badges/master/build.svg)](https://gepgitlab.laas.fr/Gepetto/example-robot-data/commits/master)
### :package: From Debian / Ubuntu packages, with [robotpkg](http://robotpkg.openrobots.org)
1. If you have never added robotpkg's software repository, [do it now](http://robotpkg.openrobots.org/debian.html):
```bash
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
## <img align="center" height="20" src="https://i.imgur.com/x1morBF.png"/> Installation
You can install this package throught robotpkg. robotpkg is a package manager tailored for robotics softwares. It
greatly simplifies the release of new versions along with the management of their dependencies. You just need to add
the robotpkg apt repository to your sources.list and then use `sudo apt install robotpkg-example-robot-data` or `sudo
apt install robotpkg-py27-example-robot-data` (or `py3X` for python 3.X, depending on your system) if you need the
Python loaders.
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update
```
### Add robotpkg apt repository
If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3. Otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in [http://robotpkg.openrobots.org/debian.html](http://robotpkg.openrobots.org/debian.html).
2. installation of example-robot-data and its python utils:
```bash
sudo apt install robotpkg-py3\*-example-robot-data
```
1. Add robotpkg as source repository to apt:
### :snake: From <img src="https://s3.amazonaws.com/conda-dev/conda_logo.svg" height="18">
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
As simple as that:
```bash
conda install example-robot-data -c conda-forge
```
2. Register the authentication certificate of robotpkg:
### :turtle: With ROS
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
Just clone it (with `--recursive`) into a catkin workspace.
3. You need to run at least once apt update to fetch the package descriptions:
### :file_folder: From source
sudo apt-get update
Clone it (with `--recursive`), create a `build` directory inside, and:
```bash
cmake .. && make && make install
```
4. The installation of example-robot-data:
## :robot: Show a robot with [gepetto-gui](https://github.com/gepetto/gepetto-viewer-corba)
sudo apt install robotpkg-example-robot-data
`python -m example_robot_data -h` to list available robots.
## :copyright: Credits
## Show the robot
### :writing_hand: Written by
(you will need pinocchio and its Python bindings)
- [Carlos Mastalli](https://cmastalli.github.io/), Heriot-Watt University :uk:
- [Guilhem Saurel](https://github.com/nim65s), LAAS-CNRS :fr:
`python -m example_robot_data [anymal,anymal_kinova,hyq,solo,solo12,talos,talos_arm,talos_legs,tiago,tiago_no_hand,icub,ur5]`
### :construction_worker: With contributions from
This will work from the `python` subdirectory inside this repository, or if this package has been installed on your
system.
- [Justin Carpentier](https://jcarpent.github.io/), INRIA :fr:
- [Pierre Fernbach](https://pfernbach.github.io/), LAAS-CNRS :fr:
- [Florent Lamiraux](https://gepettoweb.laas.fr/index.php/Members/FlorentLamiraux), LAAS-CNRS :fr:
- [Wolfgang Merkt](http://www.wolfgangmerkt.com/research/), University of Oxford :uk:
- [Josep Martí Saumell](https://www.iri.upc.edu/staff/jmarti), IRI: CSIC-UPC :es:
- [Louis Montaut](https://lmontaut.github.io/), INRIA :fr:, CTU :czech_republic:
- [Sergi Martinez](https://www.romilab.org/team/sergi-martinez), Heriot-Watt University :uk:
<?xml version="1.0" ?>
<robot name="anymal_kinova">
<group name="lf_leg">
<joint name="LF_HAA" />
<joint name="LF_HFE" />
<joint name="LF_KFE" />
<chain base_link="base" tip_link="LF_FOOT" />
</group>
<group name="lh_leg">
<joint name="LH_HAA" />
<joint name="LH_HFE" />
<joint name="LH_KFE" />
<chain base_link="base" tip_link="LH_FOOT" />
</group>
<group name="rf_leg">
<joint name="RF_HAA" />
<joint name="RF_HFE" />
<joint name="RF_KFE" />
<chain base_link="base" tip_link="RF_FOOT" />
</group>
<group name="rh_leg">
<joint name="RH_HAA" />
<joint name="RH_HFE" />
<joint name="RH_KFE" />
<chain base_link="base" tip_link="RH_FOOT" />
</group>
<group name="arm">
<joint name="j2s6s200_joint_1" />
<joint name="j2s6s200_joint_2" />
<joint name="j2s6s200_joint_3" />
<joint name="j2s6s200_joint_4" />
<joint name="j2s6s200_joint_5" />
<joint name="j2s6s200_joint_5" />
<chain base_link="base" tip_link="j2s6s200_end_effector" />
</group>
<group name="all_legs">
<group name="lf" />
<group name="rf" />
<group name="lh" />
<group name="rh" />
</group>
<group name="all">
<group name="lf" />
<group name="rf" />
<group name="lh" />
<group name="rh" />
<group name="arm" />
</group>
<group name="r_legs">
<group name="rf" />
<group name="rh" />
</group>
<group name="l_legs">
<group name="lf" />
<group name="lh" />
</group>
<group name="f_legs">
<group name="lf" />
<group name="rf" />
</group>
<group name="h_legs">
<group name="lh" />
<group name="rh" />
</group>
<group name="ld_legs">
<group name="lf" />
<group name="rh" />
</group>
<group name="rd_legs">
<group name="rf" />
<group name="lh" />
</group>
<end_effector name="lf_foot" parent_link="LF_FOOT" group="lf_leg" />
<end_effector name="rf_foot" parent_link="RF_FOOT" group="rf_leg" />
<end_effector name="lh_foot" parent_link="LH_FOOT" group="lh_leg" />
<end_effector name="rh_foot" parent_link="RH_FOOT" group="rh_leg" />
<end_effector name="arm" parent_link="j2s6s200_end_effector" group="arm" />
<group_state name="standing_with_arm_up" group="all">
<joint name="root_joint" value="0. 0. 0.4792 0. 0. 0. 1." />
<joint name="LF_HAA" value="-0.1" />
<joint name="LF_HFE" value="0.7" />
<joint name="LF_KFE" value="-1." />
<joint name="RF_HAA" value="0.1" />
<joint name="RF_HFE" value="0.7" />
<joint name="RF_KFE" value="-1." />
<joint name="LH_HAA" value="-0.1" />
<joint name="LH_HFE" value="-0.7" />
<joint name="LH_KFE" value="1." />
<joint name="RH_HAA" value="0.1" />
<joint name="RH_HFE" value="-0.7" />
<joint name="RH_KFE" value="1." />
<joint name="j2s6s200_joint_1" value="1.5707" />
<joint name="j2s6s200_joint_2" value="2.618" />
<joint name="j2s6s200_joint_3" value="-1.5707" />
<joint name="j2s6s200_joint_4" value="3.1415" />
<joint name="j2s6s200_joint_5" value="2.618" />
<joint name="j2s6s200_joint_6" value="0." />
</group_state>
<disable_collisions link1="LF_HIP" link2="LF_THIGH" reason="Adjacent" />
<disable_collisions link1="LF_HIP" link2="LF_SHANK" reason="Never" />
<disable_collisions link1="LF_HIP" link2="LF_FOOT" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RF_HIP" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RF_THIGH" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RF_SHANK" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RF_FOOT" reason="Never" />
<disable_collisions link1="LF_HIP" link2="LH_HIP" reason="Never" />
<disable_collisions link1="LF_HIP" link2="LH_THIGH" reason="Never" />
<disable_collisions link1="LF_HIP" link2="LH_SHANK" reason="Never" />
<disable_collisions link1="LF_HIP" link2="LH_FOOT" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RH_HIP" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RH_THIGH" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RH_SHANK" reason="Never" />
<disable_collisions link1="LF_HIP" link2="RH_FOOT" reason="Never" />
<disable_collisions link1="base" link2="LF_HIP" reason="Adjacent" />
<disable_collisions link1="base" link2="LH_HIP" reason="Adjacent" />
<disable_collisions link1="base" link2="RF_HIP" reason="Adjacent" />
<disable_collisions link1="base" link2="RH_HIP" reason="Adjacent" />
<disable_collisions link1="LF_HIP" link2="LF_THIGH" reason="Adjacent" />
<disable_collisions link1="LH_HIP" link2="LH_THIGH" reason="Adjacent" />
<disable_collisions link1="RF_HIP" link2="RF_THIGH" reason="Adjacent" />
<disable_collisions link1="RH_HIP" link2="RH_THIGH" reason="Adjacent" />
<disable_collisions link1="LF_THIGH" link2="LF_SHANK" reason="Adjacent" />
<disable_collisions link1="LH_THIGH" link2="LH_SHANK" reason="Adjacent" />
<disable_collisions link1="RF_THIGH" link2="RF_SHANK" reason="Adjacent" />
<disable_collisions link1="RH_THIGH" link2="RH_SHANK" reason="Adjacent" />
<disable_collisions link1="LF_SHANK" link2="LF_FOOT" reason="Adjacent" />
<disable_collisions link1="LH_SHANK" link2="LH_FOOT" reason="Adjacent" />
<disable_collisions link1="RF_SHANK" link2="RF_FOOT" reason="Adjacent" />
<disable_collisions link1="RH_SHANK" link2="RH_FOOT" reason="Adjacent" />
<disable_collisions link1="LF_ADAPTER" link2="LF_FOOT" reason="Adjacent" />
<disable_collisions link1="LH_ADAPTER" link2="LH_FOOT" reason="Adjacent" />
<disable_collisions link1="RF_ADAPTER" link2="RF_FOOT" reason="Adjacent" />
<disable_collisions link1="RH_ADAPTER" link2="RH_FOOT" reason="Adjacent" />
<disable_collisions link1="LF_ADAPTER" link2="LF_SHANK" reason="Adjacent" />
<disable_collisions link1="LH_ADAPTER" link2="LH_SHANK" reason="Adjacent" />
<disable_collisions link1="RF_ADAPTER" link2="RF_SHANK" reason="Adjacent" />
<disable_collisions link1="RH_ADAPTER" link2="RH_SHANK" reason="Adjacent" />
<disable_collisions link1="base" link2="imu_link" reason="Adjacent" />
<!-- Need to check these 4 ? there may be auto-collisions ... -->
<disable_collisions link1="base" link2="LF_THIGH" reason="Adjacent" />
<disable_collisions link1="base" link2="LH_THIGH" reason="Adjacent" />
<disable_collisions link1="base" link2="RF_THIGH" reason="Adjacent" />
<disable_collisions link1="base" link2="RH_THIGH" reason="Adjacent" />
</robot>
Subproject commit e6e09c0b944530c92c17c4fb64cd2a2f63ed46c0
Subproject commit b5ae8e49306840a50ae9c752c5b4040f892c89d8
{
"hooks": [
"share/example-robot-data/hook/ament_prefix_path.dsv",
"share/example-robot-data/hook/python_path.dsv"
]
}
{
"nodes": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1741352980,
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1742069588,
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1740877520,
"narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "147dee35aab2193b174e4c0868bd80ead5ce755c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"root": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
{
description = "Set of robot URDFs for benchmarking and developed examples";
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs =
inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = inputs.nixpkgs.lib.systems.flakeExposed;
perSystem =
{
pkgs,
self',
...
}:
{
apps.default = {
type = "app";
program = pkgs.python3.withPackages (_: [ self'.packages.default ]);
};
devShells.default = pkgs.mkShell {
inputsFrom = [ self'.packages.default ];
packages = [ (pkgs.python3.withPackages (p: [p.tomlkit])) ]; # for "make release"
};
packages = {
default = self'.packages.example-robot-data;
example-robot-data = pkgs.python3Packages.example-robot-data.overrideAttrs (_: {
src = pkgs.lib.fileset.toSource {
root = ./.;
fileset = pkgs.lib.fileset.unions [
./CMakeLists.txt
./colcon.pkg
./include
./package.xml
./pyproject.toml
./python
./robots
./unittest
];
};
});
};
};
};
}
# This file prevents CMake warnings, e.g., with catkin-based workflows.
\ No newline at end of file
#ifndef EXAMPLE_ROBOT_DATA_PATH_HPP
#define EXAMPLE_ROBOT_DATA_PATH_HPP
#include <example-robot-data/warning.hh>
#pragma message EXAMPLE_ROBOT_DATA_WARN( \
"Header `example-robot-data/path.hpp` is deprecated and useless!")
#endif
<?xml version="1.0"?>
<package format="2">
<package format="3">
<name>example-robot-data</name>
<version>2.5.0</version>
<version>4.3.0</version>
<description>Set of robot URDFs for benchmarking and developed examples.</description>
<!-- The maintainer listed here is for the ROS release to receive emails for the buildfarm.
Please check the repository URL for project maintainer. -->
<maintainer email="wolfgang.merkt@ed.ac.uk">Wolfgang Merkt</maintainer>
<author email="carlos.mastalli@ed.ac.uk">Carlos Mastalli</author>
<maintainer email="guilhem.saurel@laas.fr">Guilhem Saurel</maintainer>
<maintainer email="opensource@wolfgangmerkt.com">Wolfgang Merkt</maintainer>
<license>BSD</license>
<url type="repository">https://gepgitlab.laas.fr/gepetto/example-robot-data.git</url>
<url type="repository">https://github.com/gepetto/example-robot-data</url>
<!-- The following tags are recommended by REP-136 -->
<exec_depend condition="$ROS_VERSION == 1">catkin</exec_depend>
<exec_depend condition="$ROS_VERSION == 2">ament_cmake</exec_depend>
<build_depend>git</build_depend>
<depend>python</depend>
<depend>python-numpy</depend>
<depend>boost</depend>
<depend>pinocchio</depend>
<depend condition="$ROS_PYTHON_VERSION == 2">python</depend>
<depend condition="$ROS_PYTHON_VERSION == 3">python3</depend>
<depend condition="$ROS_PYTHON_VERSION == 2">python-numpy</depend>
<depend condition="$ROS_PYTHON_VERSION == 3">python3-numpy</depend>
<!-- The default setting has BUILD_TESTING=ON, as thus we need to explicitly depend on Pinocchio -->
<build_depend>pinocchio</build_depend>
<exec_depend>pinocchio</exec_depend>
<buildtool_depend>cmake</buildtool_depend>
<export>
......
[tool.ruff]
extend-exclude = ["cmake"]
[tool.ruff.lint]
extend-select = ["I", "NPY", "RUF", "UP", "W"]
[tool.ruff.lint.isort]
known-first-party = ["example_robot_data"]
[tool.tomlsort]
all = true