UnderAutomation
    • Home page
  • Products
    • Universal Robots SDK
      • Overview
      • Download
      • Documentation
    • Fanuc SDK
    • Yaskawa SDK
    • Staubli SDK
    • Quote • Order
    • License
Any question?

[email protected]

Contact us
UnderAutomation
  • Home page
  • Products
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
  • Quote • Order
  • Contact us
⌘Q

Universal Robots SDK

1/0
GitHub stars
1090 (EUR) • 1290 (USD)

$

1290

lifetime

$

774

for universities (40% discount)

Quickly create applications that communicate with your Universal Robots cobot in .NET, Python, Labview or Matlab.


OrderRequest a quote

.NET

Python

LabVIEW

See terms and conditions
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.
URCaps ROS

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

UR+ Certification

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.

See on universal-robots.com

Features

The library implements all native protocols of Universal Robots cobots in several languages, allowing your computer to synchronize and control the robot arm remotely.

Remote control

The "Dashboard Server" protocol that allows 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.
// Create a new robot instance
var robot = new UR();
// Connect to the robot
robot.Connect("192.168.0.1");
// Power on the robot arm and release brakes
robot.Dashboard.PowerOn();
robot.Dashboard.ReleaseBrake();
// Load program file to polyscope
robot.Dashboard.LoadProgram("fast_bin_picking.urp");
// Start the program
robot.Dashboard.Play();
// Get program name and state
var state = robot.Dashboard.GetProgramState();
Console.WriteLine($"Program name : {state.Value.Name}");
Console.WriteLine($"Stopped, Playing or Paused ? : {state.Value.State}");
// Display a popup on the pendant
robot.Dashboard.ShowPopup("I just remote-controlled my robot!");

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.
// Display robot TCP pose
var pose = robot.Rtde.OutputDataValues.ActualTcpPose;
// pose.X, pose.Y, pose.Z, pose.Rx, ...
// Display robot TCP force
var force = robot.Rtde.OutputDataValues.ActualTcpForce;
// Write data in robot controler
var inputs = new RtdeInputValues();
inputs.StandardAnalogOutput0 = 0.2;
inputs.InputBitRegisters.X64 = true;
robot.Rtde.WriteInputs(inputs);
// Display all program and installation variables
var variables = robot.PrimaryInterface.GlobalVariables.GetAll();
string name = variables[0].Name;
Pose value = variables[0].ToPose();
GlobalVariableTypes type = variables[0].Type;

Script and program

  • 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.
// Ask robot to execute a movej
robot.PrimaryInterface.Script.Send("movej([-1.5,-1.5,-2,-0.5,1.8,0], a=1.4, v=1.05, t=0, r=0)");
// Enumerates files and folder
SftpFile[] items = robot.Sftp.ListDirectory("/home/ur/ursim-current/programs/");
// Download program file prg.urp to your local disk
robot.Sftp.DownloadFile("/home/ur/ursim-current/programs/prg.urp", @"C:\temp\prg.urp");
// Send a local file to the robot
robot.Sftp.UploadFile(@"C:\temp\prg.urp", "/home/ur/ursim-current/programs/prg.urp");
// Manipulate files and directories
robot.Sftp.RenameFile("/home/ur/prg.urp", "/home/ur/prg2.urp");
robot.Sftp.Delete("/home/ur/prg.urp");
bool exists = robot.Sftp.Exists("/home/ur/prg.urp");
robot.Sftp.WriteAllText("/home/ur/file.txt", "Hello robot !");
// ...

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 connects with URScipt function socket_open()
robot.SocketCommunication.SocketClientConnection += (o, e) =>
{
// Reply to the robot
e.Client.SocketWrite("Hello cobot <3");
};
// Event raised when the robot sends a message with socket_write()
robot.SocketCommunication.SocketRequest += (o, e) =>
{
string robotMessage = e.Message;
};
// Send a message to all connected clients
robot.SocketCommunication.SocketWrite("123456");

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.
// Create X, Y, Z, RX, RY, RZ pose
var pose = new Pose(0.1, 0.2, -0.1, 0, 0.05, 0.1);
// Convert cartesian pose type to RPY or rotation vector
var rpy = pose.FromRotationVectorToRPY();
var vectorPose = pose.FromRPYToRotationVector();
// Get default DH parameters for UR3e robot model
IUrDhParameters dhParameters = KinematicsUtils.GetDhParametersFromModel(RobotModelsExtended.UR3e);
// Calculate forward kinematics for given joint angles in radians
KinematicsResult fkResult = KinematicsUtils.ForwardKinematics(new double[] { 0, -1.57, 1.57, 0, 0, 0 }, dhParameters);
// Convert the matrix transform to a Pose (X, Y, Z, RX, RY, RZ)
Pose cartesianPosition = Pose.From4x4MatrixToRotationVector(fkResult.ToolTransform);
// Calculate inverse kinematics for given cartesian pose
var matrix = vectorPose.FromRotationVectorTo4x4Matrix();
double[][] ikSolutions = KinematicsUtils.InverseKinematics(matrix, dhParameters);
// Decompile program and installation files and access inner XML
URInstallation installation = URInstallation.Load("C:\\temp\\default.installation");
URProgram prg = URProgram.Load("C:\\temp\\prg.urp");
XElement internalXml = prg.XML;

And more...

  • Primary / Secondary interface
  • RTDE (Real-Time Data Exchange)
  • Dashboard server
  • Interpreter Mode
  • Sockets
  • XML-RPC
  • SSH
  • SFTP
  • Forward & Inverse Kinematics
  • ...
Read the documentation

Get started now !

The library has the same functionality in several 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.

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: site (obscured binary only) or source (source code). After purchasing, you have a one -year maintenance period, giving you priority 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.

30 day trial

Free


Access to all features for 30 days
Examples provided for several platforms including Python, Winforms, Console (for Windows, Linux and MacOS) and LabVIEW
Extra trial period on request
Download
Most popular

Site license

1290 (EUR) • 1290 (USD)

$

1290

lifetime

$

774

for universities (40% discount)

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.
1 year maintenance included (access to updates)
Contact us for a payment by bank transfer. Once the license of this SDK is purchased, you will receive your license number and your invoice by email.
There are no internal sources; only the obfuscated DLL is provided.
Buy now

Source license

7740 (EUR) • 7740 (USD)

$

7740

lifetime

$

4644

for universities (40% discount)

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
Buy now

Frequently asked questions

What is the point of such a software library?

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

How can I test?

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

I need help to develop the communication software with my cobot

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.

How can I test the library?

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.

Can I get a quote?

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

Some examples do not work

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.

What's new in each version?

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.

After updating, my application does not compile anymore

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 articles

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. »


Easily integrate Universal Robots, Fanuc, Yaskawa or Staubli robots into your .NET, Python, LabVIEW or Matlab applications

UnderAutomation
Contact usLegal
Products
Universal Robots SDKFanuc SDKYaskawa SDKStaubli SDK
enEnglish
frFrançais
deDeutsch
esEspañol
zh中文
ja日本語
ko한국어

© All rights reserved.