?? kindyn-doc.sgml
字號:
<imagedata fileref="../opc-link-joint.eps" format="EPS"></imageobject><caption> <para>The rounded rectangles are Objects, the circles are Ports, and the ovalsare Connectors. </para></caption></mediaobject></figure></para><para>In the most general serial architecture, the joints can be anywhere oneach rigid body link, and of any type.<xref linkend="fig-opc-link-joint">depicts a serial kinematic chain with two<emphasis>Connectors</emphasis> (“joints”)and three <emphasis>Objects</emphasis> (“links”).The rounded rectangles represent the “Objects” in the <ulink url="decoupling.html">Object-Port-Connector</ulink>pattern; in the case of kinematic chains, the Objects are rigid bodylinks. The small circles in the Objects are the “Ports”,i.e., the the link's attachement points for a kinematic joint. And thelarge ovals are the “Connectors”, i.e., the kinematicjoints.</para></section><section id="chain-symbolic-properties"><title>Symbolic properties</title><para><variablelist> <varlistentry> <term> <anchor id="get-configuration"> <parameter>GetConfiguration</parameter>: </term> <listitem> <para>Most of the <link linkend="architectures">kinematic families</link> havearchitecture-specific <emphasis>configurations</emphasis>, andcorresponding symbolic configuration names.This method call returns the name of the current configuration. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="is-singular"> <parameter>IsSingular (SingularityThreshold)</parameter>: </term> <listitem> <para>A chain is singular in a configuration where it looses one or more ofits degrees of freedom. This method call returns “yes” or“no”, depending on whether the floating pointscalar that indicates the “closeness” to such asingularity is smaller or larger than the given threshold.It can be proven that there is, in general, no uniquedistance function with which to determine this scalar unambiguously.So, this method call can take an extra argument that indicates whichmetric to use. In the case of a component interface, this metric is set bymeans of the component's<ulink url="deeo-shallow-api.html#DATA-EXECUTION-CONFIGURATION">configurationflow</ulink>. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="is-reachable"> <parameter>IsReachable</parameter>: </term> <listitem> <para>the input of this method call is a desired Cartesian or joint spaceposition, and the method calls return whether or not this position canbe reached with the chain. </para> <para>It is straightforward to extend the “reachability” tovelocities, accelerations and forces. </para> </listitem> </varlistentry></variablelist></para></section><section id="joint2cartesian"><title>Transformations between joint-space and Cartesian-space </title><para>This Section documents the method calls for kinematic chains, thattransform motion properties from joint space to Cartesian space, and viceversa.The following paragraphs give the API withoutdiscrimination of the chain topology.</para><variablelist><title>Kinematics transformations</title> <varlistentry> <term> <anchor id="forward-pose"> <parameter>JointToCartesianPosition (JointPosition, Pose)</parameter>: </term> <listitem> <para>(Alternative name: <parameter>JointToPose()</parameter>.) </para> <para>Input: <parameter>JointPosition</parameter>,position of all joints. </para> <para>Output: <parameter>Pose</parameter>, position andorientation of the Cartesian frame. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="inverse-pose"> <parameter>CartesianToJointPosition (Pose, JointPosition)</parameter>: </term> <listitem> <para>(Alternative name: <parameter>PoseToJoint()</parameter>.) </para> <para>Input: <parameter>Pose</parameter>,position and orientation of the Cartesian frame. </para> <para>Output: <parameter>JointPosition</parameter>,position of all joints. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="forward-twist"> <parameter>JointToCartesianVelocity (JointPosition, JointVelocity, Pose,Twist)</parameter>: </term> <listitem> <para>(Alternative name: <parameter>JointToTwist()</parameter>.) </para> <para>Input: position and velocity of all joints. </para> <para>Output: position and orientation of the Cartesianframe(<parameter>Pose</parameter>), and its instantaneous Cartesianvelocity (<parameter>Twist</parameter>). </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="inverse-twist"> <parameter>CartesianToJointVelocity(JointPosition, Twist, JointVelocity)</parameter>: </term> <listitem> <para>(Alternative name: <parameter>TwistToJoint()</parameter>. </para> <para>Input: position the all joints, and the chain's instantaneous Cartesianvelocity. </para> <para>Output: velocity of all joints. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="jacobian"> <parameter>JointToCartesianJacobian (JointPosition, JacobianMatrix)</parameter>: </term> <listitem> <para>(Alternative names: <parameter>JacobianMatrix()</parameter>,<parameter>Jacobian()</parameter>.) </para> <para>Input: position of all joints. (Alternatively, theCartesian pose of the end-point.) </para> <para>Output: the <link linkend="chain-jacobian-matrix">Jacobian matrix</link>. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="forward-acceleration-twist"> <parameter>JointToCartesianAcceleration(JointPosition, JointVelocity,JointAcceleration, Pose, Twist, AccelerationTwist)</parameter>: </term> <listitem> <para>Input: position, velocity and acceleration of all joints. </para> <para>Output: position and orientation of the Cartesian frame, and itsinstantaneous Cartesian velocity and acceleration. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="inverse-acceleration-twist"> <parameter>CartesianToJointAcceleration(JointPosition, JointVelocity,AccelerationTwist, JointAcceleration)</parameter>: </term> <listitem> <para>Input:position and velocity of the joint, and the instantaneous Cartesian acceleration twist. </para> <para>Output: the acceleration of all joints. </para> </listitem> </varlistentry></variablelist><variablelist><title>Dynamics transformations</title> <varlistentry> <term> <anchor id="joint-force-to-joint-acceleration"> <parameter>JointForceToJointAcceleration (JointPosition, JointVelocity,JointForce, JointAcceleration)</parameter>: </term> <listitem> <para>Input: position and velocity of all joints, andthe forces applied at those joints. </para> <para>Output: the acceleration of all joints. </para> <para>(This transformation (as well as all the following transformations) requiresthe knowledge of the joint space<link linkend="chain-inertia-matrix">inertia matrix</link>.) </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="forward-dynamics"> <parameter>JointForceToCartesianAcceleration (JointPosition, JointVelocity,JointForce, AccelerationTwist)</parameter>: </term> <listitem> <para>(Alternative names:<parameter>JointForceToAccelerationTwist</parameter>,<parameter>ForwardDynamics()</parameter>.) </para> <para>Input: position and velocity of all joints, andthe forces applied at those joints. </para> <para>Output: the acceleration of the Cartesian end-effector frame. </para> </listitem> </varlistentry> <varlistentry> <term> <anchor id="inverse-dynamics"> <parameter>CartesianAccelerationToJointForce (JointPosition, JointVelocity, AccelerationTwist, JointForce)</parameter>: </term> <listitem> <para>(Alternative names: <parameter>TwistAccelerationToJointForce()</parameter>,<parameter>InverseDynamics()</parameter>.) </para> <para>Input:position and velocity of all joints, andthe desired acceleration of the Cartesian reference frame. </para> <para>Output: the forces to be applied at the joints in order to realize the desiredacceleration. </para> </listitem> </varlistentry></variablelist><variablelist><title>Cartesian properties</title> <varlistentry> <term> <anchor id="cartesian-dynamics"> <parameter>CartesianInertia</parameter>, <parameter>CartesianDamping</parameter>, <parameter>CartesianStiffness</parameter>, <parameter>CartesianCompliance</parameter>, <parameter>CartesianInverseInertia</parameter>, <parameter>CartesianInverseDamping</parameter>: </term> <listitem> <para>every kinematic chain is <emphasis>instantaneously</emphasis>equivalent to a single rigid body, in the sense that its dynamicproperties cannot be distinguished from these of rigid body, as seen fromany of the chain's end-effector Ports.So, the above-mentioned method calls give the dynamic properties(inertia, etc.) that are instantaneously felt at a CartesianPort; this Port is given as an argument, if the chain has more than oneend-effector.</para><para>These properties are in general (highly non-linear) functions ofthe joint positions of the chain.</para> </listitem> </varlistentry></variablelist></section><section id="redundancy-constraints"><title>Redundancy and constraints</title><para>For most <emphasis>serial</emphasis> devices, the “inverse”transformations (<emphasis>i.e.</emphasis> from Cartesian space to jointspace) are not uniquely defined: if the chain has less than sixactuated joints, it cannot generate any arbitrary<parameter>Twist</parameter>; if the chain has more than six actuatedjoints, it can generate the same <parameter>Twist</parameter> with amultitude of joint velocities. In addition, the chain can have physicalconstraints, or a set of non-actuated joints, that make the transformationimpossible.</para><para>For devices with a <emphasis>parallel</emphasis> chain topology, the“inverse” transformations are simple, and the difficulties liewith the “forward” transformations. For devices with a<emphasis>hybrid</emphasis> topology, the situation is more complicated inboth directions. However, the same conceptual problems and solutions applyto all chain topologies.</para><para>So, the general reasons for the non-uniqueness in the transformationsbetween joint space and Cartesian space are:<itemizedlist><listitem><para><emphasis role="strong">Redundancy</emphasis>: multiple solutions canexist (<emphasis>i.e.</emphasis> the various<emphasis>configurations</emphasis> of the kinematic chain), but evenin one single configuration, the same Cartesian position (or velocity,acceleration) can be produced by more than one joint position.</para></listitem><listitem><para><emphasis role="strong">Constraints</emphasis>: the specifiedCartesian position (velocity, acceleration) cannot bereached, because the kinematic chain has physical constraints: jointlimits, out of reach, contacts with objects in the environment, etc.</para></listitem></itemizedlist>Algorithms for both situations often rely on<emphasis>optimization criteria</emphasis> to find a solution. In thecase of redundancy, each joint receives a certain “weight”and the solution algorithm selects the solution with the minimaloverall “cost”. In the case of constraints, the violationof a given constraint also is given a specified cost, and, again, thesolution with the minimum cost is selected.</para><para>The method calls to determine what optimization criteria to use belong tothe<ulink url="deep-shallow-api.html#DATA-EXECUTION-CONFIGURATION">configurationflow</ulink>of a motion application.</para></section><section id="closed-form-numeric-algorithms"><title>Closed-form and numeric algorithms</title><para>Some <link linkend="architectures">kinematic families</link> have<emphasis>closed-form</emphasis> (“analytical”) algorithmsto calculate the Cartesian to joint space transformations, but forothers only <emphasis>iterative, numeric</emphasis> algorithms areavailable. In the latter case, solving the kinematics is in fact thesame problem as the generation of the (local) <ulink url="motion-api.html">motion</ulink> of the kinematic chain:the chains starts in an initial position that is “close”to the desired one, and each iteration step of the numeric algorithmbrings the chain a bit closer to the desired position.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -