UnderAutomation
Any question?

[email protected]

Contact us
UnderAutomation
⌘Q
Universal Robots
UR+ Certified

Universal Robots SDKControl Universal Robots cobots from your own software

Quickly create applications that communicate with your Universal Robots cobot in .NET, Python, Labview or Matlab. A ready-to-use software library: your PC talks to the robot over the network cable.

Try it freeSee pricing

From 1100 € / $1300, paid once

Nothing to install on the robot
30-day free trial
Perpetual license, no subscription
.NET / C#
Python
LabVIEW
Matlab
Universal Robots robot
Universal Robots SDK
1// dotnet add package UnderAutomation.UniversalRobots
2using UnderAutomation.UniversalRobots;
3
4var robot = new UR();
5robot.Connect("192.168.0.1");
6
7var pose = robot.PrimaryInterface.CartesianInfo.AsPose();
8robot.Dashboard.LoadProgram("pick_and_place.urp");
9robot.Dashboard.Play();
In short

What you get

Plug & Play

Connect your robot in just a few minutes. No license manager to install, no USB key. Only reference the library.

No plugins to install on the robot

Use of network protocols provided as standard by the robot controller.

URCapsROS

30-day trial

Try it free for 30 days, no commitment, no registration required

Pay once, use forever

Perpetual license, no subscription required, regardless of the number of robots, developers, or redistributed software

Customers

Customer Success Stories

Discover how our customers integrate UnderAutomation solutions into their industrial projects.

AbbVie
Biotech / Pharma

AbbVie: Automating High-throughput screening

How AbbVie Leverages Universal Robots SDK to Automate High-Concentration Protein Screening.

GE
Aerospace / Healthcare

GE: Aerospace & Healthcare Automation

GE Accelerates Industrial Automation with UnderAutomation SDKs for Universal Robots and FANUC.

Lockheed Martin
Aerospace / Defense

Lockheed Martin: Flexible Aerospace Automation

Refining precision manufacturing and handling with collaborative robots.

Microsoft
Technology

Microsoft: Physical AI & Azure IoT

From Azure to the Factory Floor: Microsoft's Physical AI Journey with Universal Robots.

Stellantis
Automotive

Stellantis: Unlocking Cobot Potential

Using software connectivity to standardize Universal Robots integration across global sites.

CNIMI
Smart Manufacturing / Research

CNIMI: Smart Manufacturing & Digital Twins

CNIMI promotes smart manufacturing and digital twins enabled by connectivity with Universal Robots.

Features

Universal Robots SDK Features: RTDE, Dashboard & More

Each feature comes with a code sample. Click on it to see the full code.

Remote control

The "REST API" and "DASHBOARD SERVER" protocols allow you to send commands to the robot remotely via TCP/IP. You can for example switch the robot arm on or off, release the brakes, load a program, run it or stop it.

static void Main(string[] args)
{
var robot = new UR();
// Primary Interface and Dashboard Server
robot.Connect("192.168.0.1");
// Power on the arm and release the brakes
robot.Dashboard.PowerOn();
robot.Dashboard.ReleaseBrake();
// Load a program and start it
robot.Dashboard.LoadProgram("pick_and_place.urp");
robot.Dashboard.Play();
// Name and state of the program
var state = robot.Dashboard.GetProgramState();
Console.WriteLine(state.Value.Name + ": " + state.Value.State);
// Show a message on the teach pendant
robot.Dashboard.ShowPopup("Started from the PC");
}
}
Click to see the full code

Exchanging measurements

"Primary interface" and "RTDE" (Real-Time Data Exchange) allow to receive a measurement stream from the robot up to 500Hz which contains a lot of information: position, status, inputs and outputs, the value of program variables, ... Your application can thus synchronize with the robot. Also, it is possible to write shared registers to the robot at high speed.

robot.Rtde.OutputDataReceived += (sender, e) =>
{
// Position of the tool: X, Y, Z in m, rotation vector in rad
Pose pose = robot.Rtde.OutputDataValues.ActualTcpPose;
// Force at the tool
CartesianCoordinates force = robot.Rtde.OutputDataValues.ActualTcpForce;
// Write analog output 0 and bit register 64
var inputs = new RtdeInputValues();
inputs.StandardAnalogOutputMask = 0b01;
inputs.StandardAnalogOutput0 = 0.2;
inputs.InputBitRegisters.X64 = true;
robot.Rtde.WriteInputs(inputs);
// Program and installation variables
GlobalVariable[] variables = robot.PrimaryInterface.GlobalVariables.GetAll();
foreach (var variable in variables)
Console.WriteLine(variable.Name + " = " + variable.Value);
};
}
Click to see the full code

Script and program

This library allows you to remotely control program execution on the robot in several ways:

  • You can send on TCP/IP socket URScript script lines to be executed.
  • Functions allow you to build and edit a *.urp program file locally and then transfer it to the UR controller for execution.
robot.Connect(parameters);
// Run a URScript line
robot.PrimaryInterface.Script.Send("movej([-1.5, -1.5, -2, -0.5, 1.8, 0], a=1.4, v=1.05)");
// List the programs of the robot
SftpFile[] items = robot.Sftp.ListDirectory("/programs/");
// Download a program to the PC
robot.Sftp.DownloadFile("/programs/prg.urp", @"C:\temp\prg.urp");
// Send a program to the robot
robot.Sftp.UploadFile(@"C:\temp\prg.urp", "/programs/prg.urp");
// Rename, check, delete
robot.Sftp.RenameFile("/programs/prg.urp", "/programs/prg2.urp");
bool exists = robot.Sftp.Exists("/programs/prg2.urp");
robot.Sftp.DeleteFile("/programs/prg2.urp");
}
}
Click to see the full code

Custom Socket Communication

Your software can be a server and allow the robot to connect to it to retrieve information:

  • XML-RPC: The robot can connect with the "rpc_factory" function and call methods with remote arguments in your program that can return values.
  • Socket: Classic TCP/IP server to which the robot can connect with the "socket_open" function and then dialogue with your application in both directions.
robot.Connect(parameters);
// The robot connects with the URScript function socket_open()
robot.SocketCommunication.SocketClientConnection += (sender, e) =>
{
e.Client.SocketWrite("Hello robot");
};
// The robot sends a message with socket_send_string()
robot.SocketCommunication.SocketRequest += (sender, e) =>
{
Console.WriteLine(e.Message);
};
// Send a message to every connected robot
robot.SocketCommunication.SocketWrite("123456");
}
}
Click to see the full code

Kinematics and offline toolbox

This library offers features that can be used without having an UR robot to the network. It is for example possible to convert types of positions. Your software can also open native files program *.URP and installation *. Installation and edit its content. It also makes it possible to convert a Cartesian position into joints positions and vice versa.

static void Main(string[] args)
{
// X, Y, Z in m, rotation vector RX, RY, RZ in rad
var pose = new Pose(0.1, 0.2, -0.1, 0, 0.05, 0.1);
// Convert the rotation to roll, pitch, yaw, and back
Pose rpy = pose.FromRotationVectorToRPY();
Pose rotationVector = rpy.FromRPYToRotationVector();
// Nominal DH parameters of a UR3e
IUrDhParameters dh = KinematicsUtils.GetDhParametersFromModel(RobotModelsExtended.UR3e);
// Forward kinematics, joint positions in rad
KinematicsResult fk = KinematicsUtils.ForwardKinematics(new double[] { 0, -1.57, 1.57, 0, 0, 0 }, dh);
Pose flange = Pose.From4x4MatrixToRotationVector(fk.ToolTransform);
// Inverse kinematics: up to 8 solutions
double[][] solutions = KinematicsUtils.InverseKinematics(pose.FromRotationVectorTo4x4Matrix(), dh);
// Open program and installation files, as XML
URInstallation installation = URInstallation.Load(@"C:\temp\default.installation");
URProgram program = URProgram.Load(@"C:\temp\prg.urp");
XElement xml = program.XML;
}
}
Click to see the full code

And more...

  • Primary / Secondary interface
  • RTDE (Real-Time Data Exchange)
  • Dashboard server
  • REST API (PolyscopeX only)
  • Interpreter Mode
  • Sockets
  • XML-RPC
  • SSH
  • SFTP
  • Forward & Inverse Kinematics
Demo

See it in action

Video and screenshots of the demo application delivered with the SDK.

Windows application example

No code to write: test the SDK on your robot with the demo application.

DownloadBy downloading, you accept the general conditions of use: See terms and conditions

Examples on GitHub

The sources of examples of use of this SDK are available on Github

Python example

Example of operation of this SDK with Python to recover the Cartesian position of a robot.

Labview example

Example of VI which allows most of the functions of this SDK to be tested.

Installation

Install it in one command

Choose your language. The 30-day trial starts at the first use, with no registration.

.NET

NuGet package for C# and VB.NET, from .NET Framework to the latest .NET.

dotnet add package UnderAutomation.UniversalRobots
See on NuGetSee on GitHubOpen the guide

Python

Python package on PyPI, for Windows, Linux and macOS.

pip install UnderAutomation.UniversalRobots

LabVIEW

LabVIEW library (.lvlib) and its example project, on GitHub.

git clone https://github.com/underautomation/UniversalRobots.vi.git

AI agents

Skill for AI coding agents (Claude Code, Cursor, Copilot...): your assistant knows the API of the SDK.

npx skills add underautomation/skills --skill underautomation-universal-robots-csharp
Documentation

Browse the documentation

The documentation allows you to quickly start developing with the library. The same functionality is available in all supported languages.

Browse the documentation

The documentation allows you to quickly start developing with the library. The same functionality is available in all supported languages.

Getting started with .NET

Code your application in C# or VB with this 100% managed library, without dependencies and available on NuGet.org in the version and architecture of your choice (x86, x64, ARM, Linux, Windows, MacOS, .NET Framework, .NET Core, UWP, ...)

Get started with Python

Quickly develop a program in Python that communicates with your robot using this library. It is available on PyPI.

Getting started with LabVIEW

Equip your LabVIEW VIs with a communication with your robot.

Getting started with Matlab

Allow your Matlab scripts to drive your robot.

Guides and how-to articles

Each article explains how to do one task, step by step, with code you can copy.

Get the robot position

Read the joint positions and the TCP position of a UR cobot in C# or Python, with RTDE up to 500 Hz or with the Primary Interface.

Read and write I/O

Read and write the digital and analog I/O of a UR cobot in C# or Python, with RTDE and its masks, or with the Primary Interface.

Read and write variables

Read the program and installation variables of a UR cobot in C# or Python with the Primary Interface or the Dashboard Server, and how to change them.

Read and write registers

Exchange values between a UR robot program and a PC with the boolean, integer and float registers, with RTDE up to 500 Hz.

Run a program

Power on a UR cobot, release the brakes, load a program and play it from a PC in C# or Python, then follow it until its end.

Read and reset alarms

Read the error messages, the program errors and the safety status of a UR cobot in C# or Python, and reset a protective stop or a safety fault.

Transfer files and backups

Copy the programs of a UR cobot to a PC for a backup, send a program to the robot and load it, in C# or Python with SFTP.

Monitor the state of the robot

Follow the robot mode, the program, the stops, the safety status and the connection of a UR cobot in C# or Python.

Move the robot from a PC

Move a UR cobot from a PC in C# or Python with URScript, the Interpreter Mode, registers or a program, and check the position reached.

Pricing

Libraries can be downloaded for free and can be tested for 30 days. After this period, you can ask us to extend the trial period, or buy the license that suits you best: standard, pro or source. After purchasing, you have a maintenance period, giving you access to the support and the possibility of updating. When you buy a license to use, it is linked to a robot brand, you can use it forever, without recurring fee, regardless of the number of robot, developer or software that you redistribute to your customers. If you are a distributor and wish to offer your customers one of our products, please contact us to discuss special conditions and prices.

Standard Site License

•

$1300lifetime
$780for universities (40% discount)
Designed for industrial environments, providing lifetime full-feature access.
1 year maintenance included (access to updates)
Same conditions as the Pro License, except that support is not prioritized and maintenance is 1 year.
There are no internal sources; only the obfuscated DLL is provided.
No assistance by videoconference (only via email).
Choose the right license for your project
Buy now
Most popular

Pro License

•

$2000
$2960
lifetime
$1200for universities (40% discount)
For critical production environments requiring priority support and longer-term maintenance.
3 years maintenance included (access to updates) with no renewal orders during this term (zero paperwork)
Complete and permanent SDK: no recurring subscription is required, the license is yours forever and works in all programming languages ​​for a robot brand.
Can be used only by the organization holding the license, at the postal address indicated. All team developers will share the same license, regardless of the number of development machine.
Any application developed using the SDK can be delivered to an unlimited number of your customers at no additional cost, regardless of the number of robots to connect.
The license is a kind of password to call in the code that unlocks the features. No additional software to install. No USB key.
Priority Support (<24h on average)
Remote assistance (email and up to 2h videoconference)
There are no internal sources; only the obfuscated DLL is provided.
Upgrade to Source anytime (pay the difference)
Buy now

Source license

•

$4000lifetime
$2400for universities (40% discount)
For complete technical sovereignty, deep customization, and total independence.
Same conditions as the pro license
Complete internal code of the library in C#
Visual Studio solution that includes thousands of lines of code developed over several years
You can modify this source code and use it in your application, within the limits defined in the general terms of use
Works seamlessly with AI coding agents (Claude, Copilot, Cursor, Codex...) thanks to full source code access and included context files (AGENTS.md) that give the LLM the exact knowledge of the SDK internals
Buy now
FAQ

FAQ: Universal Robots .NET, Python, LabVIEW & Matlab SDK

This software library saves you development time and guarantees its operation regardless of the model and firmware of your robot.

You can download the latest version from the download page in the programming language of your choice.

We are specialists in this field and can help you free of charge with the technical support included with this SDK. You can also ask us for industrial software development in general. We answer all messages and will be happy to help you.

The download page of this website allows you to get examples in the language of your choice. You can then consult the documentation to get started with the library.

You can immediately request a quote directly from the order page of this website. You can also contact us.

Please check in the properties of the downloaded archive that Windows has not locked the file. If the examples launch correctly, please check that the PING command on the robot is successful. Also check that your firewall and your antivirus software allow a connection with the robot. Finally check the security settings of the robot.

Each version includes patches and new features. You will find on GitHub the history of the versions as well as the changes made. Don't hesitate to contact us to submit your ideas of evolution.

Little by little, the library has been enhanced with new features. Until version 5, all functions and protocols were developed in the same class, which became confusing. From version 6 and higher, all features are independent and developed in separate classes. Please contact us to help you migrate, or download the latest version 5.X.X.X from GitHub, which remains compatible with all older versions.
Press

UR+ Certified SDK for Universal Robots Cobots

Universal Robots' technical and sales teams have audited this library. They certify that it is compliant and integrates perfectly with their robots and its ecosystem.

Blog Universal Robots

« Universal Robots integrates French software library underautomation into UR+ ecosystem »

Automation France

« UnderAutomation has developed an industrial-grade software library that is fully compatible with Universal Robots technology. »

Machine Production

« A library for creating applications with Universal Robots cobots »

Mesures.com

« UnderAutomation develops a software library compatible with Universal Robots »

Industrie

« UnderAutomation, a French company specializing in industrial IT, has developed a UR+-certified software library. »

Zone Industrie

« Remote control, real-time measurement exchange, easy programming... so many functions that above all save considerable time. »
GitHub

Libraries on GitHub

Each package is published on GitHub with its changelog.

Latest releases

UniversalRobots.NET

Latest release

underautomation / UniversalRobots.NET

Public

.NET library of the Universal Robots SDK.

C#View on GitHub

underautomation / UniversalRobots.py

Public

Python package of the Universal Robots SDK.

PythonView on GitHub

underautomation / UniversalRobots.vi

Public

LabVIEW library of the Universal Robots SDK, with example VIs.

LabVIEWView on GitHub

underautomation / UniversalRobots.unity

Public

Unity package of the Universal Robots SDK.

C#View on GitHub

Get started now !

Start the 30-day trial today, or ask for a quote.

Try it freeOrderRequest a quoteContact us