UnderAutomation.UniversalRobots 7.9.1

dotnet add package UnderAutomation.UniversalRobots --version 7.9.1                
NuGet\Install-Package UnderAutomation.UniversalRobots -Version 7.9.1                
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="UnderAutomation.UniversalRobots" Version="7.9.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add UnderAutomation.UniversalRobots --version 7.9.1                
#r "nuget: UnderAutomation.UniversalRobots, 7.9.1"                
#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.
// Install UnderAutomation.UniversalRobots as a Cake Addin
#addin nuget:?package=UnderAutomation.UniversalRobots&version=7.9.1

// Install UnderAutomation.UniversalRobots as a Cake Tool
#tool nuget:?package=UnderAutomation.UniversalRobots&version=7.9.1                

NuGet

.NET Framework 3.5 and newer .NET Standard 2.0 and newer .NET Core 2.0 and newer .NET 5

LABView 2010 and newer Python

UnderAutomation Universal Robots communication SDK

https://user-images.githubusercontent.com/47540360/143318635-6d6aaaf4-5642-457a-8ff1-4322f2defe82.mp4

Universal Robots communication SDK

Quickly create applications that communicate with an Universal Robots industrial robot.

SDK : Software Development Kit

More information : https://underautomation.com

Features

RTDE

Full RTDE (Real-Time Data Exchange) implementation for reading and writing up to 500Hz

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)");
double x = robot.PrimaryInterface.CartesianInfo.TCPOffsetX;
double shoulderSpeed = robot.PrimaryInterface.JointData.Shoulder.ActualSpeed;
``` c#
var robot = new UR();

var param = new ConnectParameters("192.168.0.1");

// Enable RTDE
param.Rtde.Enable = true;

// Exchange data at 500Hz
param.Rtde.Frequency = 500;

// Select data you want to write in robot controller
param.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput0);
param.Rtde.InputSetup.Add(RtdeInputData.InputIntRegisters, 0);

// Select data you want the robot to send
param.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);
param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters, 10);

// Connect to robot
robot.Connect(param);

// Be notified at 500Hz when data is received
robot.Rtde.OutputDataReceived += Rtde_OutputDataReceived;

// Write input values in robot
var inputValues = new RtdeInputValues();
inputValues.StandardAnalogOutput0 = 0.2;
inputValues.InputIntRegisters.X0 = 12;
robot.Rtde.WriteInputs(inputValues);

Primary and Secondary Interfaces

Send URScript commands and receive robot state data at 10Hz : Cartesian and angular position, robot status, inputs and outputs value, and 100+ more measurements ...

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)");
double x = robot.PrimaryInterface.CartesianInfo.TCPOffsetX;
double shoulderSpeed = robot.PrimaryInterface.JointData.Shoulder.ActualSpeed;

Read variables

Read program and installation variables :

GlobalVariable myVar = robot.PrimaryInterface.GlobalVariables.GetByName("myVar");
GlobalVariable[] variables =  robot.PrimaryInterface.GlobalVariables.GetAll();

Dashboard Server

Remote control the robot : load, play, pause, and stop a robot program, power on and off, release brake, shutdown, ...

robot.Dashboard.PowerOn();
robot.Dashboard.ReleaseBrake();
robot.Dashboard.LoadProgram("prg1.urp");
robot.Dashboard.Play();

XML-RPC

From your robot program, remote call a function implemented in your .NET program. For example, this allows you to request a position resulting from image processing.

# Connect to the SDK and specifie the IP and port of the PC
rpc:=rpc_factory("xmlrpc","http://192.168.0.10:50000")

# Call method GetPose and wait for the reply. The replied pose will be assigned in variable "answer"
answer:=rpc.GetPose(100)
// Answer sent to the robot
robot.XmlRpc.XmlRpcServerRequest += (o, request) =>
  {
    if(request.MethodName == "GetPose") request.Answer = new Pose(request.Arguments[0], 200, 100, 0, 0, 0);
  };

Socket communication

The library can start a communication. The robot can connect to your server and exchange custom data.

# Connect to robot socket server in URScript
socket_open("192.168.0.10", 50001)

# Raise event SocketRequest is your app
socket_send_string("Hello from robot")

# Raise event SocketGetVar is your app
var1 := socket_get_var("MY_VAR")
// Send a message to all connected soket clients
robot.SocketCommunication.SocketWrite("Hi cobot !");

// Event raised when a robot connects with socket_open()
robot.SocketCommunication.SocketClientConnection += SocketCommunication_SocketClientConnection;

// Event raised when a robot disconnects with socket_close()
robot.SocketCommunication.SocketClientDisconnection += SocketCommunication_SocketClientDisconnection;

// Event raised when a connected robot sends a message
robot.SocketCommunication.SocketRequest += SocketCommunication_SocketRequest;

// Respond to a client requesting the value of a variable with the URScript line : var1 := socket_get_var("VAR_NAME")
robot.SocketCommunication.SocketGetVar += SocketCommunication_SocketGetVar;

SFTP

Manipulate files and folders of the robot via SFTP (Secure File Transfer Protocol) : download to the robot, import from the robot, rename, delete, move, list files in a folder...

robot.Sftp.DownloadFile("/home/ur/ursim-current/programs/my-program.urp", content);
robot.Sftp.UploadFile(content, "/home/ur/ursim-current/programs/my-program.urp");
robot.Sftp.Delete("/home/ur/ursim-current/programs/my-program.urp");
robot.Sftp.WriteAllText("/home/ur/ursim-current/programs/file.txt", "Hello !");

SSH

Open a SSH (Secure Shell) connection with the robot to execute Linux command lines, as in the terminal.

robot.Ssh.RunCommand("echo Hello > /home/ur/Desktop/NewFile.txt");

Convert position types

Convert Rotation Vector to and from RPY.

var pose = new Pose(1, 1, 0, 0.1, 0.2, -0.5);
var rpy = pose.FromRotationVectorToRPY();
var rotVect = pose.FromRPYToRotationVector();

Edit program and installation files

Open and edit program (.urp) and installation (.installation) files :

URProgram prg = URProgram.Load("myPrg.urp");
URInstallation installation = URInstallation.Load("default.installation");

Compatibility

Compatible with all UR robots and firmwares UR3, UR5, UR10, UR16, CB-Series, e-Serie.

Nothing to install on the robot : implemented protocols are available on your robot out of the box.

A 100% managed "UnderAutomation.UniversalRobots.dll" assembly without dependencies in the version of your choice: .NET Framework ≥3.5, .NET Standard, - .NET 5 and Core for Windows, Linux, MacOS

Examples

Pre-built example applications with source code are provided for Winforms, .NET console, LabVIEW and Python.

License

This SDK is a commercial library and a license must be purshased. Once acquired, any application you develop can be delivered to an unlimited number of customers without royalties and without recurring subscription.

More information : https://underautomation.com

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 is compatible.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net35 is compatible.  net40 is compatible.  net403 was computed.  net45 is compatible.  net451 is compatible.  net452 is compatible.  net46 is compatible.  net461 is compatible.  net462 is compatible.  net463 was computed.  net47 is compatible.  net471 is compatible.  net472 is compatible.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.0

    • No dependencies.
  • .NETFramework 3.5

    • No dependencies.
  • .NETFramework 4.0

    • No dependencies.
  • .NETFramework 4.5

    • No dependencies.
  • .NETFramework 4.5.1

    • No dependencies.
  • .NETFramework 4.5.2

    • No dependencies.
  • .NETFramework 4.6

    • No dependencies.
  • .NETFramework 4.6.1

    • No dependencies.
  • .NETFramework 4.6.2

    • No dependencies.
  • .NETFramework 4.7

    • No dependencies.
  • .NETFramework 4.7.1

    • No dependencies.
  • .NETFramework 4.7.2

    • No dependencies.
  • .NETFramework 4.8

    • No dependencies.
  • .NETStandard 2.0

  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • 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
7.9.1 77 11/13/2024
7.8.22 296 9/4/2024
7.8.0 166 8/1/2024
7.7.3 140 7/22/2024
7.6.3 154 7/3/2024
7.5.2 190 6/10/2024
7.4.7 137 5/29/2024
7.4.1 199 4/28/2024
7.3.2 145 4/27/2024
7.3.1 334 4/5/2024
7.3.0 132 4/5/2024
7.2.5 138 3/27/2024
7.2.4 171 3/8/2024
7.2.3 156 2/2/2024
7.2.2 127 1/22/2024
7.2.1 179 12/21/2023
7.2.0 368 8/30/2023
7.1.0 243 8/10/2023
7.0.0 316 7/16/2023
6.7.2 559 2/14/2023
6.7.1 444 1/5/2023
6.7.0 427 11/21/2022
6.6.2 478 10/21/2022
6.6.1 510 9/20/2022
6.6.0 477 9/20/2022
6.5.5 481 8/29/2022
6.5.4 559 7/28/2022
6.5.3 551 6/21/2022
6.5.1 499 6/9/2022
6.5.0 596 5/3/2022
6.4.0 550 3/22/2022
6.3.1 1,054 2/27/2022
6.2.0 512 2/27/2022
6.1.0 506 2/26/2022
6.0.6 521 2/26/2022
6.0.2 506 2/26/2022
5.0.0 385 12/24/2021
4.7.0 537 12/11/2021
4.6.1 372 12/2/2021
4.6.0 329 12/2/2021
4.5.1 407 11/2/2021
4.4.0 444 10/25/2021
4.3.0 353 10/21/2021
4.2.1 359 10/12/2021
4.1.8 430 10/6/2021
4.1.6 411 10/6/2021