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
16 changes: 0 additions & 16 deletions .github/actions/build_urcap/Dockerfile

This file was deleted.

6 changes: 0 additions & 6 deletions .github/actions/build_urcap/action.yml

This file was deleted.

23 changes: 0 additions & 23 deletions .github/actions/build_urcap/entrypoint.sh

This file was deleted.

164 changes: 84 additions & 80 deletions .github/dockerursim/.vol/default.installation
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Installation directory="/ursim/programs" fileName="default" showSpeedSliderOnRunTab="false">
<Installation INSTALLATION-VERSION="2" INSTALLATION-LAST-SAVED-VERSION="2" directory="/ursim/programs" fileName="default" showSpeedSliderOnRunTab="false">
<IOs>
<DigitalInputNames value=", , , , , , , "/>
<DigitalOutputNames value=", , , , , , , "/>
Expand All @@ -19,8 +19,7 @@
<ToolDigitalOutputActions value="NONE, NONE"/>
<AnalogOutputActions value="NONE, NONE"/>
<ConfigurableOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
<euromapOutputModificationChoice value="1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1"/>
<euromapOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
<ModbusUnits/>
<GeneralPurposeBooleanRegisterInputNames value=", , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , "/>
<GeneralPurposeBooleanRegisterOutputNames value=", , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , "/>
<GeneralPurposeIntRegisterInputNames value=", , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , "/>
Expand All @@ -31,23 +30,11 @@
<GeneralPurposeBooleanRegisterOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
<GeneralPurposeIntRegisterOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
<GeneralPurposeFloatRegisterOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
<ModbusUnits/>
<euromapOutputModificationChoice value="1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1"/>
<euromapOutputActions value="NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE"/>
</IOs>
<Version projectName="URSoftware" major="5" minor="11" bugfix="1" buildNumber="108318" buildDate="Jun 18 2021, 12:00:00"/>
<LastSavedInVersion reference="../Version"/>
<SmoothTransitionSettings transitionHardness="SOFT"/>
<ResourceControlSettings/>
<ContinuousPulse/>
<PayloadSettings>
<Payload name="Payload" mass="0.0" defaultPayload="true" centerOfGravity="0.0, 0.0, 0.0" inertiaParameters="0.0, 0.0, 0.0, 0.0, 0.0, 0.0" customInertiaEnabled="false"/>
</PayloadSettings>
<SafeHomeSettings enabled="true" position="0.0, -1.5707963267948966, 0.0, -1.5707963267948966, 0.0, 0.0"/>
<TCPSettings activePose="TCP">
<availablePoses>
<tcp id="2e4b410d-3d81-4c59-937c-087544210280" name="TCP" offset="0.0, 0.0, 0.0, 0.0, 0.0, 0.0"/>
</availablePoses>
</TCPSettings>
<DefaultProgramSettings autoLoad="false"/>
<Version major="5" minor="11" bugfix="1"/>
<LastSavedInVersion major="5" minor="24" bugfix="0"/>
<Features>
<CameraView>
<worldTransform class="WorldTransform">
Expand All @@ -61,8 +48,51 @@
<ToolView showAxes="true" joggable="true" isVariable="false" id="3a9e24b6-0faf-4e81-8344-6af13d2e6405"/>
</ToolView>
</Features>
<ToolCommSettings enabled="false" toolAnalogInput2="VOLTAGE" toolAnalogInput3="VOLTAGE" baudRate="BAUD_115200" parity="NONE" stopBits="ONE" rxIdleChars="1.5" txIdleChars="3.5" toolOutputMode="OUTPUT" toolDigitalOutput0="SINKING" toolDigitalOutput1="SINKING" toolOutputVoltage="ZERO"/>
<SafetySettings>
[SafetyIOConfiguration Inputs]
emergencyStopInputA = 255
emergencyStopInputB = 255
reducedModeInputA = 255
reducedModeInputB = 255
safeguardStopResetInputA = 0
safeguardStopResetInputB = 1
threePositionEnablingInputA = 255
threePositionEnablingInputB = 255
operationalModeInputA = 255
operationalModeInputB = 255
automaticModeSafeguardStopInputA = 255
automaticModeSafeguardStopInputB = 255
automaticModeSafeguardStopResetInputA = 255
automaticModeSafeguardStopResetInputB = 255
freedriveOnRobotInputA = 255
freedriveOnRobotInputB = 255

[SafetyIOConfiguration Outputs]
systemEmergencyStopOutputA = 255
systemEmergencyStopOutputB = 255
robotMovingOutputA = 255
robotMovingOutputB = 255
robotNotStoppingOutputA = 255
robotNotStoppingOutputB = 255
reducedModeOutputA = 255
reducedModeOutputB = 255
notReducedModeOutputA = 255
notReducedModeOutputB = 255
safeHomeOutputA = 255
safeHomeOutputB = 255
configOut0and1_OSSD = 0
configOut2and3_OSSD = 0
configOut4and5_OSSD = 0
configOut6and7_OSSD = 0

[SafetySetup]
verified = true
withPositionLimits = [true, true, true, true, true, true]

[Safety Checksum]
version = 5.5
crc = 1475618907

[SafetyLimits BoundaryPlane0]
name = Safety plane 0
displacement = 0.0
Expand Down Expand Up @@ -132,20 +162,16 @@ tcpOrientationVector = [0.0, 0.0, 1.0]
maximumTcpOrientationDeviation = 3.159045946109736
mode = DISABLED

[WorkpieceConfiguration]
toolSpheres = [[0.0, 0.0, 0.0, 0.0]]
toolSphereNames = [Tool Flange]
toolSphereIDs = [null]
toolDirectionInclination = 0.0
toolDirectionAzimuth = 0.0
[MiscConfiguration]
teach_pendant = 1
euromap67 = 0

[ThreePositionEnabling]
useTP3PE = 0
allowManualHighSpeed = 1

[MiscConfiguration]
teach_pendant = 1
euromap67 = 0
[SafeHome]
safeHomePosition = [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0]

[SafetyLimits Normal Values]
maxTcpSpeed = 1.5
Expand Down Expand Up @@ -181,62 +207,40 @@ maxJointPosition = [0.05235987799999986, 0.05235987799999986, 0.0523598779999998
minJointRevolutions = [-2, -2, -2, -2, -2, -2]
maxJointRevolutions = [1, 1, 1, 1, 1, 1]

[SafetySetup]
withPositionLimits = [true, true, true, true, true, true]
verified = true

[Safety Checksum]
version = 5.5
crc = 1475618907

[SafeHome]
safeHomePosition = [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0]

[SafetyIOConfiguration Inputs]
emergencyStopInputA = 255
emergencyStopInputB = 255
reducedModeInputA = 255
reducedModeInputB = 255
safeguardStopResetInputA = 0
safeguardStopResetInputB = 1
threePositionEnablingInputA = 255
threePositionEnablingInputB = 255
operationalModeInputA = 255
operationalModeInputB = 255
automaticModeSafeguardStopInputA = 255
automaticModeSafeguardStopInputB = 255
automaticModeSafeguardStopResetInputA = 255
automaticModeSafeguardStopResetInputB = 255

[SafetyIOConfiguration Outputs]
systemEmergencyStopOutputA = 255
systemEmergencyStopOutputB = 255
robotMovingOutputA = 255
robotMovingOutputB = 255
robotNotStoppingOutputA = 255
robotNotStoppingOutputB = 255
reducedModeOutputA = 255
reducedModeOutputB = 255
notReducedModeOutputA = 255
notReducedModeOutputB = 255
safeHomeOutputA = 255
safeHomeOutputB = 255
configOut0and1_OSSD = 0
configOut2and3_OSSD = 0
configOut4and5_OSSD = 0
configOut6and7_OSSD = 0
[WorkpieceConfiguration]
toolSpheres = [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]
toolSphereNames = [Tool Flange, DISABLED, DISABLED]
toolSphereIDs = [null, 05cb2fa6-f92a-43e7-9f8f-268f9eb48afd, 05cb2fa6-f92a-43e7-9f8f-268f9eb48afd]
toolDirectionInclination = 0.0
toolDirectionAzimuth = 0.0

</SafetySettings>
<ToolWrenchConfiguration forceLimit="6.0" forceLimitEnabled="false" momentLimit="0.3" momentLimitEnabled="false"/>
<TCPSettings activePose="TCP">
<availablePoses>
<tcp id="2e4b410d-3d81-4c59-937c-087544210280" name="TCP" offset="0.0, 0.0, 0.0, 0.0, 0.0, 0.0"/>
</availablePoses>
</TCPSettings>
<ToolCommSettings enabled="false" toolAnalogInput2="VOLTAGE" toolAnalogInput3="VOLTAGE" baudRate="BAUD_115200" parity="NONE" stopBits="ONE" rxIdleChars="1.5" txIdleChars="3.5" toolOutputMode="OUTPUT" toolDigitalOutput0="SINKING" toolDigitalOutput1="SINKING" toolOutputVoltage="ZERO"/>
<EthernetIP enabled="false" programAction="IGNORE"/>
<DefaultProgramSettings autoLoad="false"/>
<SafeHomeSettings enabled="true" position="0.0, -1.5707963267948966, 0.0, -1.5707963267948966, 0.0, 0.0"/>
<Profinet enabled="false" PLCIO="IGNORE" PLCREG1="IGNORE" PLCREG2="IGNORE"/>
<ContinuousPulse/>
<MotionSettingsConfiguration motionVersion="UNDEFINED"/>
<ResourceControlSettings/>
<PayloadSettings>
<Payload name="Payload" mass="0.0" defaultPayload="true" centerOfGravity="0.0, 0.0, 0.0" inertiaParameters="0.0, 0.0, 0.0, 0.0, 0.0, 0.0" customInertiaEnabled="false"/>
</PayloadSettings>
<SmoothTransitionSettings transitionHardness="SOFT"/>
<Contributions>
<URCaps>
<Contributed ownerId="com.ur.urcap.conveyortracking" id="ConveyorTracking" installationContributionTitle="com.ur.urcap.conveyortracking" vendor="Universal Robots" name="Conveyor Tracking"/>
<Contributed ownerId="com.ur.urcap.ethernetip" id="EthernetIP" installationContributionTitle="com.ur.urcap.ethernetip" vendor="Universal Robots" name="Ethernet/IP"/>
<Contributed ownerId="com.ur.urcap.profinet" id="com.ur.urcap.profinet" installationContributionTitle="com.ur.urcap.profinet" vendor="Universal Robots" name="Profinet"/>
<Contributed ownerId="com.fzi.externalcontrol" id="com.fzi.externalcontrol.impl.ExternalControlInstallationNodeService" installationContributionTitle="com.fzi.externalcontrol" vendor="FZI Research Center for Information Technology" name="External Control">
<data key="host_ip" value="127.0.0.1"/>
<data key="name" value="127.0.0.1"/>
<Contributed ownerId="com.ur.urcap.conveyortracking" id="ConveyorTracking" installationContributionTitle="Conveyor Tracking" vendor="Universal Robots" name="Conveyor Tracking"/>
<Contributed ownerId="com.fzi.externalcontrol" id="com.fzi.externalcontrol.impl.ExternalControlInstallationNodeService" installationContributionTitle="External Control" vendor="FZI Research Center for Information Technology" name="External Control">
<data key="name" value="192.168.56.1"/>
<data key="host_ip" value="192.168.56.1"/>
</Contributed>
<Contributed ownerId="com.ur.polyscope.screwdriving.polyscope-screwdriving-impl" id="com.ur.polyscope.screwdriving.installation.ScrewdrivingInstallationNodeService" installationContributionTitle="com.ur.polyscope.screwdriving.polyscope-screwdriving-impl" vendor="Universal Robots" name="polyscope-screwdriving-impl"/>
<Contributed ownerId="com.ur.polyscope.screwdriving.polyscope-screwdriving-impl" id="com.ur.polyscope.screwdriving.installation.ScrewdrivingInstallationNodeService" installationContributionTitle="Screwdriving" vendor="Universal Robots" name="polyscope-screwdriving-impl"/>
</URCaps>
</Contributions>
</Installation>
3 changes: 1 addition & 2 deletions .github/dockerursim/.vol/default.variables
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
#
#Fri Jun 18 10:27:46 BST 2021
<InstallationVariables timestamp="Mon Dec 01 17:44:59 CET 2025"/>
16 changes: 0 additions & 16 deletions .github/dockerursim/build_and_run_docker_ursim.sh

This file was deleted.

9 changes: 5 additions & 4 deletions .github/helpers/wait_for_dashboard_server.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#!/bin/bash

netcat -z 127.0.0.1 29999
while [ $? -eq 1 ]
expected="Connected: Universal Robots Dashboard Server
Disconnected"
response=$(echo "quit" | netcat -q 1 127.0.0.1 29999)
while [ "$response" != "$expected" ]
do
echo "Dashboard server not accepting connections..."
sleep 3
netcat -z 127.0.0.1 29999
response=$(echo "quit" | netcat -q 1 127.0.0.1 29999)
done
echo "Dashboard server connections are possible."
sleep 5
53 changes: 45 additions & 8 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,33 +1,70 @@
name: Build URCap
on: [push, pull_request]
on:
workflow_dispatch:
pull_request:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
SDK_VERSION: [1.6.1, 1.7.0, 1.8.0, 1.9.0]
SDK_VERSION:
- 1.11.0
- 1.12.0
- 1.13.0
- 1.14.0

steps:
- uses: actions/checkout@v1
- uses: ./.github/actions/build_urcap
- uses: actions/checkout@v4
- run: |
SDK_MAJOR=$(echo ${SDK_VERSION} | awk -F. '{print $1}')
SDK_MINOR=$(echo ${SDK_VERSION} | awk -F. '{print $2}')
SDK_BUILD=$(echo ${SDK_VERSION} | awk -F. '{print $3}')
sudo apt-get update && sudo apt-get install -y openjdk-8-jdk maven dialog sshpass unzip curl
download_folder=$(mktemp -d)
pushd ${download_folder}
curl -o sdk-${SDK_VERSION}.zip https://s3-eu-west-1.amazonaws.com/urplus-developer-site/sdk/sdk-${SDK_VERSION}.zip
mkdir sdk
unzip -q sdk-${SDK_VERSION}.zip -d sdk
if [ "$SDK_MAJOR" -eq 1 ] && [ "$SDK_MINOR" -eq 10 ]; then
cd sdk/URCap_SDK-${SDK_VERSION}
else
cd sdk
fi
./install.sh
popd
mvn install
env:
SDK_VERSION: ${{ matrix.SDK_VERSION }}
- name: Run URSim
- run: docker network create --subnet=192.168.56.0/24 ursim_net
- name: start ursim
run: |
.github/dockerursim/build_and_run_docker_ursim.sh
docker run --rm -d \
-p 29999:29999 \
-p 30001-30004:30001-30004 \
-v ${PROGRAM_FOLDER}:/ursim/programs \
-v ${URCAPS_FOLDER}:/urcaps \
--net ursim_net --ip 192.168.56.101 \
--name ursim \
universalrobots/ursim_e-series:latest
env:
PROGRAM_FOLDER: ./.github/dockerursim/.vol
URCAPS_FOLDER: ./target
- name: Install netcat
run: |
sudo apt-get update && sudo apt-get install -y netcat
sudo apt-get install -y netcat-openbsd
- name: Wait for dashboard client
run: |
./.github/helpers/wait_for_dashboard_server.sh
- name: Run test
run: |
python3 tests/test_urcap.py
- name: Upload urcap_artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
path: target
name: external_control_sdk-${{ matrix.SDK_VERSION }}.urcap
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
Expand Down