====== Drawing with the UR10 v2 ====== With Grasshopper {{:ur10_robot_arm:p1057471_web.jpg?400|}} This is a preliminary summary. Will change! ==== Prepare the image ==== Export a vector image from inkscape. TODO: experiment with grouping etc. Jerry has a script that make the axidraws draw curves in a logical order, rather than jumping around. ==== Set-Up ==== === Install the software === * Make sure Rhino and Grasshopper 7 are installed * Install the [[https://www.food4rhino.com/en/app/robots|Robots plugin]]: * ''HD/Users/username/Library/Application Support/McNeel/Rhinoceros/packages/7.0/Robots/Robots.dll'' * Download the [[https://github.com/visose/robots/tree/libraries|Robot library]] and install locally. There's an online library as well, but it seems like the ''KU Leuven'' file is not in that list. * Place at least one pair of XML & 3DM files inside a folder named ''Robots'' in the ''Documents'' folder: * ''HD/Users/username/Robots/'' === Open Grasshopper file === * Researchers > Unfold > ''UR10 plotter 02.gh''. * Rhino starts up and automatically loads the connected file ''UR10 plotter 02.3dm''. In the Grasshopper file, the logic is defined. \\ The Rhino file is used to load and position vector images, so Grasshopper can use it. === Connect the robot to Grasshopper === Turn on the robot. == Connect the computer to the robot == * Use an ethernet cable going over a switch. Connecting directly to the robot doesn't work. * **Don't connect to the LAN of KASK.** The robot won't be able to connect to the network. Use a separate switch or remove all the connections except the one going to the robot and the computer. * If you use a laptop: Use the MiniDisplay to Ethernet adapter that is labeled Formlab. I had another one fail (the same model), which is annoying to debug. * IP address: 192.168.185.99 * Subnet masker: 0.0.0.0 * Default Gateway: 0.0.0.0 * Preferred DNS Server: 0.0.0.0 * Alternative DNS Server: 0.0.0.0 == Define the TCP == * Use the wizard on the teaching pendant * Set the current TCP as default * Save the settings in the installation tab. == Get the current pose into Grasshopper == * On the top of the sketch, switch to ''Real Robot'' * In the section ''Get data from real robot'', enable geometry display. * Press ''Get Robot Position''. You should see a 3D rendering of the physical position of the robot in Rhino. * Verify if it's the same pose as the real robot. * This defines the **home position** of the robot. == Define the work frame == * Touch the TCP of the robot arm on 3 points of the work frame: left bottom, right bottom, right top. * After every position, in Grasshopper, click on ''Get Point'' in the 'Construct Frame With Robot' section. * When done, two grey area's show up in Rhino. * The light grey area is the place where the drawing will happen * The dark blue area is the place to put the vector image. Look at the numbers (0, 1, 2) for orientation. == Load vector file == * in Rhino, import a vector file (SVG for example) * Position it in the dark blue rectangle. Look at the numbers (0, 1, 2) for orientation. * In Grasshopper, on the left of the plotting section select the curve-object under 'vector image'. * Right-click on it and select ''set curve'' or ''set multiple curves'' and select them in Rhino. Then click OK. * Use the Sim time dial to simulate the program. ==== Draw with the Robot ==== === Send the program to the robot === * Click ''Upload'' in the 'send to robot' section. * The first time you might need to click 2x * It is successful when a popup appears on the teaching pendant === Run the program on the robot === * Before the popup appears, go to the ''program'' tab and set the speed to 50%. * Click ''run'' on the popup and be ready to lower the speed or press the emergency stop button. * The program can also be stopped by clicking on the stop-icon on the teaching pendant. * The robot will move from it's current position to the home position, and from there to the targets defined in the program. ==== Wishlist ==== * Don't go back to home after the last point, but move a few centimeters away from the last point instead. * The ability to insert subroutines (for example: after drawing a curve, pick up another colour pencil, or dip a brush in some paint, ...)