Communication & Toolkit
Universal Robots Software Library

Erstellen Sie schnell Anwendungen, die mit Ihrem Universal Robots Cobot kommunizieren, in .NET, Python, Labview oder Matlab.

Funktionen

Die Bibliothek implementiert in mehreren Sprachen alle nativen Protokolle der Universal Robots Cobots, sodass Ihr Computer sich synchronisieren und den Roboterarm aus der Ferne steuern kann.

Aus der Ferne steuern

Das "Dashboard Server"-Protokoll, mit dem Sie über TCP/IP Befehle an den Roboter aus der Ferne senden können. So können Sie z. B. den Roboterarm ein- oder ausschalten, die Bremsen lösen, ein Programm laden, es ausführen oder anhalten.

// 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!");

Messungen austauschen

"Primary Interface" und "RTDE" (Real-Time Data Exchange) ermöglichen es, einen Messstrom vom Roboter mit bis zu 500 Hz zu empfangen, der zahlreiche Informationen enthält: Position, Status, Eingänge und Ausgänge, den Wert von Programmvariablen, ... So kann sich Ihre Anwendung mit dem Roboter synchronisieren. Außerdem ist es möglich, den Roboter mit hoher Geschwindigkeit in gemeinsam genutzte Register zu schreiben.

// 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;

Skript und Programm

  • Sie können URScript-Zeilen, die ausgeführt werden sollen, über TCP/IP-Socket senden.
  • Mithilfe von Funktionen können Sie eine *.urp-Programmdatei lokal aufbauen und bearbeiten und sie dann zur Ausführung an den UR-Controller übertragen.

// 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 !");
// ...

Benutzerdefinierte Socke

Ihre Software kann ein Server sein und dem Roboter erlauben, sich mit ihr zu verbinden, um Informationen abzurufen :

  • XML-RPC: Der Roboter kann sich mit der Funktion "rpc_factory" verbinden und in Ihrem Programm Methoden mit Fernargumenten aufrufen, die Werte zurückgeben können.
  • Socket: Klassischer TCP/IP-Server, mit dem sich der Roboter mit der Funktion "socket_open" verbinden und dann mit Ihrer Anwendung in beide Richtungen dialogisieren kann.

// 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");

Offline-Toolkit

Diese Bibliothek bietet Funktionen, die genutzt werden können, ohne dass ein UR-Roboter im Netzwerk mitgeführt werden muss. So ist es zum Beispiel möglich, Positionstypen zu konvertieren. Ihre Software kann auch die nativen Dateien Programm *.urp und Installation *.installation öffnen und deren Inhalt bearbeiten.

// 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();
// 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;

Und mehr...

  • Primary / Secondary interface
  • RTDE (Real-Time Data Exchange)
  • Dashboard server
  • Sockets
  • XML-RPC
  • SSH
  • SFTP
  • ...

UR+-Zertifizierung

Die technischen und kaufmännischen Teams von Universal Robots haben diese Bibliothek geprüft. Sie bescheinigen, dass sie konform ist und sich nahtlos in ihre Roboter und ihr Ökosystem einfügt.

Preisgestaltung

Es handelt sich um eine Softwarebibliothek in Industriequalität, für deren Nutzung eine Lizenz erforderlich ist. Der Kauf einer Lizenz ermöglicht es Ihrem Unternehmen, unabhängig von der Anzahl der Entwickler, in jeder der angebotenen Sprachen zu entwickeln und eine unbegrenzte Anzahl von Software an eine unbegrenzte Anzahl Ihrer Kunden ohne wiederkehrende Kosten zu verteilen.

Siehe Bedingungen und Konditionen

Kostenlos

30 Tage Testphase
  • Zugang zu allen Funktionen für 30 Tage
  • Beispiele für mehrere Plattformen bereitgestellt, darunter Python, Winforms, Console (für Windows, Linux und MacOS) und LabVIEW
  • Verlängerung der Probezeit auf Anfrage

Lizenzstandort

990€
  • Zeitlich unbegrenztes SDK mit vollem Funktionsumfang: keine Erneuerung des Abonnements erforderlich
  • Kann von der Lizenznehmerorganisation am angegebenen Standort verwendet werden
  • Kann von mehreren Entwicklern am angegebenen Ort verwendet werden
  • Jede mit dem SDK entwickelte Anwendung kann ohne Lizenzgebühren an eine unbegrenzte Anzahl von Kunden geliefert werden
  • 1 Jahr Wartung inklusive (Zugriff auf Updates)
  • Kontaktieren Sie uns für eine Zahlung per Banküberweisung. Sobald Sie die Lizenz für dieses SDK erworben haben, erhalten Sie Ihre Lizenznummer und die Rechnung per E-Mail.

Standortlizenz für akademische Forschung

594€

990€

  • Standortlizenz mit 40% Rabatt
  • Rabatt ausschließlich für akademische oder Forschungsprojekte

Lizenz für den Zugang zum Quellcode

  • Vollständiger interner Code der Bibliothek in C#
  • Visual-Studio-Lösung, die 110.000 Zeilen Code umfasst, der über mehrere Jahre hinweg entwickelt wurde
  • Sie können diesen Quellcode verändern und in Ihrer Anwendung verwenden, wobei die Einschränkungen in den Nutzungsbedingungen festgelegt sind.

Häufig gestellte Fragen

Welchen Nutzen hat eine solche Softwarebibliothek?

Diese Softwarebibliothek spart Ihnen Entwicklungszeit und gewährleistet, dass sie unabhängig vom Modell und der Firmware Ihres Roboters funktioniert.

Wie kann ich die Bibliothek testen?

Auf der Download-Seite dieser Website können Sie Beispiele in der Sprache Ihrer Wahl herunterladen. Anschließend können Sie sich die Dokumentation ansehen, um die Bibliothek in den Griff zu bekommen.

Kann ich einen Kostenvoranschlag bekommen?

Sie können sofort einen Kostenvoranschlag direkt von der Bestellseite dieser Website aus anfordern. Sie können auch mit uns Kontakt aufnehmen.

Einige Beispiele funktionieren nicht

Bitte überprüfen Sie in den Eigenschaften des heruntergeladenen Archivs, ob Windows die Datei nicht gesperrt hat. Wenn die Beispiele korrekt starten, überprüfen Sie bitte, ob der PING-Befehl an den Roboter erfolgreich ist. Überprüfen Sie auch, ob Ihre Firewall und Ihr Antivirusprogramm eine Verbindung mit dem Roboter zulassen. Überprüfen Sie schließlich die Sicherheitseinstellungen des Roboters.

Was sind die Neuerungen in jeder Version?

Jede Version enthält sowohl Fehlerbehebungen als auch neue Funktionen. Auf GitHub finden Sie die Versionsgeschichte und die vorgenommenen Änderungen. Bitte kontaktieren Sie uns, wenn Sie Ideen für weitere Entwicklungen haben.

Nach der Aktualisierung kompiliert meine Anwendung nicht mehr

Nach und nach wurde die Bibliothek um neue Funktionen erweitert. Bis Version 5 wurden alle Funktionen und Protokolle in der gleichen Klasse entwickelt, was zu Verwirrung führte. Ab Version 6 sind alle Funktionen unabhängig und werden in separaten Klassen entwickelt. Bitte kontaktieren Sie uns, um Ihnen bei der Migration zu helfen, oder laden Sie die neueste Version 5.X.X.X von GitHub herunter, die weiterhin mit allen älteren Versionen kompatibel ist.