?? kindyn-doc.sgml
字號:
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook/dtd/4.1/docbook.dtd" [<!ENTITY orocos "<acronym>Orocos</acronym>">]><article><articleinfo> <title> Kinematics and dynamics of kinematic chains </title> <author> <firstname>Herman</firstname> <surname>Bruyninckx</surname> <affiliation> <address> Herman.Bruyninckx(at)mech.kuleuven.ac.be </address> </affiliation> </author> <copyright> <year>2003–2004</year> <holder>Herman Bruyninckx —Permission is granted to copy, distribute and/or modify this documentunder the terms of the GNU General Public License(<ulink url="http://www.fsf.org/copyleft/gpl.html">http://www.fsf.org/copyleft/gpl.html</ulink>), where the <emphasis>source code</emphasis> of the document is the <ulink url="kindyn-doc.xml">XML file</ulink>.</holder> </copyright> <abstract> <para> <emphasis role="strong">Abstract</emphasis> </para> <para>This document presents <ulink url="deep-shallow-api.html#STATELESS-STATEFUL">the classhierarchies</ulink> and their respective APIs, forthe joint-space–Cartesian-space kinematicsand dynamics of robots (manipulator arms, mobile robots, walkingrobots, etc.), machine tools, and computer animation characters: therepresentations of the various families of kinematic chains; therepresentation of joint position and motion; the position, velocity,acceleration, force and impedance transformations between joint spaceand Cartesian end-point space; singularities and configurations of thekinematic structure; etc.</para><para>The <emphasis>(Cartesian) motion</emphasis> classes (i.e., the modellingand specification of the motion of rigid bodies and “Tool CentrePoints”) are described in<ulink url="motion-api.html">another document</ulink>. </para> </abstract> <revhistory> <revision> <revnumber>0.01</revnumber> <date>May 7, 2003</date> <authorinitials>HB</authorinitials> </revision> <revision> <revnumber>0.02</revnumber> <date>May 23, 2003</date> <authorinitials>HB</authorinitials> <revremark>Moved motion API to separate document. </revremark> </revision> <revision> <revnumber>0.03</revnumber> <date>June 29, 2003</date> <authorinitials>HB</authorinitials> <revremark>Moved section about “decoupling” to a separate document.More details on the classes for geometric primitives, and rigid bodymotion primitives. </revremark> </revision> <revision> <revnumber>0.04</revnumber> <date>July 7, 2003</date> <authorinitials>HB</authorinitials> <revremark>Changed title. Added figures for Object-Port-Connector,kinematic chains, frame sets. Added more extensive discussion aboutgeneric (conceptual and concrete) APIs, and about the concretejoint-space kinematics API. </revremark> </revision> <revision> <revnumber>0.05</revnumber> <date>July 13, 2003</date> <authorinitials>HB</authorinitials> <revremark>Moved section about general dynamics to a<ulink url="general-dynamics-doc.html">separate document</ulink>.Moved the discussion on symbolic, physical and mathematical propertiesto the <ulink url="decoupling.html">decoupling document</ulink>. </revremark> </revision> <revision> <revnumber>0.06</revnumber> <date>July 22, 2003</date> <authorinitials>HB</authorinitials> <revremark>Extensions to all sections, iterating on all interfaces, and on therequirements and choices for API definitions. </revremark> </revision> <revision> <revnumber>0.07</revnumber> <date>August 20, 2003</date> <authorinitials>HB</authorinitials> <revremark>Filled in conventions and choices for the <link linkend="serial321">Serial321</link> family. </revremark> </revision> <revision> <revnumber>0.08</revnumber> <date>November 1, 2003</date> <authorinitials>HB</authorinitials> <revremark>Added <link linkend="hyperredundant-serial">HyperredundantSerial</link>family. Removed ActuatedJoint. </revremark> </revision> <revision> <revnumber>0.09</revnumber> <date>December 5, 2003</date> <authorinitials>HB</authorinitials> <revremark>Extended the discussion on implicit/explicit arguments in methodcalls. </revremark> </revision> <revision> <revnumber>0.10</revnumber> <date>March 21, 2004</date> <authorinitials>HB</authorinitials> <revremark>Added sections on redundancy and constraints, and on numericalgorithms. </revremark> </revision> <revision> <revnumber>0.11</revnumber> <date>April 19, 2004</date> <authorinitials>HB</authorinitials> <revremark>Reworked all sections. </revremark> </revision> </revhistory></articleinfo><section id="introduction"><title> Introduction </title><para>Kinematics and dynamics deal with the <emphasis>motion</emphasis>analysis and generation for<emphasis>kinematic chains</emphasis> of interconnected (rigid) bodies.What motions can the chain generate for one or more reference frameson its links? What forces can the chain withstand? And how are thesemotions and forces related to the motions and the forces of the motorsthat drive the chain?</para><para>Typical <emphasis role="strong">users</emphasis> of kinematic devicesare interested in the motion of one or more<emphasis>reference points</emphasis> or<emphasis>reference frames</emphasis> on the device's“end-effector” (so-called “Tool Centre Points”),and want <emphasis>to analyse</emphasis> and<emphasis>to program</emphasis> their motions in (1D, 2D or 3D) space,without having to know exactly how these motions are generated by themotors.</para><para>Typical <emphasis role="strong">designers</emphasis> of mechanical<emphasis role="strong">devices</emphasis> are interested in providingthe best solution to generate the motions that their target userpublic wants to achieve. So, they are concerned about the physicaljoint-space structure of the devices.</para><para>Typical <emphasis role="strong">developers</emphasis> of kinematicsand dynamics <emphasis role="strong">software</emphasis> areinterested in modelling the kinematic and dynamic properties of themechanical structures, to an <emphasis>appropriate</emphasis> level ofdetail that supports <emphasis role="strong">both</emphasis> users anddesigners.Developers are interested in maximum efficiency of their code; they donot want to introduce “overhead code” for functionalitythe users and designers are not interested in, but, at the same time,they want to make their code ready for as many future applications aspossible.</para><para>This text is part of a larger series of design documents, driven bythe desire to decouple the full robot kinematics and dynamics softwareproblem into independent class libraries and components of the“right size”. So, the reader is advised to read thedocuments on <ulink url="deep-shallow-api.html">APIs</ulink>,<ulink url="decoupling.html">decoupling</ulink>;especially the discussions on the<emphasis role="strong"> <ulink url="decoupling.html#INTER-CONNECTION-DECOUPLING">Object-Port-Connector</ulink></emphasis>software pattern, on the importance of<emphasis role="strong">semantic decoupling</emphasis>, on thedifferences between<emphasis role="strong">symbolic, physical and mathematical</emphasis>properties, and on the <ulink url="components-doc.html#CLASS-COMPONENT">differences</ulink>between class and component APIs.</para><para>The <emphasis>Object-Port-Connector</emphasis>software pattern fits very well to kinematic chains:the rigid bodies are the <emphasis>Objects</emphasis>; the rigidbodies have one or more reference frames that carry<emphasis>Ports</emphasis>; at these Ports, joints are connected,acting as <emphasis>Connectors</emphasis> between the rigid bodies inthe chain. If the chain explicitly models motors and transmissions,the Software Pattern applies to their interconnection too; forexample, an (ideal) transmission is a Connector between a motor Objectand a joint Object.</para></section><section id="joint-space"><title> Joints </title><para>This Section describes representations, properties and methods for the joints in a kinematic chain. Later Sections discuss the relatedkinematic concepts of <link linkend="motor-space">motors</link> and<link linkend="motor-space">transmissions</link>.</para><section id="joint-classes-symbolic"><title>Symbolic properties</title><para>The items in this section complement the numerical data in the <link linkend="joint-mathematical">mathematical classes</link>.<variablelist> <varlistentry> <term> <anchor id="joint-vector-dimension"> <parameter>NumberOfJoints</parameter>: </term> <listitem> <para> number of joints in a <link linkend="joint-mathematical">joint vector</link>. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-type"> <parameter>JointProperty</parameter>: </term> <listitem> <para> the symbolic interpretation of the <link linkend="joint-mathematical">joint vector</link>. For example, an<emphasis>actual</emphasis> value, or a <emphasis>desired</emphasis> value,or an <emphasis>error</emphasis>, etc. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-units"> <parameter>PhysicalUnits</parameter>: </term> <listitem> <para> vector with the physical units for each element in a <link linkend="joint-mathematical">joint vector</link>. </para> <para>The default physical units are as follows: angular joint quantitiesuse <parameter>radians</parameter> or<parameter>Newton meters</parameter>, linear joint quantities use<parameter>meters</parameter> or <parameter>Newtons</parameter>; timeis expressed in seconds. But the <parameter>PhysicalUnits</parameter> vector is also used torepresent the physical units of stiffnesses, inertias, etc., so itthen contains other appropriate units. </para> </listitem> </varlistentry></variablelist></para></section><section id="joint-mathematical"><title>Mathematical representations</title><para><anchor id="joint-vector-coordinates">These classes contain<emphasis>numeric coordinate representations</emphasis>.(The <link linkend="joint-physical-methods">following section</link>discusses the <emphasis>method calls</emphasis> that work with thesecoordinates.)The coordinates are typically floating point “vectors”,consistent with the<link linkend="joint-vector-dimension">number of joints</link> and with the <link linkend="joint-vector-units">physical units</link>.The word <emphasis>vector</emphasis> is used in the meaning ithas in the STL (Standard Template Library) standard: an ordered set ofdata of the same type. The <emphasis>order</emphasis> is important(hence we do not use lists, or STL “sets” or “bags”),because in many cases vectors offer a very efficient encoding of the<emphasis>connectivity</emphasis> of the chain.</para><para><variablelist><title>Kinematics</title> <varlistentry> <term> <anchor id="joint-vector-positions"> <parameter>JointPosition</parameter>: </term> <listitem> <para> Actual, desired, measured, estimated, maximum, minimum, deformation, error, … positions of joints. </para><para><emphasis role="strong">Strict type-checking</emphasis> requires theintroduction of separate “child” classes for each of thesedifferent types of <parameter>JointPosition</parameter>s. Alternatively,the interpretation of a <parameter>JointPosition</parameter> could be givenin a <link linkend="joint-classes-symbolic">symbolic property</link>. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-velocities"> <parameter>JointVelocity</parameter>: </term> <listitem> <para> idem, for velocities. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-accelerations"> <parameter>JointAcceleration</parameter>: </term> <listitem> <para> idem, for accelerations. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-forces"> <parameter>JointForce</parameter>: </term> <listitem> <para> idem, for forces. </para> </listitem> </varlistentry></variablelist><variablelist><title>Joint space dynamics</title> <varlistentry> <term> <anchor id="joint-vector-stiffness"> <parameter>JointStiffness</parameter>: </term> <listitem> <para>A vector of floating point numbers, representing the (instantaneous)stiffness value of the joint-tranmission-motor combination. </para> <para>In general, the <parameter>JointStiffness</parameter> vector isaccompanied by a symbolic <parameter>PhysicalUnits</parameter> propertyvector. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-compliances"> <parameter>JointCompliance</parameter>: </term> <listitem> <para> idem, for (instantaneous) compliance, <emphasis>i.e.</emphasis> inversestiffness. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="joint-vector-damping"> <parameter>JointDamping</parameter>:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -