Skip to content

Repository files navigation

Universal Robots Communication SDK

UnderAutomation Universal Robots communication SDK

NuGet.NET Framework.NET Standard.NET Core.NET Versions

🤖 Effortlessly Communicate with Universal Robots

The Universal Robots SDK enables seamless integration with Universal Robots for automation, data exchange, and remote control. Ideal for industrial automation, research, and advanced robotics applications.

🔗 More Information:https://underautomation.com/universal-robots
🔗 Also available for 🟨 LabVIEW & 🐍 Python & 🧊 Unity


⭐ Star if you like it !

👁️ Watch to be notified of latest updates !


🚀 TL;DR (Too Long; Didn’t Read)

✔️ Full RTDE Support – Read & write at up to 500Hz
✔️ Send URScript Commands – Control robots in real-time
✔️ Dashboard Server + REST API – Manage power, programs, and states
✔️ Secure Connections – SSH & SFTP support
✔️ Forward & Inverse kinematics
✔️ Multi-Platform – Works on Windows, Linux, and macOS
✔️ Commercial License – Deploy with no royalties

📹 Watch Introduction Video

Universal.Robots.communication.SDK.mp4

📥 Download Example Applications

Explore the Universal Robots SDK with fully functional example applications and precompiled binaries for various platforms. See Github releases

🔹 Windows Forms Application (Full Feature Showcase)

A Windows Forms application demonstrating all the features of the library.

📌 Download:📥 UnderAutomation.UniversalRobots.Showcase.Forms.exe

UnderAutomation.UniversalRobots.Showcase.Console


🔹 Console Applications (Multi-Platform)

Precompiled console applications showcasing compilation for multiple operating systems.

📌 Downloads:

UnderAutomation.UniversalRobots.Showcase.Console

OSArchitectureDownload
🐧 LinuxARM📥 Download
🐧 Linuxx64📥 Download
🍏 macOSARM64📥 Download
🍏 macOSx64📥 Download
🖥 Windowsx64📥 Download
🖥 Windowsx86📥 Download

📌 Features

🔹 Real-Time Data Exchange (RTDE)

Communicate with your robot at 500Hz, read live data, and control its behavior.

varrobot=newUR();varparam=newConnectParameters("192.168.0.1");// Enable RTDEparam.Rtde.Enable=true;// Exchange data at 500Hzparam.Rtde.Frequency=500;// Select data you want to write in robot controllerparam.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput0);param.Rtde.InputSetup.Add(RtdeInputData.InputIntRegisters,0);// Select data you want the robot to sendparam.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);param.Rtde.OutputSetup.Add(RtdeOutputData.ToolOutputVoltage);param.Rtde.OutputSetup.Add(RtdeOutputData.OutputDoubleRegisters,10);// Connect to robotrobot.Connect(param);// Be notified at 500Hz when data is receivedrobot.Rtde.OutputDataReceived+=Rtde_OutputDataReceived;// Write input values in robotvarinputValues=newRtdeInputValues();inputValues.StandardAnalogOutput0=0.2;inputValues.InputIntRegisters.X0=12;robot.Rtde.WriteInputs(inputValues);

🔹 Primary Interface

Send URScript commands and monitor robot state at 10Hz.

// Send scriptrobot.PrimaryInterface.Script.Send("movej([-1.5,-1.5,-2,-0.5,1.8,0], a=1.4, v=1.05)");// Get datadoublex=robot.PrimaryInterface.CartesianInfo.TCPOffsetX;doubleshoulderSpeed=robot.PrimaryInterface.JointData.Shoulder.ActualSpeed;// Read program variablesGlobalVariablemyVar=robot.PrimaryInterface.GlobalVariables.GetByName("myVar");GlobalVariable[]variables=robot.PrimaryInterface.GlobalVariables.GetAll();

🔹 Remote Robot Control

Manage power, brakes, program execution, and more.

// For cobots with Polyscoperobot.Dashboard.PowerOn();robot.Dashboard.ReleaseBrake();robot.Dashboard.LoadProgram("prg1.urp");robot.Dashboard.Play();// For robots with Polyscope Xrobot.Rest.PowerOn();robot.Rest.ReleaseBrake();robot.Rest.LoadProgram("prg1.urp");robot.Rest.Play();

🔹 Inverse Kinematics - Forward Kinematics

Calculates joint positions corresponding to a cartesian position and vice versa. Uses a purely algebraic and optimized algorithm.

// Get default DH parameters for UR3e robot model²IUrDhParametersdhParameters=KinematicsUtils.GetDhParametersFromModel(RobotModelsExtended.UR3e);// Calculate forward kinematics for given joint angles in radiansKinematicsResultfkResult=KinematicsUtils.ForwardKinematics(newdouble[]{0,-1.57,1.57,0,0,0},dhParameters);// Calculate inverse kinematics for given cartesian posevarmatrix=vectorPose.FromRotationVectorTo4x4Matrix();double[][]ikSolutions=KinematicsUtils.InverseKinematics(matrix,dhParameters);

🔹 XML-RPC – Call .NET Functions from URScript

Enable remote function calls from your robot program.

rpc :=rpc_factory("xmlrpc","http://192.168.0.10:50000")answer :=rpc.GetPose(100)
// Answer sent to the robotrobot.XmlRpc.XmlRpcServerRequest+=(o,request)=>{if(request.MethodName=="GetPose")request.Answer=newPose(request.Arguments[0],200,100,0,0,0);};

🔹 Socket Communication

Allow robots to send and receive custom data via sockets.

robot.SocketCommunication.SocketWrite("Hello, Robot!");robot.SocketCommunication.SocketRequest+=(sender,e)=>Console.WriteLine(e.Message);

🔹 Secure File Transfer (SFTP)

Upload, download, and manage files securely on your robot.

robot.Sftp.UploadFile(content,"/home/ur/ursim/programs/my-program.urp");robot.Sftp.Delete("/home/ur/ursim/programs/old-program.urp");

🔹 SSH – Run Terminal Commands

Execute shell commands remotely.

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

🛠 Installation

1️⃣ Get the SDK

Choose the installation method that works best for you:

MethodNuGet (Recommended)Direct Download
How to InstallInstall via NuGet. See on NugetDownload and reference the DLL manually
dotnet add package UnderAutomation.UniversalRobots 📥 Download ZIP

2️⃣ Reference the SDK in Your Code

usingUnderAutomation.UniversalRobots;

3️⃣ Connect to Your Robot

varrobot=newUR();robot.Connect(newConnectParameters("192.168.0.1"));

🔍 Compatibility

Supported Robots: UR3, UR5, UR10, UR16, UR18, UR20, UR30, UR8L, CB-Series, e-Series, Polyscope, Polyscope X
Operating Systems: Windows, Linux, macOS
.NET Versions: .NET Framework (≥3.5), .NET Standard, .NET Core, .NET 5/6/8/9


📢 Contributing

We welcome contributions! Feel free to:

  • Report issues via GitHub Issues
  • Submit pull requests with improvements
  • Share feedback & feature requests

📜 License

⚠️ This SDK requires a commercial license.
🔗 Learn more: UnderAutomation Licensing


📬 Need Help?

If you have any questions or need support:

About

🚀 A powerful .NET library for seamless communication with your Universal Robots cobot. Supports RTDE, URScript execution, Dashboard Server, REST API, SFTP, SSH, and more! Offline tools : Inverse and Forward Kinematics - Pose converter

Topics

Resources

Stars

43 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages