UR.RTDE 1.6.3.10

dotnet add package UR.RTDE --version 1.6.3.10
                    
NuGet\Install-Package UR.RTDE -Version 1.6.3.10
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="UR.RTDE" Version="1.6.3.10" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="UR.RTDE" Version="1.6.3.10" />
                    
Directory.Packages.props
<PackageReference Include="UR.RTDE" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add UR.RTDE --version 1.6.3.10
                    
#r "nuget: UR.RTDE, 1.6.3.10"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package UR.RTDE@1.6.3.10
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=UR.RTDE&version=1.6.3.10
                    
Install as a Cake Addin
#tool nuget:?package=UR.RTDE&version=1.6.3.10
                    
Install as a Cake Tool

UR.RTDE - C# Native Wrapper for Universal Robots

License: MIT .NET Platform Build NuGet

Native C# wrapper for Universal Robots RTDE using a C++ P/Invoke facade. No Python dependency; NuGet package contains managed assemblies and native binaries. Based on ur_rtde 1.6.3 (pinned commit 68ac4e1).

AI-Built & Liability Disclaimer

  • Some content was generated with AI assistance and reviewed by the maintainer.
  • Provided AS IS without warranty; see LICENSE.
  • User is responsible for safe deployment and compliance with relevant safety procedures; validate in simulation (e.g., URSim) before use.
  • Not affiliated with Universal Robots A/S or SDU Robotics; trademarks belong to their owners.

Target Features

Core Capabilities (v1.6.3.9)

  • Native C++ P/Invoke; sustained high-frequency streaming.
  • No external dependencies; native libraries included in NuGet (win-x64 DLLs, osx-arm64 dylibs).
  • Supports Rhino 7 (.NET 4.8) and Rhino 8 (.NET 8).
  • Windows x64 and macOS (osx-arm64, osx-x64 for Rosetta/Intel) native runtimes included in NuGet; macOS hardened for Rhino 8 in-process loading (v1.6.3.9+).

API Coverage (70+ methods)

  • Movement: MoveJ/L, SpeedJ/L, ServoJ/C/L, stop modes.
  • Force: ForceMode, ZeroFtSensor, damping/gain controls.
  • Jog/Teach: JogStart/Stop, TeachMode, freedrive.
  • Kinematics: IK, FK, solution checking.
  • Data: position, velocity, force, temperature, current, analog I/O.
  • I/O: digital/analog outputs, speed slider.
  • Safety: protective/emergency stop, safety status.
  • Connection/status helpers.

Status & Coverage

  • Validated on URSim e-Series 5.23.0; 22/22 core and 6/6 advanced tests passing (MoveJ/L, ServoJ/L, SpeedJ/L, ForceMode, Jog, TeachMode, protective stop, extended receive data).
  • Native P/Invoke path with Robotiq fast-path register bridge; sustained high-frequency streaming confirmed in URSim.
  • Focus areas: movement, kinematics, safety, receive data, digital/analog I/O, Robotiq (native, URScript, RTDE bridge).
  • macOS Rhino 8: package v1.6.3.9+ contains the thread-safe native bootstrap and a single hidden-symbol osx-arm64 C facade dylib used to avoid Rhino Boost collisions. After updating a Grasshopper plugin, remove stale librtde*.dylib/Boost dylibs from the deploy folder, then fully quit and restart Rhino before testing Connect.
  • Pending: dashboard/script client additions, extended receive extras, and end-to-end Rhino 8 Connect confirmation on the target macOS machine; see AGENTS.md.

Robotiq Gripper Support (URCap)

Requires Robotiq URCap on the controller.

  • Native driver (port 63352): RobotiqGripperNative wraps ur_rtde::RobotiqGripper.
  • URScript client (port 30002): RobotiqGripper issues rq_* calls.
  • RTDE fast path (preferred): RobotiqGripperRtde uses RTDE registers; installs a one-time URScript bridge.

Default register mapping: input_int[0] command, input_int[1] value, output_int[0] status, output_int[1] position.


Package Installation

From Local Build

dotnet add package UR.RTDE --source C:\path\to\UR.RTDE\nupkgs

From NuGet.org

dotnet add package UR.RTDE

Native libraries copy automatically to the output folder (runtimes/{rid}/native/).


URSim via Docker

This project is validated against URSim e-Series running in Docker. For local development and testing, this is the recommended setup.

1. Install Docker Desktop

Install Docker Desktop for Windows or macOS and make sure docker works from your terminal.

From this repository root:

docker compose -f docker/ursim/docker-compose.yml up -d

See docker/ursim/README.md for port list, optional External Control image, and troubleshooting.

Published ports (bound to 127.0.0.1 on the host):

  • 6080: browser-based VNC UI
  • 5900: VNC client
  • 29999: dashboard server
  • 3000130004: robot interfaces (30003 = RTDE control, 30004 = RTDE receive)
  • 30002: URScript client
  • 50002: External Control URCap (mapped; service may be inactive until URCap is installed)

Verify RTDE control is reachable (required for RTDEControl / MoveJ):

nc -zv 127.0.0.1 30003
nc -zv 127.0.0.1 30004

3. Open the simulator UI

Open http://127.0.0.1:6080/vnc.html?host=localhost&port=6080.

Inside URSim:

  • Power on the robot
  • Release brakes
  • Clear any startup or safety dialogs before running tests or motion commands

4. Connect from UR.RTDE

Use 127.0.0.1 or localhost when URSim is running with the port mapping above.

# macOS / Linux
nc -zv 127.0.0.1 30003
nc -zv 127.0.0.1 30004
# Windows
Test-NetConnection 127.0.0.1 -Port 30003
Test-NetConnection 127.0.0.1 -Port 30004

Notes:

  • For a real robot, replace 127.0.0.1 with the robot IP on your network.
  • Receive-only on port 30004 is not enough for motion: RTDEControl needs 30003 published to the host.
  • Optional External Control URCap: docker compose -f docker/ursim/docker-compose.yml -f docker/ursim/docker-compose.external-control.yml up -d --build

Quick Start

using UR.RTDE;

// Use "localhost" for URSim in Docker, or the robot IP for hardware.
using var control = new RTDEControl("localhost");
using var receive = new RTDEReceive("localhost");

// Move robot
double[] homeQ = { 0, -1.57, 1.57, -1.57, -1.57, 0 };
control.MoveJ(homeQ, speed: 1.05, acceleration: 1.4);

// Read state
double[] q = receive.GetActualQ();
Console.WriteLine($"Joint 0: {q[0]:F4} rad");

Building from Source

Build is verified on Windows; see native/BUILD.md for Windows and macOS instructions.

Prerequisites

  • Visual Studio 2026 (v145 toolset) with Desktop C++ workload
  • vcpkg
  • CMake (bundled with VS 2026)
  • ~7 GB disk for Boost; ~70 minutes initial build

Quick Build

Automated:

cd UR.RTDE
.\build-complete.bat

Manual:

# Boost
cd C:\vcpkg
vcpkg install boost:x64-windows

# ur_rtde
cd C:\path\to\UR.RTDE\build-native\ur_rtde\build
cmake --build . --config Release

# C API facade
cd ..\..\native\facade\build
cmake --build . --config Release

# C# wrapper
cd ..\..\..\
dotnet build src\UR.RTDE -c Release

# NuGet
dotnet pack src\UR.RTDE -c Release -o nupkgs

Windows builds use ur_rtde v1.6.x with Boost via vcpkg. macOS arm64 builds use Boost 1.85 (brew install boost@1.85); see native/BUILD.md.


Documentation

  • Test results and plan summary below.
  • CHANGELOG.md - Version history and upgrades.
  • AGENTS.md - Agent instructions and roadmap.
  • docs/quickstart.md - Rhino/URSim quick start.
  • docs/troubleshooting.md - Runtime issues.
  • docs/version-matrix.md - Supported versions and RIDs.

Test Flags

  • ROBOT_IP: overrides the default robot/URSim IP (default: localhost).
  • ENABLE_ROBOTIQ_TESTS: set to true to run Robotiq tests (requires URCap).
  • ENABLE_FT_TESTS: set to true to run FT zeroing test (may be unsupported in URSim).

Test Plan (summary)

  • Location: samples/URSimTests/Program.cs (core) and samples/URSimTests/AdvancedTests.cs
  • Coverage: connection, streaming, MoveJ, emergency stop, kinematics, extended data, safety, I/O, advanced motion.
  • Success criteria: core and advanced suites pass against URSim; see samples/URSimTests/README.md.
  • Execution: dotnet run -c Release --project samples/URSimTests (optional test filter argument).

Latest Test Results (URSim snapshot)

  • Date/Platform: 2025-10-27, Windows 11, .NET 8.0, URSim e-Series 5.23.0 (Docker, localhost).
  • Outcome: 7/7 tests passed; average streaming 98.6 Hz; MoveJ precision +/-0.01 rad; emergency stop immediate; reconnection stable.

Update ur_rtde (quick guide)

  1. Check new upstream tag/release notes on gitlab.com/sdurobotics/ur_rtde.
  2. Refresh build-native/ur_rtde to the exact pinned commit hash (not a moving branch/tag); backup old copy and apply Boost/compat patches if still needed.
  3. Rebuild native lib and facade; copy DLLs into src/UR.RTDE/runtimes/{rid}/native/.
  4. Add any new C API exports, P/Invoke bindings, and wrapper methods; update docs/tests.
  5. Run test suite (URSim), bump versions, refresh README/AGENTS/CHANGELOG, and pack/publish NuGet.

Release

Versioning: package version tracks bundled ur_rtde (e.g. 1.6.3.0 = ur_rtde 1.6.3; fourth segment is for wrapper-only fixes). Current release is 1.6.3.9.

NuGet readme: badge images use trusted domains only (img.shields.io).

Steps to publish a GitHub Release (manual):

# Ensure your working tree is clean and up to date
git pull origin master

# Tag the release (match UR.RTDE.csproj Version)
git tag v1.6.3.9 -m "UR.RTDE 1.6.3.9 (ur_rtde 1.6.3)"
git push origin v1.6.3.9

# Create a GitHub Release for tag v1.6.3.9 and upload the nupkg

NuGet publish (manual):

dotnet pack src/UR.RTDE -c Release -o nupkgs
dotnet nuget push nupkgs/UR.RTDE.1.6.3.9.nupkg -k <API_KEY> -s https://api.nuget.org/v3/index.json

License

MIT License - see LICENSE

Credits: Built on ur_rtde by SDU Robotics


Install now: dotnet add package UR.RTDE

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.8

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.6.3.10 98 5/19/2026
1.6.3.9 104 5/18/2026
1.6.3.3 113 5/16/2026
1.6.3.2 94 5/16/2026
1.6.3.1 94 5/16/2026
1.6.3 98 5/16/2026
1.3.0 90 5/16/2026
1.2.0 510 12/11/2025
1.1.1 468 12/9/2025
1.1.0 241 10/28/2025
1.0.0 229 10/28/2025

v1.6.3.10: macOS x86_64 (Intel/Rosetta Rhino) osx-x64 runtime; RID-first native loader. v1.6.3.9: macOS arm64 validated; win-x64 runtimes restored.