UR10

From Rsewiki

Two robot arms of the type UR10 are located in 326/011. In this wiki article, some documentation of how to use the robot arm is collected.

General information

The two robot arms are known to the computers in 326 as rt6 and rt7 respectively. To connect to the robots, use these ip aliases.

Starting the robot

To power on the robot, press the power button located just above the emergency stop butten on the screen box.

Once the robot has booted, a dialogue box appears titled "Robot has Changed Mode". To initialize and calibrate the robot, go to Initialization Screen using this popup. Once there, hit the topmost Auto button once to start the hardware. Then push and hold auto until the robot is done unlocking and autocalibrating. Keep an eye on the robot while doint this, as the robot calibrates by moving it's joints, and this might lead to collisions with itself or it's surroundings. Release and re-press the Auto button to reverse direction for the joints or, if necessary, initialize each joint manually. When done, hit OK.

To move the robot into a desired position, press either of the top two buttons, and select the Move-tap. Then move the robot by using the arrows or by holding down the Teach button and move the robot by hand.

Denavit-Hartenberg parameters

The most important DH parameters are listed here for reference: (Taken from UR homepage)

Denavit-Hartenberg parameters
Joint Type a α d θ Offset
1 Revolute 0.00000 π/2 0.1273 q1 0.00
2 Revolute -0.612 0.00 0.00000 q2 -π/2
3 Revolute -0.5723 0.00 0.00000 q3 0.00
4 Revolute 0.00000 π/2 0.163941 q4 -π/2
5 Revolute 0.00000 -π/2 0.1157 q5 0.00
6 Revolute 0.00000 0.00 0.0922 q6 0.00

Common errors and workarounds

Congestion Control on UR10's datastream

The UR controller program broadcasts data through a socket which appearantly has congestion control implemented using Nagle's Algorithm. This will result in very un-real-time behaviour in the form of bundled and delayed data packages if not accounted for. Upon recieving a package from the robot, force a TCP acknowledge from your own socket, either by sending a command, as you would in a feedback system, or use the socket flag TCP_QUICKACK to force an acknowledgement. This needs to be done upon recieving each data package.


Using the robot via the 'MATLAB-interface'

Connecting to the robot arm using a simple TCP socket allows for data collection and command issuing. This can be done in any way you please, including Python, C++ and Telnet. Connect to the robot arm's IP on port 30003 for the best results. On this socket, a data stream is issued at 125Hz, containing most robot arm data of interest. A description of this data stream can be found at UR's support site. A list of commands available to control the robot can be found in UR's manuals server under Manuals/ScriptManuals/Release1.8/.


Performance Analysis

A performance analysis of the robot arm's MATLAB-interface has been conducted. The results can be downloaded here. It is strongly advised that anyone planning to work on the UR10 or UR5 reads this document before doing so.