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

📄 applications-doc.sgml

📁 机器人开源项目orocos的源代码
💻 SGML
📖 第 1 页 / 共 3 页
字号:
The implementation of the application must make sure that such aconfiguration Command is executed in a safe way,<emphasis>i.e.</emphasis> the Components are brought in a state inwhich they can be (re)configured. The reconfiguration could have<emphasis role="strong">hot-plug semantics</emphasis>: the outer loopis reconfigured while the inner loops keep on running their controlloops in hard real time, using the last data Command they receivedfrom the outer loop.</para></listitem><listitem><para><emphasis role="strong">Power configuration.</emphasis>The ActuatedAxis must first power its drives before it can executemotion commands. Similarly, it has to power-off the drives at the endof the motion tasks.</para></listitem><listitem><para><emphasis role="strong">Homing.</emphasis>Many ActuatedAxis applications do not use absolute position sensors,such that the system must first move to find its &ldquo;zeroposition&rdquo;. The exact sequence of motions and events that areneeded for the homing depends on the hardware setup of theapplication. But they all have a similar sequence of actions: <orderedlist> <listitem> <para>Power-on the system, after the human has made sure that it is in anappropriate position for homing. </para> </listitem> <listitem> <para>Move &ldquo;fastly&rdquo; towards an end switch. The reaching of theswitch triggers an event, for which the handler has been registeredbefore the start of this motion. </para> </listitem> <listitem> <para>Reverse the motion direction and move &ldquo;slowly&rdquo; towardsthe end switch. The reaching of the switch triggers an event, forwhich (another) handler has been registered before the start of thismotion. This second motion aims at a higher accuracy of setting thezero position. </para> </listitem> </orderedlist></para></listitem></itemizedlist></para></section><section id="actuated-axis-data-flow"><title>Data flow</title><para>commands, generator setpoints, control state (position, velocity,force, &hellip;), configuration state (What functionality runs inwhich Component? What functionality is available in each Component?)</para></section><section id="actuated-axis-events"><title>Events</title><para><itemizedlist><listitem><para><emphasis role="strong">Motion events.</emphasis><emphasis>MotionStateEndReached</emphasis>: the Generator triggersthis event, to signal the other components that it is now generatingsetpoints for this particular motion state. The other Components canadapt their functionality accordingly; <emphasis>e.g.</emphasis> theservo can increase the integral action of a PID, or the estimator canswitch to a velocity estimator that works best for slow velocities.</para></listitem><listitem><para><emphasis role="strong">Hardware events.</emphasis><emphasis>PowerOn</emphasis>, <emphasis>PowerOff</emphasis>,<emphasis>EndSwitchReached</emphasis>, </para></listitem><listitem><para><emphasis role="strong">Component configuration events.</emphasis><emphasis>GeneratorReachedStateX</emphasis>,<emphasis>TriggerGeneratorStateTransitionA</emphasis> (and similarevents for the other Components and other &ldquo;A's&rdquo;).</para></listitem><listitem><para><emphasis role="strong">Application configuration events.</emphasis>Application has reached state X; trigger Application state transition;etc.</para></listitem><listitem><para><emphasis role="strong">Error events.</emphasis><emphasis>PowerFailure</emphasis>;<emphasis>MinimalPositionExceeded</emphasis>,<emphasis>MaximalPositionExceeded</emphasis>, and similar events forvelocity, current, force, power, etc.;</para></listitem></itemizedlist></para></section><section id="actuated-axis-functions"><title>Component functionalities</title><para>PID; gain scheduling; motion profiles; Kalman Filters for velocity orposition; etc.</para></section><section id="actuated-axis-behaviour"><title>Behaviour</title><para>The innermost loop that runs in software uses the <link linkend="behaviour-non-pre-emptible">Non-Pre-Emptible</link>real-time mode.(<link linkend="behaviour-non-interruptable">Non-Interruptable</link>isn't necessary in most cases.) The outer loops are<link linkend="behaviour-pre-emptible">Pre-Emptible</link>,<emphasis>or</emphasis> they are synchronously executed by theinnermost loop, at integer multiples of its sample times.</para></section></section><section id="applications-xyz"><title>XYZ</title><para>An XYZ device is a set of one, two or three ActuatedAxis devices, withthe following more specific features: the axes are <emphasis role="strong">prismatic</emphasis> and<emphasis role="strong">orthogonal</emphasis>, and the applicationadds <emphasis role="strong">precise synchronization</emphasis>between the different ActuatedAxis devices.The data objects in the XYZ control level are<emphasis role="strong">Cartesian</emphasis>: they indicate positionsin the real world, independently of the coordinates of the axes.</para><section id="xyz-architecture"><title>Architecture</title><para>The architecture follows from the application description above: XYZis a control loop around a set of ActuatedAxis controllers. Because ofthe precise synchronization needs, both layers have<link linkend="real-time-interaction">real-time interaction</link>.</para></section><section id="xyz-commands"><title>Commands</title><para>The <emphasis>steady state</emphasis> Command is a desired position orvelocity (in 1D, 2D or 3D).The <emphasis>Component configuration</emphasis>,<emphasis>Power configuration</emphasis> and<emphasis>Homing</emphasis> are similar (not identical!) to thoseof the <link linkend="actuated-axis-commands">ActuatedAxis</link>,but the latter adds <emphasis>synchronization</emphasis> between thehoming tasks of all axes.</para></section><section id="xyz-data-flow"><title>Data flow</title><para>Similar to the highest level of the<link linkend="actuated-axis-commands">ActuatedAxis</link>, but theobjects (position, velocity, force, &hellip;) are now Cartesian.</para></section><section id="xyz-events"><title>Events</title><para>Again similar to those of the highest level of the<link linkend="actuated-axis-commands">ActuatedAxis</link>, but theaxis synchronization for the homing needs its own extra <emphasis role="strong">Home</emphasis> Command, whose handlercollects the homing events of the individual axes, and whose completerwaits until all axes are homed before declaring the XYZ device homedby firing the <emphasis role="strong">XYZHomed</emphasis> event.</para></section><section id="xyz-functions"><title>Functions</title><para>The Generator performs interpolation in the Cartesian space; algorithms are typically not much more complex than the <link linkend="actuated-axis-commands">ActuatedAxis</link> algorithms,because the Cartesian task can only <emphasis role="strong">translate</emphasis> the end-point of the XYZdevice. Advanced Generators take the<emphasis role="strong">dynamics</emphasis> of the device intoaccount; in this case, the Generator must have knowledge of the devicekinematics and hence it must have access to some data objects of theunderlying ActuatedAxis controller.</para><para>The Servo also operates on Cartesian objects. Often, it willexecute independent servo algorithms on each of the<emphasis>coordinates</emphasis> of the Cartesian motion objects.</para><para>The Effector transforms the result into 1D instantaneousand independent setpoint Commands for the ActuatedAxis controllers; itneeds to know the exact <emphasis role="strong">kinematics</emphasis>of the XYZ device; these kinematics remain hidden in the Effectoras a &ldquo;hot spot&rdquo;.</para><para>If not empty, the Estimator is not much more complex than theActuatedAxis Estimator, because of the &ldquo;orthogonal&rdquo; natureof the XYZ application.</para></section><section id="xyz-behaviour"><title>Behaviour</title><para>The XYZ level should run with the same real-time behaviour as thetop-most level of the ActuatedAxis application it works with.</para></section></section><section id="applications-pointing-device"><title>PointingDevice</title><para>Very similar structure as<link linkend="applications-xyz">XYZ</link>, but now running on top ofrotational ActuatedAxis applications.</para><para>This means that some functionalities become a bit more complex,because orientational motions have a more involved mathematics thanpure translations. Conceptually, however, everything remains the samewith respect to the XYZ application.</para></section><section id="applications-serial-manipulator"><title>SerialManipulator</title><para>The serial connection of a number of<link linkend="applications-actuated-axis">ActuatedAxis</link>objects, with revolute joint axes for robots, or prismatic andrevolute axes for 4D or 5D machine tools. So, it has more complexCommands, Data objects, Component functionalities and Events thanthe <link linkend="applications-actuated-axis">ActuatedAxis</link> and<link linkend="applications-xyz">XYZ</link> applications, but the same Architecture and Behaviour.</para><section id="serial-manipulator-data-flow"><title>Data flow</title><para></para></section><section id="serial-manipulator-functions"><title>Component functionalities</title><para></para></section></section><section id="applications-pkm"><title>PKM (Parallel Kinematics Machine)</title><para>Same Commands, Behaviour, Architecture, Data objects and Events as the<link linkend="applications-serial-manipulator">SerialManipulator</link>,but other Component functionalities, depending on the kinematics.</para><section id="pkm-architecture"><title>Architecture</title><para></para></section><section id="pkm-data-flow"><title>Data flow</title><para></para></section><section id="pkm-events"><title>Events</title><para></para></section><section id="pkm-functions"><title>Component functionalities</title><para></para></section><section id="pkm-behaviour"><title>Behaviour</title><para></para></section></section><section id="applications-mobile-manipulator"><title>MobileManipulator</title><section id="mobile-manipulator-architecture"><title>Architecture</title><para></para></section><section id="mobile-manipulator-data-flow"><title>Data flow</title><para></para></section><section id="mobile-manipulator-events"><title>Events</title><para></para></section><section id="mobile-manipulator-functions"><title>Component functionalities</title><para></para></section><section id="mobile-manipulator-behaviour"><title>Behaviour</title><para></para></section></section></article>

⌨️ 快捷键说明

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