====== 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]]