The Kinematic Chain or Tree can be represented by a graph of links connected though joints between each Link and other links.

Similar documents
URDF and You ROSCON David Lu!! Ph.D. Student Washington University In St. Louis. May 19, 2012

Lab 2A Finding Position and Interpolation with Quaternions

EE-565-Lab2. Dr. Ahmad Kamal Nasir

ROS-Industrial Basic Developer s Training Class. Southwest Research Institute

Lab 1 RVIZ and PYTHON with Simple Robot Manipulator Model

ABOUT ME. Gianluca Bardaro, PhD student in Robotics Contacts: Research field:

ABOUT ME. Gianluca Bardaro, PhD student in Robotics Contacts: Research field: goo.gl/dbwhhc.

ROS-Industrial Basic Developer s Training Class

EECS 4330/7330 Introduction to Mechatronics and Robotic Vision, Fall Lab 5. Controlling Puma Using Leap Motion Device

Programming for Robotics Introduction to ROS

Basilio Bona ROBOTICA 03CFIOR 1

ROBOTICS 01PEEQW. Basilio Bona DAUIN Politecnico di Torino

Construction of SCARA robot simulation platform based on ROS

EEE 187: Robotics Summary 2

John Hsu Nate Koenig ROSCon 2012

Manipulator Path Control : Path Planning, Dynamic Trajectory and Control Analysis

Robot mechanics and kinematics

Industrial Robots : Manipulators, Kinematics, Dynamics

Forward kinematics and Denavit Hartenburg convention

Robot mechanics and kinematics

Robotics Configuration of Robot Manipulators

Rigid Body Transformations

WORKING WITH BAXTER MOVEIT, PILLAR AND OTHER OBJECTS

Robotics kinematics and Dynamics

Structural Configurations of Manipulators

Introducing MoveIt! First, start the Baxter simulator in Gazebo:

Analytical and Applied Kinematics

3. Manipulator Kinematics. Division of Electronic Engineering Prof. Jaebyung Park

EE Kinematics & Inverse Kinematics

Introduction to Robotics

Lecture «Robot Dynamics»: Kinematics 3

Humanoid whole-body motion control with multiple contacts. Francesco Nori Robotics, Brain and Cognitive Sciences

INSTITUTE OF AERONAUTICAL ENGINEERING

Lecture «Robot Dynamics»: Multi-body Kinematics

Theory of Robotics and Mechatronics

Lecture «Robot Dynamics»: Kinematics 3

Crea%ve So*ware Project Duckietown Descrip%on. Nick Wang

Gazebo. Amirreza Kabiri Fatemeh Pahlevan Aghababa. Autumn 2017

Introduction To Robotics (Kinematics, Dynamics, and Design)

T. Moulard () ROS tutorial January / 32

MEAM 520. Denavit-Hartenberg (DH)

Using Algebraic Geometry to Study the Motions of a Robotic Arm

Autonomous Navigation for Flying Robots

Module 1 : Introduction to robotics. Lecture 3 : Industrial Manipulators & AGVs. Objectives. History of robots : Main bodies and wrists

Prof. Mark Yim University of Pennsylvania

Prof. Mark Yim University of Pennsylvania

What Is SimMechanics?

MEAM 520. More Denavit-Hartenberg (DH)

Intern Presentation:

Kinematics. Kinematics analyzes the geometry of a manipulator, robot or machine motion. The essential concept is a position.

MDP646: ROBOTICS ENGINEERING. Mechanical Design & Production Department Faculty of Engineering Cairo University Egypt. Prof. Said M.

Kinematics - Introduction. Robotics. Kinematics - Introduction. Vladimír Smutný

MTRX4700 Experimental Robotics

Sphero Lightning Lab Cheat Sheet

[2] J. "Kinematics," in The International Encyclopedia of Robotics, R. Dorf and S. Nof, Editors, John C. Wiley and Sons, New York, 1988.

Robotics. SAAST Robotics Robot Arms

Lecture 3.5: Sumary of Inverse Kinematics Solutions

Planning in Mobile Robotics

θ x Week Date Lecture (M: 2:05p-3:50, 50-N202) 1 23-Jul Introduction + Representing Position & Orientation & State 2 30-Jul

MACHINES AND MECHANISMS

Using Siemens NX 11 Software. Assembly example - Gears

ME 115(b): Final Exam, Spring

Objectives. Part 1: forward kinematics. Physical Dimension

MCE/EEC 647/747: Robot Dynamics and Control. Lecture 1: Introduction

10/25/2018. Robotics and automation. Dr. Ibrahim Al-Naimi. Chapter two. Introduction To Robot Manipulators

OPENRAVE TUTORIAL. Robot Autonomy Spring 2014

PPGEE Robot Dynamics I

Advanced Vision Guided Robotics. David Bruce Engineering Manager FANUC America Corporation

Articulated Robots! Robert Stengel! Robotics and Intelligent Systems! MAE 345, Princeton University, 2017

ISE 422/ME 478/ISE 522 Robotic Systems

Chapter 1: Introduction

Theory of Machines Course # 1

METR 4202: Advanced Control & Robotics

KINEMATIC ANALYSIS OF 3 D.O.F OF SERIAL ROBOT FOR INDUSTRIAL APPLICATIONS

MODELING AND HIERARCHY

INF Introduction to Robot Operating System

Graph based INS-camera calibration

ME5286 Robotics Spring 2014 Quiz 1 Solution. Total Points: 30

CS 465 Program 4: Modeller

Workspaces of planar parallel manipulators

Robot Programming with Lisp


Planar Robot Kinematics

MCE/EEC 647/747: Robot Dynamics and Control. Lecture 3: Forward and Inverse Kinematics

Lecture 22 of 41. Animation 2 of 3: Rotations, Quaternions Dynamics & Kinematics

Lecture 22 of 41. Animation 2 of 3: Rotations, Quaternions Dynamics & Kinematics

This overview summarizes topics described in detail later in this chapter.

1 LabView Remote Command Interface Guide

Homework #2 Posted: February 8 Due: February 15

What is an industrial robot?

CS-184: Computer Graphics. Today. Forward kinematics Inverse kinematics. Wednesday, November 12, Pin joints Ball joints Prismatic joints

The Collision-free Workspace of the Tripteron Parallel Robot Based on a Geometrical Approach

Jane Li. Assistant Professor Mechanical Engineering Department, Robotic Engineering Program Worcester Polytechnic Institute

IntroductionToRobotics-Lecture02

Working Model Tutorial for Slider Crank

Model a Simple Conveyor

Application of Robot Arm in 2D Incision

Collision Detection. Jane Li Assistant Professor Mechanical Engineering & Robotics Engineering

ME 321 Kinematics and Dynamics of Machines

CSE4421/5324: Introduction to Robotics

Transcription:

Lab 3 URDF and Hydra Robot Models In this Lab we will learn how Unified Robot Description Format (URDF) describes robots and use it to design our own Robot. We will use the Ubuntu Linux editor gedit to modify and create URDF text files. We will use RVIZ a Robot Simulator and the Robot State Publisher in ROS to display and control our Robot Models. There are five sections to this lab: a) URDF format and Simple Robot Model b) Ubuntu Linux Graphical Screen Editor gedit c) Hydra Robot Example d) Hydra Robots URDF models e) Design a Robot URDF model URDF can be used to model a robot with links (members) connected by joints in a chain or tree. Most Industrial Robots can be modeled by chains of joints offset by links. Multi-arm robots can be modeled with a tree data structure of joints connected by links to a base link. We do not cover the transmission element at this point since all the robots we need are created by chains or trees. Other elements of URDF such as sensors are also not used. There are two main types of URDF XML elements we need to create our robots links and joints. Link elements (or blocks) can contain elements for inertial properties, visual properties, and collision properties. elements can also contain elements for origin, parent link name, child link name, axis of rotation/translation, calibration, dynamics, limit, mimic another joint and safety controller information. Base Link Link 1A Link 1B Link 2A Link 3A Link 2B Figure 1 Kinematic Tree The Kinematic Chain or Tree can be represented by a graph of links connected though joints between each Link and other links. CopyRight 2014 by William Lehman Page 1

Link 1A is moved by the joint between the Base Link and Link 1A. Link 1A is connected to a joint between Link 1A and Link 2A that moves Link 2A. Link 1A is also connected to a joint between Link 1A and Link 3A which moves Link 3A. Each Link is moved by a single joint but may be connected to a number of joints that move other links. In URDF terminology multiple joints can be connected to one link, but the link can only be a Child for one of the joints connected to it and must be a Parent to all the other joints connected to it. The Base Link is the first link in the tree and is special. The origin of the axis system to World coordinates x, y and z is determined from the Odometry Frame (/odom) and Map. In the example to follow our robot arm is located at World Coordinate 0,0,0. It should be noted the students can get a graph of the Kinematic Tree or Chain with urdf_graphviz command typed in the terminal. Link elements must have the name attributes for the link. The inertial and collision properties for the link are not included, except where it will be connected to a prismatic type joint. The visual information can be provided by specifying a rectangle, sphere or cylinder shape for the link or a mesh. Although the mesh produced by a Computer Aided Design (CAD) program can be very pleasing to the eye, we keep it simple with a rectangle or cylinder shape. As a convention in the design of our robots for the labs we group together all the link elements to and then all the joint elements for readability of the URDF file (Figure 2). ROBOT NAME Link Elements 1-N Elements 1-N END ROBOT Figure 2 Types of URDF XML Blocks The joint element has a name and an attribute for the type of joint. We only select a revolute, continuous or prismatic type for the joint. The ROS Continuous joint type in actuality is a revolute. In URDF a continuous joint is a revolute joint where the angle of rotation is 360, where the revolute joint limits of rotation must be specified. The joint attaches a parent link to a CopyRight 2014 by William Lehman Page 2

child link. The child link can be a parent link to one or more other links in a chain or tree. The child link however can never be connected through a series of joints and links back to its parent link making a loop. An example link element can be found in Figure 3. We could have named the link anything we felt useful to identify it, since it was the second link in the chain we named it link2. We skip the inertial and collision information, not because it s not useful but to keep the example simple. The visual element contains the geometry element which sets the type of display using the geometry element. The box element is inside the geometry element. The box element sets the x, y, z sizes of the rectangle. The visual also contains the material element which sets the color of the rectangle link. We set it to an arbitrary color to distinguish this link from other links in the RVIS simulator display. <link name="link2"> <origin rpy="0 1.571 0" xyz="0 0 0.5"/> <material name="linkc2"> <color rgba="1 0 1 1"/> Figure 3 URDF XML Element Link Block The visual also has the origin element inside it. The origin rotates the linkage visual display using roll, pitch and yaw angles. Roll is about the x axis, pitch is rotation about the y axis and yaw is rotation about the z axis. In the above example the rectangle is rotated 90 from the long side on the x axis to now point along the z axis. The link is offset ½ meter above the origin of the base link. The robot is actually buried in the floor in a hole ½ meter deep. Syntax of the XML elements have the form <label parameters> followed by other elements and a /> or </label>. Next, we examine a joint XML element in Figure 4. The joint must have some name which should make sense to identify where on the robot it resides. We choose in this example to use the label link1_link2, since we connect our link named link1 to our link named link2. The joint is a revolute type with no limits on rotation angle so we choose a continuous type. The parent link is link1 and the child link is link2. CopyRight 2014 by William Lehman Page 3

The axis element specifies the axis the joint will revolve around which in this case is x. The origin xyz attribute is a offset of the joint from the parent joint origin to the child s joint origin. The origin rpy parameter is a roll, pitch and yaw rotation on the child s joint Frame of reference. <joint name="link1_link2" type="continuous"> <parent link="link1"/> <child link="link2"/> <origin rpy="0 0 0" xyz="0 0 1.0"/> Figure 4 URDF XML Element Example The following command in the terminal window can be used in ROS to check the syntax of the URDF file: rosrun urdfdom check_urdf filename.urdf To design an entire robot we use tables as an aid. Below we define the joints for our RRR Robot Arm with the URDF for it in table 1. We can easily build the URDF from the table or organize a existing URDF file into the table format. # Type Link # Link # x y z Roll Pitch Yaw + 1 Axis X Axis y 1 Fixed Base link1 0 0 0 0 0 0 0 0 0 2 R link1 link2 0 0 0.5 0 0 0 0 0 1 3 R link2 link3 0 0 0.5 0 0 0 1 0 0 4 R link3 link4 0 0 0.5 0 0 0 1 0 0 Table 1 RRR Robot Axis z How do translate the above table entries to URDF code? The Table 2 and Figure 4 shows how its done. CopyRight 2014 by William Lehman Page 4

# X y z Type Link # Link # Roll Pitch Yaw Axis X Axis y Axis z 1 Fixed Base link1 0 0 0 0 0 0 0 0 0 2 R link1 link2 0 0 0.5 0 0 0 0 0 1 3 R link2 link3 0 0 0.5 0 0 0 1 0 0 4 R link3 link4 0 0 0.5 0 0 0 1 0 0 Table 2 #2 Color Coded Use the color codes to translate the table entry to the URDF code. <joint name="link1_link2" type="continuous"> <parent link="link1"/> <child link="link2"/> <axis xyz="0 0 1" /> <origin rpy="0 0 0" xyz="0 0 0.5"/> Figure 4 Element #2 Our robot URDF examples with prismatic joints are slightly more complex since prismatic joints require limits parameters and safety parameters not required for continuous joint type. We have Table 3 similar to the last table but our first joint is a prismatic joint that extends or contracts along the z axis a SCARA type robot. # Type Link # Link+1 # x y z Roll Pitch Yaw + 1 Axis X Axis y 1 P Base link1 0 0 0 0 0 0 0 0 1 2 R link1 link2 0 0 1.0 0 0 0 1 0 0 3 R link2 link3 0 0 1.0 0 0 0 1 0 0 Table 3 PRR Robot Example Axis z We need additional information is required to define a prismatic joint. The following table defines some of the other parameters for a joint. The upper and lower limit defines how far the prismatic joint extends. CopyRight 2014 by William Lehman Page 5

# Type Link # Link+1 # Limit effort lower upper velocity 1 P Base link1 1000.0-1 1 0.5 2 R link1 link2 3 R link2 link3 Table 4 Supplemental Information for PRR Robot We show below the prismatic joint with limit, lower, upper and velocity entries. <joint name gripper_extension" type="prismatic"> <parent link="base /> <child link="link1 /> <limit effort= 1000.0 lower= -1 upper= 1 velocity= 0.5 /> <axis xyz="0 0 1 /> Figure 5 PRR #1 Line The Hydra Robot example is a robot with two arms. There are two kinematic chains that form the kinematic tree for the Hydra Robot. Each kinematic chain is represented in the following two tables, one for each arm. # Type Link # Link+1 # x y z Roll Pitch Yaw + 1 Axis X Axis y 1 R Base link1 0 0 0.5 0 0 0 0 0 1 2 R link1a link2 0 0 1.0 0 0 0 1 0 0 3 R link2a link3 0 0 1.0 0 0 0 1 0 0 Table 5 Hydra Robot Arm 1 Axis z # Type Link # Link+1 # x y z Roll Pitch Yaw + 1 Axis X Axis y 1 R Base link1 0 0 0.5 0 0 0 0 0 1 2 R link1b link2 0 0 1.0 0 0 0 1 0 0 3 R link2b link3 0 0 1.0 0 0 0 1 0 0 Table 6 Hydra Robot Arm 2 Axis z CopyRight 2014 by William Lehman Page 6

The appendix contains the examples URDF code for the examples discussed. Design your own robot using a table as a aid in the design and documentation process. Create the URDF in gedit or other editor and test the results in RVIZ Robot Simulator. The Robot should have at least four joints in a Kinematic Chain. The Robot can be a Kinematic Tree. The Robot should not have more than 15 joints. CopyRight 2014 by William Lehman Page 7

APPENDIX A RRR Robot Arm <?xmld version="1.0"?> <robot name="arm"> <link name="base_link"> <box size="1 1 1"/> <material name="bodyc"> <color rgba="0 0 0.8 1"/> <link name="link2"> <material name="linkc2"> <color rgba="1 0 1 1"/> <link name="link1"> <box size="0.25.25 1"/> <material name="linkc1"> <color rgba="1 1 0 1"/> <link name="link3"> <material name="linkc3"> <color rgba="0 1 1 1"/> CopyRight 2014 by William Lehman Page 8

<joint name="base_link1" type="continuous"> <parent link="base_link"/> <child link="link1"/> <axis xyz="0 0 1" /> <joint name="link1_link2" type="continuous"> <parent link="link1"/> <child link="link2"/> <joint name="link2_link3" type="continuous"> <parent link="link2"/> <child link="link3"/> </robot> APPENDIX B PRR Robot <?xmld version="1.0"?> <robot name="arm"> <link name="base_link"> <box size="1 1 1"/> <material name="bodyc"> <color rgba="0 0 0.8 1"/> <link name="link1"> <box size="0.25.25 1"/> <material name="linkc1"> CopyRight 2014 by William Lehman Page 9

<color rgba="1 1 0 1"/> <link name="link2"> <material name="linkc2"> <color rgba="1 0 1 1"/> <link name="link3"> <material name="linkc3"> <color rgba="0 1 1 1"/> <joint name="gripper_extension" type="prismatic"> <parent link="base_link"/> <child link="link1"/> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5"/> <axis xyz="0 0 1" /> <origin rpy="0 0 0" xyz="0 0 0"/> <joint name="link1_link2" type="continuous"> <parent link="link1"/> <child link="link2"/> <joint name="link2_link3" type="continuous"> <parent link="link2"/> <child link="link3"/> </robot> CopyRight 2014 by William Lehman Page 10

APPENDIX C Hydra Robot<robot name="hydra2"> <?xmld version="1.0"?> <link name="base_link"> <box size="1.25 1.25 1"/> <material name="bodyc"> <color rgba="0 0 0.8 1"/> <link name="object1"> <box size="0.2 0.2 0.2"/> <material name="bodyx"> <color rgba="0 0.8 0.8 1"/> <joint name="base_object1" type="fixed"> <parent link="base_link"/> <child link="object1"/> <axis xyz="0 0 0" /> <origin rpy="0 0 0" xyz="2 0 0"/> <link name="link1a"> <box size="0.25.25 1"/> <material name="linkc1"> <color rgba="1 1 0 1"/> <link name="link2a"> <material name="linkc2"> <color rgba="1 0 1 1"/> CopyRight 2014 by William Lehman Page 11

<link name="link3a"> <material name="linkc3"> <color rgba="0 1 1 1"/> <joint name="base_link1a" type="continuous"> <parent link="base_link"/> <child link="link1a"/> <axis xyz="0 0 1" /> <origin rpy="0 0 0" xyz="0.5 0 0.5"/> <joint name="link1_link2a" type="continuous"> <parent link="link1a"/> <child link="link2a"/> <joint name="link2_link3a" type="continuous"> <parent link="link2a"/> <child link="link3a"/> <link name="link1b"> <box size="0.25.25 1"/> <material name="linkc1"> <color rgba="1 1 0 1"/> <link name="link2b"> CopyRight 2014 by William Lehman Page 12

<material name="linkc2"> <color rgba="1 0 1 1"/> <link name="link3b"> <material name="linkc3"> <color rgba="0 1 1 1"/> <joint name="base_link1b" type="continuous"> <parent link="base_link"/> <child link="link1b"/> <axis xyz="0 0 1" /> <origin rpy="0 0 0" xyz="-0.5 0 0.5"/> <joint name="link1_link2b" type="continuous"> <parent link="link1b"/> <child link="link2b"/> <joint name="link2_link3b" type="continuous"> <parent link="link2b"/> <child link="link3b"/> </robot> CopyRight 2014 by William Lehman Page 13