diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index a72ba45..c507d41 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -22505,7 +22505,7 @@ DecimalExpansion(): Exports == Implementation where \end{chunk} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Denavit-Hartenberg Matrices} +\section{domain DHMATRIX DenavitHartenbergMatrix} \subsection{Homogeneous Transformations} The study of robot manipulation is concerned with the relationship between @@ -24130,6 +24130,687 @@ where n, o, and a are the direction cosines See Also: o )show DenavitHartenbergMatrix +o )d op identity + +\end{chunk} +\begin{chunk}{identity.help} +==================================================================== +identity from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +identity + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + identity() + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The identity matrix comes from the chosen Ring which is +Expression(Integer) by default. + +ARGUMENTS +========= + +None + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring + +identity() + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +You can specify the domain with + +identity()$DHMATRIX(DFLOAT) + + +1. 0. 0. 0.+ + | | + |0. 1. 0. 0.| + | | + |0. 0. 1. 0.| + | | + +0. 0. 0. 1.+ + Type: DenavitHartenbergMatrix(DoubleFloat) + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate + +\end{chunk} +\begin{chunk}{rotatex.help} +==================================================================== +rotatex from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +rotatex + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + rotatex(degrees) + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The rotatex function returns a matrix from the chosen Ring which is +Expression(Integer) by default. This matrix can be multiplied by +a point to move the coordinates of the point in 3-space. This is +mostly used in drawing. + +The rotatex matrix can be multiplied by other DH matrices to compose +rotation, translation, and scale operations into a single linear +transformation matrix. + +Multiplying a point by a rotatex matrix will rotate the point around +the X axis by the given number of degrees. + +ARGUMENTS +========= + + degrees is the number of degrees (positive or negative) + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring. Expression(Integer) is the default. + + rotatex(30) + + +1 0 0 0+ + | | + | +-+ | + | \|3 1 | + |0 ---- - - 0| + | 2 2 | + | | + | +-+ | + | 1 \|3 | + |0 - ---- 0| + | 2 2 | + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +rotatex(3.3) + + +1.0 0.0 0.0 0.0+ + | | + |0.0 0.9983418166 1402834927 - 0.0575640269 5956728358 2 0.0| + | | + |0.0 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0| + | | + +0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + +rotatex(-3.3) + + +1.0 0.0 0.0 0.0+ + | | + |0.0 0.9983418166 1402834927 0.0575640269 5956728358 2 0.0| + | | + |0.0 - 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0| + | | + +0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + +Note that a zero argument is equivalent to calling the identity function. + +rotatex(0) + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate + +\end{chunk} +\begin{chunk}{rotatey.help} +==================================================================== +rotatey from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +rotatey + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + rotatey(degrees) + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The rotatey function returns a matrix from the chosen Ring which is +Expression(Integer) by default. This matrix can be multiplied by +a point to move the coordinates of the point in 3-space. This is +mostly used in drawing. + +The rotatey matrix can be multiplied by other DH matrices to compose +rotation, translation, and scale operations into a single linear +transformation matrix. + +Multiplying a point by a rotatex matrix will rotate the point around +the Y axis by the given number of degrees. + +ARGUMENTS +========= + + degrees is the number of degrees (positive or negative) + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring. Expression(Integer) is the default. + +rotatey(30) + + + +-+ + + |\|3 1 | + |---- 0 - 0| + | 2 2 | + | | + | 0 1 0 0| + | | + | +-+ | + | 1 \|3 | + |- - 0 ---- 0| + | 2 2 | + | | + + 0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + rotatey(3.3) + + + 0.9983418166 1402834927 0.0 0.0575640269 5956728358 2 0.0+ + | | + | 0.0 1.0 0.0 0.0| + | | + |- 0.0575640269 5956728358 2 0.0 0.9983418166 1402834927 0.0| + | | + + 0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + rotatey(-3.3) + + + 0.9983418166 1402834927 0.0 - 0.0575640269 5956728358 2 0.0+ + | | + | 0.0 1.0 0.0 0.0| + | | + |0.0575640269 5956728358 2 0.0 0.9983418166 1402834927 0.0| + | | + + 0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + +Note that a zero argument is equivalent to calling the identity function. + + rotatey(0) + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate + +\end{chunk} +\begin{chunk}{rotatez.help} +==================================================================== +rotatez from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +rotatez + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + rotatez(degrees) + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The rotatez function returns a matrix from the chosen Ring which is +Expression(Integer) by default. This matrix can be multiplied by +a point to move the coordinates of the point in 3-space. This is +mostly used in drawing. + +The rotatez matrix can be multiplied by other DH matrices to compose +rotation, translation, and scale operations into a single linear +transformation matrix. + +Multiplying a point by a rotatez matrix will rotate the point around +the Z axis by the given number of degrees. + +ARGUMENTS +========= + + degrees is the number of degrees (positive or negative) + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring. Expression(Integer) is the default. + +rotatez(30) + + + +-+ + + |\|3 1 | + |---- - - 0 0| + | 2 2 | + | | + | +-+ | + | 1 \|3 | + | - ---- 0 0| + | 2 2 | + | | + | 0 0 1 0| + | | + + 0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + + rotatez(3.3) + + + 0.9983418166 1402834927 - 0.0575640269 5956728358 2 0.0 0.0+ + | | + |0.0575640269 5956728358 2 0.9983418166 1402834927 0.0 0.0| + | | + | 0.0 0.0 1.0 0.0| + | | + + 0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + + rotatez(-3.3) + + + 0.9983418166 1402834927 0.0575640269 5956728358 2 0.0 0.0+ + | | + |- 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0 0.0| + | | + | 0.0 0.0 1.0 0.0| + | | + + 0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + +Note that a zero argument is equivalent to calling the identity function. + + rotatez(0) + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate + +\end{chunk} +\begin{chunk}{scale.help} +==================================================================== +scale from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +scale + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + scale(inX,inY,inZ) + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The scale function returns a matrix from the chosen Ring which is +Expression(Integer) by default. This matrix can be multiplied by +a point to scale the coordinates of the point in 3-space. This is +mostly used in drawing. + +The scale matrix can be multiplied by other DH matrices to compose +rotation, translation, and scale operations into a single linear +transformation matrix. + +Multiplying a point by a scale matrix will scale the X, Y, and Z +coordinates of the point. + +ARGUMENTS +========= + + inX is the amount to scale in the X direction + + inY is the amount to scale in the Y direction + + inZ is the amount to scale in the Z direction + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring. Expression(Integer) is the default. + + scale(0.5,0.4,0.3) + + +0.5 0.0 0.0 0.0+ + | | + |0.0 0.4 0.0 0.0| + | | + |0.0 0.0 0.3 0.0| + | | + +0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + + scale(0.5,-0.4,0.3) + + +0.5 0.0 0.0 0.0+ + | | + |0.0 - 0.4 0.0 0.0| + | | + |0.0 0.0 0.3 0.0| + | | + +0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + +Note that arguments of 1's is equivalent to calling the identity function. + + scale(1,1,1) + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate + +\end{chunk} +\begin{chunk}{translate.help} +==================================================================== +translate from DenavitHartenbergMatrix (DHMATRIX) +==================================================================== + +NAME +==== + +translate + +DOMAIN +====== + +DenavitHartenbergMatrix (DHMATRIX) + +SYNOPSYS +======== + + translate(inX,inY,inZ) + +DESCRIPTION +=========== + +A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form: + nx ox ax px + ny oy ay py + nz oz az pz + 0 0 0 1 +where n, o, and a are the direction cosines + +The translate function returns a matrix from the chosen Ring which is +Expression(Integer) by default. This matrix can be multiplied by +a point to translate the coordinates of the point in 3-space. This is +mostly used in drawing. + +The translate matrix can be multiplied by other DH matrices to compose +rotation, translation, and scale operations into a single linear +transformation matrix. + +Multiplying a point by a translate matrix will translate the X, Y, and Z +coordinates of the point. + +ARGUMENTS +========= + + inX is the amount to translate in the X direction + + inY is the amount to translate in the Y direction + + inZ is the amount to translate in the Z direction + +RETURN VALUE +============ + +A 4x4 matrix with elements from the Ring. Expression(Integer) is the default. + + translate(0.5,0.4,0.3) + + +1.0 0.0 0.0 0.5+ + | | + |0.0 1.0 0.0 0.4| + | | + |0.0 0.0 1.0 0.3| + | | + +0.0 0.0 0.0 1.0+ + Type: DenavitHartenbergMatrix(Float) + + translate(0.5,-0.4,0.3) + + +1.0 0.0 0.0 0.5 + + | | + |0.0 1.0 0.0 - 0.4| + | | + |0.0 0.0 1.0 0.3 | + | | + +0.0 0.0 0.0 1.0 + + Type: DenavitHartenbergMatrix(Float) + +Note that arguments of 0's is equivalent to calling the identity function. + + translate(0,0,0) + + +1 0 0 0+ + | | + |0 1 0 0| + | | + |0 0 1 0| + | | + +0 0 0 1+ + Type: DenavitHartenbergMatrix(Expression(Integer)) + +NOTES +===== + +REFERENCES +========== + +Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X + +SEE ALSO +======== + +o )show DenavitHartenbergMatrix +o )d op identity +o )d op rotatex +o )d op rotatey +o )d op rotatez +o )d op scale +o )d op translate \end{chunk} \pagehead{DenavitHartenbergMatrix}{DHMATRIX} @@ -24216,8 +24897,6 @@ o )show DenavitHartenbergMatrix \end{tabular} \begin{chunk}{domain DHMATRIX DenavitHartenbergMatrix} - - )abbrev domain DHMATRIX DenavitHartenbergMatrix ++ Author: Timothy Daly ++ Date Created: June 26, 1991 @@ -24262,19 +24941,33 @@ DenavitHartenbergMatrix(R): Exports == Implementation where Exports ==> MatrixCategory(R,row,col) with "*": (%, Point R) -> Point R ++ t*p applies the dhmatrix t to point p + ++ + ++X rotatex(30)*point([1,2,3]) identity: () -> % ++ identity() create the identity dhmatrix + ++ + ++ identity() rotatex: R -> % ++ rotatex(r) returns a dhmatrix for rotation about axis x for r degrees + ++ + ++X rotatex(30) rotatey: R -> % ++ rotatey(r) returns a dhmatrix for rotation about axis y for r degrees + ++ + ++X rotatey(30) rotatez: R -> % ++ rotatez(r) returns a dhmatrix for rotation about axis z for r degrees + ++ + ++X rotatez(30) scale: (R,R,R) -> % ++ scale(sx,sy,sz) returns a dhmatrix for scaling in the x, y and z ++ directions + ++ + ++X scale(0.5,0.5,0.5) translate: (R,R,R) -> % ++ translate(x,y,z) returns a dhmatrix for translation by x, y, and z + ++ + ++X translate(1.0,2.0,3.0) Implementation ==> Matrix(R) add @@ -102268,13 +102961,17 @@ Point(R:Ring) : Exports == Implementation where for x in l for i in minIndex(pt).. repeat pt.i := x pt + dimension p == (# p)::PI -- Vector returns NonNegativeInteger...? + convert(l:List R):% == point(l) + cross(p0, p1) == #p0 ^=3 or #p1^=3 => error "Arguments to cross must be three dimensional" point [p0.2 * p1.3 - p1.2 * p0.3, _ p1.1 * p0.3 - p0.1 * p1.3, _ p0.1 * p1.2 - p1.1 * p0.2] + extend(p,l) == concat(p,point l) \end{chunk} diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet index 2282276..5ca5716 100644 --- a/books/bookvolbib.pamphlet +++ b/books/bookvolbib.pamphlet @@ -14609,10 +14609,14 @@ Science of Computer Programming V25 No.1 Oct 1995 pp41-61 Elesevier \end{chunk} \index{Paul, Richard} -\begin{chunk}{ignore} -\bibitem[Paul 81]{Paul81} Paul, Richard +\begin{chunk}{axiom.bib} +@book{Paul81, + author = "Paul, Richard", title = "Robot Manipulators", -MIT Press 1981 + year = "1981", + publisher = "MIT Press", + isbn = "0-262-16082-X" +} \end{chunk} diff --git a/changelog b/changelog index a58dede..1a98472 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20141116 tpd src/axiom-website/patches.html 20141116.01.tpd.patch +20141116 tpd books/bookvol10.3 prototype man-page style help for functions 20141113 tpd src/axiom-website/patches.html 20141113.01.tpd.patch 20141113 tpd books/bookvol5 inline object structures using macros 20141113 tpd src/interp/interp-proclaims.lisp remove object structures diff --git a/patch b/patch index aec97ef..ac660fb 100644 --- a/patch +++ b/patch @@ -1,3 +1,4 @@ -books/bookvol5 turn object rep into macro form for inline +books/bookvol10.3 prototype man-page style help for functions + +Axiom needs function-level help files. Prototype these for DHMATRIX. -Object wrapping/unwrapping is now macros for inline performance. diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index b521729..31a3613 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4700,6 +4700,8 @@ books/bookvol5 fix remake handling of source files
books/bookvol5 make obj fns into macros for performance
20141113.01.tpd.patch books/bookvol5 inline object structures using macros
+20141116.01.tpd.patch +books/bookvol10.3 prototype man-page style help for functions