UR.RTDE 1.2.0

dotnet add package UR.RTDE --version 1.2.0
                    
NuGet\Install-Package UR.RTDE -Version 1.2.0
                    
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.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="UR.RTDE" Version="1.2.0" />
                    
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.2.0
                    
#r "nuget: UR.RTDE, 1.2.0"
                    
#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.2.0
                    
#: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.2.0
                    
Install as a Cake Addin
#tool nuget:?package=UR.RTDE&version=1.2.0
                    
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 v1.6.2.

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.2.0.0)

  • Native C++ P/Invoke; sustained high-frequency streaming.
  • No external dependencies; native DLLs included in NuGet.
  • Supports Rhino 7 (.NET 4.8) and Rhino 8 (.NET 8).
  • Windows x64 tested; macOS arm64 planned.

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).
  • Pending: dashboard/script client additions and extended receive extras; 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 DLLs copy automatically to the output folder.


Quick Start

using UR.RTDE;

// Connect
using var control = new RTDEControl("192.168.1.100");
using var receive = new RTDEReceive("192.168.1.100");

// 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; see BUILD_SUCCESS.md for details.

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

ur_rtde v1.6.2 source includes Boost 1.89.0 compatibility patches; see BUILD_SUCCESS.md and BUILD_INSTRUCTIONS.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/ExtendedFeaturesTest/Program.cs
  • Coverage: kinematics, extended data, safety status, analog/digital I/O, advanced motion (ServoC/ServoStop/SpeedStop), speed slider.
  • Success criteria: 7/7 categories pass; IK round-trip error < 0.001 rad; safety flags valid; I/O round-trips match commands; robot stops cleanly.
  • Execution: dotnet run -c Release from samples/ExtendedFeaturesTest (optional test name filter).

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 tag (backup old copy); 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

We use SemVer. This version is 1.2.0.0 (NuGet normalized as 1.2.0).

Steps to publish a GitHub Release (manual):

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

# Tag the release (match csproj version)
git tag v1.2.0.0 -m "UR.RTDE 1.2.0.0"
git push origin v1.2.0.0

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

NuGet publish (manual):

dotnet pack src/UR.RTDE -c Release -o nupkgs
# NuGet normalizes trailing .0 segments, so the file is '1.2.0'
dotnet nuget push nupkgs/UR.RTDE.1.2.0.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.2.0 463 12/11/2025
1.1.1 453 12/9/2025
1.1.0 221 10/28/2025
1.0.0 212 10/28/2025

v1.2.0.0: Upstream ur_rtde bumped to v1.6.2; native facade rebuilt with IO input-register setters and removal of obsolete control-side register APIs; Robotiq RTDE path now uses IO registers (constructor requires RTDEIO); runtimes include required Boost thread DLL; URSim validation passed (22/22 core + 6/6 advanced).