From e41cb58c3a5ef97f772696b219fe222daccf7871 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 11:30:31 -0500 Subject: [PATCH 01/13] add scripts --- .ci | 1 + .gitmodules | 3 +++ 2 files changed, 4 insertions(+) create mode 160000 .ci diff --git a/.ci b/.ci new file mode 160000 index 0000000..fbbfced --- /dev/null +++ b/.ci @@ -0,0 +1 @@ +Subproject commit fbbfced900b5e87de9a176a68c40b8cafa3e8e01 diff --git a/.gitmodules b/.gitmodules index 82599f9..bb4d66e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "urRobotApp/src/spdlog"] path = urRobotApp/src/spdlog url = https://github.com/gabime/spdlog.git +[submodule ".ci"] + path = .ci + url = https://github.com/epics-base/ci-scripts From 2a635a3949ac507295a06a4a2b130afc28af5eb6 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 11:31:41 -0500 Subject: [PATCH 02/13] set to most recent official release --- .ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci b/.ci index fbbfced..261f218 160000 --- a/.ci +++ b/.ci @@ -1 +1 @@ -Subproject commit fbbfced900b5e87de9a176a68c40b8cafa3e8e01 +Subproject commit 261f218e094e39550e3a7c54b98e34adcf42ad9b From e609eba66959cff1b38726e0d09cd9d5cbfad21c Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 11:39:17 -0500 Subject: [PATCH 03/13] add build script and sets --- .github/workflows/TIRPC.sh | 5 ++ .github/workflows/ci-scripts-build.yml | 118 +++++++++++++++++++++++++ .github/workflows/linux-master.set | 3 + .github/workflows/linux-stable.set | 3 + .github/workflows/macos.set | 1 + .github/workflows/master.set | 3 + .github/workflows/stable.set | 3 + .github/workflows/windows.set | 1 + 8 files changed, 137 insertions(+) create mode 100755 .github/workflows/TIRPC.sh create mode 100644 .github/workflows/ci-scripts-build.yml create mode 100644 .github/workflows/linux-master.set create mode 100644 .github/workflows/linux-stable.set create mode 100644 .github/workflows/macos.set create mode 100644 .github/workflows/master.set create mode 100644 .github/workflows/stable.set create mode 100644 .github/workflows/windows.set diff --git a/.github/workflows/TIRPC.sh b/.github/workflows/TIRPC.sh new file mode 100755 index 0000000..c3ae1b2 --- /dev/null +++ b/.github/workflows/TIRPC.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +echo "TIRPC=YES" >> ./configure/CONFIG_SITE.local +echo "DRV_VXI11=YES" >> ./configure/CONFIG_SITE.local diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml new file mode 100644 index 0000000..b36b41f --- /dev/null +++ b/.github/workflows/ci-scripts-build.yml @@ -0,0 +1,118 @@ +# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts +# (see: https://github.com/epics-base/ci-scripts) + +# This is YAML - indentation levels are crucial + +# Set the 'name:' properties to values that work for you (MYMODULE) + +name: URROBOT + +# Trigger on pushes and PRs to any branch +on: + push: + paths-ignore: + - 'docs/**' + - 'documentation/**' + - '**/*.html' + - '**/*.md' + branches: + - master + pull_request: + +env: + SETUP_PATH: .github/workflows:.ci + # For sequencer and asyn + APT: re2c libtirpc-dev libreadline-dev + CHOCO: re2c + BREW: re2c + +jobs: + build-base: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + # Set environment variables from matrix parameters + env: + CMP: ${{ matrix.cmp }} + BCFG: ${{ matrix.configuration }} + WINE: ${{ matrix.wine }} + RTEMS: ${{ matrix.rtems }} + RTEMS_TARGET: ${{ matrix.rtems_target }} + EXTRA: ${{ matrix.extra }} + TEST: ${{ matrix.test }} + SET: ${{ matrix.set }} + strategy: + fail-fast: false + matrix: + # Job names also name artifacts, character limitations apply + include: + - os: ubuntu-24.04 + cmp: gcc + configuration: default + set: linux-stable + base: "7.0" + name: "Linux stable 7.0" + + - os: ubuntu-24.04 + cmp: gcc + configuration: default + set: linux-stable + base: "3.15" + name: "Linux stable 3.15" + + - os: ubuntu-24.04 + cmp: gcc + configuration: default + set: linux-master + base: "7.0" + name: "Linux master 7.0" + + - os: ubuntu-24.04 + cmp: gcc + configuration: default + set: linux-master + base: "3.15" + name: "Linux master 3.15" + + - os: macos-latest + cmp: clang + configuration: default + set: macos + name: "MacOS master 7.0" + + - os: windows-2022 + cmp: vs2022 + configuration: static + set: windows + name: "Windows master 7.0" + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Automatic core dumper analysis + uses: mdavidsaver/ci-core-dumper@master + - name: "apt-get install" + run: | + sudo apt-get update + sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb + if: runner.os == 'Linux' + - name: "apt-get install ${{ matrix.cmp }}" + run: | + sudo apt-get -y install software-properties-common + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get -y install ${{ matrix.cmp }} + if: matrix.utoolchain + - name: Prepare and compile dependencies + run: python .ci/cue.py prepare + - name: Build main module + run: python .ci/cue.py build + - name: Run main module tests + run: python .ci/cue.py -T 15M test + - name: Upload tapfiles Artifact + uses: actions/upload-artifact@v4 + with: + name: tapfiles ${{ matrix.name }} + path: '**/O.*/*.tap' + - name: Collect and show test results + run: python .ci/cue.py test-results diff --git a/.github/workflows/linux-master.set b/.github/workflows/linux-master.set new file mode 100644 index 0000000..d32b15a --- /dev/null +++ b/.github/workflows/linux-master.set @@ -0,0 +1,3 @@ +include master + +ASYN_HOOK=.github/workflows/TIRPC.sh diff --git a/.github/workflows/linux-stable.set b/.github/workflows/linux-stable.set new file mode 100644 index 0000000..9428bcd --- /dev/null +++ b/.github/workflows/linux-stable.set @@ -0,0 +1,3 @@ +include stable + +ASYN_HOOK=.github/workflows/TIRPC.sh diff --git a/.github/workflows/macos.set b/.github/workflows/macos.set new file mode 100644 index 0000000..cb0645d --- /dev/null +++ b/.github/workflows/macos.set @@ -0,0 +1 @@ +include master diff --git a/.github/workflows/master.set b/.github/workflows/master.set new file mode 100644 index 0000000..97bfd10 --- /dev/null +++ b/.github/workflows/master.set @@ -0,0 +1,3 @@ +MODULES="asyn" + +ASYN="master" diff --git a/.github/workflows/stable.set b/.github/workflows/stable.set new file mode 100644 index 0000000..b768bd6 --- /dev/null +++ b/.github/workflows/stable.set @@ -0,0 +1,3 @@ +MODULES="asyn" + +ASYN="R4-42" diff --git a/.github/workflows/windows.set b/.github/workflows/windows.set new file mode 100644 index 0000000..cb0645d --- /dev/null +++ b/.github/workflows/windows.set @@ -0,0 +1 @@ +include master From 6759dc02e22df37308a30f8d57b2fc5c7bb77b41 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 11:54:33 -0500 Subject: [PATCH 04/13] add boost libs (not sure if it will work for windows/mac) --- .github/workflows/ci-scripts-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index b36b41f..900c1ba 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -22,9 +22,9 @@ on: env: SETUP_PATH: .github/workflows:.ci # For sequencer and asyn - APT: re2c libtirpc-dev libreadline-dev - CHOCO: re2c - BREW: re2c + APT: re2c libtirpc-dev libreadline-dev libboost-all-dev + CHOCO: re2c libboost-all-dev + BREW: re2c libboost-all-dev jobs: build-base: From 30b3fa91d8df31da5391143ec1964d1f91b9c857 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 11:57:21 -0500 Subject: [PATCH 05/13] mac should just be boost --- .github/workflows/ci-scripts-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index 900c1ba..bca839f 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -24,7 +24,7 @@ env: # For sequencer and asyn APT: re2c libtirpc-dev libreadline-dev libboost-all-dev CHOCO: re2c libboost-all-dev - BREW: re2c libboost-all-dev + BREW: re2c boost jobs: build-base: From 041f696c0f7585af0917e91fec5f065b3f657da1 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 12:01:12 -0500 Subject: [PATCH 06/13] windows needs to match msvc --- .github/workflows/ci-scripts-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index bca839f..2160504 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -23,7 +23,7 @@ env: SETUP_PATH: .github/workflows:.ci # For sequencer and asyn APT: re2c libtirpc-dev libreadline-dev libboost-all-dev - CHOCO: re2c libboost-all-dev + CHOCO: re2c boost-msvc-14.3 BREW: re2c boost jobs: From 1b0051e7533c3b984c9c7e72226a4c5b9c038a62 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 12:45:05 -0500 Subject: [PATCH 07/13] add boost to path on windows --- .github/workflows/ci-scripts-build.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index 2160504..5815157 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -103,6 +103,14 @@ jobs: sudo apt-get update sudo apt-get -y install ${{ matrix.cmp }} if: matrix.utoolchain + - name: Configure Boost for Windows + if: runner.os == 'Windows' + shell: powershell + run: | + $boostDir = (Get-ChildItem C:\local\boost_* -Directory | Select-Object -First 1).FullName + $boostDirUnix = $boostDir -replace '\\','/' + echo "USR_CPPFLAGS=-I$boostDirUnix" >> $env:GITHUB_ENV + echo "USR_LDFLAGS=-LIBPATH:$boostDirUnix/lib64-msvc-14.3" >> $env:GITHUB_ENV - name: Prepare and compile dependencies run: python .ci/cue.py prepare - name: Build main module From 64e4a8b6356b4fddecff0d6eb219dc9e05504f42 Mon Sep 17 00:00:00 2001 From: keenanlang Date: Thu, 11 Jun 2026 12:58:40 -0500 Subject: [PATCH 08/13] move to after prepare --- .github/workflows/ci-scripts-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index 5815157..271118c 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -103,16 +103,16 @@ jobs: sudo apt-get update sudo apt-get -y install ${{ matrix.cmp }} if: matrix.utoolchain + - name: Prepare and compile dependencies + run: python .ci/cue.py prepare - name: Configure Boost for Windows if: runner.os == 'Windows' shell: powershell run: | $boostDir = (Get-ChildItem C:\local\boost_* -Directory | Select-Object -First 1).FullName $boostDirUnix = $boostDir -replace '\\','/' - echo "USR_CPPFLAGS=-I$boostDirUnix" >> $env:GITHUB_ENV - echo "USR_LDFLAGS=-LIBPATH:$boostDirUnix/lib64-msvc-14.3" >> $env:GITHUB_ENV - - name: Prepare and compile dependencies - run: python .ci/cue.py prepare + Add-Content -Path configure/CONFIG_SITE.local -Value "USR_INCLUDES += -I$boostDirUnix" + Add-Content -Path configure/CONFIG_SITE.local -Value "USR_LDFLAGS += -LIBPATH:$boostDirUnix/lib64-msvc-14.3" - name: Build main module run: python .ci/cue.py build - name: Run main module tests From c2e8dcd1e38fc36ef427e579018b7238bfe721fb Mon Sep 17 00:00:00 2001 From: Nick Marks Date: Tue, 16 Jun 2026 09:45:11 -0500 Subject: [PATCH 09/13] attempt to bump ur_rtde to latest master Builds after adding include for thread_utility.hpp in Makefile but should be tested to confirm everything works. --- urRobotSupport/rtdeSrc/Makefile | 1 + .../generated/ur_rtde/rtde_control_script.h | 232 ++++++++++++++++-- urRobotSupport/rtdeSrc/ur_rtde | 2 +- 3 files changed, 208 insertions(+), 27 deletions(-) diff --git a/urRobotSupport/rtdeSrc/Makefile b/urRobotSupport/rtdeSrc/Makefile index 99443eb..f0c2e25 100644 --- a/urRobotSupport/rtdeSrc/Makefile +++ b/urRobotSupport/rtdeSrc/Makefile @@ -49,6 +49,7 @@ INC += ur_rtde/rtde_io_interface_doc.h INC += ur_rtde/rtde_receive_interface.h INC += ur_rtde/rtde_receive_interface_doc.h INC += ur_rtde/rtde_utility.h +INC += ur_rtde/thread_utility.h INC += ur_rtde/script_client.h INC += urcl/default_log_handler.h INC += urcl/log.h diff --git a/urRobotSupport/rtdeSrc/generated/ur_rtde/rtde_control_script.h b/urRobotSupport/rtdeSrc/generated/ur_rtde/rtde_control_script.h index 8597f00..19ea3f4 100644 --- a/urRobotSupport/rtdeSrc/generated/ur_rtde/rtde_control_script.h +++ b/urRobotSupport/rtdeSrc/generated/ur_rtde/rtde_control_script.h @@ -51,7 +51,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " global contact_step_back = 0" + NEW_LINE + " global contact_thrd = 0" + NEW_LINE + " global internal_cmd = 0" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " def read_input_float_reg(register_index):" + NEW_LINE + " return read_input_float_register(register_index + reg_offset_float)" + NEW_LINE + " end" + NEW_LINE + @@ -78,12 +78,12 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " global async_op_id = 0 # is incremented each time a new async operation is started" + NEW_LINE + "" + NEW_LINE + " # Write async progress register" + NEW_LINE + -" # This function provides extended progress information in an async progress " + NEW_LINE + +" # This function provides extended progress information in an async progress" + NEW_LINE + " # status register. The following bits are used" + NEW_LINE + " #" + NEW_LINE + " # | Bit 31 | Bit 30 - 24 | Bit 23 | Bit 9 - 22 | Bit 15 | Bit 14 - 0 |" + NEW_LINE + " # +--------+-------------+--------+----------------+---------+------------+" + NEW_LINE + -" # | rsv | async_op_id | rsv | async_wr_count | running | progress | " + NEW_LINE + +" # | rsv | async_op_id | rsv | async_wr_count | running | progress |" + NEW_LINE + " #" + NEW_LINE + " # running: 1 - async op. running, 0 - async op. finished" + NEW_LINE + " # progress: progress of running async. operation" + NEW_LINE + @@ -115,7 +115,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " if value > 32767:" + NEW_LINE + " value = 32767" + NEW_LINE + " end" + NEW_LINE + -" reg_value = reg_value + value + 32768 # store the progress in the lower 16 bits " + NEW_LINE + +" reg_value = reg_value + value + 32768 # store the progress in the lower 16 bits" + NEW_LINE + " end" + NEW_LINE + " textmsg("+QUOTATION+"async_wr_count: "+QUOTATION+", async_wr_count)" + NEW_LINE + " textmsg("+QUOTATION+"async_op_id: "+QUOTATION+", async_op_id)" + NEW_LINE + @@ -125,15 +125,15 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " def signal_async_progress(value):" + NEW_LINE + " write_async_progress_register(value)" + NEW_LINE + " end" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " def signal_async_operation_started():" + NEW_LINE + " write_async_progress_register(0) # 0 indicates operation started" + NEW_LINE + " end" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " def signal_async_operation_finished():" + NEW_LINE + " write_async_progress_register(-1) # negative values indicate operation finished" + NEW_LINE + " end" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " def reset_async_progress():" + NEW_LINE + " signal_async_operation_finished()" + NEW_LINE + " end" + NEW_LINE + @@ -187,7 +187,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " textmsg("+QUOTATION+"stopping async movement - killing move_thrd"+QUOTATION+")" + NEW_LINE + " kill move_thrd" + NEW_LINE + " move_thrd = 0" + NEW_LINE + -" # If the move thread is killed, it cannot trigger the " + NEW_LINE + +" # If the move thread is killed, it cannot trigger the" + NEW_LINE + " # signal_async_operation_finished() signal - so we do it here" + NEW_LINE + " signal_async_operation_finished()" + NEW_LINE + " end" + NEW_LINE + @@ -371,7 +371,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " def get_pose_translation(pose):" + NEW_LINE + " return p[pose[0], pose[1], pose[2], 0, 0, 0]" + NEW_LINE + " end" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " # Returns a pose that contains only the rotation part of a given pose" + NEW_LINE + " def get_pose_rotation(pose):" + NEW_LINE + " return p[0, 0, 0, pose[3], pose[4], pose[5]]" + NEW_LINE + @@ -397,19 +397,19 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " # examples :" + NEW_LINE + " # speed_wrt_base([0.020, 0.020,0,0,0,0], plane_1)" + NEW_LINE + " # speedl(get_speed_wrt_base([0,0,0.02,0,0,1.57], get_actual_tcp_pose()),a=1,t=0.5,aRot=4))" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " #### input arguments" + NEW_LINE + " # tool_speed : [Tx, Ty, Tz, Rx, Ry, Rz] spatial vector list - Txyz [m/s]), Rxyz [rad/s]" + NEW_LINE + " # frame_wrt_base : pose" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " #### output arguments" + NEW_LINE + " # speed_wrt_base : [Tx, Ty, Tz, Rx, Ry, Rz] spatial vector list - Txyz [m/s]), Rxyz [rad/s]" + NEW_LINE + -" def get_speed_wrt_base(tool_speed, frame_wrt_base): " + NEW_LINE + +" def get_speed_wrt_base(tool_speed, frame_wrt_base):" + NEW_LINE + " # Translationnal speed vector calculus" + NEW_LINE + " T_wrt_frame=p[tool_speed[0],tool_speed[1],tool_speed[2],0,0,0]" + NEW_LINE + " T_wrt_base_raw= pose_trans (frame_wrt_base, T_wrt_frame)" + NEW_LINE + " T_wrt_base=pose_sub(T_wrt_base_raw,frame_wrt_base)" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " # Rotationnal speed vector calculus" + NEW_LINE + " R_wrt_frame=p[tool_speed[3],tool_speed[4],tool_speed[5],0,0,0]" + NEW_LINE + " R_wrt_frame_abs=norm([R_wrt_frame[0],R_wrt_frame[1],R_wrt_frame[2]])" + NEW_LINE + @@ -419,13 +419,13 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " else:" + NEW_LINE + " R_wrt_base=p[0,0,0,0,0,0]" + NEW_LINE + " end" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " # Concatenate T and R" + NEW_LINE + " speed_wrt_base_list=[T_wrt_base[0],T_wrt_base[1],T_wrt_base[2],R_wrt_base[0],R_wrt_base[1],R_wrt_base[2]]" + NEW_LINE + -" return speed_wrt_base_list " + NEW_LINE + +" return speed_wrt_base_list" + NEW_LINE + " end" + NEW_LINE + "" + NEW_LINE + -" " + NEW_LINE + +"" + NEW_LINE + " # The jog thread provides jogging functionality similar to the one you" + NEW_LINE + " # find in the teach pendant." + NEW_LINE + " thread jog_speed_thread():" + NEW_LINE + @@ -450,7 +450,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " speed_pose = jog_speed_pose" + NEW_LINE + " exit_critical" + NEW_LINE + " speed_wrt_base = get_speed_wrt_base(speed_pose, frame_wrt_base)" + NEW_LINE + -" speedl(speed_wrt_base, jog_acc)" + NEW_LINE + +" speedl(speed_wrt_base, jog_acc, t=0.01)" + NEW_LINE + " end" + NEW_LINE + " end" + NEW_LINE + "" + NEW_LINE + @@ -1000,10 +1000,9 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " enable_external_ft_sensor(enable, sensor_mass, sensor_measuring_offset, sensor_cog)" + NEW_LINE + " textmsg("+QUOTATION+"enable_external_ft_sensor done"+QUOTATION+")" + NEW_LINE + " elif cmd == 58:" + NEW_LINE + -" textmsg("+QUOTATION+"get_actual_tool_flange_pose"+QUOTATION+")" + NEW_LINE + +" # get_actual_tool_flange_pose" + NEW_LINE + " flange_pose = get_actual_tool_flange_pose()" + NEW_LINE + " q_to_output_float_registers(0, flange_pose)" + NEW_LINE + -" textmsg("+QUOTATION+"get_actual_tool_flange_pose done"+QUOTATION+")" + NEW_LINE + " elif cmd == 59:" + NEW_LINE + " textmsg("+QUOTATION+"set_gravity"+QUOTATION+")" + NEW_LINE + " gravity_direction = [0, 0, 0]" + NEW_LINE + @@ -1036,7 +1035,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin "$5.10|3.15 write_output_integer_reg(1, 0)" + NEW_LINE + "$5.10|3.15 end" + NEW_LINE + " textmsg("+QUOTATION+"get_inverse_kin_has_solution_args done"+QUOTATION+")" + NEW_LINE + -" elif cmd == 62:" + NEW_LINE + +" elif cmd == 62:" + NEW_LINE + " textmsg("+QUOTATION+"start_contact_detection"+QUOTATION+")" + NEW_LINE + " enter_critical" + NEW_LINE + " if contact_thrd != 0:" + NEW_LINE + @@ -1066,8 +1065,188 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " exit_critical" + NEW_LINE + " write_output_integer_reg(1, step_back)" + NEW_LINE + " textmsg("+QUOTATION+"read_contact_detection done"+QUOTATION+")" + NEW_LINE + -" elif cmd == 254: # internal command" + NEW_LINE + -" textmsg("+QUOTATION+"cmd == 254 - contact detected"+QUOTATION+") " + NEW_LINE + +" elif cmd == 65:" + NEW_LINE + +" textmsg("+QUOTATION+"set_target_payload"+QUOTATION+")" + NEW_LINE + +" mass = read_input_float_reg(0)" + NEW_LINE + +" cog_x = read_input_float_reg(1)" + NEW_LINE + +" cog_y = read_input_float_reg(2)" + NEW_LINE + +" cog_z = read_input_float_reg(3)" + NEW_LINE + +" cog = [cog_x, cog_y, cog_z]" + NEW_LINE + +" inertia = [0, 0, 0, 0, 0, 0]" + NEW_LINE + +" inertia[0] = read_input_float_reg(4)" + NEW_LINE + +" inertia[1] = read_input_float_reg(5)" + NEW_LINE + +" inertia[2] = read_input_float_reg(6)" + NEW_LINE + +" inertia[3] = read_input_float_reg(7)" + NEW_LINE + +" inertia[4] = read_input_float_reg(8)" + NEW_LINE + +" inertia[5] = read_input_float_reg(9)" + NEW_LINE + +"$5.10 if cog_x == 0 and cog_y == 0 and cog_z == 0:" + NEW_LINE + +"$5.10 set_target_payload(mass, get_target_payload_cog(), inertia)" + NEW_LINE + +"$5.10 else:" + NEW_LINE + +"$5.10 set_target_payload(mass, cog, inertia)" + NEW_LINE + +"$5.10 end" + NEW_LINE + +"$5.10 textmsg("+QUOTATION+"active payload:"+QUOTATION+")" + NEW_LINE + +"$5.10 textmsg(get_target_payload())" + NEW_LINE + +"$5.10 textmsg("+QUOTATION+"active payload inertia matrix"+QUOTATION+")" + NEW_LINE + +"$5.10 textmsg(get_target_payload_inertia())" + NEW_LINE + +" textmsg("+QUOTATION+"set_target_payload done"+QUOTATION+")" + NEW_LINE + +" elif cmd == 66:" + NEW_LINE + +" # direct_torque" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"$5.23 torque = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]" + NEW_LINE + +"$5.23 torque = q_from_input_float_registers(0)" + NEW_LINE + +"$5.23 friction_comp = True" + NEW_LINE + +"$5.23 friction_comp_val = read_input_integer_reg(1)" + NEW_LINE + +"$5.23 if friction_comp_val == 1:" + NEW_LINE + +"$5.23 friction_comp = True" + NEW_LINE + +"$5.23 elif friction_comp_val == 0:" + NEW_LINE + +"$5.23 friction_comp = False" + NEW_LINE + +"$5.23 end" + NEW_LINE + +"$5.23 direct_torque(torque, friction_comp)" + NEW_LINE + +" elif cmd == 67:" + NEW_LINE + +" # get_mass_matrix" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"$5.23 mass_matrix = get_mass_matrix()" + NEW_LINE + +"$5.23 # Use the lower range 0-23 for the first 24 values" + NEW_LINE + +"$5.23 write_output_float_reg(0, mass_matrix[0, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(1, mass_matrix[1, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(2, mass_matrix[2, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(3, mass_matrix[3, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(4, mass_matrix[4, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(5, mass_matrix[5, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(6, mass_matrix[0, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(7, mass_matrix[1, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(8, mass_matrix[2, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(9, mass_matrix[3, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(10, mass_matrix[4, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(11, mass_matrix[5, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(12, mass_matrix[0, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(13, mass_matrix[1, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(14, mass_matrix[2, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(15, mass_matrix[3, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(16, mass_matrix[4, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(17, mass_matrix[5, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(18, mass_matrix[0, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(19, mass_matrix[1, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(20, mass_matrix[2, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(21, mass_matrix[3, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(22, mass_matrix[4, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(23, mass_matrix[5, 3])" + NEW_LINE + +"$5.23 # Use 'upper part 36-47' of the upper range for the last values" + NEW_LINE + +"$5.23 write_output_float_reg(36, mass_matrix[0, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(37, mass_matrix[1, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(38, mass_matrix[2, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(39, mass_matrix[3, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(40, mass_matrix[4, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(41, mass_matrix[5, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(42, mass_matrix[0, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(43, mass_matrix[1, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(44, mass_matrix[2, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(45, mass_matrix[3, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(46, mass_matrix[4, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(47, mass_matrix[5, 5])" + NEW_LINE + +" elif cmd == 68:" + NEW_LINE + +" # get_coriolis_and_centrifugal_torques" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"" + NEW_LINE + +"$5.23 coriolis_and_centrifugal_torques = get_coriolis_and_centrifugal_torques()" + NEW_LINE + +"$5.23 # Write to registers 0-5" + NEW_LINE + +"$5.23 write_output_float_reg(0, coriolis_and_centrifugal_torques[0])" + NEW_LINE + +"$5.23 write_output_float_reg(1, coriolis_and_centrifugal_torques[1])" + NEW_LINE + +"$5.23 write_output_float_reg(2, coriolis_and_centrifugal_torques[2])" + NEW_LINE + +"$5.23 write_output_float_reg(3, coriolis_and_centrifugal_torques[3])" + NEW_LINE + +"$5.23 write_output_float_reg(4, coriolis_and_centrifugal_torques[4])" + NEW_LINE + +"$5.23 write_output_float_reg(5, coriolis_and_centrifugal_torques[5])" + NEW_LINE + +" elif cmd == 69:" + NEW_LINE + +" # get_target_joint_accelerations" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"$5.23 target_joint_accelerations = get_target_joint_accelerations()" + NEW_LINE + +"$5.23 q_to_output_float_registers(0, target_joint_accelerations)" + NEW_LINE + +" elif cmd == 70:" + NEW_LINE + +" # get_jacobian" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"$5.23 jacobian = get_jacobian()" + NEW_LINE + +"$5.23 # Use the lower range 0-23 for the first 24 values" + NEW_LINE + +"$5.23 write_output_float_reg(0, jacobian[0, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(1, jacobian[1, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(2, jacobian[2, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(3, jacobian[3, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(4, jacobian[4, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(5, jacobian[5, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(6, jacobian[0, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(7, jacobian[1, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(8, jacobian[2, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(9, jacobian[3, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(10, jacobian[4, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(11, jacobian[5, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(12, jacobian[0, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(13, jacobian[1, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(14, jacobian[2, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(15, jacobian[3, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(16, jacobian[4, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(17, jacobian[5, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(18, jacobian[0, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(19, jacobian[1, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(20, jacobian[2, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(21, jacobian[3, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(22, jacobian[4, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(23, jacobian[5, 3])" + NEW_LINE + +"$5.23 # Use 'upper part 36-47' of the upper range for the last values" + NEW_LINE + +"$5.23 write_output_float_reg(36, jacobian[0, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(37, jacobian[1, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(38, jacobian[2, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(39, jacobian[3, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(40, jacobian[4, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(41, jacobian[5, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(42, jacobian[0, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(43, jacobian[1, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(44, jacobian[2, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(45, jacobian[3, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(46, jacobian[4, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(47, jacobian[5, 5])" + NEW_LINE + +" elif cmd == 71:" + NEW_LINE + +" # get_jacobian_time_derivative" + NEW_LINE + +" dummy_op = 1" + NEW_LINE + +"$5.23 jacobian_time_derivative = get_jacobian_time_derivative()" + NEW_LINE + +"$5.23 # Use the lower range 0-23 for the first 24 values" + NEW_LINE + +"$5.23 write_output_float_reg(0, jacobian_time_derivative[0, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(1, jacobian_time_derivative[1, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(2, jacobian_time_derivative[2, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(3, jacobian_time_derivative[3, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(4, jacobian_time_derivative[4, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(5, jacobian_time_derivative[5, 0])" + NEW_LINE + +"$5.23 write_output_float_reg(6, jacobian_time_derivative[0, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(7, jacobian_time_derivative[1, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(8, jacobian_time_derivative[2, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(9, jacobian_time_derivative[3, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(10, jacobian_time_derivative[4, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(11, jacobian_time_derivative[5, 1])" + NEW_LINE + +"$5.23 write_output_float_reg(12, jacobian_time_derivative[0, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(13, jacobian_time_derivative[1, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(14, jacobian_time_derivative[2, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(15, jacobian_time_derivative[3, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(16, jacobian_time_derivative[4, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(17, jacobian_time_derivative[5, 2])" + NEW_LINE + +"$5.23 write_output_float_reg(18, jacobian_time_derivative[0, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(19, jacobian_time_derivative[1, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(20, jacobian_time_derivative[2, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(21, jacobian_time_derivative[3, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(22, jacobian_time_derivative[4, 3])" + NEW_LINE + +"$5.23 write_output_float_reg(23, jacobian_time_derivative[5, 3])" + NEW_LINE + +"$5.23 # Use 'upper part 36-47' of the upper range for the last values" + NEW_LINE + +"$5.23 write_output_float_reg(36, jacobian_time_derivative[0, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(37, jacobian_time_derivative[1, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(38, jacobian_time_derivative[2, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(39, jacobian_time_derivative[3, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(40, jacobian_time_derivative[4, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(41, jacobian_time_derivative[5, 4])" + NEW_LINE + +"$5.23 write_output_float_reg(42, jacobian_time_derivative[0, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(43, jacobian_time_derivative[1, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(44, jacobian_time_derivative[2, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(45, jacobian_time_derivative[3, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(46, jacobian_time_derivative[4, 5])" + NEW_LINE + +"$5.23 write_output_float_reg(47, jacobian_time_derivative[5, 5])" + NEW_LINE + +" elif cmd == 254: # internal command" + NEW_LINE + +" textmsg("+QUOTATION+"cmd == 254 - contact detected"+QUOTATION+")" + NEW_LINE + "$5.4 stop_async_move()" + NEW_LINE + "$5.4 # Get q for when the contact was first seen" + NEW_LINE + "$5.4 q = get_actual_joint_positions_history(contact_step_back)" + NEW_LINE + @@ -1094,7 +1273,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " ###################################" + NEW_LINE + " # RTDE Control script - Main loop #" + NEW_LINE + " ###################################" + NEW_LINE + -" textmsg("+QUOTATION+"RTDE Control Script Loaded (06.06.2023-13:52)"+QUOTATION+")" + NEW_LINE + +" textmsg("+QUOTATION+"RTDE Control Script Loaded (14.02.2024-12:23)"+QUOTATION+")" + NEW_LINE + "" + NEW_LINE + " # Initialize gain and damping for force mode to a more stable default" + NEW_LINE + "$5.0 force_mode_set_gain_scaling(0.5)" + NEW_LINE + @@ -1107,7 +1286,7 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin "" + NEW_LINE + " while keep_running:" + NEW_LINE + " cmd = rtde_cmd()" + NEW_LINE + -" if cmd == 24 or cmd == 11 or cmd == 9 or cmd == 10 or cmd == 6 or cmd == 25 or cmd == 26 or cmd == 27 or cmd == 38 or cmd == 58:" + NEW_LINE + +" if cmd == 24 or cmd == 11 or cmd == 9 or cmd == 10 or cmd == 6 or cmd == 25 or cmd == 26 or cmd == 27 or cmd == 38 or cmd == 58 or cmd == 66 or cmd == 67 or cmd == 68 or cmd == 69 or cmd == 70 or cmd == 71:" + NEW_LINE + " # for realtime commands simply process and signal ready." + NEW_LINE + " keep_running = process_cmd(cmd)" + NEW_LINE + " signal_ready()" + NEW_LINE + @@ -1123,8 +1302,9 @@ const std::string NEW_LINE= "\n"; const std::string QUOTATION = "\""; std::strin " executing_cmd = True" + NEW_LINE + " end" + NEW_LINE + " end" + NEW_LINE + -"" + NEW_LINE + -" sync()" + NEW_LINE + +" if cmd != 66:" + NEW_LINE + +" sync()" + NEW_LINE + +" end" + NEW_LINE + " end" + NEW_LINE + " textmsg("+QUOTATION+"RTDE Control Script Terminated"+QUOTATION+")" + NEW_LINE + "# NODE_CONTROL_LOOP_ENDS" + NEW_LINE + diff --git a/urRobotSupport/rtdeSrc/ur_rtde b/urRobotSupport/rtdeSrc/ur_rtde index cb521a5..68ac4e1 160000 --- a/urRobotSupport/rtdeSrc/ur_rtde +++ b/urRobotSupport/rtdeSrc/ur_rtde @@ -1 +1 @@ -Subproject commit cb521a5c69b24ceb0a609c038421c543dea2af2b +Subproject commit 68ac4e18f357f8e9361bfc5eef344acd9aa241be From 66d32e2bc4be2f23e2e4ade879764e8571cc75b3 Mon Sep 17 00:00:00 2001 From: Nick Marks Date: Tue, 16 Jun 2026 10:45:30 -0500 Subject: [PATCH 10/13] try only linking boost_system and boost_thread for linux --- urRobotApp/op/adl/phoebus_convert.sh | 1 + urRobotApp/op/adl/stylesheet.qss | 92 ++++++++++++++++++++++++++++ urRobotApp/src/Makefile | 12 ++-- 3 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 urRobotApp/op/adl/phoebus_convert.sh create mode 100644 urRobotApp/op/adl/stylesheet.qss diff --git a/urRobotApp/op/adl/phoebus_convert.sh b/urRobotApp/op/adl/phoebus_convert.sh new file mode 100644 index 0000000..03f757a --- /dev/null +++ b/urRobotApp/op/adl/phoebus_convert.sh @@ -0,0 +1 @@ +phoebus -main org.csstudio.display.converter.medm.Converter diff --git a/urRobotApp/op/adl/stylesheet.qss b/urRobotApp/op/adl/stylesheet.qss new file mode 100644 index 0000000..b7a2c47 --- /dev/null +++ b/urRobotApp/op/adl/stylesheet.qss @@ -0,0 +1,92 @@ +caTable { + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + + caLabel { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +/* when font specified, no font sizing is done any more, font: 10pt; is not bad */ +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + + +caChoice > QPushButton { +text-align: left; +background-color: lightgray; +border: 3px gray; +} + +caChoice > QPushButton:pressed { +background-color: lightgray; +border: 3px gray; +} + +caChoice > QPushButton:checked { +background-color: #EEEEEE; +border: 3px gray; +} + +caChoice > QPushButton:default { +background-color: lightgray; +border: 3px gray; +} + +caMenu{ + background: lightyellow; +} + + diff --git a/urRobotApp/src/Makefile b/urRobotApp/src/Makefile index 51965fc..20a62b6 100644 --- a/urRobotApp/src/Makefile +++ b/urRobotApp/src/Makefile @@ -30,23 +30,23 @@ urRobot_SRCS += gripper_driver.cpp urRobot_LIBS += asyn urRobot_LIBS += rtde urRobot_LIBS += $(EPICS_BASE_IOC_LIBS) -urRobot_SYS_LIBS += boost_system -urRobot_SYS_LIBS += boost_thread +urRobot_SYS_LIBS_Linux += boost_system +urRobot_SYS_LIBS_Linux += boost_thread # Tool for calibrating the Robotiq Gripper PROD += calibrate_gripper calibrate_gripper_SRCS += calibrate_gripper.cpp calibrate_gripper_LIBS += rtde -calibrate_gripper_SYS_LIBS += boost_system -calibrate_gripper_SYS_LIBS += boost_thread +calibrate_gripper_SYS_LIBS_Linux += boost_system +calibrate_gripper_SYS_LIBS_Linux += boost_thread calibrate_gripper_SYS_LIBS += pthread # Program for testing ur_rtde by itself without asyn TESTPROD += urtest urtest_SRCS += urtest.cpp urtest_LIBS += rtde -urtest_SYS_LIBS += boost_system -urtest_SYS_LIBS += boost_thread +urtest_SYS_LIBS_Linux += boost_system +urtest_SYS_LIBS_Linux += boost_thread urtest_SYS_LIBS += pthread endif From f2872331c798932fc0c7df90d32de4b66ec9e0fe Mon Sep 17 00:00:00 2001 From: Nick Marks Date: Tue, 16 Jun 2026 10:55:08 -0500 Subject: [PATCH 11/13] forgot to add _Linux in ur_rtde build: --- urRobotSupport/rtdeSrc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/urRobotSupport/rtdeSrc/Makefile b/urRobotSupport/rtdeSrc/Makefile index f0c2e25..4d60558 100644 --- a/urRobotSupport/rtdeSrc/Makefile +++ b/urRobotSupport/rtdeSrc/Makefile @@ -32,8 +32,8 @@ rtde_SRCS_Darwin += tcp_server.cpp rtde_SRCS_Darwin += log.cpp rtde_SRCS_Darwin += default_log_handler.cpp -rtde_SYS_LIBS += boost_system -rtde_SYS_LIBS += boost_thread +rtde_SYS_LIBS_Linux += boost_system +rtde_SYS_LIBS_Linux += boost_thread INC += ur_rtde/dashboard_client.h INC += ur_rtde/dashboard_enums.h From f40210a48fa3026d84c6253c39ac76b6ab869c9e Mon Sep 17 00:00:00 2001 From: Nick Marks Date: Tue, 16 Jun 2026 11:06:50 -0500 Subject: [PATCH 12/13] try boost_thread on all platforms --- urRobotApp/src/Makefile | 6 +++--- urRobotSupport/rtdeSrc/Makefile | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/urRobotApp/src/Makefile b/urRobotApp/src/Makefile index 20a62b6..5a53a5e 100644 --- a/urRobotApp/src/Makefile +++ b/urRobotApp/src/Makefile @@ -31,14 +31,14 @@ urRobot_LIBS += asyn urRobot_LIBS += rtde urRobot_LIBS += $(EPICS_BASE_IOC_LIBS) urRobot_SYS_LIBS_Linux += boost_system -urRobot_SYS_LIBS_Linux += boost_thread +urRobot_SYS_LIBS += boost_thread # Tool for calibrating the Robotiq Gripper PROD += calibrate_gripper calibrate_gripper_SRCS += calibrate_gripper.cpp calibrate_gripper_LIBS += rtde calibrate_gripper_SYS_LIBS_Linux += boost_system -calibrate_gripper_SYS_LIBS_Linux += boost_thread +calibrate_gripper_SYS_LIBS += boost_thread calibrate_gripper_SYS_LIBS += pthread # Program for testing ur_rtde by itself without asyn @@ -46,7 +46,7 @@ TESTPROD += urtest urtest_SRCS += urtest.cpp urtest_LIBS += rtde urtest_SYS_LIBS_Linux += boost_system -urtest_SYS_LIBS_Linux += boost_thread +urtest_SYS_LIBS += boost_thread urtest_SYS_LIBS += pthread endif diff --git a/urRobotSupport/rtdeSrc/Makefile b/urRobotSupport/rtdeSrc/Makefile index 4d60558..ac73a9a 100644 --- a/urRobotSupport/rtdeSrc/Makefile +++ b/urRobotSupport/rtdeSrc/Makefile @@ -33,7 +33,7 @@ rtde_SRCS_Darwin += log.cpp rtde_SRCS_Darwin += default_log_handler.cpp rtde_SYS_LIBS_Linux += boost_system -rtde_SYS_LIBS_Linux += boost_thread +rtde_SYS_LIBS += boost_thread INC += ur_rtde/dashboard_client.h INC += ur_rtde/dashboard_enums.h From e2d294bb47ea5ab8b4a71b2ae71765fec049132f Mon Sep 17 00:00:00 2001 From: Nick Marks Date: Tue, 16 Jun 2026 11:47:13 -0500 Subject: [PATCH 13/13] should be able to remove linking boost_system entirely now --- urRobotApp/src/Makefile | 3 --- urRobotSupport/rtdeSrc/Makefile | 1 - 2 files changed, 4 deletions(-) diff --git a/urRobotApp/src/Makefile b/urRobotApp/src/Makefile index 5a53a5e..06386a0 100644 --- a/urRobotApp/src/Makefile +++ b/urRobotApp/src/Makefile @@ -30,14 +30,12 @@ urRobot_SRCS += gripper_driver.cpp urRobot_LIBS += asyn urRobot_LIBS += rtde urRobot_LIBS += $(EPICS_BASE_IOC_LIBS) -urRobot_SYS_LIBS_Linux += boost_system urRobot_SYS_LIBS += boost_thread # Tool for calibrating the Robotiq Gripper PROD += calibrate_gripper calibrate_gripper_SRCS += calibrate_gripper.cpp calibrate_gripper_LIBS += rtde -calibrate_gripper_SYS_LIBS_Linux += boost_system calibrate_gripper_SYS_LIBS += boost_thread calibrate_gripper_SYS_LIBS += pthread @@ -45,7 +43,6 @@ calibrate_gripper_SYS_LIBS += pthread TESTPROD += urtest urtest_SRCS += urtest.cpp urtest_LIBS += rtde -urtest_SYS_LIBS_Linux += boost_system urtest_SYS_LIBS += boost_thread urtest_SYS_LIBS += pthread diff --git a/urRobotSupport/rtdeSrc/Makefile b/urRobotSupport/rtdeSrc/Makefile index ac73a9a..c738d29 100644 --- a/urRobotSupport/rtdeSrc/Makefile +++ b/urRobotSupport/rtdeSrc/Makefile @@ -32,7 +32,6 @@ rtde_SRCS_Darwin += tcp_server.cpp rtde_SRCS_Darwin += log.cpp rtde_SRCS_Darwin += default_log_handler.cpp -rtde_SYS_LIBS_Linux += boost_system rtde_SYS_LIBS += boost_thread INC += ur_rtde/dashboard_client.h