6 views

Uploaded by Jorge Cruz Mancilla

save

You are on page 1of 16

1)

Maria Nystr¨ om, Mikael Norrl¨ of Division of Automatic Control Department of Electrical Engineering Link¨ opings universitet, SE-581 83 Link¨ oping, Sweden WWW: http://www.control.isy.liu.se E-mail: nystrom@isy.liu.se, mino@isy.liu.se 5th September 2003

OMATIC CONTROL AU T

CO MMU

NICATION SYSTE

MS

LINKÖPING

**Report no.: LiTH-ISY-R-2542 Submitted to
**

Technical reports from the Control & Communication group in Link¨ oping are available at http://www.control.isy.liu.se/publications.

All the most important functions are explained and examples of how to use them are also included.Abstract This users manual introduces the basic ideas of the PGT . Keywords: zone interpolation. The main features of the toolbox is to give the user the possibility to 1) build paths in Cartesian (3DOF) space. joint path.Path Generation Toolbox for Matlab. cubic splines. MATLAB functions . cartesian path. 2) transform the Cartesian paths into jointspace.

Information about the zone path generation is stored in zinfo. For further information segments and how the segments relate to sections see e.1 Introduction This toolbox is intended for geometrical path generation with application industrial robots. the index value at the end of the section. the index value in the middle of the zone. the index value at the end of the zone and ﬁnally.g. the joint space path is stored in the jsp (joint space path) ﬁeld. [1] and [2]. is stored in the ﬁelds pseg (previous segment) and cseg (current segment). 2. A path consists of a number of path primitives. Each section has an index. If the section has been transformed to a path in joint space. An index value at a certain point is equal to the length of the section from the beginning of the section to that point. called segments.1 The segment ﬁeld Information about the segments in Cartesian coordinates is stored in a data structure with the following ﬁelds >> sec.pseg ans = type: descr: range: tdi: or >> sec. Each section and each path is here represented by a data structure and a number of functions for path generation that operates on these have been developed.cseg 1 . Four different values of this index are stored in the range ﬁeld: the index value at the beginning of the section. 2 Data structures Each section is represented as a data structure with the following ﬁelds >> sec sec = pseg: cseg: zinfo: range: jsp: The Cartesian representation of the two segments that builds up the section.

Predeﬁned types are ’sp’.3 Path data structure Several sections can be gathered to form a complete path. These values are stored in the segindex length to zone intersection point ﬁeld. normalized indices. 2. Finally time dependent information for the segment is stored in the tdi ﬁeld. are needed. The ztype entire segment length ﬁeld contains a number. which represents an “empty” segment containing just one point. which determines what interpolation method to use when creating the zone path.The segment type is stored as a two character string in the type ﬁeld. is stored in the range ﬁeld. range is consequently a vector of size “number of sections”+1. which has the following ﬁelds >> sec. Here.zinfo ans = segindex: ztype: To be able to construct the zone. the length of the path is stored in the range ﬁeld. for the two points where the zone intersects the segments. which is a circular arc. ’ci’. beginning with the value zero. If for example ztype = 1 a parabolic path is received. The index value for each segment at the end of the ﬁrst zone and at the beginning of the second zone.2 The zone information ﬁeld Necessary zone information is stored in a data structure named zinfo. 2. 2 . the index of a point represents the length of the segment from the beginning of the segment to that point. and ’em’. The indices are calculated as . A mathematical description of the segment can be found in descr. At the point where each section ends. which represents a spline. A path data structure has the following ﬁelds >> rpath rpath = descr: range: descr is an array containing the section data structures. This ﬁeld will have different appearances for different segment types.

method: function handle to a function that handles the adjustment of the length between the breakpoints. The result should be a [3x1] vector. The result should be a [3x1] vector.var: Optional variable. aidx. maxerror: maximum deviation of the desired Cartesian path from the actual robot path. see [3]. aidx.method. The result is the new length.method: function handle to a function that differentiates the joint angles with respect to the index in a given point. for different types of calculations. ikine: function handle for inverse kinematic calculations. dq.method. Given as argument to the function specified by dq.4 Information for transformation to joint space For the transformation from Cartesian coordinates to joint space. dq. An example of the data structure can be found in the ﬁle infofcn. a float. The data structure must have the following ﬁelds robot: a complete robot description. i.var: Optional variable.m. This information is gathered in a data structure stored in a separate ﬁle. delta: initial length between the breakpoints. Given as argument to the function specified by aidx.e. The robot description should be generated with Robotic Toolbox.2. and a number of functions. a number of variables must be given speciﬁc values. must be speciﬁed. brp: number of breakpoints in each spline function. 3 .

in Cartesian coordinates. If psec is an empty section. f can be omitted and will then be given the value zero.7 0. and the end point is p= [0. f is omitted while the section does not start with a zone. which is enclosed by a zone of radius zone.4]. a line section connected to the section psec.zone. The section ends at the point p. What interpolation method to use when creating the zone path in the ﬁrst zone.2 0. The radius of the zone around the point p is 0.35] >> esec = emptysec([1 0. Creation of a start point with coordinates [1 0.7 0.2 0. Creates. Creation of a line section where psec is the empty section created in the emptysec example above. Is used as psec in moveline and movecirc when creating the ﬁrst section on a path.1) lsec = pseg: [1x1 struct] cseg: [1x1 struct] zinfo: [1x1 struct] range: [0 0 0 0.02 0. >> lsec = moveline(esec. The zone radius must be smaller than half the length of each segment in the zone.f. Time dependent information for the line segment can be given with the parameter tdi.3 Functions sec = emptysec(p).tdi).0.1 meters. around the last point of psec.[0. is deﬁned by the number f. Creates an empty section with just one point p.4].35]) esec = cseg: [1x1 struct] range: 0 Syntax Description Example Syntax Description Example sec = moveline(psec.2534] 4 .p.02 0.

Creates a path with the sections sec1 . secn where sec1 is the ﬁrst section of the path and secn the last. .zone..45].p2. . Creates. The interpolation method to use in the zone around the ﬁrst point.35 0. . . an arc section connected to the section psec. No check will be made to see whether the sections are connected to each other or not. .1 meters.1271 0.0605 0.49 0. is given by f = 1. The zone radius must be smaller than half the length of each segment in the zone.. . is deﬁned by the number f. The path in the ﬁrst zone. If psec is an empty section. in Cartesian coordinates..74 0. [0. p2 speciﬁes the last point on the arc and p1 an intermediate point.1.3621] Syntax Description Example rpath = makepath(sec1 .f). f can be omitted and will then be given the value zero.1) csec = pseg: [1x1 struct] cseg: [1x1 struct] zinfo: [1x1 struct] range: [0 0. secn ). The radius of the zone around the point p2 is 0. deﬁned by psec. The radius of this zone was speciﬁed in the moveline example.0.85 0.csec) rpath = descr: [1x2 struct] range: [0 0. This gives a parabolic path. . p2 is enclosed by a zone of radius zone. Time dependent information for the circle segment can be given with the parameter tdi.5]. Creation of a path with the sections created in the moveline and movecirc examples >> rpath = makepath(lsec. around the last point of psec. >> csec = movecirc(lsec.6155] 5 .Syntax Description Example sec = movecirc(psec. Creation of a circle section which is connected to the line section created in the moveline example.p1.2534 0. Empty sections are not allowed. .[0.

ac).4198 6 . The path created in the makepath example is evaluated at the point given by index 0.7645 0. which must satisfy x ∈ rpath.1.0.6155 1.0210] Syntax Description Example value = evalsec(sec.2122 0.1e-6) value = 0.1) is being connected to the path created in the makepath example >> arpath = appendpath(rpath. The accuracy in the zone is given by ac which can be omitted.8202 0.09 with accuracy 10−6 if within a zone. A section created as sec = moveline(csec.Syntax Description Example rpath = appendpath(rpath. The section created in the movecirc example is evaluated at the point given by index 0.2618 0.5].x.0.35 0. Evaluates the path rpath at the point given by index x. >> value = evalsec(csec.09.x.4036 Syntax Description Example value = evalpath(rpath.ac).2534 0.0.sec) arpath = descr: [1x3 struct] range: [0 0. A section given by sec is appended to the path rpath.[0. Default value is then 10−7 . >> value = evalpath(rpath.42.6 0.42 with accuracy 10−6 if within a zone.1e-6) value = 0. No check will be made to see whether the path and the section are connected to each other or not.range.sec). which must satisfy x ∈ sec. The accuracy in the zone is given by ac which can be omitted. Default value is then 10−7 . Evaluates the section sec at the point given by index x.range.

f and ac can be omitted.5 0. Plots the section sec in Cartesian coordinates. ac.f.34 0.78 0.3 0. If f = 1. deﬁned by index x. Plots the path rpath in Cartesian coordinates.4 0. only the segments will be drawn and not the actual path.7 0.36 0. only the actual path of the robot will be drawn. >> plotsec(csec) 0. is returned.1 y 0 0.2) Example 0.5 0.46 0. relates to the number of points plotted in the ﬁgure. >> plotpath(rpath. Default value for f is 1 and for ac 50.4 0. ac.42 z 0. The path created in the makepath example is plotted with f = 2. which is an integer. If f = 2 the parts of the segments inside the zone will also be drawn.9 1 Figure 2: Function plotpath Syntax Description tdi = gettdi(rpath. relates to the number of points plotted in the ﬁgure. only the actual path of the robot will be drawn.82 0.65 x 0.x).2 0.95 0.38 0.4 0.76 y 0. The path or section rpath contains the segment.48 0. and if f = 3. If f = 1. which is an integer.86 Figure 1: Function plotsec Syntax Description plotpath(rpath. The information stored in the tdi ﬁeld of a segment.38 0. The section created in the movecirc example is plotted.f.ac). Default value for f is 1 and for ac 50.48 0.ac).8 0.42 0. 7 .75 0. f and ac can be omitted.1 0.84 0.44 z 0. and if f = 3.8 0.44 0.2 0. If f = 2 the parts of the segments inside the zone will also be drawn. only the segments will be drawn and not the actual path.74 x 0.85 0.46 0.Syntax Description Example plotsec(sec.4 0.3 0.

H can be omitted and will the be given the value 10−6 . If inside a zone the derivative is calculated with ﬁnite different approximation otherwise an analytical solution is given. Returns the i:th section of the path rpath.12. H can be omitted and will the be given the value 10−6 .i). sec = getlsec(rpath). The section created in the movecirc example is differentiated and evaluated in the point given by index 0. in Cartesian coordinates. The section created in the movecirc example is differentiated and evaluated in the point given by index 0.x.e.h). d dl 2 c evaluated at the point given by index x. sec = getsec(rpath.5992 0. Returns the ﬁrst section of the path rpath.7764 0. and returns the second derivative with respect to the path index. H is the distance between the points in the ﬁnite different approximation. If inside a zone the derivative is calculated with ﬁnite different approximation otherwise an analytical solution is given.0. Returns the last section of the path rpath. Differentiates the section sec. >> value = d2sec(csec.8860 0.Syntax Description Syntax Description Syntax Description Syntax Description sec = getfsec(rpath).0. i. 2 P (l ) c . H is the distance between the points in the ﬁnite different approximation.e.1957 Example Syntax Description Example value = d2sec(sec. value = dsec(sec.x. and returns the ﬁrst derivative evaluated at the point given by index x.5775 8 . Calculates the second derivative of the section sec. in Cartesian coordinates.12. i.12) value = -0.h).12) value = 0. >> value = dsec(csec.8178 0. with respect to the ( lc ) path index. dP dlc .

6 0.6155] Syntax Description Example plotbrp(rpath.. Transforms the Cartesian path or section rpath to cubic spline functions in joint space. >> nrpath = cart2jsp(rpath.value_n). see also 2.5 2 1.’fieldname_n’.1 0.2534 0. The path created in the makepath example is to be transformed into joint space..fcnhandle..5 1 rad 0. this can be done by specifying the ﬁeld name that should be changed and then specifying the new value.5 0 −0. fcnhandle is a function handle to a function generating information necessary for the transformation.2 0. If the information is to be changed temporarily.7 Figure 3: Function plotbrp 9 .’fieldname_1’. The maximum deviation of the generated robot path from the desired Cartesian path. is temporarily set to 10−5 meters.5 0 0.3 l c 0.5 0. ’maxerror’.1) 2. Information about the transformation is received from the function handle @infofcn. value_1. Plots the breakpoint locations for the path rpath in joint space. >> plotbrp(nrpath. The breakpoints for the path created in the cart2jsp example is being plotted with the zone borders marked. which is equal to rpath but with a description of the path in joint space attached.Syntax Desrcription Example nrpath = cart2jsp(rpaht. Returns the path or section object nrpath.4.4 0.f). If f is present the zone borders are marked with dotted lines.1e-5) nrpath = descr: [1x2 struct] range: [0 0..5 −1 −1.@infofcn.

5 0.nrpath. which is stored in rpath. >> plotcder(robot.5 0. The joint space path created in the cart2jsp example is differentiated and plotted with d2= 0.f). Plots the ﬁrst and second derivative of a path or section in joint space. The norm of the ﬁrst and second derivative are then calculated with ﬁnite different approximation and plotted.005 meters. The plots are created at a number of calculation points.7 −120 0 0. If f is present the zone borders are marked with dotted lines.d2.1 0. and distance d2 for the second derivative. The joint space path created in the cart2jsp example is plotted with plotcder with the zone borders marked.5 0 dq/dlc 0 d q/dlc 2 2 −20 −0.rpath.[].d1.[]. given by rpath. Default value for d1 and d2 is 0.Syntax Description Example plotjder(rpath.5 −40 −60 −1 −80 −1.0.3 l c 0.001.[].6 0. d1 is the distance between the calculation points for the ﬁrst derivative and d2 the same for the second derivative. r is the robot for which the path is constructed.2 0.5 −100 −2 0 0.6 0.7 (a) ˆ dq dlc (b) ˆ d2 q dl2 c Figure 4: Function plotjder Syntax Description plotcder(r.005 meters.4 0.1 0.4 0.1) Example 10 .3 lc 0. is transformed back to Cartesian space using forward kinematics.d1.2 0. If f is present the zone borders are marked with dotted lines. which are all at distance d1 from each other for the ﬁrst derivative.5 60 40 1 20 0.001) 2 80 1. The robot is generated with the function r3fcn. >> plotjder(nrpath.d2. Default value for d1 and d2 is 0.f). Points on the path or section in joint space.

3 l c 0.6 error 0.998 d2p/dl2 c 30 20 10 0 0 1 0.3 lc 0.002 1.0.7 0.2 0.001.3 0.rpath.5 0.4 0. d is the distance between the calculation points and if f is present the zone borders are marked with dotted lines. The robot is generated with the function r3fcn.1) Example 1 x 10 −5 0.7 0.1 0.4 0. r is the robot for which the path is constructed.2 0.6 0.5 0. Points on the path or section in joint space.2 0.001 and the zone borders marked. given by rpath are transformed to Cartesian coordinates and the compared to the desired Cartesian path or section.8 0.4 0. also given by rpath.9 0.7 (a) ˆ dP dlc (b) ˆ d2 P dl2 c Figure 5: Function plotcder Syntax Description plotce(r. The norm of the error are then plotted.1 0.7 Figure 6: Function plotce 11 .f).5 0.9975 0 0.0015 60 1.4 0.1 0 0 0. The joint space path created in the cart2jsp example is compared to the desired Cartesian path with d = 0.3 l c 0.1 0.6 0.2 0.001 50 1.9985 0. >> plotce(robot.nrpath.70 1.9995 0.999 0.0005 40 dp/dlc 0.d.5 0.6 0.

i.sec.2 Functions for use in cart2jsp theta = ikina(r. Returns a [3 × 1] vector. q is the joint angles where the derivative is to be evaluated and x is the value of lc at that point.sec. Calculates the inverse kinematics using geometric inspection for a three-link robot r deﬁned by the function r3fcn. Returns a [3 × 1] vector Syntax Description Syntax Description Syntax Description 12 .q. to construct a three-link robot. the value of q (lc ) in the equation above. infofcn.4.e. @fcnhandle is a function handle to a function for inverse kinematic calculations. With that. sec is the section in Cartesian coordinates.e. h is the distance between the two points in the ﬁnite different approximation and this value must be smaller than the maximum allowed deviation error.h and ST. theta is a [4 × 3] matrix. The variable ST is not used.q. q(lc +hh . r is the robot for which the path v dlc = Jv dlc is constructed.x.ST). For each point deﬁned by the homogeneous transformation matrix T four different solutions are given.T).1 Demo functions r3 = r3fcn.ST). At the end of the program one of these is returned. and x is the value of lc at that point.@fcnhandle. Syntax Description Syntax Description 3. Differentiates the joint space path q (lc ) with respect to the path index using dq(lc ) −1 dP(lc ) where J is the Jacobian. dq = fda(r.x. q is the joint angles where the derivative is to be evaluated. Generates an example of the data structure described in Section 2. Approximates the derivative of the joint space path q (lc ) with respect to the )− q (lc ) path index using ﬁnite different approximation. Uses Robotic Toolbox. sec is the section in Cartesian coordinates. [3]. i.3. ST has two ﬁelds: ST. dq = diffinvjac(r. r is the robot for which the path is constructed.

er. er is the current deviation error and maxer is the maximum allowed deviation error. 13 . April 2003. March 1996.I. Norrl¨ of. Link¨ oping Institute of Technology (LiTH). value = fixic(delta. Adjusts the length between the breakpoints in a spline. This is done in the ﬁle czindex. ST(1) is the smallest value that the current length will be multiplied with and is used if the step length is to be increased. A robotics toolbox for MATLAB. IEEE Robotics and Automation Magazine.3 How to add new zone paths The zone path is deﬁned by a number when the section is created. Master’s thesis. delta is the current length between the breakpoints. delta is the current length between the breakpoints. Corke. Path generation for industrial robots. For more information about how the zone paths is created see [1] and [2]. Aug 2003. Adjust the length between the breakpoints in the spline with a ﬁx set of adjustment factors. This number then determines how the zone path is generated. The new method is given an integer value and the index calculations are inserted into the ﬁle. The variable ST contains two values. Sweden. Nystr¨ om.Syntax Description value = varic(delta. In Mekatronikm¨ ote 2003.maxer.maxer). Sweden. Link¨ oping. ST(2) is the smallest value that the current lenght will be reduced with and is used if the step length is to be reduced. Returns a ﬂoat. 3(1):24–32. [3] P. New methods for generating zone paths can be added to the existing ones. Nystr¨ om and M.er.ST). er is the current deviation error and maxer is the maximum allowed deviation error. References [1] M. [2] M. G¨ oteborg.m. Syntax Description 3. Returns a ﬂoat. Path generation for industrial robots. In Swedish.

............................ numbering 1400-3902 ................................... LiTH-ISY-R-2542 URL f¨ or elektronisk version http://www................. .............isy............. 2) transform the Cartesian paths into jointspace.....................A path generation toolbox for Matlab (v0...... MATLAB functions .Path Generation Toolbox for Matlab........ All the most important functions are explained and examples of how to use them are also included...... Mikael Norrl¨ of............. cartesian path. cubic splines........... Rapporttyp Report category 2 2 2 2 X 2 2 Licentiatavhandling Examensarbete C-uppsats D-uppsats ¨ Ovrig rapport .............control....1) Maria Nystr¨ om...se Titel Title F¨ orfattare Author PGT ..................liu. ISBN . Nyckelord Keywords zone interpolation...... ISRN ............. Department Datum Date Division of Automatic Control Department of Electrical Engineering 2003-09-05 Spr˚ ak Language 2 Svenska/Swedish X 2 Engelska/English 2 .......... Sammanfattning Abstract This users manual introduces the basic ideas of the PGT ...... The main features of the toolbox is to give the user the possibility to 1) build paths in Cartesian (3DOF) space........... joint path............Avdelning...................... Serietitel och serienummer ISSN Title of series..... Institution Division.......

- 1.8 Piecewise Functions Note & HwUploaded bykcykim4
- Aspects of Products of DerivativesUploaded bysafariore
- Lecture Notes for Section 16-7Uploaded byJoshua D'Cruz
- TangentLines DerivativesUploaded bysmtm06
- If EmUploaded byapi-3700440
- alg1_ch04_extrapracticeUploaded bywenatchee25
- joint typesUploaded byRohitSinghBisht
- Syllabus MathsUploaded byvkartikey
- 3D Path Following for AUVUploaded byHowan Kim
- SyllabusUploaded bydrew_blosser
- 2007Fall1aMTI.pdfUploaded byGustavo Ríos
- A New Robot for Minimally Invasive Surgery_2Uploaded byakhan1977
- Sow Mst 2016 Sacei31Uploaded bySuci Aida
- Simulative Calculation and Optimal Design of Scissor Lift MechanismUploaded byLuis Alfonso González Vergara
- Juj 2011 Addmaths DifferentiationUploaded byzarida5759
- Kinematics of ParticleUploaded byfizzuddin_4
- 66Uploaded byJaeyun Lee
- Functions IIUploaded byVishal Purohit
- laserfireUploaded byapi-272563993
- 10.1 Function Notation.pdfUploaded byralf ray
- algebra.pdfUploaded byNithin Joji Sankoorikkal
- Real AnalysisUploaded byHenry Lin
- Calculus Cheat Sheet DerivativesUploaded byJuan Carlos Betancur
- MaC+Collection+of+Solved+Problems+MaC4000Uploaded byEpic Win
- funcUploaded byPattrawut Rukkachart
- MATH T 2Uploaded bySarman Tamilselvan
- Excel Fun1Uploaded byBhaskar Naidu
- calculusUploaded byRobert Suthers
- Question Bank- Engg MechUploaded bynvasiraja
- Gen Math CIGUploaded bysavian_sdsc

- Proteus VsmUploaded byJorge Cruz Mancilla
- s y experiencias con pic, adquisición de datos con pic, curso de microcontroladores pic, microcontroladores pic, todo sobre pics, conversores ad, electronica pratica, articulos pic, quemador de pics, pics, programar .pdfUploaded byJorge Cruz Mancilla
- s y experiencias con pic, adquisición de datos con pic, curso de microcontroladores pic, microcontroladores pic, todo sobre pics, conversores ad, electronica pratica, articulos pic, quemador de pics, pics, programarUploaded byJorge Cruz Mancilla
- Registro TMR0, ModuloTimer0,Micros,Ensamblador,Proyectos Pic,Proyectos PicUploaded byJorge Cruz Mancilla
- Análisis de Circuitos EléctricosUploaded byJorge Cruz Mancilla
- Circuitos Electricos_ SecundariaUploaded byJorge Cruz Mancilla
- MPLAB BuenoUploaded byJorge Cruz Mancilla
- 49215292-Instrucciones-del-PIC16F84A.pdfUploaded byJorge Cruz Mancilla
- 10 Pasos Para Construir Un Modelo de Simulacion Bibliografia Modelos de SimulacionUploaded byJorge Cruz Mancilla
- Primera PracticaUploaded byJorge Cruz Mancilla
- Inicios de Circuitos ElectricosUploaded byJorge Cruz Mancilla
- Condensadores. Capacidad eléctrica - Conexión en serie y en paralelo de condensadoresUploaded byJorge Cruz Mancilla
- Registros de CorrimientoUploaded byJorge Cruz Mancilla
- alu830902st5-mcdfi-678046-b37c3740-0a11-471c-9c6a-8a8c604704c6Uploaded byJorge Cruz Mancilla
- Amplificador Sumador No InversorUploaded byJorge Cruz Mancilla
- Directivas de MPASM_bueno.pdfUploaded byJorge Cruz Mancilla
- Carcasa de Termostato Salida AguaUploaded byJorge Cruz Mancilla
- El Lenguaje Ensamblador Del PIC16F84A_jorgeUploaded byJorge Cruz Mancilla
- Definiciones de ErrorUploaded byJorge Cruz Mancilla
- Ejercicios de Pic SencillosUploaded byJorge Cruz Mancilla
- ICSP BuenoUploaded byJorge Cruz Mancilla
- Técnicas de programación_buenoUploaded byJorge Cruz Mancilla
- Cuestionario Error Jcm TestUploaded byJorge Cruz Mancilla
- Procesos IndustrialesUploaded byJorge Cruz Mancilla
- Evaluación de instrumentaciónUploaded byJorge Cruz Mancilla
- Icprog BuenoUploaded byJorge Cruz Mancilla
- Ejercicios de instrumentaciónUploaded byJorge Cruz Mancilla
- El PIC16F84A Caracteristicas BuenoUploaded byJorge Cruz Mancilla
- Instrucciones Del PIC16F84A_bienUploaded byJorge Cruz Mancilla
- Directivas de MPASM_buenoUploaded byJorge Cruz Mancilla