diff --git a/.github/workflows/README.md b/.github/workflows/README.md index cff94d7a..ef4def62 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -6,22 +6,17 @@ A RED job might not mean that this package is currently broken but that an depen To avoid overloading users viewing the main README page a full list of build statues can be kept here for package maintainers -ROS2 Distro | Humble | Iron | Rolling -:---------: | :----: | :--: | :-----: -| **Branch** | [`main`](https://github.com/PickNikRobotics/ros2_kortex/tree/main) | [`main`](https://github.com/PickNikRobotics/ros2_kortex/tree/main) | [`main`](https://github.com/PickNikRobotics/ros2_kortex/tree/main) -| **Build Status** | [![Humble Binary Build](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/humble-binary-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/humble-binary-build.yml?branch=main)
[![Humble Source Build](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/humble-source-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/humble-source-build.yml?branch=main) | :construction: | [![Rolling Binary Build](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-binary-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-binary-build.yml?branch=main)
[![Rolling Semi-Binary Build](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-semi-binary-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-semi-binary-build.yml?branch=main)
[![Rolling Source Build](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-source-build.yml/badge.svg?branch=main)](https://github.com/PickNikRobotics/ros2_kortex/actions/workflows/rolling-source-build.yml?branch=main) +ROS2 Distro | Jazzy +:---------: | :---: +| **Branch** | [`jazzy`](https://github.com/Kinovarobotics/ros2_kortex/tree/jazzy) +| **Build Status** | [![Jazzy Binary Build](https://github.com/Kinovarobotics/ros2_kortex/actions/workflows/jazzy-binary-build.yml/badge.svg?branch=jazzy)](https://github.com/Kinovarobotics/ros2_kortex/actions/workflows/jazzy-binary-build.yml?branch=jazzy)
[![Jazzy Source Build](https://github.com/Kinovarobotics/ros2_kortex/actions/workflows/jazzy-source-build.yml/badge.svg?branch=jazzy)](https://github.com/Kinovarobotics/ros2_kortex/actions/workflows/jazzy-source-build.yml?branch=jazzy) ### Explanation of different build types -**NOTE**: There are three build stages checking current and future compatibility of the package. +**NOTE**: For the jazzy branch, there are two build stages checking current and future compatibility of the package. 1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that direct local build is possible. Uses repos file: `src/$NAME$/$NAME$-not-released..repos` -1. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source. - Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build. - - Uses repos file: `src/$NAME$/$NAME$.repos` - -1. Source build - also core ROS packages are build from source. It shows potential issues in the mid future. +2. Source build - also core ROS packages are build from source. It shows potential issues in the mid future. diff --git a/.github/workflows/ci-ros-lint.yml b/.github/workflows/ci-ros-lint.yml index ea071bb7..dcae879c 100644 --- a/.github/workflows/ci-ros-lint.yml +++ b/.github/workflows/ci-ros-lint.yml @@ -11,8 +11,8 @@ jobs: matrix: linter: [cppcheck, copyright] steps: - - uses: actions/checkout@v3 - - uses: ros-tooling/setup-ros@v0.6 + - uses: actions/checkout@v4 + - uses: ros-tooling/setup-ros@v0.7 - name: Set environment variable for cppcheck 2.7 run: echo "AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=1" >> $GITHUB_ENV - uses: ros-tooling/action-ros-lint@v0.1 @@ -32,8 +32,8 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v3 - - uses: ros-tooling/setup-ros@v0.6 + - uses: actions/checkout@v4 + - uses: ros-tooling/setup-ros@v0.7 - uses: ros-tooling/action-ros-lint@v0.1 with: distribution: rolling @@ -49,8 +49,8 @@ jobs: matrix: linter: [cpplint] steps: - - uses: actions/checkout@v3 - - uses: ros-tooling/setup-ros@v0.6 + - uses: actions/checkout@v4 + - uses: ros-tooling/setup-ros@v0.7 - uses: ros-tooling/action-ros-lint@v0.1 with: distribution: rolling diff --git a/.github/workflows/claude-triage.yml b/.github/workflows/claude-triage.yml new file mode 100644 index 00000000..1d7c14ae --- /dev/null +++ b/.github/workflows/claude-triage.yml @@ -0,0 +1,38 @@ +name: Claude Daily Issue Triage + +on: + schedule: + - cron: "0 14 * * 1" # runs daily at 09:00 EST + workflow_dispatch: # allows manual trigger + +jobs: + triage: + runs-on: ubuntu-latest + + permissions: + issues: write + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install Claude Code CLI + run: npm install -g @anthropic-ai/claude-code + + - name: Run Claude triage + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + run: | + claude "Read all open GitHub issues. Identify likely bugs vs feature requests. Suggest labels and assign a level of complexity for each on a scale from 1 to 10" > triage_report.md + + - name: Upload triage report + uses: actions/upload-artifact@v4 + with: + name: triage-report + path: triage_report.md diff --git a/.github/workflows/humble-binary-build.yml b/.github/workflows/jazzy-binary-build.yml similarity index 88% rename from .github/workflows/humble-binary-build.yml rename to .github/workflows/jazzy-binary-build.yml index a7984242..a78cdf3d 100644 --- a/.github/workflows/humble-binary-build.yml +++ b/.github/workflows/jazzy-binary-build.yml @@ -1,27 +1,27 @@ -name: Humble Binary Build +name: Jazzy Binary Build on: pull_request: branches: - # try to keep humble and rolling(main) in sync - - humble + # try to keep jazzy and rolling(main) in sync + - jazzy - main push: branches: - - humble + - jazzy - main schedule: # Run every morning to detect flakiness and broken dependencies - cron: '13 4 * * *' jobs: - humble_binary: - name: humble binary build + jazzy_binary: + name: jazzy binary build runs-on: ubuntu-latest strategy: matrix: env: - - {ROS_DISTRO: humble, ROS_REPO: main} - - {ROS_DISTRO: humble, ROS_REPO: testing} + - {ROS_DISTRO: jazzy, ROS_REPO: main} + - {ROS_DISTRO: jazzy, ROS_REPO: testing} env: UPSTREAM_WORKSPACE: ros2_kortex-not-released.${{ matrix.env.ROS_DISTRO }}.repos ROSDEP_SKIP_KEYS: gz_ros2_control diff --git a/.github/workflows/humble-source-build.yml b/.github/workflows/jazzy-source-build.yml similarity index 71% rename from .github/workflows/humble-source-build.yml rename to .github/workflows/jazzy-source-build.yml index 40839999..2d154005 100644 --- a/.github/workflows/humble-source-build.yml +++ b/.github/workflows/jazzy-source-build.yml @@ -1,30 +1,30 @@ -name: Humble Source Build +name: Jazzy Source Build on: push: branches: - # try to keep humble and rolling(main) in sync - - humble + # try to keep jazzy and rolling(main) in sync + - jazzy - main schedule: # Run every morning to detect flakiness and broken dependencies - cron: '43 1 * * *' jobs: - humble_source: - runs-on: ubuntu-22.04 + jazzy_source: + runs-on: ubuntu-24.04 strategy: fail-fast: false env: - ROS_DISTRO: humble + ROS_DISTRO: jazzy steps: - - uses: ros-tooling/setup-ros@v0.6 + - uses: ros-tooling/setup-ros@v0.7 with: required-ros-distributions: ${{ env.ROS_DISTRO }} - uses: actions/checkout@v3 - - uses: ros-tooling/action-ros-ci@0.3.2 + - uses: ros-tooling/action-ros-ci@v0.4 with: target-ros2-distro: ${{ env.ROS_DISTRO }} - # Currently main is compatible with Humble + # Currently main is compatible with Jazzy ref: main import-token: ${{ secrets.GITHUB_TOKEN }} # build all packages listed in the meta package @@ -35,7 +35,7 @@ jobs: https://raw.githubusercontent.com/ros2/ros2/${{ env.ROS_DISTRO }}/ros2.repos file://${{ github.workspace }}/ros2_kortex.${{ env.ROS_DISTRO }}.repos colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v4 with: - name: colcon-logs-${{ matrix.os }} + name: colcon-logs path: ros_ws/log diff --git a/.github/workflows/rolling-binary-build.yml b/.github/workflows/rolling-binary-build.yml deleted file mode 100644 index 3fda1219..00000000 --- a/.github/workflows/rolling-binary-build.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Rolling Binary Build -on: - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '13 4 * * *' - -jobs: - rolling_binary: - name: rolling binary build - runs-on: ubuntu-latest - strategy: - matrix: - env: - - {ROS_DISTRO: rolling, ROS_REPO: main} - - {ROS_DISTRO: rolling, ROS_REPO: testing} - env: - UPSTREAM_WORKSPACE: ros2_kortex-not-released.${{ matrix.env.ROS_DISTRO }}.repos - CCACHE_DIR: ${{ github.workspace }}/.ccache - BASEDIR: ${{ github.workspace }}/.work - CACHE_PREFIX: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }} - steps: - - uses: actions/checkout@v3 - # The target directory cache doesn't include the source directory because - # that comes from the checkout. See "prepare target_ws for cache" task below - - name: cache target_ws - if: ${{ ! matrix.env.CCOV }} - uses: pat-s/always-upload-cache@v2.1.5 - with: - path: ${{ env.BASEDIR }}/target_ws - key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} - restore-keys: | - target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} - - name: cache ccache - uses: pat-s/always-upload-cache@v2.1.5 - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} - restore-keys: | - ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} - ccache-${{ env.CACHE_PREFIX }} - - uses: 'ros-industrial/industrial_ci@master' - with: - config: ${{toJSON(matrix.env)}} - - name: prepare target_ws for cache - if: ${{ always() && ! matrix.env.CCOV }} - run: | - du -sh ${{ env.BASEDIR }}/target_ws - sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete - sudo rm -rf ${{ env.BASEDIR }}/target_ws/src - du -sh ${{ env.BASEDIR }}/target_ws diff --git a/.github/workflows/rolling-semi-binary-build.yml b/.github/workflows/rolling-semi-binary-build.yml deleted file mode 100644 index c88c9cf6..00000000 --- a/.github/workflows/rolling-semi-binary-build.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Rolling Semi Binary Build -on: - pull_request: - branches: - - main - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '13 4 * * *' - -jobs: - rolling_semi_binary: - name: rolling semi-binary build - runs-on: ubuntu-latest - strategy: - matrix: - env: - - {ROS_DISTRO: rolling, ROS_REPO: main} - #TODO(moriarty): re-enable rolling testing after rolling feature freeze, known failure upstream - #- {ROS_DISTRO: rolling, ROS_REPO: testing} - env: - UPSTREAM_WORKSPACE: ros2_kortex.${{ matrix.env.ROS_DISTRO }}.repos - ROSDEP_SKIP_KEYS: robotiq_description - CCACHE_DIR: ${{ github.workspace }}/.ccache - BASEDIR: ${{ github.workspace }}/.work - CACHE_PREFIX: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }} - steps: - - uses: actions/checkout@v3 - # The target directory cache doesn't include the source directory because - # that comes from the checkout. See "prepare target_ws for cache" task below - - name: cache target_ws - if: ${{ ! matrix.env.CCOV }} - uses: pat-s/always-upload-cache@v2.1.5 - with: - path: ${{ env.BASEDIR }}/target_ws - key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} - restore-keys: | - target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} - - name: cache ccache - uses: pat-s/always-upload-cache@v2.1.5 - with: - path: ${{ env.CCACHE_DIR }} - key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} - restore-keys: | - ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} - ccache-${{ env.CACHE_PREFIX }} - - uses: 'ros-industrial/industrial_ci@master' - with: - config: ${{toJSON(matrix.env)}} - - name: prepare target_ws for cache - if: ${{ always() && ! matrix.env.CCOV }} - run: | - du -sh ${{ env.BASEDIR }}/target_ws - sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete - sudo rm -rf ${{ env.BASEDIR }}/target_ws/src - du -sh ${{ env.BASEDIR }}/target_ws diff --git a/.github/workflows/rolling-source-build.yml b/.github/workflows/rolling-source-build.yml deleted file mode 100644 index d55a3a3a..00000000 --- a/.github/workflows/rolling-source-build.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Rolling Source Build -on: - push: - branches: - - main - schedule: - # Run every morning to detect flakiness and broken dependencies - - cron: '43 1 * * *' - -jobs: - rolling_source: - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - env: - ROS_DISTRO: rolling - steps: - - uses: ros-tooling/setup-ros@v0.6 - with: - required-ros-distributions: ${{ env.ROS_DISTRO }} - - uses: actions/checkout@v3 - - uses: ros-tooling/action-ros-ci@0.3.2 - with: - target-ros2-distro: ${{ env.ROS_DISTRO }} - import-token: ${{ secrets.GITHUB_TOKEN }} - # build all packages listed in the meta package - package-name: - kortex_bringup - kortex_driver - vcs-repo-file-url: | - https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos - file://${{ github.workspace }}/ros2_kortex.repos - colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - - uses: actions/upload-artifact@v1 - with: - name: colcon-logs-${{ matrix.os }} - path: ros_ws/log diff --git a/issue.json b/issue.json new file mode 100644 index 00000000..7bc99f6a --- /dev/null +++ b/issue.json @@ -0,0 +1 @@ +{"author":{"id":"U_kgDOC7hpFQ","is_bot":false,"login":"nicco99-prog","name":""},"body":"I would like to customize my Kinova robot by equipping it with a different end-effector instead of the Robotiq grippers. I already have the URDF and Xacro files for this end-effector, and I’d like to use MoveIt to control my robot outside of simulation. Do you have any suggestions?\nEven when I try to remove the gripper and use only the kinova robot without the gripper, I get this kind of error:\n[ros2_control_node-1] [ERROR] [1747672075.483567156] [KortexMultiInterfaceHardware]: Gripper joint name is empty!\n\nPS: Running on ROS2 Jazzy, Ubuntu 24.04\n","labels":[{"id":"LA_kwDOF0UnJs8AAAAB_nQZaA","name":"updated","description":"There is an update on the issue that was not addressed","color":"DA3250"}],"number":287,"title":"Use MoveIt with a different end-effector in place of the Robotiq grippers","url":"https://github.com/Kinovarobotics/ros2_kortex/issues/287"} diff --git a/kortex_api/CHANGELOG.rst b/kortex_api/CHANGELOG.rst index d57ea4b1..bd3326c0 100644 --- a/kortex_api/CHANGELOG.rst +++ b/kortex_api/CHANGELOG.rst @@ -2,6 +2,21 @@ Changelog for package kortex_api ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Changed Kortex API fetching from online URL to local path +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* modified the kortex trademark name (`#305 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ diff --git a/kortex_api/CMakeLists.txt b/kortex_api/CMakeLists.txt index ddf42b71..c7ae6e98 100644 --- a/kortex_api/CMakeLists.txt +++ b/kortex_api/CMakeLists.txt @@ -3,8 +3,9 @@ include(FetchContent) #include(ExternalProject) FetchContent_Declare( kinova_binary_api - URL https://artifactory.kinovaapps.com:443/artifactory/generic-public/kortex/API/2.5.0/linux_x86-64_x86_gcc.zip + URL ${CMAKE_CURRENT_SOURCE_DIR}/linux_x86-64_x86_gcc.zip URL_HASH MD5=64bd86e7ab8bda90ef1fc7d6a356e080 + DOWNLOAD_EXTRACT_TIMESTAMP TRUE ) FetchContent_MakeAvailable(kinova_binary_api) diff --git a/kortex_api/linux_x86-64_x86_gcc.zip b/kortex_api/linux_x86-64_x86_gcc.zip new file mode 100644 index 00000000..6a9285a1 Binary files /dev/null and b/kortex_api/linux_x86-64_x86_gcc.zip differ diff --git a/kortex_api/package.xml b/kortex_api/package.xml index bca4bd08..68bcb3f0 100644 --- a/kortex_api/package.xml +++ b/kortex_api/package.xml @@ -1,7 +1,7 @@ kortex_api - 0.2.3 + 0.2.6 KINOVA KORTEX™ API Marq Rasmussen diff --git a/kortex_bringup/CHANGELOG.rst b/kortex_bringup/CHANGELOG.rst index 8ed636bb..fef89782 100644 --- a/kortex_bringup/CHANGELOG.rst +++ b/kortex_bringup/CHANGELOG.rst @@ -2,6 +2,23 @@ Changelog for package kortex_bringup ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Fixed the Gazebo Fortress Simulation + Separated the arm and gripper control for Gen3_Lite + Fixed bugs (`#252 `_) +* Added the empty gripper option for gen3.launch.py (`#242 `_) +* Fix mock_hardware and enable simulating gen3_lite (`#196 `_) +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ diff --git a/kortex_bringup/launch/gen3.launch.py b/kortex_bringup/launch/gen3.launch.py index c9bd50e7..615cbf73 100644 --- a/kortex_bringup/launch/gen3.launch.py +++ b/kortex_bringup/launch/gen3.launch.py @@ -68,19 +68,36 @@ def generate_launch_description(): description="Robot controller to start.", ) ) + declared_arguments.append( + DeclareLaunchArgument( + "description_package", + default_value="kortex_description", + description="Description package with robot URDF/XACRO files. Usually the argument " + "is not set, it enables use of a custom description.", + ) + ) + declared_arguments.append( + DeclareLaunchArgument( + "description_file", + default_value="gen3.xacro", + description="URDF/XACRO description file with the robot.", + ) + ) declared_arguments.append( DeclareLaunchArgument( "gripper", default_value="", - description="Name of the gripper attached to the arm", - choices=["", "robotiq_2f_85", "robotiq_2f_140"], + description="Name of the gripper attached to the arm. Use '' for no gripper or " + "when using a custom end-effector defined in your own description_package. " + "Use 'robotiq_2f_85' or 'robotiq_2f_140' for Robotiq grippers.", ) ) declared_arguments.append( DeclareLaunchArgument( "gripper_joint_name", default_value="robotiq_85_left_knuckle_joint", - description="Name of the gripper attached to the arm", + description="Joint name of the gripper to be controlled via the Kortex internal bus. " + "Only used when gripper is non-empty and use_internal_bus_gripper_comm is true.", ) ) declared_arguments.append( @@ -115,6 +132,8 @@ def generate_launch_description(): use_fake_hardware = LaunchConfiguration("use_fake_hardware") fake_sensor_commands = LaunchConfiguration("fake_sensor_commands") robot_controller = LaunchConfiguration("robot_controller") + description_package = LaunchConfiguration("description_package") + description_file = LaunchConfiguration("description_file") gripper = LaunchConfiguration("gripper") use_internal_bus_gripper_comm = LaunchConfiguration("use_internal_bus_gripper_comm") gripper_max_velocity = LaunchConfiguration("gripper_max_velocity") @@ -132,6 +151,8 @@ def generate_launch_description(): "use_fake_hardware": use_fake_hardware, "fake_sensor_commands": fake_sensor_commands, "robot_controller": robot_controller, + "description_package": description_package, + "description_file": description_file, "gripper": gripper, "use_internal_bus_gripper_comm": use_internal_bus_gripper_comm, "gripper_max_velocity": gripper_max_velocity, @@ -139,7 +160,6 @@ def generate_launch_description(): "gripper_joint_name": gripper_joint_name, "launch_rviz": launch_rviz, "controllers_file": controllers_file, - "description_file": "gen3.xacro", }.items(), ) diff --git a/kortex_bringup/launch/gen3_lite.launch.py b/kortex_bringup/launch/gen3_lite.launch.py index 844114db..f2ca549e 100644 --- a/kortex_bringup/launch/gen3_lite.launch.py +++ b/kortex_bringup/launch/gen3_lite.launch.py @@ -108,11 +108,19 @@ def generate_launch_description(): ) ) + declared_arguments.append( + DeclareLaunchArgument( + "description_package", + default_value="kortex_description", + description="Description package with robot URDF/XACRO files. Usually the argument " + "is not set, it enables use of a custom description.", + ) + ) declared_arguments.append( DeclareLaunchArgument( "description_file", default_value="gen3_lite_gen3_lite_2f.xacro", - description="URDF file to use", + description="URDF/XACRO description file with the robot.", ) ) @@ -134,6 +142,7 @@ def generate_launch_description(): gripper_joint_name = LaunchConfiguration("gripper_joint_name") launch_rviz = LaunchConfiguration("launch_rviz") controllers_file = LaunchConfiguration("controllers_file") + description_package = LaunchConfiguration("description_package") description_file = LaunchConfiguration("description_file") base_launch = IncludeLaunchDescription( @@ -146,6 +155,8 @@ def generate_launch_description(): "fake_sensor_commands": fake_sensor_commands, "robot_controller": robot_controller, "robot_hand_controller": robot_hand_controller, + "description_package": description_package, + "description_file": description_file, "gripper": gripper, "use_internal_bus_gripper_comm": use_internal_bus_gripper_comm, "gripper_max_velocity": gripper_max_velocity, @@ -153,7 +164,6 @@ def generate_launch_description(): "gripper_joint_name": gripper_joint_name, "launch_rviz": launch_rviz, "controllers_file": controllers_file, - "description_file": description_file, }.items(), ) diff --git a/kortex_bringup/launch/kortex_control.launch.py b/kortex_bringup/launch/kortex_control.launch.py index 88da2fe8..65f05d1e 100644 --- a/kortex_bringup/launch/kortex_control.launch.py +++ b/kortex_bringup/launch/kortex_control.launch.py @@ -378,7 +378,8 @@ def generate_launch_description(): DeclareLaunchArgument( "gripper_joint_name", default_value="finger_joint", - description="Max force for gripper commands", + description="Joint name of the gripper to be controlled via the Kortex internal bus. " + "Only used when gripper is non-empty and use_internal_bus_gripper_comm is true.", ) ) return LaunchDescription(declared_arguments + [OpaqueFunction(function=launch_setup)]) diff --git a/kortex_bringup/package.xml b/kortex_bringup/package.xml index c1460ba7..0b07234a 100644 --- a/kortex_bringup/package.xml +++ b/kortex_bringup/package.xml @@ -2,7 +2,7 @@ kortex_bringup - 0.2.3 + 0.2.6 Launch file and run-time configurations, e.g. controllers. Marq Rasmussen diff --git a/kortex_description/CHANGELOG.rst b/kortex_description/CHANGELOG.rst index d0c01e78..0651e245 100644 --- a/kortex_description/CHANGELOG.rst +++ b/kortex_description/CHANGELOG.rst @@ -2,6 +2,36 @@ Changelog for package kortex_description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* Update to parallel_gripper_controller (`#324 `_) +* fixed bringing up the Gen3 wo gripper issue (`#321 `_) +* fixed the gen3_lite fake_hardware issue (`#319 `_) +* fixed gen3_lite moveit issues (`#318 `_) +* Modifications to fix moveit issues while controlling Gen3_lite (`#316 `_) +* modified the kortex trademark name (`#305 `_) +* Fixed pi issue #295 (`#296 `_) +* Replaced file:// with package:// + Added temporary repositories as dependencies (`#275 `_) +* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Fixed the Gazebo Fortress Simulation + Separated the arm and gripper control for Gen3_Lite + Fixed bugs (`#252 `_) +* Added the empty gripper option for gen3.launch.py (`#242 `_) +* Modified the joint limits of Gen3 and Gen3 Lite robots as per the values in the User Guides (`#241 `_) +* Added .STL files for the Gen3 7dof meshes (`#235 `_) +* Added a Moveit2 package for Gen3-Lite (`#231 `_) +* Update gripper descriptions for use on HW (`#206 `_) +* Update gen3 lite and gripper macros (`#191 `_) +* Cleanup robots for visualization & sim (`#180 `_) +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ * Refactor MoveIt Launch files (`#162 `_) diff --git a/kortex_description/arms/gen3/6dof/config/ros2_controllers.yaml b/kortex_description/arms/gen3/6dof/config/ros2_controllers.yaml index b6396f2f..d1b41ad9 100644 --- a/kortex_description/arms/gen3/6dof/config/ros2_controllers.yaml +++ b/kortex_description/arms/gen3/6dof/config/ros2_controllers.yaml @@ -12,7 +12,7 @@ controller_manager: type: picknik_twist_controller/PicknikTwistController robotiq_gripper_controller: - type: position_controllers/GripperActionController + type: parallel_gripper_action_controller/GripperActionController fault_controller: type: picknik_reset_fault_controller/PicknikResetFaultController @@ -51,6 +51,5 @@ twist_controller: robotiq_gripper_controller: ros__parameters: - default: true joint: robotiq_85_left_knuckle_joint allow_stalling: true diff --git a/kortex_description/arms/gen3/6dof/urdf/gen3_macro.xacro b/kortex_description/arms/gen3/6dof/urdf/gen3_macro.xacro index 3cb50d9b..4287aba4 100644 --- a/kortex_description/arms/gen3/6dof/urdf/gen3_macro.xacro +++ b/kortex_description/arms/gen3/6dof/urdf/gen3_macro.xacro @@ -19,8 +19,8 @@ session_inactivity_timeout_ms:=6000 connection_inactivity_timeout_ms:=2000 use_internal_bus_gripper_comm:=false - gripper - gripper_joint_name + gripper:='' + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 use_fake_hardware:=false diff --git a/kortex_description/arms/gen3/6dof/urdf/kortex.ros2_control.xacro b/kortex_description/arms/gen3/6dof/urdf/kortex.ros2_control.xacro index fd380c63..6a1703e6 100644 --- a/kortex_description/arms/gen3/6dof/urdf/kortex.ros2_control.xacro +++ b/kortex_description/arms/gen3/6dof/urdf/kortex.ros2_control.xacro @@ -20,8 +20,8 @@ port_realtime session_inactivity_timeout_ms connection_inactivity_timeout_ms - gripper - gripper_joint_name + gripper:='' + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 moveit_active:=false"> @@ -52,9 +52,11 @@ ${connection_inactivity_timeout_ms} "${tf_prefix}" ${use_internal_bus_gripper_comm} - ${gripper_joint_name} - ${gripper_max_velocity} - ${gripper_max_force} + + ${gripper_joint_name} + ${gripper_max_velocity} + ${gripper_max_force} + diff --git a/kortex_description/arms/gen3/7dof/config/ros2_controllers.yaml b/kortex_description/arms/gen3/7dof/config/ros2_controllers.yaml index bd98a73d..7c083326 100644 --- a/kortex_description/arms/gen3/7dof/config/ros2_controllers.yaml +++ b/kortex_description/arms/gen3/7dof/config/ros2_controllers.yaml @@ -12,7 +12,7 @@ controller_manager: type: picknik_twist_controller/PicknikTwistController robotiq_gripper_controller: - type: position_controllers/GripperActionController + type: parallel_gripper_action_controller/GripperActionController fault_controller: type: picknik_reset_fault_controller/PicknikResetFaultController @@ -52,6 +52,5 @@ twist_controller: robotiq_gripper_controller: ros__parameters: - default: true joint: robotiq_85_left_knuckle_joint allow_stalling: true diff --git a/kortex_description/arms/gen3/7dof/urdf/gen3_macro.xacro b/kortex_description/arms/gen3/7dof/urdf/gen3_macro.xacro index d504ab45..675234d7 100644 --- a/kortex_description/arms/gen3/7dof/urdf/gen3_macro.xacro +++ b/kortex_description/arms/gen3/7dof/urdf/gen3_macro.xacro @@ -19,8 +19,8 @@ session_inactivity_timeout_ms:=6000 connection_inactivity_timeout_ms:=2000 use_internal_bus_gripper_comm:=true - gripper - gripper_joint_name + gripper:='' + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 use_fake_hardware:=false diff --git a/kortex_description/arms/gen3/7dof/urdf/kortex.ros2_control.xacro b/kortex_description/arms/gen3/7dof/urdf/kortex.ros2_control.xacro index 09144395..100f7817 100644 --- a/kortex_description/arms/gen3/7dof/urdf/kortex.ros2_control.xacro +++ b/kortex_description/arms/gen3/7dof/urdf/kortex.ros2_control.xacro @@ -20,8 +20,8 @@ port_realtime session_inactivity_timeout_ms connection_inactivity_timeout_ms - gripper - gripper_joint_name + gripper:='' + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 moveit_active:=false"> @@ -52,9 +52,11 @@ ${connection_inactivity_timeout_ms} "${tf_prefix}" ${use_internal_bus_gripper_comm} - ${gripper_joint_name} - ${gripper_max_velocity} - ${gripper_max_force} + + ${gripper_joint_name} + ${gripper_max_velocity} + ${gripper_max_force} + diff --git a/kortex_description/arms/gen3_lite/6dof/urdf/gen3_lite_macro.xacro b/kortex_description/arms/gen3_lite/6dof/urdf/gen3_lite_macro.xacro index 8450fd70..c7e19d59 100644 --- a/kortex_description/arms/gen3_lite/6dof/urdf/gen3_lite_macro.xacro +++ b/kortex_description/arms/gen3_lite/6dof/urdf/gen3_lite_macro.xacro @@ -19,7 +19,7 @@ session_inactivity_timeout_ms:=6000 connection_inactivity_timeout_ms:=2000 use_internal_bus_gripper_comm:=true - gripper_joint_name + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 use_fake_hardware:=false diff --git a/kortex_description/arms/gen3_lite/6dof/urdf/kortex.ros2_control.xacro b/kortex_description/arms/gen3_lite/6dof/urdf/kortex.ros2_control.xacro index ffb723a8..4a41ccbf 100644 --- a/kortex_description/arms/gen3_lite/6dof/urdf/kortex.ros2_control.xacro +++ b/kortex_description/arms/gen3_lite/6dof/urdf/kortex.ros2_control.xacro @@ -20,7 +20,7 @@ port_realtime session_inactivity_timeout_ms connection_inactivity_timeout_ms - gripper_joint_name + gripper_joint_name:='' gripper_max_velocity:=100.0 gripper_max_force:=100.0 moveit_active:=false"> diff --git a/kortex_description/package.xml b/kortex_description/package.xml index 932879b1..00f4f148 100644 --- a/kortex_description/package.xml +++ b/kortex_description/package.xml @@ -2,7 +2,7 @@ kortex_description - 0.2.3 + 0.2.6

URDF and xacro description package for KINOVA KORTEX™ robots

This package contains configuration data, 3D models and launch files @@ -21,6 +21,7 @@ for KINOVA KORTEX™ arms and supported grippers

joint_trajectory_controller robot_state_publisher robotiq_description + parallel_gripper_controller picknik_reset_fault_controller picknik_twist_controller rviz2 diff --git a/kortex_driver/CHANGELOG.rst b/kortex_driver/CHANGELOG.rst index d45751da..a0265ed3 100644 --- a/kortex_driver/CHANGELOG.rst +++ b/kortex_driver/CHANGELOG.rst @@ -2,6 +2,24 @@ Changelog for package kortex_driver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* fix deprecated hardware_interface API (`#327 `_) +* Fixed pi issue #295 (`#296 `_) +* modified the kortex trademark name (`#305 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Add force and velocity hardware interfaces (`#204 `_) +* Changing the list of packages maintainers +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ * cxx: remove unused-but-set-parameter (`#164 `_) diff --git a/kortex_driver/include/kortex_driver/hardware_interface.hpp b/kortex_driver/include/kortex_driver/hardware_interface.hpp index 6bc45a69..33f37fda 100644 --- a/kortex_driver/include/kortex_driver/hardware_interface.hpp +++ b/kortex_driver/include/kortex_driver/hardware_interface.hpp @@ -84,7 +84,7 @@ class KortexMultiInterfaceHardware : public hardware_interface::SystemInterface RCLCPP_SHARED_PTR_DEFINITIONS(KortexMultiInterfaceHardware); KORTEX_DRIVER_PUBLIC - CallbackReturn on_init(const hardware_interface::HardwareInfo & info) final; + CallbackReturn on_init(const hardware_interface::HardwareComponentInterfaceParams & params) final; KORTEX_DRIVER_PUBLIC std::vector export_state_interfaces() final; diff --git a/kortex_driver/package.xml b/kortex_driver/package.xml index c77fb935..bfd46be5 100644 --- a/kortex_driver/package.xml +++ b/kortex_driver/package.xml @@ -2,7 +2,7 @@ kortex_driver - 0.2.3 + 0.2.6 ROS2 driver package for the Kinova Robot Hardware. Alex Moriarty Martin Leroux diff --git a/kortex_driver/src/hardware_interface.cpp b/kortex_driver/src/hardware_interface.cpp index f0e856b1..95525280 100644 --- a/kortex_driver/src/hardware_interface.cpp +++ b/kortex_driver/src/hardware_interface.cpp @@ -84,15 +84,16 @@ KortexMultiInterfaceHardware::KortexMultiInterfaceHardware() } } -CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::HardwareInfo & info) +CallbackReturn KortexMultiInterfaceHardware::on_init( + const hardware_interface::HardwareComponentInterfaceParams & params) { RCLCPP_INFO(LOGGER, "Configuring Hardware Interface"); - if (hardware_interface::SystemInterface::on_init(info) != CallbackReturn::SUCCESS) + if (hardware_interface::SystemInterface::on_init(params) != CallbackReturn::SUCCESS) { return CallbackReturn::ERROR; } - info_ = info; + info_ = params.hardware_info; // The robot's IP address. std::string robot_ip = info_.hardware_parameters["robot_ip"]; if (robot_ip.empty()) @@ -169,16 +170,15 @@ CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::H gripper_joint_name_ = info_.hardware_parameters["gripper_joint_name"]; if (gripper_joint_name_.empty()) { - RCLCPP_ERROR(LOGGER, "Gripper joint name is empty!"); + RCLCPP_INFO(LOGGER, "No gripper joint name provided, gripper control will be disabled."); } else { RCLCPP_INFO(LOGGER, "Gripper joint name is '%s'", gripper_joint_name_.c_str()); + gripper_command_max_velocity_ = std::stod(info_.hardware_parameters["gripper_max_velocity"]); + gripper_command_max_force_ = std::stod(info_.hardware_parameters["gripper_max_force"]); } - gripper_command_max_velocity_ = std::stod(info_.hardware_parameters["gripper_max_velocity"]); - gripper_command_max_force_ = std::stod(info_.hardware_parameters["gripper_max_force"]); - RCLCPP_INFO_STREAM(LOGGER, "Connecting to robot at " << robot_ip); // connections @@ -279,8 +279,9 @@ CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::H } if ( - (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "true") || - (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "True")) + !gripper_joint_name_.empty() && + ((info_.hardware_parameters["use_internal_bus_gripper_comm"] == "true") || + (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "True"))) { use_internal_bus_gripper_comm_ = true; RCLCPP_INFO(LOGGER, "Using internal bus communication for gripper!"); @@ -666,21 +667,24 @@ CallbackReturn KortexMultiInterfaceHardware::on_activate( base_command_.add_actuators()->set_position(base_feedback.actuators(i).position()); } - // Initialize gripper - float gripper_initial_position = - base_feedback.interconnect().gripper_feedback().motor()[0].position(); - RCLCPP_INFO(LOGGER, "Gripper initial position is '%f'.", gripper_initial_position); - - // to radians - gripper_command_position_ = gripper_initial_position / 100.0 * 0.81; - - // Initialize interconnect command to current gripper position. - base_command_.mutable_interconnect()->mutable_command_id()->set_identifier(0); - gripper_motor_command_ = - base_command_.mutable_interconnect()->mutable_gripper_command()->add_motor_cmd(); - gripper_motor_command_->set_position(gripper_initial_position); // % position - gripper_motor_command_->set_velocity(gripper_speed_command_); // % speed - gripper_motor_command_->set_force(gripper_force_command_); // % force + // Initialize gripper if internal bus communication is enabled + if (use_internal_bus_gripper_comm_) + { + float gripper_initial_position = + base_feedback.interconnect().gripper_feedback().motor()[0].position(); + RCLCPP_INFO(LOGGER, "Gripper initial position is '%f'.", gripper_initial_position); + + // to radians + gripper_command_position_ = gripper_initial_position / 100.0 * 0.81; + + // Initialize interconnect command to current gripper position. + base_command_.mutable_interconnect()->mutable_command_id()->set_identifier(0); + gripper_motor_command_ = + base_command_.mutable_interconnect()->mutable_gripper_command()->add_motor_cmd(); + gripper_motor_command_->set_position(gripper_initial_position); // % position + gripper_motor_command_->set_velocity(gripper_speed_command_); // % speed + gripper_motor_command_->set_force(gripper_force_command_); // % force + } // Send a first frame base_feedback = base_cyclic_.Refresh(base_command_); diff --git a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst index 14f86d9f..dc0181cf 100644 --- a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst +++ b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst @@ -2,6 +2,26 @@ Changelog for package kinova_gen3_6dof_robotiq_2f_85_moveit_config ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* fixed gen3_lite moveit issues (`#318 `_) +* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Update planner_plugin parameters (`#199 `_) +* Remove outdated config artifacts (`#198 `_) +* Cleanup robots for visualization & sim (`#180 `_) +* Update planning pipeline configurations (`#187 `_) +* Changing the list of packages maintainers +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ * specify planning pipelines to use (`#157 `_) diff --git a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml index 89978b4f..bfcc308f 100644 --- a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml +++ b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml @@ -2,7 +2,7 @@ kinova_gen3_6dof_robotiq_2f_85_moveit_config - 0.2.3 + 0.2.6 An automatically generated package with all the configuration and launch files for using the gen3 with the MoveIt Motion Planning Framework diff --git a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst index 36e7f51e..d5c1a0de 100644 --- a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst +++ b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst @@ -2,6 +2,26 @@ Changelog for package kinova_gen3_7dof_robotiq_2f_85_moveit_config ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* fixed gen3_lite moveit issues (`#318 `_) +* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Update planner_plugin parameters (`#199 `_) +* Remove outdated config artifacts (`#198 `_) +* Cleanup robots for visualization & sim (`#180 `_) +* Update planning pipeline configurations (`#187 `_) +* Changing the list of packages maintainers +* Contributors: Abed Al Rahman Al Mrad + 0.2.2 (2023-08-09) ------------------ * specify planning pipelines to use (`#157 `_) diff --git a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml index 630457b1..f8c51a7e 100644 --- a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml +++ b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml @@ -2,7 +2,7 @@ kinova_gen3_7dof_robotiq_2f_85_moveit_config - 0.2.3 + 0.2.6 An automatically generated package with all the configuration and launch files for using the gen3 with the MoveIt Motion Planning Framework diff --git a/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst new file mode 100644 index 00000000..de4113ed --- /dev/null +++ b/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst @@ -0,0 +1,21 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package kinova_gen3_lite_moveit_config +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +0.2.6 (2026-01-07) +------------------ +* Package version updates +* Contributors: Abed Al Rahman Al Mrad + +0.2.4 (2025-12-15) +------------------ +* fixed gen3_lite moveit issues (`#318 `_) +* Modifications to fix moveit issues while controlling Gen3_lite (`#316 `_) +* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_) +* Contributors: Abed Al Rahman Al Mrad + +0.2.3 (2025-02-27) +------------------ +* Fixed the Gazebo Fortress Simulation + Separated the arm and gripper control for Gen3_Lite + Fixed bugs (`#252 `_) +* Added a Moveit2 package for Gen3-Lite (`#231 `_) +* Contributors: Abed Al Rahman Al Mrad diff --git a/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml index 4a806840..de03d4b2 100644 --- a/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml +++ b/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml @@ -2,7 +2,7 @@ kinova_gen3_lite_moveit_config - 0.2.3 + 0.2.6 An automatically generated package with all the configuration and launch files for using the gen3_lite with the MoveIt Motion Planning Framework diff --git a/kortex_moveit_config/launch/kortex_moveit.launch.py b/kortex_moveit_config/launch/kortex_moveit.launch.py index 0815269f..0f36ffc7 100644 --- a/kortex_moveit_config/launch/kortex_moveit.launch.py +++ b/kortex_moveit_config/launch/kortex_moveit.launch.py @@ -107,7 +107,17 @@ def generate_launch_description(): DeclareLaunchArgument( "gripper", default_value='""', - description="Name of the gripper attached to the arm", + description="Name of the gripper attached to the arm. Use '' for no gripper or a " + "custom end-effector name.", + ) + ) + declared_arguments.append( + DeclareLaunchArgument( + "gripper_joint_name", + default_value="", + description="Joint name of the gripper to be controlled via the internal bus. " + "Leave empty when not using a gripper or when using a custom end-effector " + "without an internal-bus-controlled joint.", ) ) declared_arguments.append( @@ -141,6 +151,7 @@ def generate_launch_description(): robot_name = LaunchConfiguration("robot_name") prefix = LaunchConfiguration("prefix") gripper = LaunchConfiguration("gripper") + gripper_joint_name = LaunchConfiguration("gripper_joint_name") use_fake_hardware = LaunchConfiguration("use_fake_hardware") fake_sensor_commands = LaunchConfiguration("fake_sensor_commands") launch_rviz = LaunchConfiguration("launch_rviz") @@ -177,6 +188,9 @@ def generate_launch_description(): "gripper:=", gripper, " ", + "gripper_joint_name:=", + gripper_joint_name, + " ", ] ) robot_description = {"robot_description": robot_description_content}