====== Universal Robots UR10 robot arm ======
{{:ur10_robot_arm:universal_robots_ur10.jpg?nolink&200|}}
Collaborative robot-arm
References:
* [[https://asd.sutd.edu.sg/dfab/a-geometric-inverse-kinematics-solution-for-the-universal-robot/|A Geometric Inverse Kinematics Solution for the Universal Robot]]
* [[https://www.zacobria.com/pdf/universal_robots_zacobria_hints_and_tips_manual_1_4_3.pdf|Hints and tips by Zacobria]]
===== Software =====
* [[ur10_robot_arm:ur10_robot_arm#polyscope_the_teaching_pendant|Polyscope (the teaching pendant)]]
* [[ur10_robot_arm:ur10_robot_arm#grasshopper|Grasshopper]]
* [[ur10_robot_arm:ur10_robot_arm#robodk|Rodo-DK]]
* Other possible control software
* Python
* [[https://etasl.pages.gitlab.kuleuven.be/|eTaSL]]
==== Polyscope (the teaching pendant) ====
=== 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.
==== RoboDK ====
- [[https://www.youtube.com/watch?v=WmyIAgNyPC0|Reference Frame Definition]]
- Direct computer-robot ethernet connection doesn't work. You need a switch or a router. The computer's IP address should be set to DHCP.
==== Grasshopper ====
Grasshopper runs inside Rhino 7. In order to control the robot arm, a Grasshopper plugin is needed: Robots.
=== The Robots plugin ===
== Installation ==
* In Rhino, go to ''Tools > Package Manager'' and select the ''online'' tab.
* Search for 'Robots' and select the 'Robots' plugin. If you select it, check the Github url: the author is visose.
* Select version ''1.4.1'' and click install (restart Rhino after).
* Everything below version ''1.5.0'' probably works.
* Briefly tested versions: ''1.0.1'', ''1.3.0'', ''1.4.1'' seem to work. ''1.5.0'', ''1.6.0'' are too new for the get-current-position-script (see below).
== Robots.dll file ==
If Rhino keeps asking to locate the Robots.dll file, here's a tip. Make all grasshopper projects (files with a ''.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.
* Location of the robots.dll file:
* ''username/Library/Application Support/McNeel/Rhinoceros/packages/7.0/Robots/1.4.1/Robots.dll''
== Guides ==
* [[https://github.com/visose/Robots/wiki/How-To-Use|Robots How-To-Use]].
* There are a few example files in ('Robots-master > Documentation > Examples')
* I followed this [[https://www.youtube.com/watch?v=HV44DDlDqmQ&ab_channel=BastianWibranek|getting started video]].
* Robots guide by [[https://wiki.fablabbcn.org/ROBOTS|Fab Lab Barcelona]] (almost a complete copy from Robots How-To-Use).
* Drawing with robots [[https://www.youtube.com/watch?v=vyYAmu00xMg&t=1019s&ab_channel=KarlSingline|video tutorial]]. Uses KukaPRC instead of 'Robots', but workflow might be useful.
* [[https://www.youtube.com/playlist?list=PLqtxhH1qb3Mw5A_YbvHDfrq4DNNfLtcW-|Youtube video series 'programming robots in Grasshopper']]
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 [[http://fab.cba.mit.edu/classes/863.19/Harvard/people/joonhaenglee/week14/week14.html|this guide]] Joonhaeng Lee at [[http://cba.mit.edu/|MIT's center for bits and atoms]] describes a solution to this problem.
== Tips ==
* The first target should be a joint target. Following ones can be cartesian targets.
== Upload script to robot ==
* Small programs can be streamed directly to the robot with the 'Remote Connection' module.\\ {{:ur10_robot_arm:robots_sendtorobot.png?400|}}
* 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.\\ {{:ur10_robot_arm:robots_saveprogram.png?400|}}
* 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.
* [[https://github.com/robin-gdwl/GH_Robots_URRealtimeFeedback|Github plugin page]]
* [[https://github.com/robin-gdwl/GH_Robots_URRealtimeFeedback#-usage|Installation instructions]]
* [[https://www.youtube.com/watch?v=c1BiL6fXkgs&ab_channel=robin_gdwl|Demo video]]
== Setup ==
* Do not connect to the LAN network of KASK. Instead connect to the robot arm directly, or via a separate switch.
* Set the computer to a static IP address that is the same as the Robot's, except for the last number
* Computer -------------- Robot arm
* or
* Computer --- Switch --- Robot arm
== Related 'Robots' projects ==
* Wirecutting with Grasshopper & Robots ([[https://www.youtube.com/watch?v=-JtDSXmi1YI&ab_channel=GediminasKirdeikis|video]])
==== FTP connection ====
* Use FIleZilla
* Host: ''sftp:%%//%%192.168.185.99''
* Username: root
* Password: easybot
* Port: 22 (also works without entering anything here)
Location of program (URP) or script (URS) files: ''/programs''
==== RoboDK ====
- [[https://www.youtube.com/watch?v=WmyIAgNyPC0|Reference Frame Definition]]
===== Hardware =====
==== Toolhead connector ====
A suitable cable that mates to the toolhead connector is [[https://www.lumberg-automationusa.com/con/pdf/RKMV8354.pdf|Lumberg RKMV 8-354]]
===== Broom handle attachment =====
{{:ur10_robot_arm:urbroomhandle.jpg?600|}}\\
{{:ur10_robot_arm:urbroomhandle_02_web.jpg?600|}}\\
===== 3D printer (Clay) =====
In development
{{:ur10_robot_arm:urprinter_clay.jpg?600|}}
===== 3D printer (Plastic) =====
In development
{{:ur10_robot_arm:urprinter.jpg?600|}}\\
===== Pen plotter =====
{{:ur10_robot_arm:urprlotter.jpg?600|}}\\
Used by [[http://hisk.edu/mw/index.php/Diego_Lama|Diego Lama]] to scratch drawings into car parts
[[Drawing with the UR10]] (RoboDK).\\
[[Drawing with the UR10 V2]] (Grasshopper)
===== Webcam attachment =====
{{:ur10_robot_arm:urbwebcam.jpg?600|}}\\
{{:ur10_robot_arm:urwebcam_design_museum_ghent_web.jpg?600|}}\\
===== DSLR attachment =====
===== Hole drilling attachment =====
{{:ur10_robot_arm:griddrill.jpg?600|}}\\
{{:ur10_robot_arm:griddrill_poster_web.jpg?600|}}\\
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 [[https://www.thingiverse.com/thing:2475928|this design]].
The 3D printed part attaches to a [[https://www.grip-gmbh.com/connect/mgw/mgw063|Grip toolchanger underplate (G-MGW063-2U)]].
Download the 3D files {{ :ur10_robot_arm:ur_dremel_flex_clamp.zip |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
=== Applications ===
* [[:ur10_robot_arm:Drilling holes in a grid]]