ur10_robot_arm:ur10_robot_arm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ur10_robot_arm:ur10_robot_arm [2020/08/04 06:18] – [Define the grid] formlabur10_robot_arm:ur10_robot_arm [2025/09/08 03:00] (current) – [Connect to the robot] formlab
Line 4: Line 4:
 Collaborative robot-arm   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) ====
  
-Applications+=== 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)
  
-===== future tool heads ===== +Test the setup: 
-  * 3D scanner tool head +  * 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.
-  * +
  
-===== Brush attachment =====+==== RoboDK ==== 
 +- [[https://www.youtube.com/watch?v=WmyIAgNyPC0|Reference Frame Definition]]
  
-===== 3D print attachment ===== +- 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. 
-In development+==== Grasshopper ====
  
-===== Pen plotter attachment =====+Grasshopper runs inside Rhino 7. In order to control the robot arm, a Grasshopper plugin is needed: Robots.
  
-===== Webcam attachment ===== 
  
-===== DSLR attachment =====+=== Connect to the robot ===
  
-===== Hole drilling attachment ===== +(08/09/2025)\\  
-{{:ur10_robot_arm:griddrill_poster_web.jpg?600|}}\\ +Connect the Robot controller with an ethernet cable. This can be done in 3 ways: 
-This tool head was made to drill grid of almost 500 holes into the base plate of the thermoform machine.+  * Robot controller direct to the Mac 
 +  * Robot controller to a network switch, which then connects to a Mac (not connected to the main network) 
 +  * Robot controller to a network switch, which is connected to the main network
  
-==== Physicial setup ==== +On the teaching pendant go to Setup Robot > Network 
-The program is made and executed on the teaching pendant.+  * Select Static Address 
 +  * IP address: 192.168.185.99 
 +  * Subnet Mask: 255.255.192.0 
 +  * Default Gateway: 0.0.0.0 
 +  * Preferred & Alternative DNS servers:  0.0.0.0
  
-{{:ur10_robot_arm:griddrill_dremel_attached_web.jpg?600|}}\\ +On the computer, go to System Settings > Network > Ethernet > TCP/IP 
-The Dremel is strapped to the upper arm of the robot and secured with zip ties, using a curved block of foam.+  * Set 'Configure' to 'Manually' 
 +  * IP Address192.168.185.88 
 +  * Subnet Mask: 255.255.192.0
  
-{{:ur10_robot_arm:griddril_flex_arm_attached_web.jpg?600|}}\\ +In the terminal, try pinging to check the connection to the robot
-Slide the Dremel flex-arm in the 3D printed holder. Make sure it is attached to the tool change plate. Check that the bolt-heads are not sticking out on the side that will mount to the robot armThe tool changer needs low profile boltsAttach the tool to the robot arm and install a 1mm drill in the chuck.+  * ''ping 192.168.185.99'' 
 +  * If the ping returns data, you know the computer can reach the robot
  
-{{:ur10_robot_arm:griddril_wood_web.jpg?600|}}\\ +Now you can control the robot with the Robots plugin in Grasshopper / Rhino and use the URRealtimeFeedback script to get the current pose & TCP position.
-I had a piece of wood on a table with a layer of thick cardboard underneath, but with the robot arm, it is possible to drill in walls, upright panels etc... (The cardboard in the picture should have been thicker).+
  
-==== Define the coordinate system of the stock material ====+Current versions used:  
 +  * Rhino version: 7  (7.38.24338.17002, 2024-12-03) 
 +  * Grasshopper version 03/12/2024 build 1.0.0007 
 +  * Robots (Visose) version: 1.4.1: [[https://github.com/visose/Robots|Link]] 
 +  * URRealtimeFeedback script for Grasshopper Robots: [[https://github.com/robin-gdwl/GH_Robots_URRealtimeFeedback|Link]]
  
-{{:ur10_robot_arm:griddril_test_reach_web.jpg?600|}}\\ +Using a forked version of the URRealtimeFeedback script by Odbee ([[https://github.com/robin-gdwl/GH_Robots_URRealtimeFeedback/pull/2|Link]]), makes it possible to use version 1.6.7 of the Robots plugin.
-Test the reach of the armcan it get to the far corners?+
  
-{{:ur10_robot_arm:griddril_define_corrdinate_system_web.jpg?600|}}\\ 
-To define the coordinate system of the stock material, take the teaching pendant and go to ''Installation > Features''. 
-  * Add a plane and define the necessary points. In this case these are the corners of the sheet of MDF. 
-  * First point: this defines the origin of the feature. 
-  * Second point: this defines the Y axis. 
-  * Third point: this defines the X axis. 
  
-Save the file with a clear name. 
  
-==== Define the grid ==== 
-In this example, the drill makes a grid of 495 holes. The program is based on a wizard for palletizing. 
  
-On the teaching pendant, load the following program: ''File > Load > drilling holes in a grid v2 (palletizing).urp''. +=== The Robots plugin === 
-Let's define 4 points where the outer most actions of the palletising sequence will take place. These points will become the corner-holes.+== Installation ==
  
-{{:ur10_robot_arm:griddril_define_grid_01_corners_web.jpg?600|}}\\ +  * In Rhino, go to ''Tools > Package Manager'' and select the ''online'' tab
-In the program tree, click item ''a1st Corner_1'' +  * Search for 'Robots' and select the 'Robots' plugin. If you select itcheck the Github url: the author is visose. 
-Click ''change this position''+  * 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).
  
-{{:ur10_robot_arm:griddril_define_grid_02_select_feature_web.jpg?600|}}\\ +== Robots.dll file ==
-From the upper right drop down menu, select the feature you defined previously.+
  
-{{:ur10_robot_arm:griddril_define_grid_03_point_down_web.jpg?600|}}\\ +If Rhino keeps asking to locate the Robots.dll filehere'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.  
-To make the drill point straight downclick on one of the number boxes under ''TCP''A new screen opens.+  * On mac: cmd + i, under sharing & permissions, change the privilege of 'everyoneto Read & Write. 
 +  * Location of the robots.dll file: 
 +    * ''username/Library/Application Support/McNeel/Rhinoceros/packages/7.0/Robots/1.4.1/Robots.dll''
  
-{{:ur10_robot_arm:griddril_define_grid_04_point_down_numbers_web.jpg?600|}}\\ +== Guides ==
-Change drop down menu ''Rotation vector [rad]'' to ''Rotation Vector [°]''+
-  * Set RX to ''0'' +
-  * Set RY to ''0'' +
-  * Set RZ to ''180'' (this is the rotation of the Z-axis, so the value probably doesn't matter)+
  
-{{:ur10_robot_arm:griddril_define_grid_06_speed_web.jpg?600|}}\\ +  * [[https://github.com/visose/Robots/wiki/How-To-Use|Robots How-To-Use]]. 
-Lower the speed for safety.+  * 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 
 + 
 + 
 +  * <code>Computer -------------- Robot arm</code> 
 +  * or  
 +  * <code>Computer --- Switch --- Robot arm</code> 
 + 
 + 
 + 
 + 
 +== 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.
  
-Manually move the arm to the first position, using the on screen arrows.+Based on [[https://www.thingiverse.com/thing:2475928|this design]].
  
-{{:ur10_robot_arm:griddril_define_grid_05_first_pos_web.jpg?600|}}\\ +The 3D printed part attaches to a [[https://www.grip-gmbh.com/connect/mgw/mgw063|Grip toolchanger underplate (G-MGW063-2U)]].
-When arrived at the first position, carefully move the arm down so that the drill almost touches the wooden surface. Keep a millimeter of safety margin.+
  
-Click ''OK'' and define the 3 other points too.+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]]
  
  • ur10_robot_arm/ur10_robot_arm.1596547109.txt.gz
  • Last modified: 2020/08/04 06:18
  • by formlab