- Notifications
You must be signed in to change notification settings - Fork6
🚀 A powerful .NET library for seamless communication with your Universal Robots cobot. Supports RTDE, URScript execution, Dashboard Server, SFTP, SSH, and more! Offline tools : Inverse and Forward Kinematics - Pose converter
License
underautomation/UniversalRobots.NET
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
TheUniversal 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
👁️ Watch to be notified of latest updates !
✔️Full RTDE Support – Read & write at up to500Hz
✔️Send URScript Commands – Control robots in real-time
✔️Dashboard Server – 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
Explore theUniversal Robots SDK with fully functional example applications and precompiled binaries for various platforms.See Github releases
A Windows Forms application demonstrating all the features of the library.
📌Download:📥 UnderAutomation.UniversalRobots.Showcase.Forms.exe
Precompiled console applications showcasing compilation for multiple operating systems.
📌Downloads:
| OS | Architecture | Download |
|---|---|---|
| 🐧Linux | ARM | 📥 Download |
| 🐧Linux | x64 | 📥 Download |
| 🍏macOS | ARM64 | 📥 Download |
| 🍏macOS | x64 | 📥 Download |
| 🖥Windows | x64 | 📥 Download |
| 🖥Windows | x86 | 📥 Download |
Communicate with your robot at500Hz, 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);
Send URScript commands and monitor robot state at10Hz.
// 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();
Manage power, brakes, program execution, and more.
robot.Dashboard.PowerOn();robot.Dashboard.ReleaseBrake();robot.Dashboard.LoadProgram("prg1.urp");robot.Dashboard.Play();
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);
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);};
Allow robots to send and receive custom data via sockets.
robot.SocketCommunication.SocketWrite("Hello, Robot!");robot.SocketCommunication.SocketRequest+=(sender,e)=>Console.WriteLine(e.Message);
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");
Execute shell commands remotely.
robot.Ssh.RunCommand("echo 'Hello' > /home/ur/Desktop/NewFile.txt");
Choose the installation method that works best for you:
| Method | NuGet (Recommended) | Direct Download |
|---|---|---|
| How to Install | Install via NuGet.See on Nuget | Download and reference the DLL manually |
dotnet add package UnderAutomation.UniversalRobots | 📥Download ZIP |
usingUnderAutomation.UniversalRobots;
varrobot=newUR();robot.Connect(newConnectParameters("192.168.0.1"));
✅Supported Robots: UR3, UR5, UR10, UR16, UR20, UR30, 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
We welcome contributions! Feel free to:
- Report issues viaGitHub Issues
- Submit pull requests with improvements
- Share feedback & feature requests
🔗 Learn more:UnderAutomation Licensing
If you have any questions or need support:
- 📖Check the Docs:Documentation
- 📩Contact Us:Support
About
🚀 A powerful .NET library for seamless communication with your Universal Robots cobot. Supports RTDE, URScript execution, Dashboard Server, SFTP, SSH, and more! Offline tools : Inverse and Forward Kinematics - Pose converter
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.


