Universal Robots UR10 robot arm

Define TCP

  • Click ‘new’ (you cant rename TCP’s)
  • Define the position
    • Enter the offset by measuring, or use the wizard. The wizard lets you orient the physical TCP around a point in 4 different positions.
  • Define the orientation (optional)
    • Enter a custom orientation in case the TCP is not normal to the flange.
  • Define a tool weight and center of gravity.
  • Click ‘set as default’
  • Save the installation setting (on the left bar)

Test the setup:

  • rotate the robot around the TCP on the teaching pendant (move tab). The tool tip should stay still in space while the rest of the robot rotates around it.

Grasshopper runs inside Rhino 7. In order to control the robot arm, a plugin is needed:

The Robots plugin


Install 'Robots' plugin (on Mac) for Grasshopper on Rhino 7:

  • Download the last release of the plugin: https://github.com/visose/Robots/releases.
    • In Grasshopper, go to 'File > Special Folders > Components Folder'. This opens a finder window.
    • Put the downloaded files ('Robots.dll', and 'Robots.gha') in this folder.
    • Instructions were given to Windows users to give write permission to the files. Not sure if it applies to MacOS too.
  • Download the zip file from this Github repository: https://github.com/visose/Robots: on the top right, click 'code > download .zip'. Alt+click to download individual files doesn't work as it results in HTML files instead of the raw xml files.
    • Unzip the file. A folder 'Robots-master' is created.
    • Make a folder called 'Robots' in your user directory ('/Users/username/Robots').
    • Move the contents from 'Robots-master > Libraries' to the newly created 'Robots' folder in the user directory.

Make all grasshopper project files (with the .gh extension) writable. This way you'll need to reference the location of the robot.dll file only once.

  • On mac: cmd + i, under sharing & permissions, change the privilege of 'everyone' to Read & Write

I tried adapting the 'simple example' by changing the Kuka robot to a UR10 robot. It works, but the initial position is all wrong. In this guide Joonhaeng Lee at MIT's center for bits and atoms describes a solution to this problem.

Upload script to robot
  • Small programs can be streamed directly to the robot with the 'Remote Connection' module.
    • Send the program to the robot by clicking 'Upload'.
    • The arm starts moving without warning(!).
    • With larger programs (1000+ targets(?)), there might be a delay after clicking upload and the arm moving.
  • Larger programs (2500+ targets) cannot be streamed. Use the 'Save Program' module.
    • This file is created right away (it's streamed).
    • Change the .URS extension to .script
    • Open the script in a script editor, copy the function name at the top, and add to the bottom result = programName(). Now the program will actually be ran. Maybe this is an incompatibility between the e-series and the previous versions. Might be changeable in the post processor C# script.
    • Upload to the robot via SFTP (place it somewhere in the map '/programs').
    • Make a new program, add the script module, change it from line to file, and load the file from the programs folder.
    • This doesn't work for large files though. People are talking about splitting it up into sections. But it's unclear to me how.
      • 485 targets works
      • 24673 targets already doesn't want to load :(

URRealtimeFeedback plugin for Robots

This is a grasshopper file with some builtin scripts that allows to receive the current pose of the robot arm.

  • Use FIleZilla
  • Host: sftp://
  • Username: root
  • Password: easybot
  • Port: 22 (also works without entering anything here)

Location of program (URP) or script (URS) files: /programs

A suitable cable that mates to the toolhead connector is Lumberg RKMV 8-354

In development

In development

Used by Diego Lama to scratch drawings into car parts

Drawing with the UR10 (RoboDK).
Drawing with the UR10 V2 (Grasshopper)

This tool head turns the robot into an automated hole drilling machine. Good for elaborate hole patterns that would be tedious to do manually.

Based on this design.

The 3D printed part attaches to a Grip toolchanger underplate (G-MGW063-2U).

Download the 3D files here.
Attach the clamps to the largest part with M4 screws and nuts.
Attach the largest part to the tool changer with 4 M5x16 low profile bolts and 4 M4 nuts


  • ur10_robot_arm/ur10_robot_arm.txt
  • Last modified: 2021/09/20 01:06
  • by formlab