UnderAutomation.UniversalRobots
6.5.3
Install-Package UnderAutomation.UniversalRobots -Version 6.5.3
dotnet add package UnderAutomation.UniversalRobots --version 6.5.3
<PackageReference Include="UnderAutomation.UniversalRobots" Version="6.5.3" />
paket add UnderAutomation.UniversalRobots --version 6.5.3
#r "nuget: UnderAutomation.UniversalRobots, 6.5.3"
// Install UnderAutomation.UniversalRobots as a Cake Addin
#addin nuget:?package=UnderAutomation.UniversalRobots&version=6.5.3
// Install UnderAutomation.UniversalRobots as a Cake Tool
#tool nuget:?package=UnderAutomation.UniversalRobots&version=6.5.3
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 | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows |
.NET Core | netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard2.0 netstandard2.1 |
.NET Framework | net35 net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETCoreApp 2.0
- No dependencies.
-
.NETCoreApp 2.1
- No dependencies.
-
.NETCoreApp 2.2
- No dependencies.
-
.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
- System.Text.Encoding.CodePages (>= 4.5.1)
-
.NETStandard 2.1
- No dependencies.
-
net5.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 |
---|---|---|
6.5.3 | 68 | 6/21/2022 |
6.5.1 | 79 | 6/9/2022 |
6.5.0 | 132 | 5/3/2022 |
6.4.0 | 86 | 3/22/2022 |
6.3.1 | 94 | 2/27/2022 |
6.2.0 | 68 | 2/27/2022 |
6.1.0 | 59 | 2/26/2022 |
6.0.6 | 80 | 2/26/2022 |
6.0.2 | 71 | 2/26/2022 |
5.0.0 | 117 | 12/24/2021 |
4.7.0 | 283 | 12/11/2021 |
4.6.1 | 121 | 12/2/2021 |
4.6.0 | 119 | 12/2/2021 |
4.5.1 | 155 | 11/2/2021 |
4.4.0 | 201 | 10/25/2021 |
4.3.0 | 130 | 10/21/2021 |
4.2.1 | 161 | 10/12/2021 |
4.1.8 | 175 | 10/6/2021 |
4.1.6 | 181 | 10/6/2021 |