⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometry-doc.sgml

📁 机器人开源项目orocos的源代码
💻 SGML
📖 第 1 页 / 共 4 页
字号:
is connected with through one of its ports.</para><note><para>This text collects all of the above-mentioned data structures in <emphasis>one single</emphasis> symbolic class, to be used as anaggregate component of a<link linkend="geometric-classes">geometric class</link>. This is tosome extent an arbitrary decision!</para></note><para>However, the decision to use all of the above-mentioned datastructures looks reasonable for a<link linkend="geometric-database">geometric database</link>, becauseof the involved level of complexity.While in the case of a static, efficient and specific-purpose library(<emphasis>e.g.</emphasis> to support the kinematics of one particularrobot), all of the symbolic information can be eliminated without manyproblems.</para></section><section id="physical-properties"><title>Physical properties</title><para>Most geometric objects have a set of operations that one can performon them, and that have <emphasis>physical</emphasis> meaning,<emphasis>i.e.</emphasis> the result is independent of the datastructures and the coordinates used to represent the object. Forexample, generating the normal direction to a given plane is aphysically uniquely defined operation, but that normal direction canhave many mathematical coordinate representations. Other examples ofphysical operations are: finding the common perpendicular of twolines; inverting the direction of a velocity; generating the&ldquo;exponential&rdquo; curve generated by a given velocity; etc. </para><para>Typically, every physical method can be implemented with variousmathematical representations. Developers must take care not to mix thevariability of the representations with the non-variability of aphysical method. Ideally, the mathematical representation should be&quot;hidden&quot; in the method call of a physical property.<note><para>So, when developing a <emphasis>general</emphasis> geometric softwarelibrary, one is confronted with the practical problem that thegeometric object can store its state in one particular mathematicalrepresentation, while the implementations of its physical methodsinternally use another representation. This flexibility is only usefulin general-purpose, &ldquo;component-based&rdquo; systems(<emphasis>e.g.</emphasis> as defined in the context of CORBAcomponents), but not for small-scale, &ldquo;real-time&rdquo;applications. The design of the library interfaces in this document issuch that the application builders can select what level of generalitythey want to implement; the most important factor in this flexibilityis that the mathematical coordinate representations and algorithms ofthe physical properties can be used independently from any symbolic&ldquo;meta&rdquo; properties.</para></note></para><para>Many (but not all) physical methods apply to similar geometricobjects in different dimensions (1D, 2D and 3D). For example, the<emphasis>inversion</emphasis> of the velocity of an object. It isadvisable to use the same names for the same physical properties inall different spaces.</para><para>In contrast to their symbolic properties, geometric objects do nothave many physical properties in common; hence, they are describedbelow in the sections of each individual geometric class.</para></section><section id="geometric-classes"><title>Geometric classes</title><para>This Section describes the <emphasis>basic</emphasis> geometricclasses, without discussion of &ldquo;advanced&rdquo; concepts, suchas for example spline surfaces. Each geometric class has its own setof <link linkend="physical-properties">physical properties</link>(encoded as <emphasis role="strong">method calls</emphasis> in thegeometric class), coordinate representation<emphasis role="strong">data structures</emphasis>, and possiblyaggregates a<link linkend="symbolic-class">symbolic class</link> (encodedas a <emphasis role="strong">data structure</emphasis>).</para><section id="point"><title>Point</title><para>A &ldquo;Point&rdquo; represents a &ldquo;position&rdquo;, <emphasis>i.e.</emphasis> an element in the space in which the robotor machine tool works.  Most of its properties are covered by thegeneric <link linkend="symbolic-class">symbolic properties</link>: <parameter>name</parameter>.<parameter>dimension</parameter>, and the various lists of<parameter>Ports</parameter>.  The numeric coordinate representationconsists of three floating point numbers, in a given reference<link linkend="frame">frame</link> (which is encoded by a <link linkend="symbolic-port">geometricPort</link>).</para></section><section id="vector"><title>Vector</title><para>A Vector has many different meanings, hence, it has an extra<link linkend="symbolic-class">symbolic property</link>:<variablelist> <varlistentry> <term>  <anchor id="vector-type">  <parameter>type</parameter>: </term>  <listitem>  <para>  <parameter>freeVector</parameter>,  <parameter>lineVector</parameter>,  <parameter>unitVector</parameter>,  <parameter>pointVector</parameter>,  <parameter>segmentVector</parameter>.  </para>  <para> A <parameter>freeVector</parameter> and a <parameter>unitVector</parameter> don't need extra symbolicinformation; a <parameter>lineVector</parameter> and<parameter>pointVector</parameter> need a<link linkend="geometric-port">geometricPort</link> to connect it toa geometric object with the corresponding type(<emphasis>i.e.</emphasis> <link linkend="line">line</link> and<link linkend="point">point</link>, respectively). A <parameter>segmentVector</parameter> is the vector that links two <link linkend="point">Points</link>, so it needs to be connectedto at least one, and in general, to both of these Points.  </para>  </listitem> </varlistentry></variablelist>The numeric coordinate representation for all<parameter>Vector</parameter>s consists of three floating pointnumbers in a given reference <link linkend="frame">frame</link>.</para><para>A Vector has the following<link linkend="physical-properties">physical properties</link>:<variablelist> <varlistentry> <term><parameter>addition</parameter>, <parameter>inversion</parameter>,<parameter>scaling</parameter>. </term>  <listitem>   <para>The exact result of these operations can depend on the<parameter>type</parameter> of the <parameter>Vector</parameter>(<emphasis>e.g.</emphasis> <parameter>inversion</parameter> and<parameter>addition</parameter> are meaningless for a<parameter>lineVector</parameter>).   </para>  </listitem> </varlistentry></variablelist></para></section><section id="frame"><title>Frame</title><para>A Frame is the combination of a <link linkend="point">Point</link> andan ordered list of 1, 2 or 3 (depending on the dimension of the space)(unit) <link linkend="vector">Vector</link>s.The geometric importance of a Frame is two-fold: (i) it is the vehiclein which <emphasis role="strong">numeric coordinates</emphasis> aredefined; and (ii) it marks positions and orientations in space.</para><para><variablelist><title>Symbolic properties</title> <varlistentry> <term>  <anchor id="frame-type">  <parameter>type</parameter>: </term>  <listitem>  <para>  <parameter>rightHanded</parameter>, <parameter>leftHanded</parameter>,  <parameter>orthogonal</parameter>,  <parameter>&hellip;</parameter>,plus the <link linkend="geometric-port">geometricPorts</link> to the <link linkend="point">Point</link> and the unit<link linkend="vector">Vector</link>s that make up the frame.  </para>  </listitem> </varlistentry></variablelist><variablelist><title>Physical properties</title> <varlistentry> <term>  <anchor id="frame-move">  <parameter>displacement</parameter>  </term>  <listitem>   <para>The displacement of a frame is again a frame.    </para>  </listitem> </varlistentry> <varlistentry> <term>  <anchor id="frame-rotation">  <parameter>rotation</parameter>,  <parameter>position</parameter>  </term>  <listitem>   <para>These operations extract the rotation and position parts of the frame.   </para>   <para>(Is this a <emphasis>physical</emphasis> operation?)   </para>  </listitem> </varlistentry></variablelist><variablelist><title>Numeric properties:</title> <varlistentry> <term>  <anchor id="htmatrix">  <parameter>homogeneousTransformationMatrix</parameter>,  (<parameter>HTMatrix</parameter>)  </term>  <listitem>   <para>This is the data structure that encodes the position and orientationof a Frame with respect to another &ldquo;world Frame&rdquo;.   </para>   <para>   4-by-4 matrix (in 3D), with the <link linkend="rotation-matrix">rotationMatrix</link> of direction cosines    as top-left sub-matrix, the position coordinate vector of the <link linkend="point">Point</link>   as top-right 3-by-1 matrix, and (0 0 0 1) as fourth row.   </para>   <para>   In 2D, a 3-by-3 matrix, similar to the 3D case, but without the   third row and column.   </para>   <para>	In 1D, a <link linkend="point">Point</link> and a direction   <link linkend="vector">Vector</link>.   </para>  </listitem> </varlistentry> <varlistentry> <term>  <anchor id="frame-move-method">  <parameter>move</parameter> </term>  <listitem>   <para>This is the method call that displaces a Frame from its currentconfiguration to another configuration, with respect to the&ldquo;world Frame&rdquo;. The argument of the methodcall is a <link linkend="displacement">Displacement</link>.   </para>  </listitem> </varlistentry></variablelist></para></section><section id="line"><title>Line</title><para>A <parameter>Line</parameter> can geometrically be defined in variousways: the &ldquo;join&rdquo; of two points, the&ldquo;intersection&rdquo; of two planes( only in 3D), the combinationof a <link linkend="point">Point</link> and a<link linkend="vector">Vector</link>, etc. It also comes in different&ldquo;flavours&rdquo;:<variablelist> <varlistentry> <term>  <anchor id="line-type">  <parameter>type</parameter>: </term>  <listitem>  <para><parameter>directedLine</parameter>, <parameter>unboundedLine</parameter>,<parameter>lineSegment</parameter>,etc.  </para>  </listitem> </varlistentry> <varlistentry> <term>  <anchor id="line-coordinate-type">  <parameter>coordinateType</parameter>: </term>  <listitem>  <para>  the type of the line coordinates:  <parameter>PluckerAxisCoordinates</parameter> (the<parameter>Line</parameter> is the &ldquo;meet&rdquo; of two <link linkend="plane">planes</link>),  <parameter>PluckerRayCoordinates</parameter> (the<parameter>Line</parameter> is the &ldquo;join&rdquo; of two <link linkend="point">points</link>),  <parameter>pointVectorCoordinates</parameter> (the<parameter>Line</parameter> is represented by one<link linkend="point">point</link> on the <parameter>Line</parameter>and one <link linkend="vector">line vector</link>),   <parameter>vectorVectorCoordinates</parameter> (the<parameter>Line</parameter> is represented by onethe <emphasis>moment vector</emphasis> of a<link linkend="point">point</link> on the <parameter>Line</parameter>,and one <link linkend="vector">line vector</link>),etc.  </para>  </listitem> </varlistentry></variablelist>The <link linkend="physical-properties">physical properties</link> ofa Line are:<variablelist> <varlistentry> <term><parameter>inversion</parameter> </term>  <listitem>   <para> of a <parameter>directedLine</parameter>.   </para>  </listitem> </varlistentry></variablelist></para><para>The numeric coordinate representationsfor <parameter>Line</parameter>s are a number of floating pointvalues, expressed in a given reference<link linkend="frame">frame</link>, but with an interpretation thatdepends on the type of the <parameter>Line</parameter> coordinates:<itemizedlist><listitem><para>  <parameter>PluckerAxisCoordinates</parameter>: &hellip;</para></listitem><listitem><para>  <parameter>PluckerRayCoordinates</parameter>: &hellip;</para></listitem><listitem><para>  <parameter>pointVectorCoordinates</parameter>: &hellip;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -