Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f50cee0
ROS 2 add UR, Kinova, Robotiq components (#44)
delihus May 23, 2024
234c6ae
ROS 2 ouster os1 os0 (#47)
delihus May 29, 2024
a9e2223
Fixed gz_bridges after may humble sync (#48)
delihus Jun 4, 2024
20b5c9b
No namespaces TF fix (#49)
delihus Jun 12, 2024
a647358
ROS 2 ZED Gazebo Components fix (#53)
delihus Jun 12, 2024
59f8172
Rplidar-merge (#52)
rafal-gorecki Jun 14, 2024
b29f563
Add antenna (#50)
rafal-gorecki Jun 17, 2024
99e0189
Added wibotic station and wibotic reveiver (#54)
delihus Sep 13, 2024
b29f41a
Added requested receiver tf to wireless charging station (#55)
delihus Nov 8, 2024
0813c3e
requested position update (#56)
delihus Nov 19, 2024
e3bde24
Rename ignition to gz
rafal-gorecki Dec 4, 2024
d34d27e
Remove dependency kortex
rafal-gorecki Dec 4, 2024
517350a
Changed apriltag pose (#57)
delihus Dec 6, 2024
066caca
Removed None from device_namespace (#58)
delihus Jan 28, 2025
769eb49
Merge branch 'ros2' into jazzy
rafal-gorecki Feb 3, 2025
efd019e
Use '' instead None for default value
rafal-gorecki Feb 3, 2025
d7181a6
Remove redundant frame_id field
rafal-gorecki Feb 3, 2025
f2ee1b2
Add depthAi depend
rafal-gorecki Feb 3, 2025
36da88e
Add Luxonis DepthAI camera
rafal-gorecki Feb 4, 2025
7e09d22
pre-commit update
rafal-gorecki Feb 4, 2025
5fc53fd
pre-commit
rafal-gorecki Feb 4, 2025
163f3b3
Fix DepthAi
rafal-gorecki Feb 4, 2025
3363143
update cmake
rafal-gorecki Feb 5, 2025
016572a
Add use_sim arg
rafal-gorecki Feb 7, 2025
07b6303
Add teble with sensors
rafal-gorecki Feb 11, 2025
f423c10
Center table
rafal-gorecki Feb 11, 2025
d775b72
Update README.md
rafal-gorecki Feb 11, 2025
29e6957
Simulate luxonis OAK
rafal-gorecki Feb 11, 2025
c28417c
Simplify
rafal-gorecki Feb 14, 2025
d465caa
Fix Rplidar S1 colission
rafal-gorecki Feb 20, 2025
1d7387f
Accuracy is 2 * std_dev
rafal-gorecki Mar 7, 2025
7688685
Added DEV kits | applied tests (#60)
delihus Mar 18, 2025
aa55d4b
Ros2 fix camera resolution (#61)
KmakD Mar 22, 2025
314c35e
Ros2 fix zed (#62)
delihus Mar 28, 2025
1c933c3
Merge branch 'ros2' into jazzy
rafal-gorecki Mar 31, 2025
d6e6c8d
Fix tests
rafal-gorecki Apr 1, 2025
e133bc5
Update workflow to jazzy
rafal-gorecki Apr 1, 2025
5e9cae3
Update runner to ubuntu-24.04
rafal-gorecki Apr 1, 2025
5ac208f
fix links
KmakD Apr 2, 2025
cbf52cf
fix dev colors
KmakD Apr 2, 2025
0a55da2
Merge pull request #63 from husarion/dev-fix
KmakD Apr 2, 2025
bf34d4b
Add configurations
rafal-gorecki Apr 7, 2025
2fe6445
Ros2 fix zed (#66)
delihus Apr 8, 2025
9f914cf
Merge remote-tracking branch 'origin/ros2' into jazzy
rafal-gorecki Apr 8, 2025
4b73418
Create folder for stereolabs meshes
rafal-gorecki Apr 14, 2025
8ab5219
Fix depthai mesh
rafal-gorecki Apr 14, 2025
eac3879
DEVs have presets for components configurations
delihus May 5, 2025
d52700f
Merge pull request #67 from husarion/jazzy-dev-fix
KmakD May 6, 2025
b4d941c
fix dev tf names
KmakD May 14, 2025
8247a78
Merge pull request #68 from husarion/fix-dev-tf-names
BOOTCFG May 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/colcon_test_build.yaml
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
---
name: ROS2 test build

on:
- push

jobs:
colcon-test-build-ubuntu-22-04:
colcon-test-build:
strategy:
matrix:
ros-distro: [humble]
runs-on: ubuntu-22.04
ros-distro: [jazzy]
runs-on: ubuntu-24.04

name: Build ${{ matrix.ros-distro }}
steps:

- uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: ${{ matrix.ros-distro }}

- uses: ros-tooling/action-ros-ci@v0.3
with:
package-name: ros_components_description
Expand Down
121 changes: 121 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
---
repos:
# Standard hooks
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-added-large-files
# mesh files has to be taken into account
args: [--maxkb=3000]
- id: check-ast
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks
- id: check-xml
- id: check-yaml
- id: debug-statements
- id: destroyed-symlinks
- id: detect-private-key
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: name-tests-test
- id: mixed-line-ending
- id: trailing-whitespace

# Python hooks
- repo: https://github.com/asottile/pyupgrade
rev: v3.19.1
hooks:
- id: pyupgrade
args: [--py36-plus]

- repo: https://github.com/psf/black
rev: 25.1.0
hooks:
- id: black
args: [--line-length=99]

- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
hooks:
- id: flake8
args: ['--ignore=E501,W503'] # ignore too long line and line break before binary operator,
# black checks it

- repo: https://github.com/PyCQA/isort
rev: 6.0.0
hooks:
- id: isort
args: [--profile, black]

# CPP hooks
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.7
hooks:
- id: clang-format

- repo: local
hooks:
- id: ament_cppcheck
name: ament_cppcheck
description: Static code analysis of C/C++ files.
entry: env AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=1 ament_cppcheck
language: system
files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$

- repo: local
hooks:
- id: ament_cpplint
name: ament_cpplint
description: Static code analysis of C/C++ files.
entry: ament_cpplint
language: system
files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$
args: [--linelength=100, --filter=-whitespace/newline]

# Cmake hooks
- repo: local
hooks:
- id: ament_lint_cmake
name: ament_lint_cmake
description: Check format of CMakeLists.txt files.
entry: ament_lint_cmake
language: system
files: CMakeLists\.txt$

- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format

# XML
- repo: https://github.com/tier4/pre-commit-hooks-ros
rev: v0.10.0
hooks:
- id: prettier-package-xml
- id: sort-package-xml

# YAML
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.2.3
hooks:
- id: yamlfmt
files: ^(?!.*compose)(?!.*ekf\.yaml$).*$
args: [--mapping, '2', --sequence, '4', --offset, '2', --width, '100']

# Copyright
- repo: local
hooks:
- id: ament_copyright
name: ament_copyright
description: Check if copyright notice is available in all files.
entry: ament_copyright
language: system

# Spellcheck
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
args: [--write-changes, --uri-ignore-words-list=ist, -L manuel]
exclude: CHANGELOG\.rst|\.(svg|pyc|drawio)$
29 changes: 15 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.11)
project(ros_components_description)

find_package(ament_cmake REQUIRED)

install(
DIRECTORY meshes urdf launch config test
DESTINATION share/${PROJECT_NAME}
)
install(DIRECTORY meshes urdf launch config test
DESTINATION share/${PROJECT_NAME})

if(BUILD_TESTING)
find_package(ament_cmake_pytest REQUIRED)
set(pytest_tests
test/test_components_xacro.py
)
set(pytest_tests test/test_components_xacro.py)
foreach(test_path ${pytest_tests})
get_filename_component(test_name ${test_path} NAME_WE)
ament_add_pytest_test(${test_name} ${test_path}
APPEND_ENV PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT 60
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
ament_add_pytest_test(
${test_name}
${test_path}
APPEND_ENV
PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}
TIMEOUT
60
WORKING_DIRECTORY
${CMAKE_SOURCE_DIR})
endforeach()
endif()

ament_environment_hooks("${CMAKE_CURRENT_SOURCE_DIR}/env-hooks/${PROJECT_NAME}.sh.in")
ament_environment_hooks(
"${CMAKE_CURRENT_SOURCE_DIR}/env-hooks/${PROJECT_NAME}.sh.in")
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
6 changes: 3 additions & 3 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ROS COMPONENTS DESCRIPTION PACKAGE LICENSING
The default license for ROS components description package is the Apache License, Version 2.0
(see LICENSE_APACHE2.txt); you may elect at your option to use the ROS COMPONENTS DESCRIPTION
package under the MIT License (see LICENSE_MIT.txt). Contributions must be
The default license for ROS components description package is the Apache License, Version 2.0
(see LICENSE_APACHE2.txt); you may elect at your option to use the ROS COMPONENTS DESCRIPTION
package under the MIT License (see LICENSE_MIT.txt). Contributions must be
made under both licenses.
46 changes: 39 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,38 @@

URDF models of sensors and other components offered alongside with Husarion robots

## Available URDF Sensors

<div align="center">

| Code | Device Name |
| ----- | ---------------------------- |
| ANT02 | Teltonika 003R-00253 |
| CAM01 | Orbbec Astra |
| CAM03 | StereoLabs ZED 2 |
| CAM04 | StereoLabs ZED 2i |
| CAM06 | StereoLabs ZED X |
| CAM11 | Luxonis OAK-D-PRO |
| LDR01 | RPLIDAR S1 |
| LDR06 | RPLIDAR S3 |
| LDR10 | Ouster OS0-32 |
| LDR11 | Ouster OS0-64 |
| LDR12 | Ouster OS0-128 |
| LDR13 | Ouster OS1-32 |
| LDR14 | Ouster OS1-64 |
| LDR15 | Ouster OS1-128 |
| LDR20 | Velodyne Puck |
| MAN01 | Universal Robots UR3e |
| MAN02 | Universal Robots UR5e |
| MAN04 | 6DoF Kinova Gen3 |
| MAN05 | 6DoF Kinova Gen3 + 3D vision |
| MAN06 | 7DoF Kinova Gen3 |
| MAN07 | 7DoF Kinova Gen3 + 3D vision |
| GRP02 | Robotiq 2F-85 |
| WCH01 | Wibotic receiver |

</div>

## Including sensor

First build the package by running:
Expand All @@ -24,10 +56,10 @@ To include the sensor, use the following code:

```xml
<!-- include file with definition of xacro macro of sensor -->
<xacro:include filename="$(find ros_components_description)/urdf/slamtec_rplidar_s1.urdf.xacro" ns="lidar" />
<xacro:include filename="$(find ros_components_description)/urdf/slamtec_rplidar.urdf.xacro" ns="lidar" />

<!-- evaluate the macro and place the sensor on robot -->
<xacro:lidar.slamtec_rplidar_s1
<xacro:lidar.slamtec_rplidar
parent_link="cover_link"
xyz="0.0 0.0 0.0"
rpy="0.0 0.0 0.0" />
Expand All @@ -36,11 +68,11 @@ To include the sensor, use the following code:
A list of parameters can be found here:

- `parent_link` [*string*, default: **None**] parent link to which sensor should be attached.
- `xyz` [*float list*, default: **None**] 3 float values defining translation between base of a sensor and parent link. Values in **m**.
- `rpy` [*float list*, default: **None**] 3 float values define rotation between parent link and base of a sensor. Values in **rad**.
- `namespace` [*string*, default: **None**] global namespace common to the entire robot.
- `device_namespace` [*string*, default: **None**] local namespace allowing to distinguish two identical devices from each other.
- `xyz` [*float list*, default: **0.0 0.0 0.0**] 3 float values defining translation between base of a sensor and parent link. Values in **m**.
- `rpy` [*float list*, default: **0.0 0.0 0.0**] 3 float values define rotation between parent link and base of a sensor. Values in **rad**.
- `namespace` [*string*, default: **''**] global namespace common to the entire robot.
- `device_namespace` [*string*, default: **''**] local namespace allowing to distinguish two identical devices from each other.

- `model` [*string*, default: **None**] model argument that appears when you want to load the appropriate model from a given manufacturer.
- `model` [*string*, default: **''**] model argument that appears when you want to load the appropriate model from a given manufacturer.

Some sensors can define their specific parameters. Refer to their definition for more info.
27 changes: 27 additions & 0 deletions config/gz_intel_realsense_d435_remappings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
# https://github.com/IntelRealSense/realsense-ros/blob/ros2-master/README.md#published-topics
- topic_name: <robot_namespace><device_namespace>/color/camera_info
ros_type_name: sensor_msgs/msg/CameraInfo
gz_type_name: ignition.msgs.CameraInfo
lazy: true

- topic_name: <robot_namespace><device_namespace>/color/image_raw
ros_type_name: sensor_msgs/msg/Image
gz_type_name: ignition.msgs.Image
lazy: true

- topic_name: <robot_namespace><device_namespace>/depth/camera_info
ros_type_name: sensor_msgs/msg/CameraInfo
gz_type_name: ignition.msgs.CameraInfo
lazy: true

- topic_name: <robot_namespace><device_namespace>/depth/image_rect_raw
ros_type_name: sensor_msgs/msg/Image
gz_type_name: ignition.msgs.Image
lazy: true

- ros_topic_name: <robot_namespace><device_namespace>/depth/color/points
gz_topic_name: <robot_namespace><device_namespace>/depth/image_rect_raw/points
ros_type_name: sensor_msgs/msg/PointCloud2
gz_type_name: ignition.msgs.PointCloudPacked
lazy: true
24 changes: 24 additions & 0 deletions config/gz_kinova_remappings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
- topic_name: /<robot_namespace>/<device_namespace>/wrist_mounted_camera/camera_info
ros_type_name: sensor_msgs/msg/CameraInfo
gz_type_name: gz.msgs.CameraInfo
lazy: true
direction: GZ_TO_ROS

- topic_name: /<robot_namespace>/<device_namespace>/wrist_mounted_camera/image
ros_type_name: sensor_msgs/msg/Image
gz_type_name: gz.msgs.Image
lazy: true
direction: GZ_TO_ROS

- topic_name: /<robot_namespace>/<device_namespace>/wrist_mounted_camera/depth_image
ros_type_name: sensor_msgs/msg/Image
gz_type_name: gz.msgs.Image
lazy: true
direction: GZ_TO_ROS

- ros_topic_name: /<robot_namespace>/<device_namespace>/wrist_mounted_camera/points
ros_type_name: sensor_msgs/msg/PointCloud2
gz_type_name: gz.msgs.PointCloudPacked
lazy: true
direction: GZ_TO_ROS
35 changes: 35 additions & 0 deletions config/gz_luxonis_depthai_remappings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
- ros_topic_name: <robot_namespace><device_namespace>/camera_info
gz_topic_name: <robot_namespace><device_namespace>/camera_info
ros_type_name: sensor_msgs/msg/CameraInfo
gz_type_name: gz.msgs.CameraInfo
lazy: true
direction: GZ_TO_ROS

- ros_topic_name: <robot_namespace><device_namespace>/rgb/color
gz_topic_name: <robot_namespace><device_namespace>/rgb/color
ros_type_name: sensor_msgs/msg/Image
gz_type_name: gz.msgs.Image
lazy: true
direction: GZ_TO_ROS

- ros_topic_name: <robot_namespace><device_namespace>/stereo/camera_info
gz_topic_name: <robot_namespace><device_namespace>/stereo/camera_info
ros_type_name: sensor_msgs/msg/CameraInfo
gz_type_name: gz.msgs.CameraInfo
lazy: true
direction: GZ_TO_ROS

- ros_topic_name: <robot_namespace><device_namespace>/stereo/depth
gz_topic_name: <robot_namespace><device_namespace>/stereo/depth
ros_type_name: sensor_msgs/msg/Image
gz_type_name: gz.msgs.Image
lazy: true
direction: GZ_TO_ROS

- ros_topic_name: <robot_namespace><device_namespace>/stereo/depth/points
gz_topic_name: <robot_namespace><device_namespace>/stereo/depth/points
ros_type_name: sensor_msgs/msg/PointCloud2
gz_type_name: gz.msgs.PointCloudPacked
lazy: true
direction: GZ_TO_ROS
Loading