UnderAutomation
Any question?

[email protected]

Contact us
UnderAutomation
⌘Q

Universal Robots SDK

GitHub stars
1100 (EUR)1300 (USD)

$

1300

lifetime

$

780

for universities (40% discount)

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

Choose the right license for your project
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

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.

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.

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

1100 (EUR)$1300 (USD)

$

1300

lifetime

$

780

for universities (40% discount)
For personal use or agile developers building proofs of concept or lightweight projects.
1 year maintenance included (access to updates)
Same conditions as the pro license, except that support is not prioritized, remote assistance is not included and maintenance is only 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

1700 (EUR)$2000 (USD)

$

2000

$2960
lifetime

$

1200

for universities (40% discount)
For mission-critical production environments demanding priority support and long-term stability.
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

3400 (EUR)$4000 (USD)

$

4000

lifetime

$

2400

for 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
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


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

UnderAutomation
Contact usLegal

© All rights reserved.