Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
46 changes: 39 additions & 7 deletions .github/workflows/rolling-binary-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,47 @@ jobs:
name: rolling binary build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
env:
- {ROS_DISTRO: rolling, ROS_REPO: main}
- {ROS_DISTRO: rolling, ROS_REPO: testing}
# Rolling binaries are currently published for Ubuntu 24.04 (noble).
# Pin OS_CODE_NAME so industrial_ci doesn't default rolling to a newer
# Ubuntu (e.g. resolute/26.04) that has no ros-rolling-* debs yet.
- {ROS_DISTRO: rolling, ROS_REPO: main, OS_CODE_NAME: noble}
- {ROS_DISTRO: rolling, ROS_REPO: testing, OS_CODE_NAME: noble}
env:
UPSTREAM_WORKSPACE: ros2_kortex-not-released.${{ matrix.env.ROS_DISTRO }}.repos
# Core MoveIt runtime packages are not currently published as rolling debs
# while Rolling migrates to Ubuntu 26.04 (missing on both frozen-noble and
# the not-yet-populated resolute repo). They are exec_depend-only deps of
# the pure ament_cmake moveit_config packages, so skipping their rosdep
# resolution lets the binary build proceed. Remove once Rolling debs are
# republished for the new platform.
ROSDEP_SKIP_KEYS: >-
moveit_kinematics
moveit_planners
moveit_ros_move_group
moveit_ros_visualization
moveit_ros_warehouse
moveit_setup_assistant
moveit_simple_controller_manager
CCACHE_DIR: ${{ github.workspace }}/.ccache
BASEDIR: ${{ github.workspace }}/.work
CACHE_PREFIX: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
# 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
- name: restore target_ws cache
if: ${{ ! matrix.env.CCOV }}
uses: pat-s/always-upload-cache@v2.1.5
uses: actions/cache/restore@v5
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
- name: restore ccache cache
uses: actions/cache/restore@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }}
Expand All @@ -54,3 +72,17 @@ jobs:
sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete
sudo rm -rf ${{ env.BASEDIR }}/target_ws/src
du -sh ${{ env.BASEDIR }}/target_ws
# Save caches at the end so they are always uploaded, even when the build
# fails (replacement for the now-deprecated pat-s/always-upload-cache).
- name: save target_ws cache
if: ${{ always() && ! matrix.env.CCOV }}
uses: actions/cache/save@v5
with:
path: ${{ env.BASEDIR }}/target_ws
key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }}
- name: save ccache cache
if: ${{ always() }}
uses: actions/cache/save@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }}
6 changes: 3 additions & 3 deletions kortex_api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ 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_HASH MD5=64bd86e7ab8bda90ef1fc7d6a356e080
URL https://artifactory.kinovaapps.com/artifactory/generic-public/kortex/API/2.8.0/linux_x86-64_gcc_5.4.zip
URL_HASH MD5=b9b68885df8e1dd0e5a2ba7285f14c0d
)

FetchContent_MakeAvailable(kinova_binary_api)
Expand All @@ -20,7 +20,7 @@ project(kortex_api)

#Current: only support Linux x86_64
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(API_URL https://artifactory.kinovaapps.com:443/artifactory/generic-public/kortex/API/2.5.0/linux_x86-64_x86_gcc.zip)
set(API_URL https://artifactory.kinovaapps.com/artifactory/generic-public/kortex/API/2.8.0/linux_x86-64_gcc_5.4.zip)
else()
set(API_URL "")
message(FATAL_ERROR "Unsupported System: currently support is for Linux x68_64. Detected ${CMAKE_SYSTEM_NAME} and ${CMAKE_SYSTEM_PROCESSOR}")
Expand Down
19 changes: 13 additions & 6 deletions kortex_driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,20 @@ target_include_directories(
PRIVATE
include
)
# kortex_api is the headers for the Kortex API
ament_target_dependencies(
# ament_target_dependencies() was removed in Rolling; link the modern
# namespaced CMake targets directly instead.
target_link_libraries(
${PROJECT_NAME}
SYSTEM kortex_api
hardware_interface
pluginlib
rclcpp
hardware_interface::hardware_interface
pluginlib::pluginlib
rclcpp::rclcpp
)
# kortex_api is a header-only ament package (no exported CMake target), so its
# headers are added as SYSTEM includes the way "SYSTEM kortex_api" used to.
target_include_directories(
${PROJECT_NAME}
SYSTEM PUBLIC
${kortex_api_INCLUDE_DIRS}
)

pluginlib_export_plugin_description_file(hardware_interface hardware_interface_plugin.xml)
Expand Down
2 changes: 1 addition & 1 deletion kortex_driver/src/hardware_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ CallbackReturn KortexMultiInterfaceHardware::on_init(
// command.set_duration = execute time (milliseconds) according to the api ->
// (not implemented yet)
// see: https://github.com/Kinovarobotics/kortex/blob/master/api_cpp/doc/markdown/messages/Base/TwistCommand.md
k_api_twist_command_.set_duration(0);
//k_api_twist_command_.set_duration(0);
k_api_twist_ = k_api_twist_command_.mutable_twist();
}

Expand Down
Loading