<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://softmc.servotronix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arwiebe</id>
		<title>SoftMC-Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://softmc.servotronix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arwiebe"/>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/wiki/Special:Contributions/Arwiebe"/>
		<updated>2026-04-15T06:55:42Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112451</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112451"/>
				<updated>2013-01-01T10:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=SoftMC-Wiki:Welcome&amp;diff=112449</id>
		<title>SoftMC-Wiki:Welcome</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=SoftMC-Wiki:Welcome&amp;diff=112449"/>
				<updated>2012-12-25T11:51:50Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:LogoAxy.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
{{Axy-Wiki:News}}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:LogoAxy.png&amp;diff=112448</id>
		<title>File:LogoAxy.png</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:LogoAxy.png&amp;diff=112448"/>
				<updated>2012-12-25T11:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: -&amp;gt; Creation failed: Unsupported filetype!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Sidebar&amp;diff=112447</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Sidebar&amp;diff=112447"/>
				<updated>2012-12-25T11:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Axy-Wiki&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** helppage|help&lt;br /&gt;
** Category:News|News&lt;br /&gt;
** Special:Statistics|Statistics&lt;br /&gt;
* navigation&lt;br /&gt;
** Axystems:AMCS Firmware|AMCS Firmware&lt;br /&gt;
* TOOLBOX&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Help:Namespaces_and_User_Rights&amp;diff=112446</id>
		<title>Help:Namespaces and User Rights</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Help:Namespaces_and_User_Rights&amp;diff=112446"/>
				<updated>2012-12-25T07:47:47Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pages on a MediaWiki wiki are grouped into collections called &amp;quot;'''namespaces'''&amp;quot;, which differentiate between the purpose of the pages at a high level.  Pages in certain namespaces can also have special properties or behave differently when they interact with other pages.  &lt;br /&gt;
&lt;br /&gt;
Namespaces are indicated in page titles by prefixing the page name with &amp;quot;'''namespace:'''&amp;quot;, so the prefix &amp;quot;'''{{NAMESPACE}}:'''&amp;quot; in this page's title (&amp;quot;{{FULLPAGENAME}}&amp;quot;) indicates that this page is in the {{NAMESPACE}} namespace. &lt;br /&gt;
Note, however, that colons and prefixes can also appear in page titles ''without'' indicating a namespace: The page [[Foo:{{PAGENAME}}]] is a page located in the main space because the namespace &amp;quot;Foo&amp;quot; does not exist. &lt;br /&gt;
Similarly the page [[{{NAMESPACE}}:Foo:{{PAGENAME}}]] is in the &amp;quot;{{NAMESPACE}}&amp;quot; namespace.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Common namespaces ==&lt;br /&gt;
Common public namespaces can be edited by users who have edit rights in one of the namespaces.&lt;br /&gt;
&lt;br /&gt;
;News&lt;br /&gt;
: Namespace holding common news articles. &lt;br /&gt;
;Equipment&lt;br /&gt;
: Equipment descriptions should go in this namespace.&lt;br /&gt;
&lt;br /&gt;
= User Rights =&lt;br /&gt;
Basic access to the Manz-Wiki is granted by the right '''[[Manz-Wiki:Users|PUBLIC_R]]'''.&lt;br /&gt;
It allows reading articles in all public namespaces.&lt;br /&gt;
Without this right, login to Manz-Wiki is not possible.&lt;br /&gt;
&lt;br /&gt;
User rights for the department namespaces are organized in three graduations.&lt;br /&gt;
;&amp;lt;NS&amp;gt;_R &lt;br /&gt;
: Read right&lt;br /&gt;
: Allows reading articles in the internal department namespace.&lt;br /&gt;
;&amp;lt;NS&amp;gt;_E &lt;br /&gt;
: Edit right&lt;br /&gt;
: Allows editing existing articles (but not creating new, deleting or moving articles) in the internal and public department namespaces.&lt;br /&gt;
;&amp;lt;NS&amp;gt;_C &lt;br /&gt;
: Create right&lt;br /&gt;
: Grands full author rights to the internal and public department namespaces.&lt;br /&gt;
&lt;br /&gt;
See also:&amp;lt;br/&amp;gt;&lt;br /&gt;
Full list of [[Special:ListGroupRights|rights and allowed actions]]. &lt;br /&gt;
&lt;br /&gt;
== Obtaining user rights ==&lt;br /&gt;
User rights are managed by the [mailto:itsupport@manz.com IT-Support] of Manz. &lt;br /&gt;
New rights or changes can be requested by email, including a confirmation of the corresponding chief.&lt;br /&gt;
&lt;br /&gt;
= Standard namespaces =&lt;br /&gt;
The standard MediaWiki installation has sixteen namespaces which can contain user-generated content; there are also two special namespaces which contain pages created 'on the fly' by the MediaWiki software.  The standard namespaces are organised in pairs, with each pair containing a 'subject namespace' and a 'discussion namespace'.  The namespaces are numbered from zero such that all subject namespaces have even indices, and all talk namespaces have odd indices.&lt;br /&gt;
&lt;br /&gt;
;File&lt;br /&gt;
[[Image:Example.jpg|100px|right]]&lt;br /&gt;
The ''File'' namespace is used to store metadata for images, videos, sound files and other media accessed via the Media namespace.  Each file has a corresponding page in the {{ns:6}} namespace which is often used to hold licensing data.  Linking to a page in this namespace includes the media file inline in the page. Writing &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[File:Wiki.png|right]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; instead produces the image to the right. &lt;br /&gt;
See [[Help:Uploading files]] for more details on how to use files.&lt;br /&gt;
&lt;br /&gt;
;Category&lt;br /&gt;
The ''Category'' namespace contains [[Help:Categories|categories]], dynamic lists of other pages. &lt;br /&gt;
To facilitate this, linking ''directly'' to a category page does not output an inline link, but instead includes the page into the associated category page. &lt;br /&gt;
So the code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Help]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; causes a category link to appear at the bottom of the page (at the bottom in the box marked &amp;quot;{{MediaWiki:Pagecategories}}&amp;quot;). &lt;br /&gt;
Clicking on that link takes you to the category page, where this page is visible in the category list.  &lt;br /&gt;
See [[Help:Categories]] for more details on category link syntax.&lt;br /&gt;
&lt;br /&gt;
;Template&lt;br /&gt;
The ''Template'' namespace is used to hold [[Help:Templates|templates]], blocks of text or wikicode that are intended to be transcluded in several other pages.  To facilitate this it has the special property that it is the ''default'' namespace for transclusions: the wikicode &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Foo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Foo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
See [[Help:Templates]] for more details on templates.&lt;br /&gt;
&lt;br /&gt;
;Media&lt;br /&gt;
This namespace is an alias used for direct linking to media files: the link [[Media:Example.jpg]] links to just the image rather than the image description page, which would be [[:File:Example.jpg]].&lt;br /&gt;
See [[Help:Images]] for more details of this link syntax.&lt;br /&gt;
&lt;br /&gt;
;Help&lt;br /&gt;
The ''Help'' namespace is used to hold help files, instructions and 'how-to' guides for using this Wiki. It has no special properties.&lt;br /&gt;
&lt;br /&gt;
;Manz-Wiki&lt;br /&gt;
This is a content namespace that is normally used for meta-discussions related to the operation and development of the wiki. It has no special properties.&lt;br /&gt;
&lt;br /&gt;
;MediaWiki&lt;br /&gt;
The ''MediaWiki'' namespace is used to hold system messages and other important content. For instance, the page [[{{ns:8}}:Edit]] contains the text that fills the &amp;quot;{{MediaWiki:Edit}}&amp;quot; tab at the top of every page.  If that page exists, it overrides the default content, which is &amp;quot;edit this page&amp;quot;. Similarly, [[{{ns:8}}:Common.css]] is the system message which holds the [[wikipedia:Cascading Style Sheets|CSS]] code that is loaded for all users for each page. This namespace can only be edited by administrators.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Help]]&lt;br /&gt;
[[Category:WikiAdmin]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112445</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112445"/>
				<updated>2012-12-25T07:32:16Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics/Verification&amp;diff=112443</id>
		<title>AXY:Resonance frequency model for Delta kinematics/Verification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics/Verification&amp;diff=112443"/>
				<updated>2012-12-24T14:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Resonance frequency model for Delta kinematics/Verification to AXY:Resonance frequency model for Delta kinematics/Verification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following 3D-graphs show the resonance frequency of TCP over the whole X/Y working space on a certain Z-level. &lt;br /&gt;
* The surface is the modeled frequency. &lt;br /&gt;
* The dots are measured frequencies.&lt;br /&gt;
&lt;br /&gt;
== DR1200G3-4S ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=300px heights=200px caption=&amp;quot;Resonance frequency for motions in main directions (Z-level 900mm)&amp;quot;&amp;gt;&lt;br /&gt;
File:Resonance frequency model - Verification X-direction (3D graph).png|X-direction&lt;br /&gt;
File:Resonance frequency model - Verification Y-direction (3D graph).png|Y-direction&lt;br /&gt;
File:Resonance frequency model - Verification Z-direction (3D graph).png|Z-direction&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DR1200G4-4S ==&lt;br /&gt;
&lt;br /&gt;
== Script for aico.motionAnalyser ==&lt;br /&gt;
&lt;br /&gt;
The graphs above are created using the following [[aico.motionAnalyser]] script.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cfDir      = [1; 0; 0];&lt;br /&gt;
fZ         = 0.900;&lt;br /&gt;
sRecPath   = 'D:\\PROJEKTE\\Delta\\ResFreqModelValidation\\DR1200-G3\\';&lt;br /&gt;
&lt;br /&gt;
DeltaDR1200       = delta_newDR1200_4S();&lt;br /&gt;
DeltaDR1200.fM_P  = 0.9;&lt;br /&gt;
DeltaDR1200.fCr   = 50000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Fig, Ax] = figure_new('Resonance frequency on Z-level ' + string(fZ));&lt;br /&gt;
&lt;br /&gt;
// plot calculated frequencies first&lt;br /&gt;
RecPDm   = record_new('PDm',  cfDir);&lt;br /&gt;
RecPDDm  = record_new('PDDm', [0; 0; 0]);&lt;br /&gt;
&lt;br /&gt;
[mfXmesh, mfYmesh] = meshgrid(-0.600:0.05:0.600, -0.600:0.05:0.600);&lt;br /&gt;
mfZmesh            = zeros(mfXmesh);&lt;br /&gt;
  &lt;br /&gt;
for iI = 1 : size(mfXmesh, 1)&lt;br /&gt;
  for iJ = 1 : size(mfYmesh, 2)&lt;br /&gt;
&lt;br /&gt;
    if (norm([mfXmesh(iI, iJ); mfYmesh(iI, iJ)]) &amp;gt; 0.600) then &lt;br /&gt;
      mfZmesh(iI,iJ)  = %nan;&lt;br /&gt;
      continue; &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    RecPm   = record_new('Pm', [mfXmesh(iI, iJ); mfYmesh(iI, iJ); fZ]);&lt;br /&gt;
    &lt;br /&gt;
    [RecQRad, RecQDRad, RecQDDRad]                        = delta_inverseKinematics(DeltaDR1200, RecPm, RecPDm, RecPDDm);&lt;br /&gt;
    [RecResFreq, RecStiffness, RecStiffnessJoints, RecStiffnessRods]  = delta_resonanceFrequency(DeltaDR1200, RecQRad, RecPm, RecPDm);&lt;br /&gt;
      &lt;br /&gt;
    mfZmesh(iI,iJ)  = record_getData(RecResFreq);&lt;br /&gt;
    &lt;br /&gt;
  end // iJ&lt;br /&gt;
end // iI&lt;br /&gt;
&lt;br /&gt;
sca(Ax);&lt;br /&gt;
mesh(mfXmesh, mfYmesh, mfZmesh);&lt;br /&gt;
&lt;br /&gt;
//  abort&lt;br /&gt;
&lt;br /&gt;
// now plot the mesured pfequencies&lt;br /&gt;
function fResonance = findResonanceFrequency(RecData)&lt;br /&gt;
  &lt;br /&gt;
  // disgard signal before first zero crossing&lt;br /&gt;
  for iIndex = 2 : record_getLength(RecData)&lt;br /&gt;
    if (sign(record_getData(RecData, 1, iIndex-1)) &amp;lt;&amp;gt; sign(record_getData(RecData, 1, iIndex))) then&lt;br /&gt;
      RecData = record_crop(RecData, iIndex:$)&lt;br /&gt;
      break&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  // compute fourier transform  &lt;br /&gt;
  rfData = record_getData(RecData, 1)&lt;br /&gt;
  rfFFT  = fft(rfData - mean(rfData))&lt;br /&gt;
  &lt;br /&gt;
  // find main frequency&lt;br /&gt;
  [rfDummy, riIndeces] = sort(abs(rfFFT(1:($/2))))&lt;br /&gt;
  &lt;br /&gt;
  // return resonance frequency&lt;br /&gt;
  fResonance1 = (riIndeces(1)-1) / (record_getSamplingPeriod(RecData) * record_getLength(RecData)) &lt;br /&gt;
  fAbs1       = abs(rfFFT(riIndeces(1))) / (record_getLength(RecData)/2)&lt;br /&gt;
  fResonance2 = (riIndeces(2)-1) / (record_getSamplingPeriod(RecData) * record_getLength(RecData)) &lt;br /&gt;
  fAbs2       = abs(rfFFT(riIndeces(2))) / (record_getLength(RecData)/2)&lt;br /&gt;
  fResonance  = (fResonance1*fAbs1 + fResonance2*fAbs2) / (fAbs1+fAbs2)&lt;br /&gt;
  &lt;br /&gt;
  fAmp       = abs(rfFFT(riIndeces(1))) / (record_getLength(RecData)/2)&lt;br /&gt;
  fPhase     = atan(imag(rfFFT(riIndeces(1))),real(rfFFT(riIndeces(1))))&lt;br /&gt;
&lt;br /&gt;
  // plot verification&lt;br /&gt;
  rfTimes   = record_getSamplingPeriod(RecData) : record_getSamplingPeriod(RecData) : record_getSamplingPeriod(RecData) * record_getLength(RecData)&lt;br /&gt;
  rfCosData = fAmp * cos(2*%pi*fResonance * rfTimes + fPhase)&lt;br /&gt;
  RecCos    = record_new('Cosine', rfCosData, record_getSamplingPeriod(RecData), record_getStartTime(RecData)) &lt;br /&gt;
  //axes_plot(RecData, RecCos)  &lt;br /&gt;
  //axes_plot2d(signal_fourierTransform(RecData)) &lt;br /&gt;
  &lt;br /&gt;
  //rfFr  = (0:(record_getLength(RecData) / 2)) / (record_getSamplingPeriod(RecData) * record_getLength(RecData)); //associated frequency vector&lt;br /&gt;
  //clf&lt;br /&gt;
  //plot(rfFr, abs(rfFFT(1:length(rfFr))))&lt;br /&gt;
  //plot(fResonance, 10, 'r*')&lt;br /&gt;
endfunction&lt;br /&gt;
&lt;br /&gt;
lRec = record_loadAmcs(sRecPath + 'STF_G1.REC');&lt;br /&gt;
&lt;br /&gt;
RecPhase    = lRec(1);&lt;br /&gt;
RecSetPoint = record_join(lRec(2), lRec(3), lRec(4));&lt;br /&gt;
RecMoveDir  = record_join(lRec(5), lRec(6), lRec(7));&lt;br /&gt;
RecHere     = record_join(lRec(8), lRec(9), lRec(10));&lt;br /&gt;
&lt;br /&gt;
mfPos  = [];&lt;br /&gt;
rfFreq = [];&lt;br /&gt;
&lt;br /&gt;
for iPhase = 1 : max(record_getData(RecPhase))&lt;br /&gt;
  &lt;br /&gt;
  rbPhaseIndizes  = record_getData(RecPhase) == iPhase;&lt;br /&gt;
  &lt;br /&gt;
  // select data for phase&lt;br /&gt;
  RecPhSetPoint = record_crop(RecSetPoint, rbPhaseIndizes);&lt;br /&gt;
  RecPhMoveDir  = record_crop(RecMoveDir,  rbPhaseIndizes);&lt;br /&gt;
  RecPhHere     = record_crop(RecHere,     rbPhaseIndizes);&lt;br /&gt;
  &lt;br /&gt;
  // filter position and moving direction&lt;br /&gt;
  if (((abs(record_getData(RecPhMoveDir, :, 1))' * abs(cfDir)) &amp;lt; 1) | (abs(record_getData(record_scale(RecPhSetPoint, 0.001), 3, 1) - fZ) &amp;gt; 0.01)) then&lt;br /&gt;
    continue;&lt;br /&gt;
  end&lt;br /&gt;
 &lt;br /&gt;
  lRecScope = record_loadTPS2000(sRecPath+string(iPhase)+'.csv');&lt;br /&gt;
  &lt;br /&gt;
  rfFreq($+1)    = findResonanceFrequency(lRecScope(1)); &lt;br /&gt;
  &lt;br /&gt;
  mfPos(:, $+1) = record_getData(record_scale(RecPhSetPoint, 0.001), :, 1);&lt;br /&gt;
  &lt;br /&gt;
end // iPhase&lt;br /&gt;
&lt;br /&gt;
sca(Ax);&lt;br /&gt;
param3d(mfPos(1,2:$), mfPos(2,2:$), rfFreq');&lt;br /&gt;
set(axes_getPolylines(Ax), 'mark_mode', 'on');&lt;br /&gt;
set(axes_getPolylines(Ax), 'mark_size', 3);&lt;br /&gt;
set(axes_getPolylines(Ax), 'line_mode', 'off');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics/Verification&amp;diff=112441</id>
		<title>AXY:Rod forces model for Delta kinematics/Verification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics/Verification&amp;diff=112441"/>
				<updated>2012-12-24T14:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Rod forces model for Delta kinematics/Verification to AXY:Rod forces model for Delta kinematics/Verification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Effective rod force ==&lt;br /&gt;
&lt;br /&gt;
For better presentation of results, effective rod force is introduced as:&lt;br /&gt;
:&amp;lt;math&amp;gt;Fr_{eff} = \frac {\left |  \overrightarrow{Fr}_i  \right |} {Rs_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
In this way the load capacity reduction is included in the rod force.&lt;br /&gt;
&lt;br /&gt;
== Rod forces model ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=300px heights=200px caption=&amp;quot;Rod forces (effective) for motions in main directions (Z-level 800mm)&amp;quot;&amp;gt;&lt;br /&gt;
File:Control;Rod forces model for Delta kinematics - Verification X-direction (3D graph).png|X-direction&lt;br /&gt;
File:Control;Rod forces model for Delta kinematics - Verification Y-direction (3D graph).png|Y-direction&lt;br /&gt;
File:Control;Rod forces model for Delta kinematics - Verification Z-direction (3D graph).png|Z-direction&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The graphs above are created using the following [[aico.motionAnalyser]] script.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fAcc      = 100;          // Acceleration [m/s^2] &lt;br /&gt;
cfAccDir  = [1; 0; 0];    // Moving direction&lt;br /&gt;
fZ        = 0.800;        // Z level [m]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DeltaDR1200 = delta_newDR1200_4S();&lt;br /&gt;
&lt;br /&gt;
RecPDm  = record_new('PDm', [0; 0; 0]);&lt;br /&gt;
RecPDDm = record_new('PDDm', fAcc * (cfAccDir / norm(cfAccDir)));&lt;br /&gt;
&lt;br /&gt;
[mfXmesh, mfYmesh] = meshgrid(-0.600:0.05:0.600, -0.600:0.05:0.600);&lt;br /&gt;
mfZmesh = zeros(mfXmesh);&lt;br /&gt;
  &lt;br /&gt;
for iI = 1 : size(mfXmesh, 1)&lt;br /&gt;
  for iJ = 1 : size(mfYmesh, 2)&lt;br /&gt;
&lt;br /&gt;
  if (norm([mfXmesh(iI, iJ); mfYmesh(iI, iJ)]) &amp;gt; 0.600) then &lt;br /&gt;
    mfZmesh(iI,iJ) = %nan;&lt;br /&gt;
    continue; &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  RecPm   = record_new('Pm', [mfXmesh(iI, iJ); mfYmesh(iI, iJ); fZ]);&lt;br /&gt;
  &lt;br /&gt;
  [RecQRad, RecQDRad, RecQDDRad] = delta_inverseKinematics(DeltaDR1200, RecPm, RecPDm, RecPDDm);&lt;br /&gt;
  RecTcmd                        = delta_inverseDynamics(DeltaDR1200, RecQRad, RecQDRad, RecQDDRad, RecPm, RecPDm, RecPDDm);&lt;br /&gt;
&lt;br /&gt;
  [RecRF, RecRed, RecRFeff]      = delta_rodForces(DeltaDR1200, RecQRad, RecQDRad, RecQDDRad, RecPm, RecPDDm, RecTcmd);&lt;br /&gt;
  &lt;br /&gt;
  mfZmesh(iI,iJ) = max(record_getData(RecRFeff));&lt;br /&gt;
&lt;br /&gt;
  end // iJ&lt;br /&gt;
end // iI&lt;br /&gt;
&lt;br /&gt;
figure_new('Z level: ' + string(fZ));&lt;br /&gt;
mesh(mfXmesh, mfYmesh, mfZmesh);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitation of acceleration/deceleration ==&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Verification of acceleration limitation.png|1000 px]]&lt;br /&gt;
&lt;br /&gt;
In this section the goal it to verify that the rod forces do not exceed the maximal allowed value.&lt;br /&gt;
To achieve this typical robot motions (adapted from real applications) are recorded and the rod forces are computed in [[aico.motionAnalyser]].&lt;br /&gt;
&lt;br /&gt;
The graph shows that the rod forces during motion are within narrow tolerance.&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Category:Model_based_control_for_Delta_kinematics&amp;diff=112440</id>
		<title>Category:Model based control for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Category:Model_based_control_for_Delta_kinematics&amp;diff=112440"/>
				<updated>2012-12-24T13:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:Axystems:Motion Dynamics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics&amp;diff=112437</id>
		<title>AXY:Rod forces model for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics&amp;diff=112437"/>
				<updated>2012-12-24T13:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On a Delta robot the mechanical connection between the platform (point C) and the crank arm (Point B) is realized by a pair of parallelogram rods.&lt;br /&gt;
The ball and socket joints at B and C can only carry a limited force, which is push/pull force of the rods.&lt;br /&gt;
If the maximal force of the ball joints is exceeded, robot arms can hang out which leads to destruction of the robot.&lt;br /&gt;
Because of kinematic structure of delta Robots rod forces depend on position, acceleration and moving direction.&lt;br /&gt;
A physical model is needed to pre-compute rod forces for start/target positions and limit acceleration/deceleration according to maximal allowed forces.&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Introduction.png]]&lt;br /&gt;
&lt;br /&gt;
== Physical model ==&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Relevant kinematic values.png|frame|Relevant kinematic values]]&lt;br /&gt;
&lt;br /&gt;
This rod forces model is based on the inverse dynamic model developed by IWF ([[File:Inverse kinematics and inverse dynamics for Delta - IWF report.pdf]]).&lt;br /&gt;
The actuating joint torques &amp;lt;math&amp;gt;\tau_i&amp;lt;/math&amp;gt; are considered as known.&lt;br /&gt;
&lt;br /&gt;
The coordinate system used by IWF differs from that used at MANZ (Y and Z directions are inverted). &lt;br /&gt;
In this model the IWF coordinate system is used. &lt;br /&gt;
The transformation from and into MANZ coordinate system is done by IDM implementation.&lt;br /&gt;
&lt;br /&gt;
=== Forces at crank arms ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Forces at crank arms.png|frame|Forces at crank arms]]&lt;br /&gt;
&lt;br /&gt;
The direction unit vector of the force &amp;lt;math&amp;gt;\overrightarrow{Fq}_i&amp;lt;/math&amp;gt; points perpendicularly to the crank arm:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fq}^*_i&lt;br /&gt;
  = &lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \cos \theta_i  &amp;amp; -\sin \theta_i  &amp;amp;  0   \\&lt;br /&gt;
  \sin \theta_i  &amp;amp;  \cos \theta_i  &amp;amp;  0   \\ &lt;br /&gt;
  0              &amp;amp;  0              &amp;amp;  1&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \cos q_i  &amp;amp;  0  &amp;amp;  \sin q_i   \\&lt;br /&gt;
  0         &amp;amp;  1  &amp;amp;  0          \\ &lt;br /&gt;
  -\sin q_i &amp;amp;  0  &amp;amp;  \cos q_i&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  0    \\&lt;br /&gt;
  0    \\ &lt;br /&gt;
  -1&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  -\cos \theta_i  \cdot  \sin q_i    \\&lt;br /&gt;
  -\sin \theta_i  \cdot  \sin q_i    \\ &lt;br /&gt;
  -\cos q_i&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The actuating joint torques &amp;lt;math&amp;gt;\tau_i&amp;lt;/math&amp;gt; comprise load torque, friction torques, gravity compensation torque and dynamic torque (inertia):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \tau_i&lt;br /&gt;
  = &lt;br /&gt;
  l_a  \cdot  \left | \overrightarrow{Fq}_i \right |&lt;br /&gt;
   + \rho_v  \cdot  \dot{q}_i&lt;br /&gt;
   + \rho_c  \cdot  sign(\dot{q}_i)&lt;br /&gt;
   - l_{AB}  \cdot  m_{AB}  \cdot  g  \cdot  \cos(q_i)&lt;br /&gt;
   + \Theta_{AB}  \cdot  \ddot{q}_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The absolute value of &amp;lt;math&amp;gt;Fq_i&amp;lt;/math&amp;gt; is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left | \overrightarrow{Fq}_i \right |&lt;br /&gt;
  =&lt;br /&gt;
  \frac {\tau_i&lt;br /&gt;
   - \rho_v  \cdot  \dot{q}_i&lt;br /&gt;
   - \rho_c  \cdot  sign(\dot{q}_i)&lt;br /&gt;
   + l_{AB}  \cdot  m_{AB}  \cdot  g  \cdot  \cos(q_i)&lt;br /&gt;
   - \Theta_{AB}  \cdot  \ddot{q}_i}&lt;br /&gt;
  {l_a}&lt;br /&gt;
  \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The direction of the parallelogram rods is the connection between points C and B:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{C_i B_i}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \left ( r + l_a \cdot \cos q_i \right ) \cdot \cos \theta_i - x    \\&lt;br /&gt;
  \left ( r + l_a \cdot \cos q_i \right ) \cdot \sin \theta_i - y    \\ &lt;br /&gt;
  -l_a \cdot \sin q_i - z&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The direction unit vector of the force &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; is parallel to the parallelogram rods:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fb}^*_i &lt;br /&gt;
  = \frac {\overrightarrow{C_i B_i}} {\left | \overrightarrow{C_i B_i} \right |}&lt;br /&gt;
  \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The angle between &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\overrightarrow{Fq}_i&amp;lt;/math&amp;gt; is obtained by using dot product definition:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \cos \varphi_i &lt;br /&gt;
  = - \frac {\overrightarrow{Fq}^*_i  \cdot  \overrightarrow{Fb}^*_i} &lt;br /&gt;
            {\left | \overrightarrow{Fq}^*_i \right |  \cdot  \left | \overrightarrow{Fb}^*_i \right |}&lt;br /&gt;
  = - \left ( \overrightarrow{Fq}^*_i  \cdot  \overrightarrow{Fb}^*_i \right )&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The absolute value of &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; is computed as:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left | \overrightarrow{Fb}_i \right |&lt;br /&gt;
  = \frac {\left | \overrightarrow{Fq}_i \right |} {\cos \varphi_i}&lt;br /&gt;
  \qquad \mathrm{(4)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forces at the platform ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Forces at platform.png|frame|Forces at platform]]&lt;br /&gt;
&lt;br /&gt;
The inertia of the parallelogram rods cannot be neglected. &lt;br /&gt;
Therefore the forces at point C are less then forces at point B.&lt;br /&gt;
&lt;br /&gt;
The inertia force is proportional to the Cartesian acceleration vector:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fm}&lt;br /&gt;
  = - m_{platform} \cdot \overrightarrow{\ddot{P}}_{max}&lt;br /&gt;
  \qquad \mathrm{(5)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gravity force points downward:&lt;br /&gt;
:&amp;lt;math&amp;gt; &lt;br /&gt;
  \overrightarrow{Fg}&lt;br /&gt;
  = m_{platform}  \cdot  g  \cdot  \begin{bmatrix} 0  \\ 0 \\ -1 \end{bmatrix}&lt;br /&gt;
  \qquad \mathrm{(6)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direction of &amp;lt;math&amp;gt;\overrightarrow{Fc}_i&amp;lt;/math&amp;gt; is identical to &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fc}^*_i = \overrightarrow{Fb}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unknown value of force &amp;lt;math&amp;gt;\overrightarrow{Fc}_i&amp;lt;/math&amp;gt; is expressed by a variable:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fc}_i = \eta_i \cdot \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sum of all forces affecting at the platform is equal zero:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fm} + \overrightarrow{Fg} + \sum_{i} \overrightarrow{Fc}_i&lt;br /&gt;
  = 0&lt;br /&gt;
  \qquad \mathrm{(7)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The unknown values of &amp;lt;math&amp;gt;\eta_i&amp;lt;/math&amp;gt; are obtained by solving the linear equation system (7).&lt;br /&gt;
&lt;br /&gt;
=== Torques at the platform ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Torques at platform.png|frame|Torques at the platform]]&lt;br /&gt;
&lt;br /&gt;
The rod forces do not affect at the platform's center of mass and therefore cause load torques which are compensated by the parallelogram structures.&lt;br /&gt;
These compensation torques produces additional forces in the parallelogram rods and have to be modeled as well.&lt;br /&gt;
&lt;br /&gt;
Load torques are obtained by considering resultant rod forces at point C:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ml}_i&lt;br /&gt;
  = \overrightarrow{PC}_i  \times  \overrightarrow{Fc}_i&lt;br /&gt;
  = \begin{bmatrix} &lt;br /&gt;
     r_b \cdot \cos \theta_i \\&lt;br /&gt;
     r_b \cdot \sin \theta_i \\ &lt;br /&gt;
     0 &lt;br /&gt;
    \end{bmatrix}&lt;br /&gt;
   \times  \overrightarrow{Fc}_i&lt;br /&gt;
  \qquad \mathrm{(8)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the computation of compensation torques of both parallelogram rods are handled separately:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fs}_i + \overrightarrow{Ft}_i = \overrightarrow{Fc}_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The compensation torques occur because the both rod forces are different:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ma}_i&lt;br /&gt;
  = \overrightarrow{S_i T_i}  \times  &lt;br /&gt;
    \left ( \overrightarrow{Fs}_i - \overrightarrow{Ft}_i \right )&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The force difference of the both parallelogram rod forces is not known in first step. &lt;br /&gt;
It is expressed by a variable &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fs}_i - \overrightarrow{Ft}_i&lt;br /&gt;
  = \mu_i  \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the compensation torques follows:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ma}_i&lt;br /&gt;
  = \mu_i \cdot &lt;br /&gt;
  \left (&lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
   d  \cdot \sin \theta_i   \\&lt;br /&gt;
   -d \cdot \cos \theta_i   \\ &lt;br /&gt;
   0&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
   \times  \overrightarrow{Fc}^*_i    &lt;br /&gt;
  \right )&lt;br /&gt;
  \qquad \mathrm{(9)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The addition of all load and compensation torques must be equal zero:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \sum_{i} \overrightarrow{Ml}_i  +  \sum_{i} \overrightarrow{Ma}_i = 0&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unknown variables &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt; can be obtained by solving the linear equation system:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
 \sum_{i} \overrightarrow{Ma}_i  =  - \sum_{i} \overrightarrow{Ml}_i&lt;br /&gt;
  \qquad \mathrm{(10)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parallelogram rod forces ===&lt;br /&gt;
&lt;br /&gt;
Because &amp;lt;math&amp;gt;\overrightarrow{Fc}^*_i&amp;lt;/math&amp;gt; are unity vectors, the variables &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt; represent the differences of the both rod forces.&lt;br /&gt;
The absolute value of the bigger rod force is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left|  \overrightarrow{Fr}_i  \right|  =  \frac {1}{2} \cdot \left( \left|  \overrightarrow{Fb}_i  \right|  +  \left| \mu_i \right|  \right)&lt;br /&gt;
  \qquad \mathrm{(11)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load capacity reduction due to parallelogram shift ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Parallelogram shift.png|frame|Parallelogram shift]]&lt;br /&gt;
&lt;br /&gt;
The half-bowls of the ball and socket joints are held by a spring. &lt;br /&gt;
For the load capacity of the joint only the force components are relevant, that are perpendicular to the rods.&lt;br /&gt;
When the parallelogram is shifted the perpendicular forces become less and therefore the load capacity decreases.&lt;br /&gt;
&lt;br /&gt;
To obtain the shift angle an intermediate step is needed:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \cos \xi_i&lt;br /&gt;
  = \overrightarrow{S_i T_i}^*  \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
  = &lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
   \sin \theta_i   \\&lt;br /&gt;
   -\cos \theta_i  \\ &lt;br /&gt;
   0&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
   \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reduction factor of the joint's load capacity is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  Rs_i = \cos \sigma_i = \sin \xi_i = \sqrt{1 - \cos^2 \xi_i}&lt;br /&gt;
  \qquad \mathrm{(12)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitation of acceleration/deceleration ==&lt;br /&gt;
&lt;br /&gt;
To set appropriate acceleration and deceleration values for a given straight motion it is adequate to test only the start and target points.&lt;br /&gt;
&lt;br /&gt;
The acceleration rates at start point respectively the deceleration rate at target point are computed as quotient of maximal allowed rod force and the computed rod force:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  Ra = \min_i \frac {Fr_{max} \cdot Rs_i} {\left |  \overrightarrow{Fr}_i  \right |}&lt;br /&gt;
  \qquad \mathrm{(13)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The only model parameter &amp;lt;math&amp;gt;Fr_{max}&amp;lt;/math&amp;gt; can only be obtained by incrementally increasing (trial and error).&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* In [[aico.motionAnalyser]] this model is implemented by the function [[delta_rodForces]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Model based control for Delta kinematics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:Direct_kinematics_for_Delta_-_IWF_report.pdf&amp;diff=112438</id>
		<title>File:Direct kinematics for Delta - IWF report.pdf</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:Direct_kinematics_for_Delta_-_IWF_report.pdf&amp;diff=112438"/>
				<updated>2012-12-24T13:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Model based control for Delta kinematics]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Abschlussbericht&lt;br /&gt;
f�r die Manz Automation AG, Reutlingen&lt;br /&gt;
&lt;br /&gt;
Modellierung der direkten kinematischen Transformation eines Delta-Roboters&lt;br /&gt;
&lt;br /&gt;
04.04.2008&lt;br /&gt;
&lt;br /&gt;
Forschungsinstitut f�r Produktionstechnik GmbH Braunschweig Langer Kamp 19 b D�38106 Braunschweig&lt;br /&gt;
&lt;br /&gt;
�1&lt;br /&gt;
&lt;br /&gt;
Inhaltsverzeichnis&lt;br /&gt;
� 1 Ubersicht 2 Kinematik 2.1 Zwangsbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Direktes kinematisches Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Differentialkinematik 4 Implementierung und Validierung A Modellierung der vierten Achse B Computeralgebra-Skripte 2 3 3 5 6 8 10 10&lt;br /&gt;
&lt;br /&gt;
�� 1 Ubersicht&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
� Ubersicht&lt;br /&gt;
&lt;br /&gt;
Die modellbasierte Roboterregelung des vorangegangenen Projektes nutzt ein dynamisches Modell (DM) zur Berechnung von Vorsteuer-Momenten  , das als Eingangsgr��en die Platto  � formpose p mit ihren Ableitungen p und p sowie die Antriebswinkel q mit ihren Ableitungen  � q und q ben�tigt. Um nun ein inverses dynamisches Modell zu realisieren, wurde ein inverses o kinematisches Modell (IKM) vorgeschaltet. Das entsprechende Schema ist der Abbildung 1 zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
IKM . q q .. . q q q . .. p p p p . p .. p&lt;br /&gt;
&lt;br /&gt;
q2&lt;br /&gt;
DM&lt;br /&gt;
&lt;br /&gt;
� .&lt;br /&gt;
&lt;br /&gt;
Servoregler&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
Abbildung 1: Verwendung des inversen kinematischen Modells zur Vorsteuerung Um auch bei einer Beschreibung der Trajektorie in Gelenkwinkeln q das dynamische Modell zu nutzen, muss ein entsprechendes direktes kinematisches Modell vorgeschaltet werden. Das resultierende Schema ist in Abbildung 2 zu finden. Dieses Modell wurde formuliert, als Erweiterung der bestehenden Software implementiert und durch Simulation validiert.&lt;br /&gt;
&lt;br /&gt;
q . q .. q .. . q q q p . p .. p .. . q q q&lt;br /&gt;
&lt;br /&gt;
. q q&lt;br /&gt;
&lt;br /&gt;
q2&lt;br /&gt;
DM&lt;br /&gt;
&lt;br /&gt;
DKM&lt;br /&gt;
&lt;br /&gt;
� .&lt;br /&gt;
&lt;br /&gt;
Servoregler&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
Abbildung 2: Verwendung des direkten kinematischen Modells zur Vorsteuerung&lt;br /&gt;
&lt;br /&gt;
�2 Kinematik&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Kinematik&lt;br /&gt;
&lt;br /&gt;
� Abbildung 3 gibt eine Ubersicht uber die Modellierung des Roboters. Der Basiskoordinaten� system der Modellierung O liegt in der Ebene, die durch die Antriebsachsen aufgespannt wird, a a �quidistant zu den Schnittpunkten der Antriebsachsen mit den L�ngsachsen der Kurbeln A. Die Schnittpunkte zwischen der Kurbell�ngsachse und der Parallelogrammbasis werden als a B bezeichnet, die entsprechende Punkte an der Plattform als C.&lt;br /&gt;
B A&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
� Abbildung 3: Ubersicht uber das Robotermodell � Die Antriebswinkel lauten q, die Position des Punktes P gegen�ber dem Basiskoordinatenu system O, der mittig in der Plattform liegt, wird mit p = [x, y, z]T bezeichnet. Die vierte Achse l�sst sich, da sie unabh�ngig von den ersten drei Achsen zu betrachten ist, einfach und a a getrennt modellieren. Ihr Posewinkel wird mit  bezeichnet. Die entsprechenden Gleichungen finden Ber�cksichtigung in Anhang A. u&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
&lt;br /&gt;
Zwangsbedingungen&lt;br /&gt;
&lt;br /&gt;
In der Abbildung 4 finden sich alle relevanten kinematischen Parameter und Formelzeichen. Die Parallelogramme sind f�r die Modellierung zu einem Stab zusammengefasst und der u Plattform werden nur translatorische Freiheiten gew�hrt. Die Lage der Punkte B und C wird a beschrieben durch: Bx,i = (ra + la cos qi ) cos i By,i = (ra + la cos qi ) sin i Bz,i = -la sin qi Cx,i = x + rb cos i Cy,i = y + rb sin i Cz,i = z&lt;br /&gt;
&lt;br /&gt;
�2.1&lt;br /&gt;
&lt;br /&gt;
Zwangsbedingungen&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
rb&lt;br /&gt;
&lt;br /&gt;
A S P A S&lt;br /&gt;
&lt;br /&gt;
q&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
rb rb&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
lb rb&lt;br /&gt;
&lt;br /&gt;
� y&lt;br /&gt;
&lt;br /&gt;
x&lt;br /&gt;
O&lt;br /&gt;
&lt;br /&gt;
P&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
ra la&lt;br /&gt;
&lt;br /&gt;
P&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
A&lt;br /&gt;
&lt;br /&gt;
S&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
rb&lt;br /&gt;
&lt;br /&gt;
Abbildung 4: Relevante kinematische Gr��en o Der Verbindungsvektor zwischen den Punkten B und C ergibt sich demnach zu:   (ra + la cos qi ) cos i - rb cos i - x - - Ci Bi =  (ra + la cos qi ) sin i - rb sin i - y  -la sin qi - z   (r + la cos qi ) cos i - x =  (r + la cos qi ) sin i - y  -la sin qi - z mit r = ra - rb und i = 1, 2, 3. Die L�nge lb des Parallelogramms ist konstant, somit ergibt sich mit a - - Ci Bi die kinematische Zwangsbedingung: fi : [(r + la cos qi ) cos i - x]2 + [(r + la cos qi ) sin i - y]2 + [-la sin qi - z]2 - lb 2 = 0 (1)&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
= lb 2&lt;br /&gt;
&lt;br /&gt;
�2.2&lt;br /&gt;
&lt;br /&gt;
Direktes kinematisches Problem&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2.2&lt;br /&gt;
&lt;br /&gt;
Direktes kinematisches Problem&lt;br /&gt;
&lt;br /&gt;
Gleichung (1) beschreibt pro Kette eine Kugel, deren Mittelpunkt S von Punkt Bi um rb parallel zur Ebene, in der die Antriebe liegen, in Richtung Arbeitsplattform verschoben ist. Damit liegt das Zentrum der Arbeitsplattform P im Schnitt der drei Kugeln i :&lt;br /&gt;
2 i : (x - Sxi )2 + (y - Syi )2 + (z - Szi )2 - lb = 0&lt;br /&gt;
&lt;br /&gt;
(2)&lt;br /&gt;
&lt;br /&gt;
mit Sxi = (r + la cos qi ) cos i Syi = (r + la cos qi ) sin i Szi = -la sin qi (3) (4) (5)&lt;br /&gt;
&lt;br /&gt;
Um den Schnitt herbeizuf�hren, werden zun�chst durch Subtraktion lineare Gleichungen u a gewonnen: 1 : 1 - 2 = u1 x + u2 y + u3 z + u4 = 0 2 : 1 - 3 = v1 x + v2 y + v3 z + v4 = 0 mit u1 := 2Sx2 - 2Sx1 u2 := 2Sy2 - 2Sy1 u3 := 2Sz2 - 2Sz1 u4 :=&lt;br /&gt;
2 -Sz2&lt;br /&gt;
&lt;br /&gt;
(6) (7)&lt;br /&gt;
&lt;br /&gt;
(8) (9) (10)&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
2 S y2&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
2 Sx2&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 S z1&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 S y1&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 Sx1&lt;br /&gt;
&lt;br /&gt;
(11) (12) (13) (14)&lt;br /&gt;
&lt;br /&gt;
v1 := 2Sx3 - 2Sx1 v2 := 2Sy3 - 2Sy1 v3 := 2Sz3 - 2Sz1 v4 :=&lt;br /&gt;
2 -Sz3&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
2 S y3&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
2 Sx3&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 S z1&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 S y1&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
2 Sx1&lt;br /&gt;
&lt;br /&gt;
(15)&lt;br /&gt;
&lt;br /&gt;
Gleichungen (6) und (7) liefern durch Elimination: x = w1 z + w2 y = w3 z + w4 mit w1 := w2 := w3 := w4 := v2 u3 - u2 v3 v1 u2 - u1 v2 v2 u4 - u2 v4 v1 u2 - u1 v2 -v3 - v1 w1 v2 -v4 - v1 w2 v2 (18) (19) (20) (21) (16) (17)&lt;br /&gt;
&lt;br /&gt;
�3 Differentialkinematik&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
Einsetzen von (16) und (17) in (2) liefert die quadratische Gleichung in z w3 z + w4 - Sy 3  mit&lt;br /&gt;
2 2 w5 = w3 + w1 + 1 2&lt;br /&gt;
&lt;br /&gt;
+ (w1 z - Sx3 + w2 )2 + (z - Sz 3 )2 - lb 2 = 0 (22)&lt;br /&gt;
&lt;br /&gt;
w5 z 2 + w6 z + w7 = 0&lt;br /&gt;
&lt;br /&gt;
(23) (24)&lt;br /&gt;
2 w2&lt;br /&gt;
&lt;br /&gt;
w6 = 2w3 w4 - 2Sy 3 w3 - 2Sz 3 - 2w1 Sx3 + 2w1 w2 w7 = -lb +&lt;br /&gt;
2 2 w4&lt;br /&gt;
&lt;br /&gt;
- 2Sy 3 w4 +&lt;br /&gt;
&lt;br /&gt;
Sz 2 3&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
Sy 2 3&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
Sx 2 3&lt;br /&gt;
&lt;br /&gt;
- 2w2 Sx3 +&lt;br /&gt;
&lt;br /&gt;
(25)&lt;br /&gt;
&lt;br /&gt;
und der f�r die Delta-Kinematik relevanten L�sung: u o zw = min - w6 �&lt;br /&gt;
2 w6 - 4w5 w7 2 w5&lt;br /&gt;
&lt;br /&gt;
(26)&lt;br /&gt;
&lt;br /&gt;
Das direkte kinematische Problem ist dann durch Resubstitution von (16) und (17) gel�st: o  w1 zw + w2 p =  w3 zw + w4  zw &lt;br /&gt;
&lt;br /&gt;
(27)&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Differentialkinematik&lt;br /&gt;
dfi dt&lt;br /&gt;
&lt;br /&gt;
 Die Ableitungen der kinematischen Zwangsbedingungen (1) sind linear in p und qi :  = [2x - (2r + 2la cos qi ) cos i ] � x  + [2y - (2r + 2la cos qi ) sin i ] � y  + (2z + 2la sin qi ) � z  + (2la cos qi � z + 2la sin qi � sin i � y +2la sin qi � cos i � x + 2la r sin qi ) � qi   � Damit lassen sich die Geschwindigkeiten p uber das L�sen des Gleichungssystems o   Jp p = Jq q ermitteln mit: Jp i,1 = 2x - (2r + 2la cos qi ) cos i Jp i,2 = 2y - (2r + 2la cos qi ) sin i Jp i,3 = 2z + 2la sin qi Jq i,i = -2la (cos qi � z + sin qi � sin i � y + sin qi � cos i � x + r sin qi ) Jq i,j = 0 i = j (31) (32) (33) (34) (35) (30) (28) (29)&lt;br /&gt;
&lt;br /&gt;
�3 Differentialkinematik&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
Analog wird mit den zweiten Ableitungen d2 fi dt2 = [2x - (2r + 2la cos qi ) cos i ] � x � + [2y - (2r + 2la cos qi ) sin i ] � y � + (2z + 2la sin qi ) � z � +2z 2 + 4la cos qi � qi z + 2la cos qi � qi - sin qi � qi 2 z    �  +2y 2 + 4la sin qi � sin i � qi y + si sin i � y    +2 x2 + 4la sin qi � cos i � qi x + si cos i � x    -si r mit si := 2la (sin qi � qi + cos qi � qi 2 ) �  � � verfahren, um die Beschleunigungen p uber das L�sen des linearen Gleichungssystems o � q Jp p = h(� ) zu errechnen. Hierbei sind: hi = - 2z 2 + 4la cos qi � qi z + 2la cos qi � qi - sin qi � qi 2 z    �  +2y 2 + 4la sin qi � sin i � qi y + si sin i � y    +2 x2 + 4la sin qi � cos i � qi x + si cos i � x - si r    (39) (38) (37) (36)&lt;br /&gt;
&lt;br /&gt;
Damit lassen sich die n�tigen kartesischen Geschwindigkeiten und Beschleunigungen der o Arbeitsplattform berechnen. Hierzu muss zun�chst das direkte kinematische Problem (27) a berechnet werden, um dann sukzessive (30) und (38) auszuwerten.&lt;br /&gt;
&lt;br /&gt;
�4 Implementierung und Validierung&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Implementierung und Validierung&lt;br /&gt;
&lt;br /&gt;
Die Implementierung des direkt kinematischen Modells erfolgte durch Erweiterung der C++-Klasse DeltaRobot. Zur Validierung der Implementierung wurde ein numerisches Mehrk�rper-Simulations-Modell des Delta-Roboters aufgebaut. Abbildung 5 zeigt das grao fische Programm.&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
tau&lt;br /&gt;
&lt;br /&gt;
Sensor&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
3 Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank1&lt;br /&gt;
&lt;br /&gt;
Spherical11&lt;br /&gt;
&lt;br /&gt;
Rod11&lt;br /&gt;
&lt;br /&gt;
Spherical12&lt;br /&gt;
&lt;br /&gt;
Actuator1&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS7&lt;br /&gt;
&lt;br /&gt;
Spherical13&lt;br /&gt;
3 Sensor&lt;br /&gt;
&lt;br /&gt;
Rod12&lt;br /&gt;
&lt;br /&gt;
Spherical14&lt;br /&gt;
&lt;br /&gt;
1 q&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
3 3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank2&lt;br /&gt;
&lt;br /&gt;
Spherical21&lt;br /&gt;
&lt;br /&gt;
Rod21&lt;br /&gt;
&lt;br /&gt;
Spherical22&lt;br /&gt;
3{9}&lt;br /&gt;
&lt;br /&gt;
Actuator2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS8&lt;br /&gt;
&lt;br /&gt;
CG&lt;br /&gt;
&lt;br /&gt;
2 pose&lt;br /&gt;
&lt;br /&gt;
Spherical23&lt;br /&gt;
Sensor&lt;br /&gt;
&lt;br /&gt;
Rod22&lt;br /&gt;
&lt;br /&gt;
Spherical24&lt;br /&gt;
&lt;br /&gt;
Body Sensor&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
3 Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank3&lt;br /&gt;
&lt;br /&gt;
Spherical31&lt;br /&gt;
&lt;br /&gt;
Rod31&lt;br /&gt;
&lt;br /&gt;
Spherical32&lt;br /&gt;
&lt;br /&gt;
Actuator3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS9&lt;br /&gt;
&lt;br /&gt;
Spherical33&lt;br /&gt;
&lt;br /&gt;
Rod32&lt;br /&gt;
&lt;br /&gt;
Spherical34&lt;br /&gt;
&lt;br /&gt;
B Ground&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS4&lt;br /&gt;
&lt;br /&gt;
Universal41&lt;br /&gt;
&lt;br /&gt;
Rod41&lt;br /&gt;
&lt;br /&gt;
Prismatic41&lt;br /&gt;
&lt;br /&gt;
Rod42&lt;br /&gt;
&lt;br /&gt;
Spherical41 Platform&lt;br /&gt;
&lt;br /&gt;
Abbildung 5: MKS-Modell des Delta-Roboters Die Einbindung der DeltaRobot-Klasse erfolgte uber einen Funktions-Wrapper, der mit dem � Borland C/C++-Compiler Version 5.5 ubersetzt wurde. Die Testtrajektorie weist, um even� tuelle Fehler in den einzelnen Termen des dynamischen Modells gut identifizieren zu k�nnen, o m m recht hohe Geschwindigkeiten (bis zu 8 s ) und Beschleunigungen (bis 24 s2 ) auf. Sie ist durch die Funktionen x(t) = 0, 25m � sin (5 - 0, 1) � 2 2 2 � t + 0, 1 � �t 2 10s s (0, 1 - 5) � 2 2 2 y(t) = 0, 25m � sin � �t +5� �t 10s2 s 2  z(t) = 0, 1m � sin 5 � �t+ - 0, 7556m s 2 � 1 2 1 2 (40) (41) (42)&lt;br /&gt;
&lt;br /&gt;
beschrieben. Abbildung 6 zeigt die Bahn im Raum, die so gew�hlt wurde, dass m�glichst a o grosse Teile des Arbeitsraumes ber�cksichtigt werden. u&lt;br /&gt;
&lt;br /&gt;
�4 Implementierung und Validierung&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
-0.65 -0.7 -0.75 z (m) -0.8 -0.85 -0.9 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 y (m) -0.4 x (m) -0.3 -0.2 -0.1 0 0.1 0.2&lt;br /&gt;
&lt;br /&gt;
0.3&lt;br /&gt;
&lt;br /&gt;
Abbildung 6: Testtrajektorie Mit der gew�hlten Trajektorie kommt es zu Differenzen zwischen inverser und direkter Kinea matik im Rahmen der numerischen Genauigkeit des verwendeten Rechners. Die Implementierung ist als fehlerfrei zu bewerten. Die Funktion des dynamischen Modells wurde erneut erfolgreich validiert.&lt;br /&gt;
&lt;br /&gt;
�A Modellierung der vierten Achse&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
A&lt;br /&gt;
&lt;br /&gt;
Modellierung der vierten Achse&lt;br /&gt;
&lt;br /&gt;
Die direkte Kinematik der vierten Achse, die nicht mit den translatorischen Freiheiten verkoppelt ist, kann uber die Indentit�t beschrieben werden: a �  � &lt;br /&gt;
T&lt;br /&gt;
&lt;br /&gt;
= I3�3 [ q4 q4 q4 ]T  �&lt;br /&gt;
&lt;br /&gt;
(43)&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
Computeralgebra-Skripte&lt;br /&gt;
&lt;br /&gt;
Die symbolischen Manipulationen wurden mit dem Computeralgebra-Packet MAXIMA in der Version 5.12.0 durchgef�hrt. Die Skripte zur Ausf�hrung sind in den folgenden u u Abschnitten wiedergegeben. Berechnung der direkten Kinematik:&lt;br /&gt;
kill(all); sigma1: (x-S_x[1])^2 + (y-S_y[1])^2 + (z-S_z[1])^2 - l_b^2 = 0; sigma2: (x-S_x[2])^2 + (y-S_y[2])^2 + (z-S_z[2])^2 - l_b^2 = 0; sigma3: (x-S_x[3])^2 + (y-S_y[3])^2 + (z-S_z[3])^2 - l_b^2 = 0; eqn1: ratsimp(sigma1-sigma2); eqn2: ratsimp(sigma1-sigma3); eps1: u[1]* x + u[2]* y + u[3] * z + u[4] = 0 ; eps2: v[1]* x + v[2]* y + v[3] * z + v[4] = 0 ; eqn3: linsolve([eps1, eps2], [x, y])[1]; x: w[1]*z + w[2]; eps2: v[1]* x + v[2]* y + v[3] * z + v[4] = 0 ; solve(%,y)[1]; y: w[2]*z + w[3]; sigma3: (x-S_x[3])^2 + (y-S_y[3])^2 + (z-S_z[3])^2 - l_b^2 = 0; ratsimp(%); sigma3: w[5]*z^2 + w[6]*z + w[7]=0; solve(sigma3, z);&lt;br /&gt;
&lt;br /&gt;
Ableitungen der kinematischen Zwangsbedingungen:&lt;br /&gt;
kill(all); depends(x,t,y,t,z,t,q,t); f:((r+l_a*cos(q[i]))*cos(the)-x)^2 + ((r+l_a*cos(q[i]))*sin(the)-y)^2 + (-l_a*sin(q[i])-z)^2 -l_b^2; expand(diff(f,t)); trigsimp(%); expand(diff(diff(f,t),t)); trigsimp(%);&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:Inverse_kinematics_and_inverse_dynamics_for_Delta_-_IWF_report.pdf&amp;diff=112439</id>
		<title>File:Inverse kinematics and inverse dynamics for Delta - IWF report.pdf</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:Inverse_kinematics_and_inverse_dynamics_for_Delta_-_IWF_report.pdf&amp;diff=112439"/>
				<updated>2012-12-24T13:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Model based control for Delta kinematics]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
e d . s b - u t . g n i .f w i . w w w | 2 4 8 5 1 9 3 1 3 5 ) 0 ( 9 4 +&lt;br /&gt;
&lt;br /&gt;
x a f | 1 0 6 7 1 9 3 1 3 5) 0( 9 4+&lt;br /&gt;
&lt;br /&gt;
.let&lt;br /&gt;
&lt;br /&gt;
y na m re G | g ie w hc s n ua r B 6 0 1 8 3 | B 9 1 p m aK r eg n a L | FW I&lt;br /&gt;
&lt;br /&gt;
7002.90.02&lt;br /&gt;
&lt;br /&gt;
nemhtiroglA-euqroT-detupmoC nov gnureitnemelpmI dnu kitameniK-atleD renie gnureilledoM ehcsimanyD&lt;br /&gt;
&lt;br /&gt;
negniltueR ,GA noitamotuA znaM&lt;br /&gt;
&lt;br /&gt;
eid r�f&lt;br /&gt;
&lt;br /&gt;
thcireB&lt;br /&gt;
&lt;br /&gt;
y go lonhc eT no itc ud o rP dn a s loo T enihca M fo etu t itsn I | g i ew hcsn ua rB y t is r e v inU lac inhc eT k inhc e t sgnu g it r eF dnu nen ihcsam gu e zk r eW r�f tu t it snI | g i ewh csnuar B t� t is r e v in U ehc s inhc eT&lt;br /&gt;
&lt;br /&gt;
�Inhaltsverzeichnis&lt;br /&gt;
I Einleitung 2&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
1 Verkoppelte Bewegungen&lt;br /&gt;
&lt;br /&gt;
II&lt;br /&gt;
&lt;br /&gt;
Modellierung&lt;br /&gt;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
4 4 5 6 6 8 8 9 9 10&lt;br /&gt;
&lt;br /&gt;
2 Kinematik 2.1 Zwangsbedingungen 2.2 Inverse Kinematik . 2.3 Differentialkinematik 2.4 Jacobimatrix . . . .&lt;br /&gt;
&lt;br /&gt;
3 Dynamik 3.1 Lagrange-Euler-Ansatz . . . . . . . . . . 3.1.1 Potentielle Energie . . . . . . . . 3.1.2 Kinetische Energie . . . . . . . . 3.1.3 L�sung der Dynamikgleichungen o&lt;br /&gt;
&lt;br /&gt;
III&lt;br /&gt;
&lt;br /&gt;
Implementierung&lt;br /&gt;
. . . . . . . . . . . . . . . . . . . . . . . . der Nutzlast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .&lt;br /&gt;
&lt;br /&gt;
12&lt;br /&gt;
13 13 15 15 16&lt;br /&gt;
&lt;br /&gt;
4 Validierung 4.1 Numerisches MKS-Modell . 4.2 Simulationsergebnisse . . . 4.2.1 Reduziertes Modell . 4.2.2 Fehlparametrisierung&lt;br /&gt;
&lt;br /&gt;
IV&lt;br /&gt;
&lt;br /&gt;
Anhang&lt;br /&gt;
&lt;br /&gt;
17&lt;br /&gt;
17 18 19 21&lt;br /&gt;
&lt;br /&gt;
A Modellierung der vierten Achse B Hilfsgr�ssen der dynamischen Modellierung o C Computeralgebra-Skripte D Parametrisierung des dynamischen Modells&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
�Teil I&lt;br /&gt;
&lt;br /&gt;
Einleitung&lt;br /&gt;
1 Verkoppelte Bewegungen&lt;br /&gt;
Um die Leistungsf�higkeit von Roboterregelungen zu erh�hen, kann von der Integration von Modellen der a o zu regelnden Strecke profitiert werden. Dies ist in der Regel umso erfolgreicher, je st�rker die reale Strecke a von der bei der Reglerauslegung als linear angenommenen theoretischen Strecke abweicht. Abbildung 1 zeigt den Aufbau einer konventionellen Regelung ohne Ber� cksichtigung der Verkopplungen im Modell. u&lt;br /&gt;
d dt&lt;br /&gt;
&lt;br /&gt;
Antrieb&lt;br /&gt;
&lt;br /&gt;
p q1 IKM q2 q3 d dt&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
d dt&lt;br /&gt;
&lt;br /&gt;
Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Abbildung 1: Regelungsschema ohne Ber� cksichtigung von Verkoppelungen u Hier sind alle Achsen des Roboters unabh�ngig voneinander geregelt. Die kartesische Pose p aus dem a Interpolator wird durch ein inverses kinematisches Modell (IKM) in Solllagen q f� r die Antriebe umgeu rechnet. Durch die Struktur einkoppelnde Kr�fte von einer jeweils anderen Achse werden als St�rgr�sse a o o aufgefasst und es muss zu einem Bahnfehler kommen, bis der geschlossene Regelkreis den Roboter dem theoretischen, linearen Verhalten ann�hert. Dies kann nur mit zeitlicher Verz�gerung erfolgen und f� hrt a o u zu Bahnabweichungen am Endeffektor. Die durch Ableitung von q gewonnenen Geschwindigkeitsvorsteuerungen ber� cksichtigen nicht, dass die n�tige Geschwindigkeit eines Antriebs um der Bahn zu folgen, nicht u o nur von der Lage des Antriebs selbst abh�ngt, sondern auch von den durch die Bewegung der Struktur a auferlegten Zwangsbedingungen. Werden diese Zwangsbedingungen verletzt, kommt es zu St�rkr�ften in o a der Struktur, die den zuvor beschriebenen Effekt auf die Bahntreue zeigen. In einem ersten Schritt liegt es also nahe, die kinematischen Zwangsbedingungen bei der Berechnung der Geschwindigkeitsvorsteuerung zu ber� cksichtigen. Dies ist die einfachste Auspr�gung einer modellbasierten u a Regelung. Ihr Aufbau ist in Abbildung 2 dargestellt. Hier wird ein erweitertes IKM genutzt und die Achsregler von der Aufgabe befreit, die kinematischen Kopplungen zu kompensieren. Diese k�nnen daher o mit erh�hter Bandbreite dazu eingesetzt werden, den Roboter zu linearisieren. Das Resultat ist eine erh�hte o o Bahntreue und eine bessere Dynamik des Roboters. Dazu m� ssen aus dem Interpolator nicht nur die kartesische Pose p, sondern auch die Bahngeschwindigu   keiten p gewonnen werden. Steht p dort nicht zur Verf� gung, so k�nnen diese Gr��en durch numerische u o o Differentiation von p mit hinreichender Genauigkeit gewonnen werden.&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
�Antrieb&lt;br /&gt;
&lt;br /&gt;
. q1 . p, p IKM . q3 q3 q1 . q2 q2&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Abbildung 2: Regelungsschema mit modellbasierter Vorsteuerung&lt;br /&gt;
&lt;br /&gt;
Die Achsregler k�nnen jedoch auch von der linearisierenden Funktion befreit werden, wenn die Stello gr��en f� r die Antriebe  , die erforderlich sind, um der Bahn zu folgen, nicht eingeregelt werden m� ssen, o u u sondern direkt aus einem inversen dynamischen Modell (IDM) gewonnen werden. Man spricht hier von Computed-Torque-Feedforward-Linearisierung, das entsprechende Schema ist in Abbildung 3 dargestellt. Der Achsregler wird hier nur noch dazu eingesetzt, Abweichungen im IDM zum tats�chlichen Roboter a auszuregeln. Dies kann bei gutem Modell mit sehr hoher Bandbreite geschehen, das Resultat ist eine erhebliche Steigerung der Dynamik und damit auch der Bahntreue.&lt;br /&gt;
&lt;br /&gt;
. q1 q1 . .. p, p p , IKM . .. q,q,q IDM&lt;br /&gt;
&lt;br /&gt;
�1 Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
q2&lt;br /&gt;
&lt;br /&gt;
. q2 q2&lt;br /&gt;
&lt;br /&gt;
�2 Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
. q3 q3&lt;br /&gt;
&lt;br /&gt;
�3 Antrieb&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Abbildung 3: Linearisierende Regelung mit Momentenvorsteuerung � u Das IKM muss erneut erweitert werden, um auch die Antriebsbeschleunigungen q f� r das IDM zu berech � nen. IDM und IKM ben�tigen die durch p, p, p vollst�ndig beschriebene Trajektorie, deren Ableitungen o a  � p, p wie oben erw�hnt auch numerisch gewonnen werden k�nnen. Der Aufbau der Modelle ist im folgenden a o Kapitel beschrieben. 3&lt;br /&gt;
&lt;br /&gt;
�Teil II&lt;br /&gt;
&lt;br /&gt;
Modellierung&lt;br /&gt;
2 Kinematik&lt;br /&gt;
� Abbildung 4 gibt eine Ubersicht uber die Modellierung des Roboters. Der Basiskoordinatensystem der � Modellierung O liegt in der Ebene die durch die Antriebsachsen aufgespannt wird, �quidistant zu den a Schnittpunkten der Antriebsachsen mit den L�ngsachsen der Kurbeln A. Die Schnittpunkte zwischen der a Kurbell�ngsachse und der Parallelogrammbasis werden als B bezeichnet, die entsprechende Punkte an der a Plattform als C.&lt;br /&gt;
B A&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
� Abbildung 4: Ubersicht uber das Robotermodell � Die Antriebswinkel lauten q, die Position des Punktes P gegen� ber dem Basiskoordinatensystem O, der u mittig in der Plattform liegt, wird mit p = [x, y, z]T bezeichnet. Die vierte Achse l�sst sich, da sie una abh�ngig von den ersten drei Achsen zu betrachten ist, einfach und getrennt modellieren. Ihr Posewinkel a wird mit  bezeichnet. Die entsprechenden Gleichungen finden Ber� cksichtigung in Anhang A. u&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
&lt;br /&gt;
Zwangsbedingungen&lt;br /&gt;
&lt;br /&gt;
In der Abbildung 5 finden sich alle relevanten kinematischen Parameter und Formelzeichen. Die Parallelogramme sind f� r die Modellierung zu einem Stab zusammengefasst und der Plattform werden nur u translatorische Freiheiten gew�hrt. Die Lage der Punkte B und C wird beschrieben durch: a Bx,i By,i Bz,i Cx,i Cy,i Cz,i = = = = = = (ra + la cos qi ) cos i (ra + la cos qi ) sin i -la sin qi x + rb cos i y + rb sin i z&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
�z'&lt;br /&gt;
B A&lt;br /&gt;
&lt;br /&gt;
x' q � �&lt;br /&gt;
P B&lt;br /&gt;
&lt;br /&gt;
la&lt;br /&gt;
A&lt;br /&gt;
&lt;br /&gt;
rb&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
lb �&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
&lt;br /&gt;
x y&lt;br /&gt;
O&lt;br /&gt;
&lt;br /&gt;
P&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
ra&lt;br /&gt;
&lt;br /&gt;
y' x'&lt;br /&gt;
&lt;br /&gt;
P&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
� y' x'&lt;br /&gt;
A B&lt;br /&gt;
&lt;br /&gt;
Abbildung 5: Relevante kinematische Gr��en o Der Verbindungsvektor zwischen den Punkten B und C ergibt sich demnach zu:   (ra + la cos qi ) cos i - rb cos i - x -- - Ci Bi =  (ra + la cos qi ) sin i - rb sin i - y  -la sin qi - z   (r + la cos qi ) cos i - x =  (r + la cos qi ) sin i - y  -la sin qi - z mit r = ra - rb und i = 1, 2, 3. Die L�nge lb des Parallelogramms ist konstant, somit ergibt sich mit a -- - Ci Bi die kinematische Zwangsbedingung: fi = + + [(r + la cos qi ) cos i - x] [(r + la cos qi ) sin i - y]&lt;br /&gt;
2 ! 2 2 2&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
lb 2&lt;br /&gt;
&lt;br /&gt;
[-la sin qi - z] - lb 2 = 0&lt;br /&gt;
&lt;br /&gt;
(1)&lt;br /&gt;
&lt;br /&gt;
2.2&lt;br /&gt;
&lt;br /&gt;
Inverse Kinematik&lt;br /&gt;
&lt;br /&gt;
Um das Aufstellen und L�sen der kinematischen Gleichungen zu erleichtern werden die Endeffektorkoo ordinaten von der Roboterbasis O in die Punkte Ai so transformiert, dass die yi -Achse in Richtung der Antriebsachse liegt und die xi -Achse nach au�en zeigt. Die Transformationsgleichungen lauten: x i  yi&lt;br /&gt;
 zi&lt;br /&gt;
&lt;br /&gt;
= x cos i + y sin i - ra = -x sin i + y cos i = z&lt;br /&gt;
&lt;br /&gt;
(2) (3) (4)&lt;br /&gt;
&lt;br /&gt;
Im jeweiligen Bezugskoordinatensystem in den Punkten Ai gilt:&lt;br /&gt;
 Bx,i  By,i  Bz,i&lt;br /&gt;
&lt;br /&gt;
= = = 5&lt;br /&gt;
&lt;br /&gt;
la cos qi 0 -la sin qi&lt;br /&gt;
&lt;br /&gt;
(5) (6) (7)&lt;br /&gt;
&lt;br /&gt;
� Cx,i = x + rb i   Cy,i = yi  Cz,i =  zi&lt;br /&gt;
&lt;br /&gt;
= la cos qi - lb cos i cos i = lb sin i&lt;br /&gt;
&lt;br /&gt;
(8) (9) (10)&lt;br /&gt;
&lt;br /&gt;
Berechnung der passiven Winkel i uber (9) und i : � i = arcsin&lt;br /&gt;
 yi lb&lt;br /&gt;
&lt;br /&gt;
(11)&lt;br /&gt;
&lt;br /&gt;
tan i  i&lt;br /&gt;
&lt;br /&gt;
= =&lt;br /&gt;
&lt;br /&gt;
 Cx,i  -Cz,i&lt;br /&gt;
&lt;br /&gt;
arctan&lt;br /&gt;
&lt;br /&gt;
rb - x i  zi&lt;br /&gt;
&lt;br /&gt;
(12)&lt;br /&gt;
&lt;br /&gt;
Kosinussatz in dem Dreieck in der von O, Ai und Bi aufgespannten Ebene: (lb cos i )2 =&lt;br /&gt;
2 la +  Cx,i sin i 2 la + 2&lt;br /&gt;
&lt;br /&gt;
- 2 � la&lt;br /&gt;
 Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
 Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
cos i&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
arccos&lt;br /&gt;
&lt;br /&gt;
- (lb cos i )&lt;br /&gt;
 Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
(13)&lt;br /&gt;
&lt;br /&gt;
2 � la&lt;br /&gt;
&lt;br /&gt;
a u Damit lassen sich die Antriebswinkel qi uber die Summe der Komplement�rwinkel ausdr� cken: � qi =  - i - i 2 (14)&lt;br /&gt;
&lt;br /&gt;
2.3&lt;br /&gt;
&lt;br /&gt;
Differentialkinematik&lt;br /&gt;
dfi dt&lt;br /&gt;
&lt;br /&gt;
Die Ableitung&lt;br /&gt;
&lt;br /&gt;
= 0 der kinematischen Zwangsbedingung (1) und Freistellen nach q liefert:  (15)&lt;br /&gt;
&lt;br /&gt;
qi = -&lt;br /&gt;
&lt;br /&gt;
(z + la sin qi ) z + [y + (-r - la cos qi ) sin i ] y + [x + (-r - la cos qi ) cos i ] x    la (z cos qi + y sin qi sin i + x sin qi cos i - r sin qi )&lt;br /&gt;
&lt;br /&gt;
Erneutes Ableiten liefert: qi � Z = = - Z N (z + la sin qi ) z + z 2 + 2la cos qi � qi z - la sin qi � qi 2 z �    2 + [y + (-r - la cos qi ) sin i ] y + y + 2la sin qi sin i � qi y + la cos qi sin i � qi 2 y �   (16)&lt;br /&gt;
&lt;br /&gt;
+ [x + (-r - la cos qi ) cos i ] x + x2 + 2la sin qi cos i � qi x + la cos qi cos i qi 2 x �   -rla cos qi � qi 2 N = la cos qi � z + la sin qi sin i � y + la sin qi cos i � x - rla sin qi&lt;br /&gt;
&lt;br /&gt;
Damit lassen sich die n�tigen Gelenkgeschwindigkeiten und -beschleunigungen f� r die Vorsteuerung und o u die Dynamikgleichungen aus den kartesischen Trajektoriendaten errechnen. Hierzu muss zuvor die inverse Kinematik (14) berechnet werden um dann sukzessive (15) und (16) auszuwerten.&lt;br /&gt;
&lt;br /&gt;
2.4&lt;br /&gt;
&lt;br /&gt;
Jacobimatrix&lt;br /&gt;
&lt;br /&gt;
Wird die Jacobimatrix f� r den Zusammenhang q = J(x, y, z)p ben�tigt, ohne zuvor die inverse Kinematik u   o l�sen zu m� ssen, so kann diese durch Differentiation der inversen Kinematik (14) gewonnen werden: o u qi =- r i i i +   r i r i (17)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
�mit i r i und i r i la +  arccos  r i -1 &lt;br /&gt;
2&lt;br /&gt;
 Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
 -Cx,i  arctan  r i zi&lt;br /&gt;
&lt;br /&gt;
(18)&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
- (lb cos i )&lt;br /&gt;
 Cx,i sin i  Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2 � la&lt;br /&gt;
 r i&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
- (lb cos i )2&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
 � 2 1 - cos i  -&lt;br /&gt;
2 la +  Cx,i&lt;br /&gt;
&lt;br /&gt;
x,i 2la sini&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
sin i&lt;br /&gt;
&lt;br /&gt;
- (lb cos i )2&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  Cx,i  sin  r i i  Cx,i 2la sin i&lt;br /&gt;
&lt;br /&gt;
2 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
(19)&lt;br /&gt;
&lt;br /&gt;
Division des totalen Differentials dqi durch dt liefert: qi = qi  qi  qi  x + y + z x i yi i zi i i (20)&lt;br /&gt;
&lt;br /&gt;
So lassen sich durch Auswerten von (18) und (19) und anschlie�endem Einsetzen in (17) die Elemente f� r u die i-te Spalte der Jacobimatrix f� r den Zusammenhang q = Jp finden. Sie ergeben sich zu u  &lt;br /&gt;
 sin i - Cx,i cos i � i x i  (lb sin i cos i ) - (la sin i ) + Cx,i 2  2la Cx,i 2 sin2 i 2 2&lt;br /&gt;
&lt;br /&gt;
qi x i qi  yi qi  zi mit&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
 zi   zi 2 + Cx,i 2&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
1 - cos2 i �&lt;br /&gt;
2 lb cos i sin i �  la Cx,i i  yi&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
&lt;br /&gt;
(21)&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
sin i 1 - cos2 i&lt;br /&gt;
 -Cx,i   zi 2 + Cx,i 2&lt;br /&gt;
&lt;br /&gt;
(22)&lt;br /&gt;
 Cx,i sin i&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
cos i � la&lt;br /&gt;
&lt;br /&gt;
i  zi&lt;br /&gt;
&lt;br /&gt;
1 - cos2 i&lt;br /&gt;
&lt;br /&gt;
2  la + �&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
- (lb cos i )2&lt;br /&gt;
&lt;br /&gt;
 2 Cx,i&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
sin i&lt;br /&gt;
&lt;br /&gt;
 Cx,i 2&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
(23)&lt;br /&gt;
&lt;br /&gt;
 zi i ,  = - 2  xi zi + Cx,i 2&lt;br /&gt;
&lt;br /&gt;
i  = yi&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
2  lb - yi 2&lt;br /&gt;
&lt;br /&gt;
,&lt;br /&gt;
&lt;br /&gt;
 Cx,i i = 2   zi zi + Cx,i 2&lt;br /&gt;
&lt;br /&gt;
Die Tranformationsgleichungen von p nach p ergeben sich durch Ableiten von (2) bis (4) nach der Zeit:  i  x i  yi  z i = x cos i + y sin i   = -x sin i + y cos i   = z  (24) (25) (26)&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
�3&lt;br /&gt;
&lt;br /&gt;
Dynamik&lt;br /&gt;
&lt;br /&gt;
Die dynamische Modellierung erfolgt nach dem Lagrange-Euler-Ansatz, der darauf basiert, dass die Gesamtenergie des Systems sich aus potentieller und kinetischer Energie zusammensetzt. Es werden f� r die u in Abbildung 6 abgebildeten Ersatzmassen und -tr�gheiten verwendet. a&lt;br /&gt;
&lt;br /&gt;
mT2 O lTO&lt;br /&gt;
&lt;br /&gt;
z'&lt;br /&gt;
A �AB&lt;br /&gt;
&lt;br /&gt;
x'&lt;br /&gt;
mAB lAB&lt;br /&gt;
&lt;br /&gt;
q&lt;br /&gt;
&lt;br /&gt;
B mBC2&lt;br /&gt;
&lt;br /&gt;
mT1&lt;br /&gt;
&lt;br /&gt;
mBC1&lt;br /&gt;
&lt;br /&gt;
mT2 lTP mP P C mBC2&lt;br /&gt;
&lt;br /&gt;
� Abbildung 6: Aquivalente der dynamischen Modellierung mP mT lT P lT O mAB AB lAB mBC Ersatzmasse f� r die Plattform u Ersatzmasse f� r die Teleskopstange u Versatz des Teleskop-Gelenkpunktes an der Plattform in z-Richtung Versatz des Teleskop-Gelenkpunktes zur Roboterbasis in z-Richtung Ersatzmasse f� r die Kurbel u Tr�gheit der Kurbel um die Antriebsachse und des Antriebs a Lage der Ersatzmasse der Kurbel als Abstand von der Antriebsachse Ersatzmasse f� r die Parallelogrammstangen u&lt;br /&gt;
&lt;br /&gt;
Dabei werden die Parallelogrammst�be und die Teleskopstange mit einem Dreimassen�quivalent modela a liert. Die Umrechnung erfolgt eingedenk der Vereinfachungen, dass das Parallelogramm wie ein Stab mit doppelter Masse und Tr�gheit aufgefasst wird und die Schwerpunkte der stabf�rmigen Bauteile in der a o Mitte der jeweiligen Hauptachse liegen: mBC2 mBC1 mT 2 mT 1 4BC 2 lb = 2mBC - 2mBC2 2T = 2 + y 2 + (z + l 2 x T P - lT O ) = mT - 2mT 2 = (27) (28) (29) (30)&lt;br /&gt;
&lt;br /&gt;
F� r die Kurbel wird bei der Modellierung der potentiellen Energie eine Ersatzmasse im Schwerpunkt u ber� cksichtigt, bei der Modellierung der kinetischen Energie stattdessen die Tr�gheit der hierbei als masu a selos angenommenen Kurbel. Dies erlaubt, die Antriebstr�gheit direkt als Summand der Kurbeltr�gheit a a zu parametrisieren.&lt;br /&gt;
&lt;br /&gt;
3.1&lt;br /&gt;
&lt;br /&gt;
Lagrange-Euler-Ansatz&lt;br /&gt;
&lt;br /&gt;
Entgegen der intuitiven Vorgehensweise, nur drei Lagrange'sche Gleichungen den drei parallelen Freiheitsgraden der Kinematik entsprechend aufzustellen, erleichtert es erheblich den Rechenaufwand, generalisierte Koordinaten  zu verwenden: 8&lt;br /&gt;
&lt;br /&gt;
�So l�sst sich das Verhalten der Struktur mit der Anzahl j = 6 generalisierter Koordinaten und der Anzahl a i = 3 Zwangsbedingungen (siehe (1)) beschreiben. Folglich werden die Lagrange'schen Gleichungen d dt L  j - L = j + j&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
�i&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
dfi dj&lt;br /&gt;
&lt;br /&gt;
(31)&lt;br /&gt;
&lt;br /&gt;
aufgestellt, wobei j die generalisierten externen Kr�fte sind, die Lagrange-Funktion a L=K -P (32)&lt;br /&gt;
&lt;br /&gt;
nach Euler die Differenz aus kinetischer Energie K und potentieller Energie P der Struktur darstellt und �i die Lagrange'schen Multiplikatoren bezeichnen. Es existieren also 6 Gleichungen (31) f� r drei unbekannte Multiplikatoren �i und die drei gesuchten u Momente der Antriebe i = i+3 , i = 1, 2, 3. 3.1.1 Potentielle Energie&lt;br /&gt;
&lt;br /&gt;
Die potentielle Energie kann aufgrund der einfachen Zusammenh�nge f� r den Roboter komplett modelliert a u werden. Als Vereinfachungen wurden angenommen, dass sich die Ersatzmassen der Parallelogrammst�be a und des Teleskopstabes mittig auf dem jeweiligen Glied befinden. Plattform: P1 = mP g � z Teleskopstange: 1 P2 = mT 2 g � (z + lT P ) + mT 1 g � (z + lT P + lT O ) 2 Kurbel:&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
(33)&lt;br /&gt;
&lt;br /&gt;
(34)&lt;br /&gt;
&lt;br /&gt;
P3 = -&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
mAB g � lAB sin qi&lt;br /&gt;
&lt;br /&gt;
(35)&lt;br /&gt;
&lt;br /&gt;
Parallelogramm:&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
P4 =&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
1 mBC1 g � (z - la sin qi ) - mBC2 g � la sin qi + mBC2 g � z 2&lt;br /&gt;
&lt;br /&gt;
(36)&lt;br /&gt;
&lt;br /&gt;
Gesamtenergie:&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
P&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
n=1&lt;br /&gt;
&lt;br /&gt;
Pn&lt;br /&gt;
&lt;br /&gt;
1 = mP g � z + mT 2 g � (z + lT P ) + mT 1 g � (z + lT P + lT O ) 2&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
1 mBC1 g � (z - la sin qi ) - mBC2 g � la sin qi + mBC2 g � z - mAB g � lAB sin qi 2&lt;br /&gt;
&lt;br /&gt;
(37)&lt;br /&gt;
&lt;br /&gt;
3.1.2&lt;br /&gt;
&lt;br /&gt;
Kinetische Energie&lt;br /&gt;
&lt;br /&gt;
Die Formulierung der kinetischen Energie profitiert von der Vereinfachung durch die Massen�quivalente. a So k�nnen die Massen mT 2 und mBC2 and den jeweils unteren Enden der St�be, bzw. der Teleskopstange o a der Plattform zugeordnet werden.&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
�Plattform: K1 = Teleskopstange: K2 = Kurbel:&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
1 2 (mP + 3mBC2 + mT 2 )(x y z)T    2&lt;br /&gt;
&lt;br /&gt;
(38)&lt;br /&gt;
&lt;br /&gt;
1 2 mT 1 (x y z)T    8&lt;br /&gt;
&lt;br /&gt;
(39)&lt;br /&gt;
&lt;br /&gt;
K3 =&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
1 AB qi 2 2&lt;br /&gt;
&lt;br /&gt;
(40)&lt;br /&gt;
&lt;br /&gt;
Parallelogramm:&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
K4 =&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
1 1 2 2 mBC2 la qi + mBC1 (vB,i + vC,i )2  2 8&lt;br /&gt;
&lt;br /&gt;
(41)&lt;br /&gt;
&lt;br /&gt;
Ableiten der Gleichungen (5) bis (7) nach der Zeit liefert   -la sin qi � qi   0 vB,i =  -la cos qi � qi  und vC,i ist gleich der Plattformgeschwindingkeit und damit analog zu (24) bis (26):   x cos i + y sin i     vC,i =  -x sin i + y cos i  z  Gesamtenergie:&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
(42)&lt;br /&gt;
&lt;br /&gt;
(43)&lt;br /&gt;
&lt;br /&gt;
K&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
n=1&lt;br /&gt;
&lt;br /&gt;
Kn 1 1 2 2 (mP + mBC2 + mT 2 )(x y z)T + mT 1 (x y z)T       2 8&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
i=1&lt;br /&gt;
&lt;br /&gt;
1 1 1 2 2 AB qi + mBC2 la qi + mBC1 (vB,i + vC,i )2 2  2 2 8&lt;br /&gt;
&lt;br /&gt;
(44)&lt;br /&gt;
&lt;br /&gt;
3.1.3&lt;br /&gt;
&lt;br /&gt;
L�sung der Dynamikgleichungen o&lt;br /&gt;
&lt;br /&gt;
Mit der Definition j := d dt L   j - L j (45)&lt;br /&gt;
&lt;br /&gt;
l�sst sich uber Gleichung (31) f� r j = 1, . . . , 3 ein Gleichungssystem unter Ber� cksichtigung von 1 = a u u � 2 = 3 = 0 (Keine Krafteinleitung uber diese Koordinaten) f� r die gesuchten Multiplikatoren aufstellen: u �     f1 f2 f3   �1 1 x x x  f1 f2 f3    2  =  �2  (46) y y y  � f2 f3 f1 �3 3&lt;br /&gt;
z z z&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
�fi u Aus diesem System lassen sich die �i mittels LR-Zerlegung berechnen. Da j = 0 f� r j = i + 3 lassen sich dann uber Gleichung (31) f� r j = 4, . . . , 6 die gesuchten Antriebsmomente i errechnen: u �&lt;br /&gt;
&lt;br /&gt;
1 2 3&lt;br /&gt;
&lt;br /&gt;
= = =&lt;br /&gt;
&lt;br /&gt;
f1 q1 f2 5 = 5 - �2 q2 f3 6 = 6 - �3 q3 4 = 4 - �1&lt;br /&gt;
fi j&lt;br /&gt;
&lt;br /&gt;
(47) (48) (49) sind im Anhang B doku-&lt;br /&gt;
&lt;br /&gt;
Die f� r die Berechnung von Gleichung (46) und (49) n�tigen Terme i und u o mentiert.&lt;br /&gt;
&lt;br /&gt;
11&lt;br /&gt;
&lt;br /&gt;
�Teil III&lt;br /&gt;
&lt;br /&gt;
Implementierung&lt;br /&gt;
Die Implementierung des Roboter-Modells erfolgte in der Programmiersprache C++. Die Berechnungen wurden in der Klasse DeltaRobot gekapselt, welche uber den Quellcode dokumentiert ist. Das dynamische � Modell ist in drei Reduktionsstufen verf� gbar implementiert. So kann in der Stufe 1 die Teleskopstange u unber� cksichtigt bleiben, wenn ein Delta-Roboter ohne diese Stange betrieben wird. Ist die exakte Mou dellierung zu rechenzeitintensiv, kann die Reduktionsstufe 2 gew�hlt werden, in der die Masse mBC1 a unber� cksichtigt bleibt, was zu einem erheblich geringeren Rechenaufwand f� hrt. Die Wahl der Reduktiu u onsstufe kann der Funktion calcDynamicModel(int reduction) als Parameter ubergeben werden. Dazu � muss der Aufruf in der Funktion computeTorques() entsprechend angepasst werden. Die Parametrisierung (siehe Anhang D) erfolgt direkt in der Funktion initParameters() und kann sp�ter entsprechend a erweitert oder angepasst werden. In der Tabelle 1 sind Absch�tzungen f� r den Berechnungsaufwand der einzelnen Implementierungsteile a u wiedergegeben. Sie k�nnen als Entscheidungshilfe dienen, in welchem Umfang das Modell in eine Steuerung o integriert werden kann.&lt;br /&gt;
&lt;br /&gt;
Berechnung  Inverse Kinematik (nur q) Vollst�ndige inverse Kinematik a (Vorraussetzung f� r Dynamik) u Momentenberechung (inklusive Gleichungssystem l�sen) o Dynamisches Modell Dynamisches Modell (reduziert)&lt;br /&gt;
&lt;br /&gt;
Funktionsaufrufe calc_q() calc_q_dot() calcInvKinematic() computeTorques() ohne calcDynamicModel() calcDynamicModel(0) calcDynamicModel(2)&lt;br /&gt;
&lt;br /&gt;
Aufwand 18, 78�, 72�, 12� 18, 138�, 150�, 15� 28�, 32�, 23�&lt;br /&gt;
&lt;br /&gt;
84�, 166�, 7� 46�, 92�, 4�&lt;br /&gt;
&lt;br /&gt;
Tabelle 1: Berechnungsaufwand der Implementierungsteile&lt;br /&gt;
&lt;br /&gt;
12&lt;br /&gt;
&lt;br /&gt;
�4&lt;br /&gt;
4.1&lt;br /&gt;
&lt;br /&gt;
Validierung&lt;br /&gt;
Numerisches MKS-Modell&lt;br /&gt;
&lt;br /&gt;
Zur Validierung der Implementierung wurde mit dem SimMechanics-Werkzeugkasten f� r die Software u MATLAB/Simulink ein numerisches Mehrk�rper-Simulations-Modell des Delta-Roboters aufgebaut. Abo bildung 7 zeigt das grafische Programm.&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
tau&lt;br /&gt;
&lt;br /&gt;
Sensor&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
3 Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank1&lt;br /&gt;
&lt;br /&gt;
Spherical11&lt;br /&gt;
&lt;br /&gt;
Rod11&lt;br /&gt;
&lt;br /&gt;
Spherical12&lt;br /&gt;
&lt;br /&gt;
Actuator1&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS7&lt;br /&gt;
&lt;br /&gt;
Spherical13&lt;br /&gt;
3 Sensor&lt;br /&gt;
&lt;br /&gt;
Rod12&lt;br /&gt;
&lt;br /&gt;
Spherical14&lt;br /&gt;
&lt;br /&gt;
1 q&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
3 3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank2&lt;br /&gt;
&lt;br /&gt;
Spherical21&lt;br /&gt;
&lt;br /&gt;
Rod21&lt;br /&gt;
&lt;br /&gt;
Spherical22&lt;br /&gt;
3{9}&lt;br /&gt;
&lt;br /&gt;
Actuator2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS8&lt;br /&gt;
&lt;br /&gt;
CG&lt;br /&gt;
&lt;br /&gt;
2 pose&lt;br /&gt;
&lt;br /&gt;
Spherical23&lt;br /&gt;
Sensor&lt;br /&gt;
&lt;br /&gt;
Rod22&lt;br /&gt;
&lt;br /&gt;
Spherical24&lt;br /&gt;
&lt;br /&gt;
Body Sensor&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
3 Actuator&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
Drive&lt;br /&gt;
&lt;br /&gt;
CS1 CS3 Crank3&lt;br /&gt;
&lt;br /&gt;
Spherical31&lt;br /&gt;
&lt;br /&gt;
Rod31&lt;br /&gt;
&lt;br /&gt;
Spherical32&lt;br /&gt;
&lt;br /&gt;
Actuator3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS9&lt;br /&gt;
&lt;br /&gt;
Spherical33&lt;br /&gt;
&lt;br /&gt;
Rod32&lt;br /&gt;
&lt;br /&gt;
Spherical34&lt;br /&gt;
&lt;br /&gt;
B Ground&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS1&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS3&lt;br /&gt;
&lt;br /&gt;
CS2&lt;br /&gt;
&lt;br /&gt;
B&lt;br /&gt;
&lt;br /&gt;
F&lt;br /&gt;
&lt;br /&gt;
CS4&lt;br /&gt;
&lt;br /&gt;
Universal41&lt;br /&gt;
&lt;br /&gt;
Rod41&lt;br /&gt;
&lt;br /&gt;
Prismatic41&lt;br /&gt;
&lt;br /&gt;
Rod42&lt;br /&gt;
&lt;br /&gt;
Spherical41 Platform&lt;br /&gt;
&lt;br /&gt;
Abbildung 7: MKS-Modell des Delta-Roboters mit SimMechanics f� r MATLAB/Simulink u Die Einbindung der DeltaRobot-Klasse erfolgte uber einen S-Function-Wrapper, der mit dem Borland � C/C++-Compiler Version 5.5 ubersetzt wurde. Die Testtrajektorie weist, um eventuelle Fehler in den � einzelnen Termen des dynamischen Modells gut identifizieren zu k�nnen, recht hohe Geschwindigkeiten o m (bis zu 8 m ) und Beschleunigungen (bis 24 s2 ) auf. Sie ist durch die Funktionen s x(t) 2 (5 - 0, 1) � 2 2 � t + 0, 1 � �t 2 10s s 2 (0, 1 - 5) � 2 2 �t +5� � �t y(t) = 0, 25m � sin 2 10s s 2  z(t) = 0, 1m � sin 5 � - 0, 7556m �t+ s 2 = 0, 25m � sin � 1 2 1 2 (50) (51) (52)&lt;br /&gt;
&lt;br /&gt;
beschrieben. Abbildung 8 zeigt die Bahn im Raum, die so gew�hlt wurde, dass m�glichst grosse Teile des a o Arbeitsraumes ber� cksichtigt werden. u Mit der gew�hlten Parametrisierung (siehe Anhang D) l�sst sich dem analytischen Modell ein hervorraa a gender Gleichlauf zum numerischen Modell attestieren, wie Abbildung 9 belegt. Die Ausgaben des numerischen Modells sind mit dem Index n gekennzeichnet. Als Fehlerma� werden die aufsummierten Betr�ge a der Fehler der Einzel-Antriebsmomente gem�� a E(t) =&lt;br /&gt;
3 i=1&lt;br /&gt;
&lt;br /&gt;
|i (t) - i,n (t)| max( )&lt;br /&gt;
t&lt;br /&gt;
&lt;br /&gt;
gew�hlt. Da der Fehler E jederzeit unter 1 Promille bleibt, ist die Implementierung als fehlerfrei zu a bewerten. 13&lt;br /&gt;
&lt;br /&gt;
�-0.65 -0.7 -0.75 z (m) -0.8 -0.85 -0.9 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 y (m) -0.4 x (m) -0.3 -0.2 -0.1 0 0.1 0.2&lt;br /&gt;
&lt;br /&gt;
0.3&lt;br /&gt;
&lt;br /&gt;
Abbildung 8: Testtrajektorie&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
x 10&lt;br /&gt;
&lt;br /&gt;
-3&lt;br /&gt;
&lt;br /&gt;
0.9&lt;br /&gt;
&lt;br /&gt;
0.8&lt;br /&gt;
&lt;br /&gt;
0.7&lt;br /&gt;
&lt;br /&gt;
0.6&lt;br /&gt;
&lt;br /&gt;
0.5&lt;br /&gt;
&lt;br /&gt;
E&lt;br /&gt;
&lt;br /&gt;
0.4&lt;br /&gt;
&lt;br /&gt;
0.3&lt;br /&gt;
&lt;br /&gt;
0.2&lt;br /&gt;
&lt;br /&gt;
0.1&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
5 t (s)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
Abbildung 9: Relative Abweichung E zwischen den Modellen auf der Testtrajektorie&lt;br /&gt;
&lt;br /&gt;
14&lt;br /&gt;
&lt;br /&gt;
�4.2&lt;br /&gt;
&lt;br /&gt;
Simulationsergebnisse&lt;br /&gt;
&lt;br /&gt;
Im folgenen werden Simulationsergebnisse zur G� te der reduzierten Modelle mit und ohne Nutzlast wiederu gegeben. F� r das vollst�ndige Modell wurde zudem der Einfluss einer Fehlparametrisierung der Nutzlast u a simuliert. 4.2.1 Reduziertes Modell&lt;br /&gt;
&lt;br /&gt;
F� r die Reduktionsstufe 2, in der nur die Bewegung der Plattform, der Teleskopstange und der Kurbeln u ber� cksichtigt sind, werden die errechneten Momente f� r den ersten Antrieb mit den tats�chlich ben�tigten u u a o verglichen. Das Resultat zeigen Abbildung 10 und 11, gemessen am geringeren Berechnungsaufwand ist ein guter Gleichlauf mit dem exakten Modell zu erkennen.&lt;br /&gt;
30 20 10 0 -10 -20 -30 -40 -50  (Nm)  (Nm)&lt;br /&gt;
n&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
5 t (s)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
Abbildung 10: Vergleich der errechneten Momente f� r die Reduktionsstufe 2 ohne Nutzlast u&lt;br /&gt;
&lt;br /&gt;
60 40 20 0 -20 -40 -60 -80 -100  (Nm)  (Nm)&lt;br /&gt;
n&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
5 t (s)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
Abbildung 11: Vergleich der errechneten Momente f� r die Reduktionsstufe 2 mit einer Nutzlast von 500g u&lt;br /&gt;
&lt;br /&gt;
15&lt;br /&gt;
&lt;br /&gt;
�4.2.2&lt;br /&gt;
&lt;br /&gt;
Fehlparametrisierung der Nutzlast&lt;br /&gt;
&lt;br /&gt;
F� r das vollst�ndige Modell wurde bez� glich der Nutzlast statt mit 500g mit 450g Nutzlast fehlparameu a u trisiert. Die Abbildungen 12 und 13 zeigen das Ergebnis.&lt;br /&gt;
60  (Nm)  (Nm)&lt;br /&gt;
n&lt;br /&gt;
&lt;br /&gt;
40&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
-20&lt;br /&gt;
&lt;br /&gt;
-40&lt;br /&gt;
&lt;br /&gt;
-60&lt;br /&gt;
&lt;br /&gt;
-80&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
5 t (s)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
Abbildung 12: Einfluss einer Fehlparametrisierung der Nutzlast von -10%&lt;br /&gt;
&lt;br /&gt;
0.18&lt;br /&gt;
&lt;br /&gt;
0.16&lt;br /&gt;
&lt;br /&gt;
0.14&lt;br /&gt;
&lt;br /&gt;
0.12&lt;br /&gt;
&lt;br /&gt;
0.1 E 0.08 0.06 0.04 0.02 0 0&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
5 t (s)&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
Abbildung 13: Relative Abweichung E bei einer Fehlparametrisierung der Nutzlast von -10%&lt;br /&gt;
&lt;br /&gt;
16&lt;br /&gt;
&lt;br /&gt;
�Teil IV&lt;br /&gt;
&lt;br /&gt;
Anhang&lt;br /&gt;
&lt;br /&gt;
A&lt;br /&gt;
&lt;br /&gt;
Modellierung der vierten Achse&lt;br /&gt;
&lt;br /&gt;
Die inverse Kinematik f� r die vierte Achse, die nicht mit den translatorischen Freiheitsgraden verkoppelt u ist, kann uber die Indentit�t beschrieben werden: a � [ q4 q4 q4 ]T = I3�3  �  � &lt;br /&gt;
T&lt;br /&gt;
&lt;br /&gt;
(53)&lt;br /&gt;
&lt;br /&gt;
Bei der inversen Dynamik ist nur die Rotation um ihre L�ngsachse zu ber� cksichtigen, da die translaa u torischen Bewegungen und die ubrigen Rotationen uber die Antriebe an den parallelen Ketten erzeugt � � werden. Folglich gilt: � 4 = T   mit T  als Tr�gheitsmoment des Antriebs, der Teleskopstange und des Greifers. a (54)&lt;br /&gt;
&lt;br /&gt;
17&lt;br /&gt;
&lt;br /&gt;
�B&lt;br /&gt;
&lt;br /&gt;
Hilfsgrossen der dynamischen Modellierung �&lt;br /&gt;
fi j&lt;br /&gt;
&lt;br /&gt;
Gr��en o&lt;br /&gt;
&lt;br /&gt;
f� r i = 1, . . . , 3: u fi x fi y fi z fi qi = 2x - 2r cos i - 2la cos qi cos i = 2y - 2r sin i - 2la cos qi sin i = 2z + 2la sin qi = 2la z cos qi + 2la y sin qi sin i + 2la x sin qi cos i - 2la r sin qi (55) (56) (57) (58)&lt;br /&gt;
&lt;br /&gt;
Gr��en j : o 1 = = d dt L x  - L x -�3 sin q3 - q3 cos q3 cos 3 q 2 (59)&lt;br /&gt;
&lt;br /&gt;
(4mT 2 + mT 1 + 4mP + 4mBC2 ) x + 3� + � x&lt;br /&gt;
&lt;br /&gt;
+ -�2 sin q2 - q2 cos q2 cos 2 + -�1 sin q1 - q1 cos q1 cos 1 la mBC1 /4 q 2 q 2 2 = = d dt L y  - L y q3 sin q3 + q3 cos q3 sin 3 � 2&lt;br /&gt;
&lt;br /&gt;
(4mT 2 + mT 1 + 4mP + 4mBC2 ) y + 3� + � y&lt;br /&gt;
&lt;br /&gt;
� 2 + q2 sin q2 + q2 cos q2 sin 2 + q1 sin q1 + q1 cos q1 sin 1 la mBC1 /4 � 2 3 = = d dt L z  - L z&lt;br /&gt;
&lt;br /&gt;
(60)&lt;br /&gt;
&lt;br /&gt;
(4� + 4g)mT 2 + (� + 2g)mT 1 + (4� + 4g)mP + (12� + 12g)mBC2 z z z z + 3� + -�3 cos q3 + q3 sin q3 - q2 cos q2 + q2 sin q2 z q 2 � 2 -�1 cos q1 + q1 sin q1 la + 6g mBC1 /4 q 2 (61)&lt;br /&gt;
&lt;br /&gt;
F� r i = 1, . . . , 3: u i+3 = = d dt L  qi  - L qi&lt;br /&gt;
&lt;br /&gt;
- 4gla mBC2 cos qi + la z mBC1 cos qi - la y mBC1 sin qi sin 1 + la xmBC1 sin qi cos 1 � � � -�i la mBC1 + 2gla mBC1 cos qi + 4glAB mAB cos qi - 4�i AB /4 q 2 q (62)&lt;br /&gt;
&lt;br /&gt;
18&lt;br /&gt;
&lt;br /&gt;
�C&lt;br /&gt;
&lt;br /&gt;
Computeralgebra-Skripte&lt;br /&gt;
&lt;br /&gt;
Die symbolischen Manipulationen wurden mit dem Computeralgebra-Packet MAXIMA in der Version 5.12.0 durchgef� hrt. Die Skripte zur Ausf� hrung sind in den folgenden Abschnitten wiedergegeben. u u Berechnung der Differentialkinematik:&lt;br /&gt;
kill(all); depends(x,t,y,t,z,t,q,t); ((r+la*cos(q))*cos(the)-x)^2 + ((r+la*cos(q))*sin(the)-y)^2 + (-la*sin(q)-z)^2 -lb^2; expand(diff(%o2,t)); solve([%], [q]); trigsimp(%); expand(diff(diff(%o2,t),t)); solve([%], [q]); trigsimp(%);&lt;br /&gt;
&lt;br /&gt;
Berechnung der Elemente der Jacobi-Matrix: kill(all); depends(x,t,y,t,z,t,lam,t,gam,t,bet,t,q,t); depends(lam,y); depends(gam,z,gam,x); depends(C_x,x); lam(y) := asin(y/lb); C_x(x) := x-rb; gam(C_x,z) := atan(C_x/-z); bet(C_x,gam,lam) := acos( (la^2 + ( C_x /sin(gam))^2 - (lb*cos(lam))^2 ) / ( 2*la* C_x / sin(gam)) ); bet(C_x(x),gam(C_x(x),z),lam(y)); bet(C_x(x),gam,lam); diff(bet(C_x,gam,lam) ,x); diff(bet(C_x,gam,lam) ,y); diff(bet(C_x,gam,lam) ,z);&lt;br /&gt;
&lt;br /&gt;
Berechnung der Lagrange-Funktion und ihrer Ableitungen: kill(all); depends(x,t,y,t,z,t,q,t); P_1: m_P * g * z; P_2: m_T2 * g * (z+l_TP) + m_T1 * g * 1/2*(z+l_TO+l_TP); P_3: -sum( m_AB * g * l_AB * sin(q[i]) ,i,1,3); P_4: sum(m_BC1*g*1/2*(z-l_a*sin(q[i]))-m_BC2*g*l_a*sin(q[i])+ m_BC2*g*z ,i,1,3); P: P_1 + P_2 + P_3 + P_4;&lt;br /&gt;
&lt;br /&gt;
19&lt;br /&gt;
&lt;br /&gt;
�v_B(i):= matrix( [ -l_a*sin(q[i])*('diff(q[i],t)) ], [ 0 ], [ -l_a*cos(q[i])*('diff(q[i],t)) ]); v_C(i):= matrix( [ ('diff(x,t))*cos(the[i]) + ('diff(y,t))*sin(the[i]) ], [ -('diff(x,t))*sin(the[i]) + ('diff(y,t))*cos(the[i]) ], [ ('diff(z,t)) ]); v(i):= v_C(i) + v_B(i); K_1: 1/2*(m_P+3*m_BC2)*('diff(x,t)^2+'diff(y,t)^2+'diff(z,t)^2); K_2: (1/8*m_T1 + 1/2*m_T2)*('diff(x,t)^2+'diff(y,t)^2+'diff(z,t)^2); K_3: sum(1/2*The*'diff(q[i],t)^2,i,1,3); K_4: sum(1/2*m_BC2*l_a^2*'diff(q[i],t)^2 + 1/8*m_BC1*v(i).v(i) ,i,1,3); K: K_1 + K_2 + K_3 + K_4; L: K-P; L: trigsimp(%); ratsimp(diff(diff(L,'diff(x,t)),t) - diff(L,x)); ratsimp(diff(diff(L,'diff(y,t)),t) - diff(L,y)); ratsimp(diff(diff(L,'diff(z,t)),t) - diff(L,z)); factor(diff(diff(L,'diff(q[1],t)),t) - diff(L,q[1])); factor(diff(diff(L,'diff(q[2],t)),t) - diff(L,q[2])); factor(diff(diff(L,'diff(q[3],t)),t) - diff(L,q[3]));&lt;br /&gt;
&lt;br /&gt;
Ableitungen der kinematischen Zwangsbedingungen: kill(all); depends(x,t,y,t,z,t,q,t); f(i):= ((r+l_a*cos(q[i]))*cos(the[i])-x)^2 + ((r+l_a*cos(q[i]))*sin(the[i])-y)^2 + (-l_a*sin(q[i])-z)^2 -l_b^2; trigsimp(diff(f(i),x)); trigsimp(diff(f(i),y)); trigsimp(diff(f(i),z)); trigsimp(diff(f(i),q[i]));&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
�D&lt;br /&gt;
&lt;br /&gt;
Parametrisierung des dynamischen Modells&lt;br /&gt;
mBC BC mBC2 mBC1 mP mT T T  mAB lAB AB = 71, 477 g = 6, 5928 gm2 = 0, 033299 kg = 0, 10965 kg = 0, 13107 kg = 0, 42140 kg = 20, 445 gm2 = 0, 7144 gm2 = 0.9109892kg = 0.1069968m 2 = mAB � lAB (aus CAD-Daten) (aus CAD-Daten) (nach Glg. 27 ) (nach Glg. 28 ) (aus CAD-Daten, Nutzlast noch nicht addiert) (aus CAD-Daten) (aus CAD-Daten) (aus CAD-Daten, Motortr�gheit und Nutzlast noch nicht addiert) a (aus CAD-Daten) (aus CAD-Daten) (Motortr�gheit noch nicht addiert) a&lt;br /&gt;
&lt;br /&gt;
Die Parametrisierung des dynamischen Modells wurde wie folgt ermittelt:&lt;br /&gt;
&lt;br /&gt;
21&lt;br /&gt;
&lt;br /&gt;
�&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Category:Model_based_control_for_Delta_kinematics&amp;diff=112434</id>
		<title>Category:Model based control for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Category:Model_based_control_for_Delta_kinematics&amp;diff=112434"/>
				<updated>2012-12-24T13:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Created page with &amp;quot;For overview see main article: CNT:Model based control for Delta kinematics.   Category:Axystems:Motion Dynamics&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For overview see main article: [[CNT:Model based control for Delta kinematics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:Motion Dynamics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics&amp;diff=112436</id>
		<title>AXY:Resonance frequency model for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics&amp;diff=112436"/>
				<updated>2012-12-24T13:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robot mechanics can experience heavy mechanical oscillations if acceleration excitation frequency comes close to the robots resonance frequency.&lt;br /&gt;
To keep oscillations low, excitation frequency of motion generation should be limited to a fraction of resonance frequency.&lt;br /&gt;
Stiffness (together with resonance frequency) of the tool centre point of a Delta kinematics significantly varies with its position and excitation direction.&lt;br /&gt;
A physical model is needed to predict the resonance frequencies at start and target points of a motion and limit the excitation by adjusting jerks.&lt;br /&gt;
&lt;br /&gt;
== Physical model ==&lt;br /&gt;
&lt;br /&gt;
The platform compliance mainly comprises of two components. &lt;br /&gt;
The first follows from the compliance of actuating joints, the second from the compliance of parallelogram rods.&lt;br /&gt;
&lt;br /&gt;
=== Platform stiffness due to actuating joints compliance ===&lt;br /&gt;
&lt;br /&gt;
Here it is assumed that the parallelogram rods are absolutely stiff. &lt;br /&gt;
The compliance of the platform only follows from the compliance of the actuating joints.&lt;br /&gt;
The method of virtual work is used for the derivation of the stiffness matrix.&lt;br /&gt;
&lt;br /&gt;
The external force &amp;lt;math&amp;gt;\overrightarrow{\mathbf{F}}&amp;lt;/math&amp;gt; at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes virtual displacement work that must be equal to the displacement work of actuating joints:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \overrightarrow{\mathbf{F}}^T  \cdot  \Delta \overrightarrow{\mathbf{P}} &lt;br /&gt;
   - \overrightarrow{\mathbf{M_q}}^T  \cdot  \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
Vector &amp;lt;math&amp;gt;\overrightarrow{\mathbf{q}}&amp;lt;/math&amp;gt; describes the joint positions (angles) and &amp;lt;math&amp;gt;\overrightarrow{\mathbf{M_q}}&amp;lt;/math&amp;gt; the joint torques.&lt;br /&gt;
&lt;br /&gt;
Displacement of the actuating joints is described the known Jacobian matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   = \mathbf{J}  \cdot  \Delta \overrightarrow{\mathbf{P}}&lt;br /&gt;
   \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hooke's law describes the stiffness of the actuating joints:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \overrightarrow{\mathbf{M_q}}&lt;br /&gt;
   = \mathbf{C_q}  \cdot  \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The diagonal matrix &amp;lt;math&amp;gt;\mathbf{C_q}&amp;lt;/math&amp;gt; contains known joint stiffness constants:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \mathbf{C_q} = &lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
     c_q &amp;amp; 0 &amp;amp; 0      \\&lt;br /&gt;
     0   &amp;amp; c_q &amp;amp; 0    \\ &lt;br /&gt;
     0   &amp;amp; 0   &amp;amp; c_q&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inserting (2) in (1) leads to:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \left ( \overrightarrow{\mathbf{F}}^T  -  \overrightarrow{\mathbf{M_q}}^T  \cdot  \mathbf{J} \right )&lt;br /&gt;
   \cdot  \Delta \overrightarrow{\mathbf{P}} &lt;br /&gt;
   = 0    &lt;br /&gt;
   \qquad \Rightarrow&lt;br /&gt;
   \overrightarrow{\mathbf{F}}^T  -  \overrightarrow{\mathbf{M_q}}^T  \cdot  \mathbf{J}&lt;br /&gt;
   = 0&lt;br /&gt;
   \qquad \mathrm{(4)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hooke's law for the Cartesian stiffness is obtained by inserting (3) and (2) in (4):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \begin{array}{lcl}&lt;br /&gt;
   \overrightarrow{\mathbf{F}} &lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \overrightarrow{\mathbf{M_q}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \Delta \overrightarrow{\mathbf{q}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \mathbf{J}  \cdot  \Delta \overrightarrow{\mathbf{P}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{K_q}  \cdot  \Delta \overrightarrow{\mathbf{P}}&lt;br /&gt;
   \end{array}&lt;br /&gt;
   \qquad \mathrm{(5)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix &amp;lt;math&amp;gt;\mathbf{K_q}&amp;lt;/math&amp;gt; is the Cartesian stiffness matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \mathbf{K_q} = \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \mathbf{J}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform stiffness in direction of the external force is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k_q &lt;br /&gt;
   = \frac{\left | \overrightarrow{\mathbf{F}} \right |} {\left |\Delta \overrightarrow{\mathbf{P}} \right |}&lt;br /&gt;
   = \frac{\left | \mathbf{K_q} \cdot \overrightarrow{\mathbf{P}} \right |} {\left |\Delta \overrightarrow{\mathbf{P}} \right |}&lt;br /&gt;
   \qquad \mathrm{(6)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platform stiffness due to parallelogram rods compliance ===&lt;br /&gt;
&lt;br /&gt;
In this case it is assumed that the actuating joints are absolutely stiff. &lt;br /&gt;
The compliance of the platform only results from parallelogram rod compliance.&lt;br /&gt;
Method of virtual work is again used for the derivation.&lt;br /&gt;
&lt;br /&gt;
The external force &amp;lt;math&amp;gt;\overrightarrow{\mathbf{F}}&amp;lt;/math&amp;gt; at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes counter forces in the parallelogram rods &amp;lt;math&amp;gt;F_{c,i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
[[Rod forces model for Delta kinematics]] describes the computation of these rod forces.&lt;br /&gt;
Forces can be treated as scalar values because all forces directions match the displacement directions.&lt;br /&gt;
&lt;br /&gt;
The (known) stiffness of the parallelogram rods is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   c_r&lt;br /&gt;
   = \frac {F_{c,i}} {\Delta l_{b,i}}&lt;br /&gt;
   \qquad \mathrm{(7)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
Factor &amp;lt;math&amp;gt;l_{b,i}&amp;lt;/math&amp;gt; is the length of the rod.&lt;br /&gt;
&lt;br /&gt;
The external force at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes virtual displacement work that must be equal to the displacement work of the parallelogram rods:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   F  \cdot  \Delta P&lt;br /&gt;
   - \sum_{i} F_{c,i}  \cdot  \Delta l_{b,i} &lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \mathrm{(8)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inserting (7) in (8) and rearranging leads to:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   F  \cdot  \Delta P&lt;br /&gt;
   - \sum_{i} \frac {F_{c,i}^2} {c_r}&lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \Rightarrow &lt;br /&gt;
   \Delta P &lt;br /&gt;
   = \frac {\sum_{i} \frac {F_{c,i}^2} {c_r}} {F}&lt;br /&gt;
   \qquad \mathrm{(9)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Cartesian stiffness of the platform is obtained by invoking Hooke's law:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k_r&lt;br /&gt;
   = \frac {F} {\Delta P}  &lt;br /&gt;
   = \frac {F^2} {\sum_{i} \frac {F_{c,i}^2} {c_r}} &lt;br /&gt;
   = \frac {F^2} {\sum_{i} F_{c,i}^2}  \cdot  c_r  &lt;br /&gt;
   \qquad \mathrm{(10)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Total stiffness of the platform ===&lt;br /&gt;
&lt;br /&gt;
Total stiffness of the platform is a serial set-up of &amp;lt;math&amp;gt;k_q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;k_r&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k &lt;br /&gt;
   = \frac {k_q \cdot k_r} {k_q + k_r}&lt;br /&gt;
   \qquad \mathrm{(11)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platform resonance frequency ===&lt;br /&gt;
&lt;br /&gt;
The resonance frequency is dependent of the system's mass and the spring constant. &lt;br /&gt;
In case of Delta robot the mass consists of the platform mass and 1/3 of the parallelogram rod masses:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   m &lt;br /&gt;
   = m_{platform} + 3 \cdot \left ( \frac{1}{3} \cdot m_{BC} \right ) &lt;br /&gt;
   = m_{platform} +  m_{BC}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The platform resonance frequency is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   f_{res} &lt;br /&gt;
   = \frac {\sqrt{\frac{k}{m_{platform} +  m_{BC}}}} {2 \pi}&lt;br /&gt;
   \qquad \mathrm{(12)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitation of excitation frequency ==&lt;br /&gt;
&lt;br /&gt;
The maximal excitation frequency is calculated as rate of resonance frequency:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  F_{exc} = R_{ext} \cdot F_{res}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From that relation follow the minimal acceleration/deceleration time:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  T_{AccMin} = \frac{1}{2} \cdot \frac{1}{F_{exc}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The both model parameters &amp;lt;math&amp;gt;c_q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_r&amp;lt;/math&amp;gt; are obtained by estimation.&lt;br /&gt;
It is helpful to measure the resonance frequencies at different TCP positions and different excitation direction with an accelerometer and manually adjust the parameters.&lt;br /&gt;
&lt;br /&gt;
The excitation frequency rate &amp;lt;math&amp;gt;R_{ext}&amp;lt;/math&amp;gt; is adjusted by optimizing the total time of motions.&lt;br /&gt;
Lower values will reduce settling time but prolong the commanded motion.&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* In [[aico.motionAnalyser]] this model is implemented by the function [[delta_resonanceFrequency]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Model based control for Delta kinematics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics&amp;diff=112430</id>
		<title>AXY:Resonance frequency model for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Resonance_frequency_model_for_Delta_kinematics&amp;diff=112430"/>
				<updated>2012-12-24T13:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Resonance frequency model for Delta kinematics to AXY:Resonance frequency model for Delta kinematics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robot mechanics can experience heavy mechanical oscillations if acceleration excitation frequency comes close to the robots resonance frequency.&lt;br /&gt;
To keep oscillations low, excitation frequency of motion generation should be limited to a fraction of resonance frequency.&lt;br /&gt;
Stiffness (together with resonance frequency) of the tool centre point of a Delta kinematics significantly varies with its position and excitation direction.&lt;br /&gt;
A physical model is needed to predict the resonance frequencies at start and target points of a motion and limit the excitation by adjusting jerks.&lt;br /&gt;
&lt;br /&gt;
== Physical model ==&lt;br /&gt;
&lt;br /&gt;
The platform compliance mainly comprises of two components. &lt;br /&gt;
The first follows from the compliance of actuating joints, the second from the compliance of parallelogram rods.&lt;br /&gt;
&lt;br /&gt;
=== Platform stiffness due to actuating joints compliance ===&lt;br /&gt;
&lt;br /&gt;
Here it is assumed that the parallelogram rods are absolutely stiff. &lt;br /&gt;
The compliance of the platform only follows from the compliance of the actuating joints.&lt;br /&gt;
The method of virtual work is used for the derivation of the stiffness matrix.&lt;br /&gt;
&lt;br /&gt;
The external force &amp;lt;math&amp;gt;\overrightarrow{\mathbf{F}}&amp;lt;/math&amp;gt; at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes virtual displacement work that must be equal to the displacement work of actuating joints:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \overrightarrow{\mathbf{F}}^T  \cdot  \Delta \overrightarrow{\mathbf{P}} &lt;br /&gt;
   - \overrightarrow{\mathbf{M_q}}^T  \cdot  \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
Vector &amp;lt;math&amp;gt;\overrightarrow{\mathbf{q}}&amp;lt;/math&amp;gt; describes the joint positions (angles) and &amp;lt;math&amp;gt;\overrightarrow{\mathbf{M_q}}&amp;lt;/math&amp;gt; the joint torques.&lt;br /&gt;
&lt;br /&gt;
Displacement of the actuating joints is described the known Jacobian matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   = \mathbf{J}  \cdot  \Delta \overrightarrow{\mathbf{P}}&lt;br /&gt;
   \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hooke's law describes the stiffness of the actuating joints:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \overrightarrow{\mathbf{M_q}}&lt;br /&gt;
   = \mathbf{C_q}  \cdot  \Delta \overrightarrow{\mathbf{q}} &lt;br /&gt;
   \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The diagonal matrix &amp;lt;math&amp;gt;\mathbf{C_q}&amp;lt;/math&amp;gt; contains known joint stiffness constants:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \mathbf{C_q} = &lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
     c_q &amp;amp; 0 &amp;amp; 0      \\&lt;br /&gt;
     0   &amp;amp; c_q &amp;amp; 0    \\ &lt;br /&gt;
     0   &amp;amp; 0   &amp;amp; c_q&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inserting (2) in (1) leads to:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \left ( \overrightarrow{\mathbf{F}}^T  -  \overrightarrow{\mathbf{M_q}}^T  \cdot  \mathbf{J} \right )&lt;br /&gt;
   \cdot  \Delta \overrightarrow{\mathbf{P}} &lt;br /&gt;
   = 0    &lt;br /&gt;
   \qquad \Rightarrow&lt;br /&gt;
   \overrightarrow{\mathbf{F}}^T  -  \overrightarrow{\mathbf{M_q}}^T  \cdot  \mathbf{J}&lt;br /&gt;
   = 0&lt;br /&gt;
   \qquad \mathrm{(4)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hooke's law for the Cartesian stiffness is obtained by inserting (3) and (2) in (4):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \begin{array}{lcl}&lt;br /&gt;
   \overrightarrow{\mathbf{F}} &lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \overrightarrow{\mathbf{M_q}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \Delta \overrightarrow{\mathbf{q}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \mathbf{J}  \cdot  \Delta \overrightarrow{\mathbf{P}}  \\&lt;br /&gt;
   &amp;amp; = &amp;amp; \mathbf{K_q}  \cdot  \Delta \overrightarrow{\mathbf{P}}&lt;br /&gt;
   \end{array}&lt;br /&gt;
   \qquad \mathrm{(5)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix &amp;lt;math&amp;gt;\mathbf{K_q}&amp;lt;/math&amp;gt; is the Cartesian stiffness matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   \mathbf{K_q} = \mathbf{J}^T  \cdot  \mathbf{C_q}  \cdot  \mathbf{J}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform stiffness in direction of the external force is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k_q &lt;br /&gt;
   = \frac{\left | \overrightarrow{\mathbf{F}} \right |} {\left |\Delta \overrightarrow{\mathbf{P}} \right |}&lt;br /&gt;
   = \frac{\left | \mathbf{K_q} \cdot \overrightarrow{\mathbf{P}} \right |} {\left |\Delta \overrightarrow{\mathbf{P}} \right |}&lt;br /&gt;
   \qquad \mathrm{(6)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platform stiffness due to parallelogram rods compliance ===&lt;br /&gt;
&lt;br /&gt;
In this case it is assumed that the actuating joints are absolutely stiff. &lt;br /&gt;
The compliance of the platform only results from parallelogram rod compliance.&lt;br /&gt;
Method of virtual work is again used for the derivation.&lt;br /&gt;
&lt;br /&gt;
The external force &amp;lt;math&amp;gt;\overrightarrow{\mathbf{F}}&amp;lt;/math&amp;gt; at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes counter forces in the parallelogram rods &amp;lt;math&amp;gt;F_{c,i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
[[Rod forces model for Delta kinematics]] describes the computation of these rod forces.&lt;br /&gt;
Forces can be treated as scalar values because all forces directions match the displacement directions.&lt;br /&gt;
&lt;br /&gt;
The (known) stiffness of the parallelogram rods is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   c_r&lt;br /&gt;
   = \frac {F_{c,i}} {\Delta l_{b,i}}&lt;br /&gt;
   \qquad \mathrm{(7)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
Factor &amp;lt;math&amp;gt;l_{b,i}&amp;lt;/math&amp;gt; is the length of the rod.&lt;br /&gt;
&lt;br /&gt;
The external force at the platform position &amp;lt;math&amp;gt;\overrightarrow{\mathbf{P}} = \begin{bmatrix} x &amp;amp; y &amp;amp; z \end{bmatrix}^T&amp;lt;/math&amp;gt; causes virtual displacement work that must be equal to the displacement work of the parallelogram rods:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   F  \cdot  \Delta P&lt;br /&gt;
   - \sum_{i} F_{c,i}  \cdot  \Delta l_{b,i} &lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \mathrm{(8)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inserting (7) in (8) and rearranging leads to:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   F  \cdot  \Delta P&lt;br /&gt;
   - \sum_{i} \frac {F_{c,i}^2} {c_r}&lt;br /&gt;
   = 0 &lt;br /&gt;
   \qquad \Rightarrow &lt;br /&gt;
   \Delta P &lt;br /&gt;
   = \frac {\sum_{i} \frac {F_{c,i}^2} {c_r}} {F}&lt;br /&gt;
   \qquad \mathrm{(9)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Cartesian stiffness of the platform is obtained by invoking Hooke's law:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k_r&lt;br /&gt;
   = \frac {F} {\Delta P}  &lt;br /&gt;
   = \frac {F^2} {\sum_{i} \frac {F_{c,i}^2} {c_r}} &lt;br /&gt;
   = \frac {F^2} {\sum_{i} F_{c,i}^2}  \cdot  c_r  &lt;br /&gt;
   \qquad \mathrm{(10)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Total stiffness of the platform ===&lt;br /&gt;
&lt;br /&gt;
Total stiffness of the platform is a serial set-up of &amp;lt;math&amp;gt;k_q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;k_r&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   k &lt;br /&gt;
   = \frac {k_q \cdot k_r} {k_q + k_r}&lt;br /&gt;
   \qquad \mathrm{(11)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platform resonance frequency ===&lt;br /&gt;
&lt;br /&gt;
The resonance frequency is dependent of the system's mass and the spring constant. &lt;br /&gt;
In case of Delta robot the mass consists of the platform mass and 1/3 of the parallelogram rod masses:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   m &lt;br /&gt;
   = m_{platform} + 3 \cdot \left ( \frac{1}{3} \cdot m_{BC} \right ) &lt;br /&gt;
   = m_{platform} +  m_{BC}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The platform resonance frequency is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
   f_{res} &lt;br /&gt;
   = \frac {\sqrt{\frac{k}{m_{platform} +  m_{BC}}}} {2 \pi}&lt;br /&gt;
   \qquad \mathrm{(12)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitation of excitation frequency ==&lt;br /&gt;
&lt;br /&gt;
The maximal excitation frequency is calculated as rate of resonance frequency:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  F_{exc} = R_{ext} \cdot F_{res}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From that relation follow the minimal acceleration/deceleration time:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  T_{AccMin} = \frac{1}{2} \cdot \frac{1}{F_{exc}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The both model parameters &amp;lt;math&amp;gt;c_q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;c_r&amp;lt;/math&amp;gt; are obtained by estimation.&lt;br /&gt;
It is helpful to measure the resonance frequencies at different TCP positions and different excitation direction with an accelerometer and manually adjust the parameters.&lt;br /&gt;
&lt;br /&gt;
The excitation frequency rate &amp;lt;math&amp;gt;R_{ext}&amp;lt;/math&amp;gt; is adjusted by optimizing the total time of motions.&lt;br /&gt;
Lower values will reduce settling time but prolong the commanded motion.&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* In [[aico.motionAnalyser]] this model is implemented by the function [[delta_resonanceFrequency]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Control:Model based control for Delta kinematics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics&amp;diff=112426</id>
		<title>AXY:Rod forces model for Delta kinematics</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Rod_forces_model_for_Delta_kinematics&amp;diff=112426"/>
				<updated>2012-12-24T13:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Rod forces model for Delta kinematics to AXY:Rod forces model for Delta kinematics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On a Delta robot the mechanical connection between the platform (point C) and the crank arm (Point B) is realized by a pair of parallelogram rods.&lt;br /&gt;
The ball and socket joints at B and C can only carry a limited force, which is push/pull force of the rods.&lt;br /&gt;
If the maximal force of the ball joints is exceeded, robot arms can hang out which leads to destruction of the robot.&lt;br /&gt;
Because of kinematic structure of delta Robots rod forces depend on position, acceleration and moving direction.&lt;br /&gt;
A physical model is needed to pre-compute rod forces for start/target positions and limit acceleration/deceleration according to maximal allowed forces.&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Introduction.png]]&lt;br /&gt;
&lt;br /&gt;
== Physical model ==&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Relevant kinematic values.png|frame|Relevant kinematic values]]&lt;br /&gt;
&lt;br /&gt;
This rod forces model is based on the inverse dynamic model developed by IWF ([[File:Inverse kinematics and inverse dynamics for Delta - IWF report.pdf]]).&lt;br /&gt;
The actuating joint torques &amp;lt;math&amp;gt;\tau_i&amp;lt;/math&amp;gt; are considered as known.&lt;br /&gt;
&lt;br /&gt;
The coordinate system used by IWF differs from that used at MANZ (Y and Z directions are inverted). &lt;br /&gt;
In this model the IWF coordinate system is used. &lt;br /&gt;
The transformation from and into MANZ coordinate system is done by IDM implementation.&lt;br /&gt;
&lt;br /&gt;
=== Forces at crank arms ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Forces at crank arms.png|frame|Forces at crank arms]]&lt;br /&gt;
&lt;br /&gt;
The direction unit vector of the force &amp;lt;math&amp;gt;\overrightarrow{Fq}_i&amp;lt;/math&amp;gt; points perpendicularly to the crank arm:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fq}^*_i&lt;br /&gt;
  = &lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \cos \theta_i  &amp;amp; -\sin \theta_i  &amp;amp;  0   \\&lt;br /&gt;
  \sin \theta_i  &amp;amp;  \cos \theta_i  &amp;amp;  0   \\ &lt;br /&gt;
  0              &amp;amp;  0              &amp;amp;  1&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \cos q_i  &amp;amp;  0  &amp;amp;  \sin q_i   \\&lt;br /&gt;
  0         &amp;amp;  1  &amp;amp;  0          \\ &lt;br /&gt;
  -\sin q_i &amp;amp;  0  &amp;amp;  \cos q_i&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  0    \\&lt;br /&gt;
  0    \\ &lt;br /&gt;
  -1&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  -\cos \theta_i  \cdot  \sin q_i    \\&lt;br /&gt;
  -\sin \theta_i  \cdot  \sin q_i    \\ &lt;br /&gt;
  -\cos q_i&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The actuating joint torques &amp;lt;math&amp;gt;\tau_i&amp;lt;/math&amp;gt; comprise load torque, friction torques, gravity compensation torque and dynamic torque (inertia):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \tau_i&lt;br /&gt;
  = &lt;br /&gt;
  l_a  \cdot  \left | \overrightarrow{Fq}_i \right |&lt;br /&gt;
   + \rho_v  \cdot  \dot{q}_i&lt;br /&gt;
   + \rho_c  \cdot  sign(\dot{q}_i)&lt;br /&gt;
   - l_{AB}  \cdot  m_{AB}  \cdot  g  \cdot  \cos(q_i)&lt;br /&gt;
   + \Theta_{AB}  \cdot  \ddot{q}_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The absolute value of &amp;lt;math&amp;gt;Fq_i&amp;lt;/math&amp;gt; is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left | \overrightarrow{Fq}_i \right |&lt;br /&gt;
  =&lt;br /&gt;
  \frac {\tau_i&lt;br /&gt;
   - \rho_v  \cdot  \dot{q}_i&lt;br /&gt;
   - \rho_c  \cdot  sign(\dot{q}_i)&lt;br /&gt;
   + l_{AB}  \cdot  m_{AB}  \cdot  g  \cdot  \cos(q_i)&lt;br /&gt;
   - \Theta_{AB}  \cdot  \ddot{q}_i}&lt;br /&gt;
  {l_a}&lt;br /&gt;
  \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The direction of the parallelogram rods is the connection between points C and B:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{C_i B_i}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \left ( r + l_a \cdot \cos q_i \right ) \cdot \cos \theta_i - x    \\&lt;br /&gt;
  \left ( r + l_a \cdot \cos q_i \right ) \cdot \sin \theta_i - y    \\ &lt;br /&gt;
  -l_a \cdot \sin q_i - z&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The direction unit vector of the force &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; is parallel to the parallelogram rods:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fb}^*_i &lt;br /&gt;
  = \frac {\overrightarrow{C_i B_i}} {\left | \overrightarrow{C_i B_i} \right |}&lt;br /&gt;
  \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The angle between &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\overrightarrow{Fq}_i&amp;lt;/math&amp;gt; is obtained by using dot product definition:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \cos \varphi_i &lt;br /&gt;
  = - \frac {\overrightarrow{Fq}^*_i  \cdot  \overrightarrow{Fb}^*_i} &lt;br /&gt;
            {\left | \overrightarrow{Fq}^*_i \right |  \cdot  \left | \overrightarrow{Fb}^*_i \right |}&lt;br /&gt;
  = - \left ( \overrightarrow{Fq}^*_i  \cdot  \overrightarrow{Fb}^*_i \right )&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The absolute value of &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt; is computed as:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left | \overrightarrow{Fb}_i \right |&lt;br /&gt;
  = \frac {\left | \overrightarrow{Fq}_i \right |} {\cos \varphi_i}&lt;br /&gt;
  \qquad \mathrm{(4)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forces at the platform ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Forces at platform.png|frame|Forces at platform]]&lt;br /&gt;
&lt;br /&gt;
The inertia of the parallelogram rods cannot be neglected. &lt;br /&gt;
Therefore the forces at point C are less then forces at point B.&lt;br /&gt;
&lt;br /&gt;
The inertia force is proportional to the Cartesian acceleration vector:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fm}&lt;br /&gt;
  = - m_{platform} \cdot \overrightarrow{\ddot{P}}_{max}&lt;br /&gt;
  \qquad \mathrm{(5)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gravity force points downward:&lt;br /&gt;
:&amp;lt;math&amp;gt; &lt;br /&gt;
  \overrightarrow{Fg}&lt;br /&gt;
  = m_{platform}  \cdot  g  \cdot  \begin{bmatrix} 0  \\ 0 \\ -1 \end{bmatrix}&lt;br /&gt;
  \qquad \mathrm{(6)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direction of &amp;lt;math&amp;gt;\overrightarrow{Fc}_i&amp;lt;/math&amp;gt; is identical to &amp;lt;math&amp;gt;\overrightarrow{Fb}_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fc}^*_i = \overrightarrow{Fb}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unknown value of force &amp;lt;math&amp;gt;\overrightarrow{Fc}_i&amp;lt;/math&amp;gt; is expressed by a variable:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fc}_i = \eta_i \cdot \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sum of all forces affecting at the platform is equal zero:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fm} + \overrightarrow{Fg} + \sum_{i} \overrightarrow{Fc}_i&lt;br /&gt;
  = 0&lt;br /&gt;
  \qquad \mathrm{(7)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
The unknown values of &amp;lt;math&amp;gt;\eta_i&amp;lt;/math&amp;gt; are obtained by solving the linear equation system (7).&lt;br /&gt;
&lt;br /&gt;
=== Torques at the platform ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Torques at platform.png|frame|Torques at the platform]]&lt;br /&gt;
&lt;br /&gt;
The rod forces do not affect at the platform's center of mass and therefore cause load torques which are compensated by the parallelogram structures.&lt;br /&gt;
These compensation torques produces additional forces in the parallelogram rods and have to be modeled as well.&lt;br /&gt;
&lt;br /&gt;
Load torques are obtained by considering resultant rod forces at point C:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ml}_i&lt;br /&gt;
  = \overrightarrow{PC}_i  \times  \overrightarrow{Fc}_i&lt;br /&gt;
  = \begin{bmatrix} &lt;br /&gt;
     r_b \cdot \cos \theta_i \\&lt;br /&gt;
     r_b \cdot \sin \theta_i \\ &lt;br /&gt;
     0 &lt;br /&gt;
    \end{bmatrix}&lt;br /&gt;
   \times  \overrightarrow{Fc}_i&lt;br /&gt;
  \qquad \mathrm{(8)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the computation of compensation torques of both parallelogram rods are handled separately:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fs}_i + \overrightarrow{Ft}_i = \overrightarrow{Fc}_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The compensation torques occur because the both rod forces are different:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ma}_i&lt;br /&gt;
  = \overrightarrow{S_i T_i}  \times  &lt;br /&gt;
    \left ( \overrightarrow{Fs}_i - \overrightarrow{Ft}_i \right )&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The force difference of the both parallelogram rod forces is not known in first step. &lt;br /&gt;
It is expressed by a variable &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Fs}_i - \overrightarrow{Ft}_i&lt;br /&gt;
  = \mu_i  \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the compensation torques follows:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{Ma}_i&lt;br /&gt;
  = \mu_i \cdot &lt;br /&gt;
  \left (&lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
   d  \cdot \sin \theta_i   \\&lt;br /&gt;
   -d \cdot \cos \theta_i   \\ &lt;br /&gt;
   0&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
   \times  \overrightarrow{Fc}^*_i    &lt;br /&gt;
  \right )&lt;br /&gt;
  \qquad \mathrm{(9)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The addition of all load and compensation torques must be equal zero:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \sum_{i} \overrightarrow{Ml}_i  +  \sum_{i} \overrightarrow{Ma}_i = 0&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unknown variables &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt; can be obtained by solving the linear equation system:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
 \sum_{i} \overrightarrow{Ma}_i  =  - \sum_{i} \overrightarrow{Ml}_i&lt;br /&gt;
  \qquad \mathrm{(10)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parallelogram rod forces ===&lt;br /&gt;
&lt;br /&gt;
Because &amp;lt;math&amp;gt;\overrightarrow{Fc}^*_i&amp;lt;/math&amp;gt; are unity vectors, the variables &amp;lt;math&amp;gt;\mu_i&amp;lt;/math&amp;gt; represent the differences of the both rod forces.&lt;br /&gt;
The absolute value of the bigger rod force is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \left|  \overrightarrow{Fr}_i  \right|  =  \frac {1}{2} \cdot \left( \left|  \overrightarrow{Fb}_i  \right|  +  \left| \mu_i \right|  \right)&lt;br /&gt;
  \qquad \mathrm{(11)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load capacity reduction due to parallelogram shift ===&lt;br /&gt;
&lt;br /&gt;
[[File:Control;Rod forces model for Delta kinematics - Parallelogram shift.png|frame|Parallelogram shift]]&lt;br /&gt;
&lt;br /&gt;
The half-bowls of the ball and socket joints are held by a spring. &lt;br /&gt;
For the load capacity of the joint only the force components are relevant, that are perpendicular to the rods.&lt;br /&gt;
When the parallelogram is shifted the perpendicular forces become less and therefore the load capacity decreases.&lt;br /&gt;
&lt;br /&gt;
To obtain the shift angle an intermediate step is needed:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \cos \xi_i&lt;br /&gt;
  = \overrightarrow{S_i T_i}^*  \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
  = &lt;br /&gt;
   \begin{bmatrix}&lt;br /&gt;
   \sin \theta_i   \\&lt;br /&gt;
   -\cos \theta_i  \\ &lt;br /&gt;
   0&lt;br /&gt;
   \end{bmatrix}&lt;br /&gt;
   \cdot  \overrightarrow{Fc}^*_i&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reduction factor of the joint's load capacity is then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  Rs_i = \cos \sigma_i = \sin \xi_i = \sqrt{1 - \cos^2 \xi_i}&lt;br /&gt;
  \qquad \mathrm{(12)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitation of acceleration/deceleration ==&lt;br /&gt;
&lt;br /&gt;
To set appropriate acceleration and deceleration values for a given straight motion it is adequate to test only the start and target points.&lt;br /&gt;
&lt;br /&gt;
The acceleration rates at start point respectively the deceleration rate at target point are computed as quotient of maximal allowed rod force and the computed rod force:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  Ra = \min_i \frac {Fr_{max} \cdot Rs_i} {\left |  \overrightarrow{Fr}_i  \right |}&lt;br /&gt;
  \qquad \mathrm{(13)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The only model parameter &amp;lt;math&amp;gt;Fr_{max}&amp;lt;/math&amp;gt; can only be obtained by incrementally increasing (trial and error).&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* In [[aico.motionAnalyser]] this model is implemented by the function [[delta_rodForces]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Control:Model based control for Delta kinematics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112425</id>
		<title>AXY:Basics of joint parameters identification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112425"/>
				<updated>2012-12-24T13:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model based control can bring great benefit to robot control, but it requires exact model parameters.&lt;br /&gt;
This document describes how these parameters can be identified (automatically).&lt;br /&gt;
&lt;br /&gt;
== Record identification motion profile ==&lt;br /&gt;
&lt;br /&gt;
The motion profile should provoke all motion states described by the model. &lt;br /&gt;
Ideally it should move over the whole position range of the joint, have plenty accelerations/decelerations and have different constant velocity phases.&lt;br /&gt;
&lt;br /&gt;
The recorded file must contain the position feedback along with the torque feedback.&lt;br /&gt;
&lt;br /&gt;
== Derivative without phase shift ==&lt;br /&gt;
&lt;br /&gt;
For parameter identification joint velocity and acceleration is needed. &lt;br /&gt;
Standard numeric derivative of position feedback leads to phase shift, which impairs the identification.&lt;br /&gt;
To avoid the phase shift interpolated derivative should be used instead.&lt;br /&gt;
Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken.&lt;br /&gt;
&lt;br /&gt;
Interpolated derivative is implemented in [[Control:aico.motionAnalyzer|aico.motionAnalyser]] by the function [[signal_deriveInterp]].&lt;br /&gt;
&lt;br /&gt;
== Mathematical derivation ==&lt;br /&gt;
&lt;br /&gt;
In a simple case an actuating joint can be described with the following motion equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \tau = \Theta \cdot \ddot{x} + \rho_v \cdot \dot{x} + \rho_c \cdot sign(\dot{x})&lt;br /&gt;
  \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the symbols are:&lt;br /&gt;
:{| &lt;br /&gt;
|&amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt;&lt;br /&gt;
|Torque (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\dot{x}, \ddot{x}&amp;lt;/math&amp;gt;&lt;br /&gt;
|Velocity and acceleration (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;&lt;br /&gt;
|Moment of inertia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt;&lt;br /&gt;
|Viscous friction coefficient&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;&lt;br /&gt;
|Coulomb friction coefficient&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is assumed that the joints position, velocity and acceleration feedbacks together with the torque feedback are known (recorded).&lt;br /&gt;
The unknown model parameters are &amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The recorded value tuples can be represented as a over-determined linear equation system:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
 \begin{array}{lcl}&lt;br /&gt;
 \tau_1  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_1 + \rho_v \cdot \dot{x}_1 + \rho_c \cdot sign(\dot{x}_1) \\&lt;br /&gt;
 \tau_2  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_2 + \rho_v \cdot \dot{x}_2 + \rho_c \cdot sign(\dot{x}_2) \\&lt;br /&gt;
 \tau_3  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_3 + \rho_v \cdot \dot{x}_3 + \rho_c \cdot sign(\dot{x}_3) \\&lt;br /&gt;
         &amp;amp;   &amp;amp;                                     \vdots                                       \\&lt;br /&gt;
 \tau_n  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_n + \rho_v \cdot \dot{x}_n + \rho_c \cdot sign(\dot{x}_n) \\&lt;br /&gt;
 \end{array}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These n equations can also be written as a single matrix equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \tau_1 \\&lt;br /&gt;
  \tau_2 \\ &lt;br /&gt;
  \tau_3 \\&lt;br /&gt;
  \vdots \\&lt;br /&gt;
  \tau_n &lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \ddot{x}_1  &amp;amp;  \dot{x}_1  &amp;amp;  sign(\dot{x}_1) \\&lt;br /&gt;
  \ddot{x}_2  &amp;amp;  \dot{x}_2  &amp;amp;  sign(\dot{x}_2) \\&lt;br /&gt;
  \ddot{x}_3  &amp;amp;  \dot{x}_3  &amp;amp;  sign(\dot{x}_3) \\&lt;br /&gt;
  \vdots      &amp;amp;  \vdots     &amp;amp;  \vdots          \\&lt;br /&gt;
  \ddot{x}_n  &amp;amp;  \dot{x}_n  &amp;amp;  sign(\dot{x}_n) \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \Theta \\&lt;br /&gt;
  \rho_v \\ &lt;br /&gt;
  \rho_c \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \qquad \Rightarrow&lt;br /&gt;
  \boldsymbol{\tau} = \mathbf{X} \cdot \mathbf{p}&lt;br /&gt;
  \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One solution of this system of equations can be obtained by using the pseudoinverse of &amp;lt;math&amp;gt;\mathbf{X}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \mathbf{p} = \left ( \mathbf{X}^T \cdot \mathbf{X} \right )^{-1} \cdot \mathbf{X}^T \cdot \boldsymbol{\tau}&lt;br /&gt;
  \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo identify joint parameters ==&lt;br /&gt;
&lt;br /&gt;
# Use AF function [[CNT:AF:IDM IdentParamsJoint|IDM_IdentParamsJoint]] to move an identification profile and create a record.&lt;br /&gt;
# Process the obtained record with the [[Control:aico.motionAnalyzer|aico.motionAnalyser]] function ''joint_identDynamics''.&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:Motion Dynamics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification/Verification&amp;diff=112423</id>
		<title>AXY:Basics of joint parameters identification/Verification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification/Verification&amp;diff=112423"/>
				<updated>2012-12-24T13:17:19Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Basics of joint parameters identification/Verification to AXY:Basics of joint parameters identification/Verification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Basics of joint parameters identification - Verification.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a comparison between recorded torque feedback and torque computed using the identified parameters.&lt;br /&gt;
&lt;br /&gt;
== Repeatability of parameter identification ==&lt;br /&gt;
&lt;br /&gt;
For testing the repeatability of implemented parameter identification algorithm the parameters of joint 2 (DR1200-4S) are identified several times consecutively.&lt;br /&gt;
At the beginning of all measurements the joint is already in operating temperature.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|'''Measurement	'''&lt;br /&gt;
|&amp;lt;math&amp;gt;\Theta_{AB}&amp;lt;/math&amp;gt;	&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt;	&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;l_{AB}m_{AB}g&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|1	&lt;br /&gt;
|0,1344732	&lt;br /&gt;
|0,3389793	&lt;br /&gt;
|3,8477142	&lt;br /&gt;
|2,0104706&lt;br /&gt;
|-&lt;br /&gt;
|2	&lt;br /&gt;
|0,1345419	&lt;br /&gt;
|0,3383904	&lt;br /&gt;
|3,8244827	&lt;br /&gt;
|2,0297676&lt;br /&gt;
|-&lt;br /&gt;
|3	&lt;br /&gt;
|0,1345093	&lt;br /&gt;
|0,3334403	&lt;br /&gt;
|3,8569023	&lt;br /&gt;
|2,0208896&lt;br /&gt;
|-&lt;br /&gt;
|4	&lt;br /&gt;
|0,1345672	&lt;br /&gt;
|0,3398903	&lt;br /&gt;
|3,7731432	&lt;br /&gt;
|2,0273873&lt;br /&gt;
|-&lt;br /&gt;
|5	&lt;br /&gt;
|0,1345354	&lt;br /&gt;
|0,3346488	&lt;br /&gt;
|3,7522782	&lt;br /&gt;
|2,0209898&lt;br /&gt;
|-&lt;br /&gt;
|6	&lt;br /&gt;
|0,1345903	&lt;br /&gt;
|0,3314771	&lt;br /&gt;
|3,7464159	&lt;br /&gt;
|2,0335845&lt;br /&gt;
|-&lt;br /&gt;
|7	&lt;br /&gt;
|0,1346014	&lt;br /&gt;
|0,3246576	&lt;br /&gt;
|3,7571930	&lt;br /&gt;
|2,0183868&lt;br /&gt;
|-&lt;br /&gt;
|8	&lt;br /&gt;
|0,1346407	&lt;br /&gt;
|0,3281108	&lt;br /&gt;
|3,7361262	&lt;br /&gt;
|2,0274325&lt;br /&gt;
|-&lt;br /&gt;
|9	&lt;br /&gt;
|0,1345969&lt;br /&gt;
|0,3239006	&lt;br /&gt;
|3,7094229	&lt;br /&gt;
|2,0246346&lt;br /&gt;
|-&lt;br /&gt;
|10	&lt;br /&gt;
|0,1346543	&lt;br /&gt;
|0,3223137	&lt;br /&gt;
|3,7282359	&lt;br /&gt;
|2,0401946&lt;br /&gt;
|-&lt;br /&gt;
|'''Average'''&lt;br /&gt;
|0,1345711&lt;br /&gt;
|0,3315809&lt;br /&gt;
|3,7731915&lt;br /&gt;
|2,0253738&lt;br /&gt;
|-&lt;br /&gt;
|'''Mean variation'''	&lt;br /&gt;
|'''0,13%'''&lt;br /&gt;
|'''5,30%'''&lt;br /&gt;
|'''3,91%'''&lt;br /&gt;
|'''1,47%'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
As can be seen in the table all parameters can be reproducibly identified.&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112420</id>
		<title>AXY:Basics of joint parameters identification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112420"/>
				<updated>2012-12-24T13:17:18Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: Arwiebe moved page CNT:Basics of joint parameters identification to AXY:Basics of joint parameters identification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model based control can bring great benefit to robot control, but it requires exact model parameters.&lt;br /&gt;
This document describes how these parameters can be identified (automatically).&lt;br /&gt;
&lt;br /&gt;
== Record identification motion profile ==&lt;br /&gt;
&lt;br /&gt;
The motion profile should provoke all motion states described by the model. &lt;br /&gt;
Ideally it should move over the whole position range of the joint, have plenty accelerations/decelerations and have different constant velocity phases.&lt;br /&gt;
&lt;br /&gt;
The recorded file must contain the position feedback along with the torque feedback.&lt;br /&gt;
&lt;br /&gt;
== Derivative without phase shift ==&lt;br /&gt;
&lt;br /&gt;
For parameter identification joint velocity and acceleration is needed. &lt;br /&gt;
Standard numeric derivative of position feedback leads to phase shift, which impairs the identification.&lt;br /&gt;
To avoid the phase shift interpolated derivative should be used instead.&lt;br /&gt;
Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken.&lt;br /&gt;
&lt;br /&gt;
Interpolated derivative is implemented in [[Control:aico.motionAnalyzer|aico.motionAnalyser]] by the function [[signal_deriveInterp]].&lt;br /&gt;
&lt;br /&gt;
== Mathematical derivation ==&lt;br /&gt;
&lt;br /&gt;
In a simple case an actuating joint can be described with the following motion equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \tau = \Theta \cdot \ddot{x} + \rho_v \cdot \dot{x} + \rho_c \cdot sign(\dot{x})&lt;br /&gt;
  \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the symbols are:&lt;br /&gt;
:{| &lt;br /&gt;
|&amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt;&lt;br /&gt;
|Torque (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\dot{x}, \ddot{x}&amp;lt;/math&amp;gt;&lt;br /&gt;
|Velocity and acceleration (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;&lt;br /&gt;
|Moment of inertia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt;&lt;br /&gt;
|Viscous friction coefficient&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;&lt;br /&gt;
|Coulomb friction coefficient&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is assumed that the joints position, velocity and acceleration feedbacks together with the torque feedback are known (recorded).&lt;br /&gt;
The unknown model parameters are &amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The recorded value tuples can be represented as a over-determined linear equation system:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
 \begin{array}{lcl}&lt;br /&gt;
 \tau_1  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_1 + \rho_v \cdot \dot{x}_1 + \rho_c \cdot sign(\dot{x}_1) \\&lt;br /&gt;
 \tau_2  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_2 + \rho_v \cdot \dot{x}_2 + \rho_c \cdot sign(\dot{x}_2) \\&lt;br /&gt;
 \tau_3  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_3 + \rho_v \cdot \dot{x}_3 + \rho_c \cdot sign(\dot{x}_3) \\&lt;br /&gt;
         &amp;amp;   &amp;amp;                                     \vdots                                       \\&lt;br /&gt;
 \tau_n  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_n + \rho_v \cdot \dot{x}_n + \rho_c \cdot sign(\dot{x}_n) \\&lt;br /&gt;
 \end{array}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These n equations can also be written as a single matrix equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \tau_1 \\&lt;br /&gt;
  \tau_2 \\ &lt;br /&gt;
  \tau_3 \\&lt;br /&gt;
  \vdots \\&lt;br /&gt;
  \tau_n &lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \ddot{x}_1  &amp;amp;  \dot{x}_1  &amp;amp;  sign(\dot{x}_1) \\&lt;br /&gt;
  \ddot{x}_2  &amp;amp;  \dot{x}_2  &amp;amp;  sign(\dot{x}_2) \\&lt;br /&gt;
  \ddot{x}_3  &amp;amp;  \dot{x}_3  &amp;amp;  sign(\dot{x}_3) \\&lt;br /&gt;
  \vdots      &amp;amp;  \vdots     &amp;amp;  \vdots          \\&lt;br /&gt;
  \ddot{x}_n  &amp;amp;  \dot{x}_n  &amp;amp;  sign(\dot{x}_n) \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \Theta \\&lt;br /&gt;
  \rho_v \\ &lt;br /&gt;
  \rho_c \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \qquad \Rightarrow&lt;br /&gt;
  \boldsymbol{\tau} = \mathbf{X} \cdot \mathbf{p}&lt;br /&gt;
  \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One solution of this system of equations can be obtained by using the pseudoinverse of &amp;lt;math&amp;gt;\mathbf{X}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \mathbf{p} = \left ( \mathbf{X}^T \cdot \mathbf{X} \right )^{-1} \cdot \mathbf{X}^T \cdot \boldsymbol{\tau}&lt;br /&gt;
  \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo identify joint parameters ==&lt;br /&gt;
&lt;br /&gt;
# Use AF function [[CNT:AF:IDM IdentParamsJoint|IDM_IdentParamsJoint]] to move an identification profile and create a record.&lt;br /&gt;
# Process the obtained record with the [[Control:aico.motionAnalyzer|aico.motionAnalyser]] function ''joint_identDynamics''.&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Control:Model Based Control (IDM)]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112419</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112419"/>
				<updated>2012-12-24T12:28:52Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;100&amp;quot; ns-int-name=&amp;quot;CNT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;118&amp;quot; ns-pub-name=&amp;quot;Control&amp;quot;        &lt;br /&gt;
        right-read=&amp;quot;CONTROL_R&amp;quot; right-edit=&amp;quot;CONTROL_E&amp;quot; right-create=&amp;quot;CONTROL_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112418</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112418"/>
				<updated>2012-12-24T11:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;100&amp;quot; ns-int-name=&amp;quot;CNT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;118&amp;quot; ns-pub-name=&amp;quot;Control&amp;quot;        &lt;br /&gt;
        right-read=&amp;quot;CONTROL_R&amp;quot; right-edit=&amp;quot;CONTROL_E&amp;quot; right-create=&amp;quot;CONTROL_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;102&amp;quot; ns-int-name=&amp;quot;DRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;120&amp;quot; ns-pub-name=&amp;quot;Mechatronics&amp;quot;   &lt;br /&gt;
        right-read=&amp;quot;MECHATRONICS_R&amp;quot; right-edit=&amp;quot;MECHATRONICS_E&amp;quot; right-create=&amp;quot;MECHATRONICS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;106&amp;quot; ns-int-name=&amp;quot;SRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;124&amp;quot; ns-pub-name=&amp;quot;Service&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;SERVICE_R&amp;quot; right-edit=&amp;quot;SERVICE_E&amp;quot; right-create=&amp;quot;SERVICE_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;108&amp;quot; ns-int-name=&amp;quot;STP&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;126&amp;quot; ns-pub-name=&amp;quot;Commissioning&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;COMMISSIONING_R&amp;quot; right-edit=&amp;quot;COMMISSIONING_E&amp;quot; right-create=&amp;quot;COMMISSIONING_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;110&amp;quot; ns-int-name=&amp;quot;VIW&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;128&amp;quot; ns-pub-name=&amp;quot;View&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;VIEW_R&amp;quot; right-edit=&amp;quot;VIEW_E&amp;quot; right-create=&amp;quot;VIEW_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;114&amp;quot; ns-int-name=&amp;quot;DOC&amp;quot; &lt;br /&gt;
        ns-pub=&amp;quot;138&amp;quot; ns-pub-name=&amp;quot;Documentation&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;DOCUMENTATION_R&amp;quot; right-edit=&amp;quot;DOCUMENTATION_E&amp;quot; right-create=&amp;quot;DOCUMENTATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;116&amp;quot; ns-int-name=&amp;quot;MET&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;132&amp;quot; ns-pub-name=&amp;quot;Metrology&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METROLOGY_R&amp;quot; right-edit=&amp;quot;METROLOGY_E&amp;quot; right-create=&amp;quot;METROLOGY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;134&amp;quot; ns-int-name=&amp;quot;PCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;136&amp;quot; ns-pub-name=&amp;quot;Process.cSi&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;PROCESS_CSI_R&amp;quot; right-edit=&amp;quot;PROCESS_CSI_E&amp;quot; right-create=&amp;quot;PROCESS_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;204&amp;quot; ns-pub-name=&amp;quot;Equipment&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112417</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112417"/>
				<updated>2012-12-24T11:43:04Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;100&amp;quot; ns-int-name=&amp;quot;CNT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;118&amp;quot; ns-pub-name=&amp;quot;Control&amp;quot;        &lt;br /&gt;
        right-read=&amp;quot;CONTROL_R&amp;quot; right-edit=&amp;quot;CONTROL_E&amp;quot; right-create=&amp;quot;CONTROL_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;102&amp;quot; ns-int-name=&amp;quot;DRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;120&amp;quot; ns-pub-name=&amp;quot;Mechatronics&amp;quot;   &lt;br /&gt;
        right-read=&amp;quot;MECHATRONICS_R&amp;quot; right-edit=&amp;quot;MECHATRONICS_E&amp;quot; right-create=&amp;quot;MECHATRONICS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;106&amp;quot; ns-int-name=&amp;quot;SRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;124&amp;quot; ns-pub-name=&amp;quot;Service&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;SERVICE_R&amp;quot; right-edit=&amp;quot;SERVICE_E&amp;quot; right-create=&amp;quot;SERVICE_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;108&amp;quot; ns-int-name=&amp;quot;STP&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;126&amp;quot; ns-pub-name=&amp;quot;Commissioning&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;COMMISSIONING_R&amp;quot; right-edit=&amp;quot;COMMISSIONING_E&amp;quot; right-create=&amp;quot;COMMISSIONING_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;110&amp;quot; ns-int-name=&amp;quot;VIW&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;128&amp;quot; ns-pub-name=&amp;quot;View&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;VIEW_R&amp;quot; right-edit=&amp;quot;VIEW_E&amp;quot; right-create=&amp;quot;VIEW_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;114&amp;quot; ns-int-name=&amp;quot;DOC&amp;quot; &lt;br /&gt;
        ns-pub=&amp;quot;138&amp;quot; ns-pub-name=&amp;quot;Documentation&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;DOCUMENTATION_R&amp;quot; right-edit=&amp;quot;DOCUMENTATION_E&amp;quot; right-create=&amp;quot;DOCUMENTATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;116&amp;quot; ns-int-name=&amp;quot;MET&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;132&amp;quot; ns-pub-name=&amp;quot;Metrology&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METROLOGY_R&amp;quot; right-edit=&amp;quot;METROLOGY_E&amp;quot; right-create=&amp;quot;METROLOGY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;134&amp;quot; ns-int-name=&amp;quot;PCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;136&amp;quot; ns-pub-name=&amp;quot;Process.cSi&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;PROCESS_CSI_R&amp;quot; right-edit=&amp;quot;PROCESS_CSI_E&amp;quot; right-create=&amp;quot;PROCESS_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;140&amp;quot; ns-int-name=&amp;quot;SMT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;142&amp;quot; ns-pub-name=&amp;quot;Metallization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METALLIZATION_R&amp;quot; right-edit=&amp;quot;METALLIZATION_E&amp;quot; right-create=&amp;quot;METALLIZATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;144&amp;quot; ns-int-name=&amp;quot;STD&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;146&amp;quot; ns-pub-name=&amp;quot;Standardization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;STANDARD_R&amp;quot; right-edit=&amp;quot;STANDARD_E&amp;quot; right-create=&amp;quot;STANDARD_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;204&amp;quot; ns-pub-name=&amp;quot;Equipment&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112416</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112416"/>
				<updated>2012-12-24T11:33:39Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;100&amp;quot; ns-int-name=&amp;quot;CNT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;118&amp;quot; ns-pub-name=&amp;quot;Control&amp;quot;        &lt;br /&gt;
        right-read=&amp;quot;CONTROL_R&amp;quot; right-edit=&amp;quot;CONTROL_E&amp;quot; right-create=&amp;quot;CONTROL_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;102&amp;quot; ns-int-name=&amp;quot;DRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;120&amp;quot; ns-pub-name=&amp;quot;Mechatronics&amp;quot;   &lt;br /&gt;
        right-read=&amp;quot;MECHATRONICS_R&amp;quot; right-edit=&amp;quot;MECHATRONICS_E&amp;quot; right-create=&amp;quot;MECHATRONICS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;106&amp;quot; ns-int-name=&amp;quot;SRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;124&amp;quot; ns-pub-name=&amp;quot;Service&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;SERVICE_R&amp;quot; right-edit=&amp;quot;SERVICE_E&amp;quot; right-create=&amp;quot;SERVICE_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;108&amp;quot; ns-int-name=&amp;quot;STP&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;126&amp;quot; ns-pub-name=&amp;quot;Commissioning&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;COMMISSIONING_R&amp;quot; right-edit=&amp;quot;COMMISSIONING_E&amp;quot; right-create=&amp;quot;COMMISSIONING_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;110&amp;quot; ns-int-name=&amp;quot;VIW&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;128&amp;quot; ns-pub-name=&amp;quot;View&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;VIEW_R&amp;quot; right-edit=&amp;quot;VIEW_E&amp;quot; right-create=&amp;quot;VIEW_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;114&amp;quot; ns-int-name=&amp;quot;DOC&amp;quot; &lt;br /&gt;
        ns-pub=&amp;quot;138&amp;quot; ns-pub-name=&amp;quot;Documentation&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;DOCUMENTATION_R&amp;quot; right-edit=&amp;quot;DOCUMENTATION_E&amp;quot; right-create=&amp;quot;DOCUMENTATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;116&amp;quot; ns-int-name=&amp;quot;MET&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;132&amp;quot; ns-pub-name=&amp;quot;Metrology&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METROLOGY_R&amp;quot; right-edit=&amp;quot;METROLOGY_E&amp;quot; right-create=&amp;quot;METROLOGY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;134&amp;quot; ns-int-name=&amp;quot;PCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;136&amp;quot; ns-pub-name=&amp;quot;Process.cSi&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;PROCESS_CSI_R&amp;quot; right-edit=&amp;quot;PROCESS_CSI_E&amp;quot; right-create=&amp;quot;PROCESS_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;140&amp;quot; ns-int-name=&amp;quot;SMT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;142&amp;quot; ns-pub-name=&amp;quot;Metallization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METALLIZATION_R&amp;quot; right-edit=&amp;quot;METALLIZATION_E&amp;quot; right-create=&amp;quot;METALLIZATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;144&amp;quot; ns-int-name=&amp;quot;STD&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;146&amp;quot; ns-pub-name=&amp;quot;Standardization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;STANDARD_R&amp;quot; right-edit=&amp;quot;STANDARD_E&amp;quot; right-create=&amp;quot;STANDARD_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;148&amp;quot; ns-int-name=&amp;quot;HCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;150&amp;quot; ns-pub-name=&amp;quot;cSi.solar.handling&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;HANDLING_CSI_R&amp;quot; right-edit=&amp;quot;HANDLING_CSI_E&amp;quot; right-create=&amp;quot;HANDLING_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;152&amp;quot; ns-int-name=&amp;quot;TCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;154&amp;quot; ns-pub-name=&amp;quot;cSi.solar.testing&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;TESTING_CSI_R&amp;quot; right-edit=&amp;quot;TESTING_CSI_E&amp;quot; right-create=&amp;quot;TESTING_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;156&amp;quot; ns-int-name=&amp;quot;PLM&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;158&amp;quot; ns-pub-name=&amp;quot;CAD-PLM&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;CAD_PLM_R&amp;quot; right-edit=&amp;quot;CAD_PLM_E&amp;quot; right-create=&amp;quot;CAD_PLM_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;160&amp;quot; ns-int-name=&amp;quot;WCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;162&amp;quot; ns-pub-name=&amp;quot;cSi.solar.wetchemistry&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;WETCHEM_CSI_R&amp;quot; right-edit=&amp;quot;WETCHEM_CSI_E&amp;quot; right-create=&amp;quot;WETCHEM_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;164&amp;quot; ns-int-name=&amp;quot;LCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;166&amp;quot; ns-pub-name=&amp;quot;cSi.solar.laser&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;LASER_CSI_R&amp;quot; right-edit=&amp;quot;LASER_CSI_E&amp;quot; right-create=&amp;quot;LASER_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;168&amp;quot; ns-int-name=&amp;quot;WikiAdmin&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;WIKIADMIN_R&amp;quot; right-edit=&amp;quot;WIKIADMIN_E&amp;quot; right-create=&amp;quot;WIKIADMIN_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;172&amp;quot; ns-int-name=&amp;quot;LIB&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;170&amp;quot; ns-pub-name=&amp;quot;Li-Ion.battery&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;LIION_BATTERY_R&amp;quot; right-edit=&amp;quot;LIION_BATTERY_E&amp;quot; right-create=&amp;quot;LIION_BATTERY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;204&amp;quot; ns-pub-name=&amp;quot;Equipment&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112415</id>
		<title>MediaWiki:Namespaces-admin</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Namespaces-admin&amp;diff=112415"/>
				<updated>2012-12-24T11:31:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- XML Structure Template:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;&amp;quot; ns-int-name=&amp;quot;&amp;quot; ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; right-read=&amp;quot;&amp;quot; right-edit=&amp;quot;&amp;quot; right-create=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
* ns must be only EVEN and unique numbers&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;100&amp;quot; ns-int-name=&amp;quot;CNT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;118&amp;quot; ns-pub-name=&amp;quot;Control&amp;quot;        &lt;br /&gt;
        right-read=&amp;quot;CONTROL_R&amp;quot; right-edit=&amp;quot;CONTROL_E&amp;quot; right-create=&amp;quot;CONTROL_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;102&amp;quot; ns-int-name=&amp;quot;DRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;120&amp;quot; ns-pub-name=&amp;quot;Mechatronics&amp;quot;   &lt;br /&gt;
        right-read=&amp;quot;MECHATRONICS_R&amp;quot; right-edit=&amp;quot;MECHATRONICS_E&amp;quot; right-create=&amp;quot;MECHATRONICS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;104&amp;quot; ns-int-name=&amp;quot;AXY&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;122&amp;quot; ns-pub-name=&amp;quot;Axystems&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;AXYSTEMS_R&amp;quot; right-edit=&amp;quot;AXYSTEMS_E&amp;quot; right-create=&amp;quot;AXYSTEMS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;106&amp;quot; ns-int-name=&amp;quot;SRV&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;124&amp;quot; ns-pub-name=&amp;quot;Service&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;SERVICE_R&amp;quot; right-edit=&amp;quot;SERVICE_E&amp;quot; right-create=&amp;quot;SERVICE_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;108&amp;quot; ns-int-name=&amp;quot;STP&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;126&amp;quot; ns-pub-name=&amp;quot;Commissioning&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;COMMISSIONING_R&amp;quot; right-edit=&amp;quot;COMMISSIONING_E&amp;quot; right-create=&amp;quot;COMMISSIONING_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;110&amp;quot; ns-int-name=&amp;quot;VIW&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;128&amp;quot; ns-pub-name=&amp;quot;View&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;VIEW_R&amp;quot; right-edit=&amp;quot;VIEW_E&amp;quot; right-create=&amp;quot;VIEW_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;114&amp;quot; ns-int-name=&amp;quot;DOC&amp;quot; &lt;br /&gt;
        ns-pub=&amp;quot;138&amp;quot; ns-pub-name=&amp;quot;Documentation&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;DOCUMENTATION_R&amp;quot; right-edit=&amp;quot;DOCUMENTATION_E&amp;quot; right-create=&amp;quot;DOCUMENTATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;116&amp;quot; ns-int-name=&amp;quot;MET&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;132&amp;quot; ns-pub-name=&amp;quot;Metrology&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METROLOGY_R&amp;quot; right-edit=&amp;quot;METROLOGY_E&amp;quot; right-create=&amp;quot;METROLOGY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;134&amp;quot; ns-int-name=&amp;quot;PCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;136&amp;quot; ns-pub-name=&amp;quot;Process.cSi&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;PROCESS_CSI_R&amp;quot; right-edit=&amp;quot;PROCESS_CSI_E&amp;quot; right-create=&amp;quot;PROCESS_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;140&amp;quot; ns-int-name=&amp;quot;SMT&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;142&amp;quot; ns-pub-name=&amp;quot;Metallization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;METALLIZATION_R&amp;quot; right-edit=&amp;quot;METALLIZATION_E&amp;quot; right-create=&amp;quot;METALLIZATION_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;144&amp;quot; ns-int-name=&amp;quot;STD&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;146&amp;quot; ns-pub-name=&amp;quot;Standardization&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;STANDARD_R&amp;quot; right-edit=&amp;quot;STANDARD_E&amp;quot; right-create=&amp;quot;STANDARD_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;148&amp;quot; ns-int-name=&amp;quot;HCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;150&amp;quot; ns-pub-name=&amp;quot;cSi.solar.handling&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;HANDLING_CSI_R&amp;quot; right-edit=&amp;quot;HANDLING_CSI_E&amp;quot; right-create=&amp;quot;HANDLING_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;152&amp;quot; ns-int-name=&amp;quot;TCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;154&amp;quot; ns-pub-name=&amp;quot;cSi.solar.testing&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;TESTING_CSI_R&amp;quot; right-edit=&amp;quot;TESTING_CSI_E&amp;quot; right-create=&amp;quot;TESTING_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;156&amp;quot; ns-int-name=&amp;quot;PLM&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;158&amp;quot; ns-pub-name=&amp;quot;CAD-PLM&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;CAD_PLM_R&amp;quot; right-edit=&amp;quot;CAD_PLM_E&amp;quot; right-create=&amp;quot;CAD_PLM_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;160&amp;quot; ns-int-name=&amp;quot;WCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;162&amp;quot; ns-pub-name=&amp;quot;cSi.solar.wetchemistry&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;WETCHEM_CSI_R&amp;quot; right-edit=&amp;quot;WETCHEM_CSI_E&amp;quot; right-create=&amp;quot;WETCHEM_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;164&amp;quot; ns-int-name=&amp;quot;LCS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;166&amp;quot; ns-pub-name=&amp;quot;cSi.solar.laser&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;LASER_CSI_R&amp;quot; right-edit=&amp;quot;LASER_CSI_E&amp;quot; right-create=&amp;quot;LASER_CSI_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;168&amp;quot; ns-int-name=&amp;quot;WikiAdmin&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;&amp;quot; ns-pub-name=&amp;quot;&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;WIKIADMIN_R&amp;quot; right-edit=&amp;quot;WIKIADMIN_E&amp;quot; right-create=&amp;quot;WIKIADMIN_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;172&amp;quot; ns-int-name=&amp;quot;LIB&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;170&amp;quot; ns-pub-name=&amp;quot;Li-Ion.battery&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;LIION_BATTERY_R&amp;quot; right-edit=&amp;quot;LIION_BATTERY_E&amp;quot; right-create=&amp;quot;LIION_BATTERY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;174&amp;quot; ns-int-name=&amp;quot;QAI&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;176&amp;quot; ns-pub-name=&amp;quot;Quality&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;QUALITY_R&amp;quot; right-edit=&amp;quot;QUALITY_E&amp;quot; right-create=&amp;quot;QUALITY_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-int=&amp;quot;178&amp;quot; ns-int-name=&amp;quot;TFS&amp;quot;  &lt;br /&gt;
        ns-pub=&amp;quot;180&amp;quot; ns-pub-name=&amp;quot;ThinFilmSolar&amp;quot; &lt;br /&gt;
        right-read=&amp;quot;TFS_R&amp;quot; right-edit=&amp;quot;TFS_E&amp;quot; right-create=&amp;quot;TFS_C&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;200&amp;quot; ns-pub-name=&amp;quot;News&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;unit ns-pub=&amp;quot;204&amp;quot; ns-pub-name=&amp;quot;Equipment&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=SoftMC-Wiki:Welcome&amp;diff=112414</id>
		<title>SoftMC-Wiki:Welcome</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=SoftMC-Wiki:Welcome&amp;diff=112414"/>
				<updated>2012-12-23T11:57:09Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ManzWiki;Welcome.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
{{Axy-Wiki:News}}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Mainpage&amp;diff=112413</id>
		<title>MediaWiki:Mainpage</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Mainpage&amp;diff=112413"/>
				<updated>2012-12-23T11:56:41Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Axy-Wiki:Welcome&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Sidebar&amp;diff=112412</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Sidebar&amp;diff=112412"/>
				<updated>2012-12-23T11:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Axy-Wiki&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** helppage|help&lt;br /&gt;
** Category:News|News&lt;br /&gt;
** Special:Statistics|Statistics&lt;br /&gt;
* navigation&lt;br /&gt;
** Control:aico.control|aico.control&lt;br /&gt;
** Mechatronics:aico.drive&amp;amp;robot|aico.drive&amp;amp;robot&lt;br /&gt;
** Metrology:aico.metrology|aico.metrology&lt;br /&gt;
** View:aico.view|aico.view&lt;br /&gt;
** Quality:aico.QA|aico.QA&lt;br /&gt;
** cSi.solar.handling:Main|cSi solar handling&lt;br /&gt;
** cSi.solar.testing:Main|cSi solar testing&lt;br /&gt;
** cSi.solar.laser:Main|cSi solar laser&lt;br /&gt;
** Metallization:Main|cSi solar metallization&lt;br /&gt;
** cSi.solar.wetchemistry:Main|cSi solar wetchemistry&lt;br /&gt;
** Process.cSi:Contents|cSi solar process&lt;br /&gt;
** Li-Ion.battery:Main|Li-Ion battery&lt;br /&gt;
** ThinFilmSolar:Main|ThinFilm Solar&lt;br /&gt;
** CAD-PLM:Main|CAD-PLM&lt;br /&gt;
** Category:Commissioning|Commissioning&lt;br /&gt;
** Category:Service|Service&lt;br /&gt;
** Standardization:Main|Standardization&lt;br /&gt;
** Documentation:Main|Customer Documentation&lt;br /&gt;
** Training:Main|Technical Training&lt;br /&gt;
** Category:Equipment|Equipment&lt;br /&gt;
* external links&lt;br /&gt;
** BugZilla|BugZilla&lt;br /&gt;
* TOOLBOX&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112267</id>
		<title>AXY:Basics of joint parameters identification</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=AXY:Basics_of_joint_parameters_identification&amp;diff=112267"/>
				<updated>2012-12-16T13:45:35Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model based control can bring great benefit to robot control, but it requires exact model parameters.&lt;br /&gt;
This document describes how these parameters can be identified (automatically).&lt;br /&gt;
&lt;br /&gt;
== Record identification motion profile ==&lt;br /&gt;
&lt;br /&gt;
The motion profile should provoke all motion states described by the model. &lt;br /&gt;
Ideally it should move over the whole position range of the joint, have plenty accelerations/decelerations and have different constant velocity phases.&lt;br /&gt;
&lt;br /&gt;
The recorded file must contain the position feedback along with the torque feedback.&lt;br /&gt;
&lt;br /&gt;
== Derivative without phase shift ==&lt;br /&gt;
&lt;br /&gt;
For parameter identification joint velocity and acceleration is needed. &lt;br /&gt;
Standard numeric derivative of position feedback leads to phase shift, which impairs the identification.&lt;br /&gt;
To avoid the phase shift interpolated derivative should be used instead.&lt;br /&gt;
Hereby the numeric derivative is spline-interpolated and values at original sampling times are taken.&lt;br /&gt;
&lt;br /&gt;
Interpolated derivative is implemented in [[Control:aico.motionAnalyzer|aico.motionAnalyser]] by the function [[signal_deriveInterp]].&lt;br /&gt;
&lt;br /&gt;
== Mathematical derivation ==&lt;br /&gt;
&lt;br /&gt;
In a simple case an actuating joint can be described with the following motion equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \tau = \Theta \cdot \ddot{x} + \rho_v \cdot \dot{x} + \rho_c \cdot sign(\dot{x})&lt;br /&gt;
  \qquad \mathrm{(1)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the symbols are:&lt;br /&gt;
:{| &lt;br /&gt;
|&amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt;&lt;br /&gt;
|Torque (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\dot{x}, \ddot{x}&amp;lt;/math&amp;gt;&lt;br /&gt;
|Velocity and acceleration (feedback)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;&lt;br /&gt;
|Moment of inertia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt;&lt;br /&gt;
|Viscous friction coefficient&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;&lt;br /&gt;
|Coulomb friction coefficient&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is assumed that the joints position, velocity and acceleration feedbacks together with the torque feedback are known (recorded).&lt;br /&gt;
The unknown model parameters are &amp;lt;math&amp;gt;\Theta&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\rho_v&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\rho_c&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The recorded value tuples can be represented as a over-determined linear equation system:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
 \begin{array}{lcl}&lt;br /&gt;
 \tau_1  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_1 + \rho_v \cdot \dot{x}_1 + \rho_c \cdot sign(\dot{x}_1) \\&lt;br /&gt;
 \tau_2  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_2 + \rho_v \cdot \dot{x}_2 + \rho_c \cdot sign(\dot{x}_2) \\&lt;br /&gt;
 \tau_3  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_3 + \rho_v \cdot \dot{x}_3 + \rho_c \cdot sign(\dot{x}_3) \\&lt;br /&gt;
         &amp;amp;   &amp;amp;                                     \vdots                                       \\&lt;br /&gt;
 \tau_n  &amp;amp; = &amp;amp;  \Theta \cdot \ddot{x}_n + \rho_v \cdot \dot{x}_n + \rho_c \cdot sign(\dot{x}_n) \\&lt;br /&gt;
 \end{array}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These n equations can also be written as a single matrix equation:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \tau_1 \\&lt;br /&gt;
  \tau_2 \\ &lt;br /&gt;
  \tau_3 \\&lt;br /&gt;
  \vdots \\&lt;br /&gt;
  \tau_n &lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  =&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \ddot{x}_1  &amp;amp;  \dot{x}_1  &amp;amp;  sign(\dot{x}_1) \\&lt;br /&gt;
  \ddot{x}_2  &amp;amp;  \dot{x}_2  &amp;amp;  sign(\dot{x}_2) \\&lt;br /&gt;
  \ddot{x}_3  &amp;amp;  \dot{x}_3  &amp;amp;  sign(\dot{x}_3) \\&lt;br /&gt;
  \vdots      &amp;amp;  \vdots     &amp;amp;  \vdots          \\&lt;br /&gt;
  \ddot{x}_n  &amp;amp;  \dot{x}_n  &amp;amp;  sign(\dot{x}_n) \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \cdot&lt;br /&gt;
  \begin{bmatrix}&lt;br /&gt;
  \Theta \\&lt;br /&gt;
  \rho_v \\ &lt;br /&gt;
  \rho_c \\&lt;br /&gt;
  \end{bmatrix}&lt;br /&gt;
  \qquad \Rightarrow&lt;br /&gt;
  \boldsymbol{\tau} = \mathbf{X} \cdot \mathbf{p}&lt;br /&gt;
  \qquad \mathrm{(2)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One solution of this system of equations can be obtained by using the pseudoinverse of &amp;lt;math&amp;gt;\mathbf{X}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
  \mathbf{p} = \left ( \mathbf{X}^T \cdot \mathbf{X} \right )^{-1} \cdot \mathbf{X}^T \cdot \boldsymbol{\tau}&lt;br /&gt;
  \qquad \mathrm{(3)}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HowTo identify joint parameters ==&lt;br /&gt;
&lt;br /&gt;
# Use AF function [[CNT:AF:IDM IdentParamsJoint|IDM_IdentParamsJoint]] to move an identification profile and create a record.&lt;br /&gt;
# Process the obtained record with the [[Control:aico.motionAnalyzer|aico.motionAnalyser]] function ''joint_identDynamics''.&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
See [[/Verification|verification page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Control:Model Based Control (IDM)]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111207</id>
		<title>MC-Basic:PlcMotionStatusQuery</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111207"/>
				<updated>2012-11-19T15:13:59Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: removed settling state&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
Print PlcMotionStatusQuery(&amp;lt;''handle''&amp;gt;, &amp;lt;''index''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Queries variables of a PlcMotionStatus object.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''handle''&amp;gt;&lt;br /&gt;
Motion status handle which was returned by [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''index''&amp;gt;&lt;br /&gt;
* 1: Bits 0-3: Motion status&lt;br /&gt;
** 0: not initialized&lt;br /&gt;
** 1: precomputing (move command given)&lt;br /&gt;
** 2: moving - accelerating &lt;br /&gt;
** 3: moving - cruising (jog is in velocity)&lt;br /&gt;
** 4: moving - decelerating &lt;br /&gt;
** 5: done (target position reached)&lt;br /&gt;
** 6: aborted (motion aborted by another move command)&lt;br /&gt;
** 7: error (error during motion)&lt;br /&gt;
* 1: Bits 4-31: Reserved for future&lt;br /&gt;
* 2: Error code in case of the motion package is in state ''error''.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
* &amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: Long&lt;br /&gt;
* Return: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: 1, 2 .. &lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
* Read-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 100 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=111011</id>
		<title>MC-Basic:PlcMotionStatusDestroy</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=111011"/>
				<updated>2012-11-15T09:32:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
PlcMotionStatusDestroy(&amp;lt;''handle''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Destroys a PlcMotionStatus object and frees its memory.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
&amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 100 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusCreate&amp;diff=111010</id>
		<title>MC-Basic:PlcMotionStatusCreate</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusCreate&amp;diff=111010"/>
				<updated>2012-11-15T09:32:18Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
&amp;lt;''handle''&amp;gt; = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Creates a new PlcMotionStatus object and returns a pointer in memory to it.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 100 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:element.PlcMotionStatus&amp;diff=111009</id>
		<title>MC-Basic:element.PlcMotionStatus</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:element.PlcMotionStatus&amp;diff=111009"/>
				<updated>2012-11-15T09:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
&amp;lt;element&amp;gt;.PlcMotionStatus&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Transfers a pointer to the PlcMotionStatus object used to implement PLCOpen motion commands.&lt;br /&gt;
Used in:&lt;br /&gt;
* MOVE&lt;br /&gt;
* MOVES&lt;br /&gt;
* JOG&lt;br /&gt;
* TORQUE&lt;br /&gt;
* CIRCLE&lt;br /&gt;
* SINEWAVE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
Nodal-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 100 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111008</id>
		<title>MC-Basic:PlcMotionStatusQuery</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111008"/>
				<updated>2012-11-15T09:31:56Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
Print PlcMotionStatusQuery(&amp;lt;''handle''&amp;gt;, &amp;lt;''index''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Queries variables of a PlcMotionStatus object.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''handle''&amp;gt;&lt;br /&gt;
Motion status handle which was returned by [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''index''&amp;gt;&lt;br /&gt;
* 1: Bits 0-3: Motion status&lt;br /&gt;
** 0: not initialized&lt;br /&gt;
** 1: precomputing (move command given)&lt;br /&gt;
** 2: moving - accelerating &lt;br /&gt;
** 3: moving - cruising (jog is in velocity)&lt;br /&gt;
** 4: moving - decelerating &lt;br /&gt;
** 5: settling&lt;br /&gt;
** 6: done (target position reached)&lt;br /&gt;
** 7: aborted (motion aborted by another move command)&lt;br /&gt;
** 8: error (error during motion)&lt;br /&gt;
* 1: Bits 4-31: Reserved for future&lt;br /&gt;
* 2: Error code in case of the motion package is in state ''error''.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
* &amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: Long&lt;br /&gt;
* Return: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: 1, 2 .. &lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
* Read-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 100 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111007</id>
		<title>MC-Basic:PlcMotionStatusQuery</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111007"/>
				<updated>2012-11-15T09:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
Print PlcMotionStatusQuery(&amp;lt;''handle''&amp;gt;, &amp;lt;''index''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Queries variables of a PlcMotionStatus object.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''handle''&amp;gt;&lt;br /&gt;
Motion status handle which was returned by [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''index''&amp;gt;&lt;br /&gt;
* 1: Bits 0-3: Motion status&lt;br /&gt;
** 0: not initialized&lt;br /&gt;
** 1: precomputing (move command given)&lt;br /&gt;
** 2: moving - accelerating &lt;br /&gt;
** 3: moving - cruising (jog is in velocity)&lt;br /&gt;
** 4: moving - decelerating &lt;br /&gt;
** 5: settling&lt;br /&gt;
** 6: done (target position reached)&lt;br /&gt;
** 7: aborted (motion aborted by another move command)&lt;br /&gt;
** 8: error (error during motion)&lt;br /&gt;
* 1: Bits 4-31: Reserved for future&lt;br /&gt;
* 2: Error code in case of the motion package is in state ''error''.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
* &amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: Long&lt;br /&gt;
* Return: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: 1, 2 .. &lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
* Read-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=111006</id>
		<title>MC-Basic:PlcMotionStatusDestroy</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=111006"/>
				<updated>2012-11-15T09:03:15Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
PlcMotionStatusDestroy(&amp;lt;''handle''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Destroys a PlcMotionStatus object and frees its memory.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
&amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusCreate&amp;diff=111005</id>
		<title>MC-Basic:PlcMotionStatusCreate</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusCreate&amp;diff=111005"/>
				<updated>2012-11-15T09:03:06Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
&amp;lt;''handle''&amp;gt; = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Creates a new PlcMotionStatus object and returns a pointer in memory to it.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:element.PlcMotionStatus&amp;diff=111004</id>
		<title>MC-Basic:element.PlcMotionStatus</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:element.PlcMotionStatus&amp;diff=111004"/>
				<updated>2012-11-15T09:02:55Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
&amp;lt;element&amp;gt;.PlcMotionStatus&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Transfers a pointer to the PlcMotionStatus object used to implement PLCOpen motion commands.&lt;br /&gt;
Used in:&lt;br /&gt;
* MOVE&lt;br /&gt;
* MOVES&lt;br /&gt;
* JOG&lt;br /&gt;
* TORQUE&lt;br /&gt;
* CIRCLE&lt;br /&gt;
* SINEWAVE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
Nodal-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111003</id>
		<title>MC-Basic:PlcMotionStatusQuery</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusQuery&amp;diff=111003"/>
				<updated>2012-11-15T09:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
Print PlcMotionStatusQuery(&amp;lt;''handle''&amp;gt;, &amp;lt;''index''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Queries variables of a PlcMotionStatus object.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''handle''&amp;gt;&lt;br /&gt;
Motion status handle which was returned by [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;''index''&amp;gt;&lt;br /&gt;
* 1: Bits 0-3: Motion status&lt;br /&gt;
** 0: not initialized&lt;br /&gt;
** 1: precomputing (move command given)&lt;br /&gt;
** 2: moving - accelerating &lt;br /&gt;
** 3: moving - cruising (jog is in velocity)&lt;br /&gt;
** 4: moving - decelerating &lt;br /&gt;
** 5: settling&lt;br /&gt;
** 6: done (target position reached)&lt;br /&gt;
** 7: aborted (motion aborted by another move command)&lt;br /&gt;
** 8: error (error during motion)&lt;br /&gt;
* 2: Error code in case of the motion package is in state ''error''.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
* &amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: Long&lt;br /&gt;
* Return: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
* &amp;lt;''index''&amp;gt;: 1, 2 .. &lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
* Read-Only&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
while A1.isMoving&lt;br /&gt;
  sleep 100&lt;br /&gt;
  Print PlcMotionStatusQuery(MotStatHanlde, 1)&lt;br /&gt;
end while &lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusDestroy|PlcMotionStatusDestroy]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=110935</id>
		<title>MC-Basic:PlcMotionStatusDestroy</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:PlcMotionStatusDestroy&amp;diff=110935"/>
				<updated>2012-11-14T08:16:35Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
PlcMotionStatusDestroy(&amp;lt;''handle''&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
4.10.x&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Destroys a PlcMotionStatus object and frees its memory.&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
&amp;lt;''handle''&amp;gt;: Long&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dim MOT_READY as const long = 123&lt;br /&gt;
dim MotStatHanlde as long&lt;br /&gt;
&lt;br /&gt;
MotStatHanlde = PlcMotionStatusCreate&lt;br /&gt;
&lt;br /&gt;
Move A1 PlcMotionStatus= MotStatHanlde&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
  sleep 100&lt;br /&gt;
loop until PlcMotionStatusQuery(MotStatHanlde, MOT_READY)&lt;br /&gt;
&lt;br /&gt;
PlcMotionStatusDestroy(MotStatHanlde)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[AXY:MC-Basic:element.PlcMotionStatus|element.PlcMotionStatus]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusCreate|PlcMotionStatusCreate]]&lt;br /&gt;
* [[AXY:MC-Basic:PlcMotionStatusQuery|PlcMotionStatusQuery]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:PLC]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:axis.VelocityLimitTorqueMax&amp;diff=110707</id>
		<title>MC-Basic:axis.VelocityLimitTorqueMax</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:axis.VelocityLimitTorqueMax&amp;diff=110707"/>
				<updated>2012-11-12T12:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
''&amp;lt;axis&amp;gt;''.VlimTmax&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
?''&amp;lt;axis&amp;gt;''.TlimVmax &lt;br /&gt;
&lt;br /&gt;
''&amp;lt;axis&amp;gt;''.VlimTmax = ''&amp;lt;value&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
AMCS FW 4.9.10&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Setup the motor torque characteristics.&lt;br /&gt;
Highest velocity, at which [[Axystems:MC-Basic:axis.TorqueMax|Tmax]] still can be applied to the motor.&lt;br /&gt;
&lt;br /&gt;
[[File:Axystems;Motor Torque-Velocity Characteristics.png]]&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Double&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
mm/s, deg/s&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
1000 &lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with AX1&lt;br /&gt;
  Vmax      = 350&lt;br /&gt;
  Tmax      = 150&lt;br /&gt;
  VlimTmax  = 300&lt;br /&gt;
  TlimVmax  = 100&lt;br /&gt;
end with&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueMax|axis.TorqueMax]]&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueLimitVelocityMax|axis.TorqueLimitVelocityMax]]&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueLimit|axis.TorqueLimit]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:Motion Dynamics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MC-Basic:axis.VelocityLimitTorqueMax&amp;diff=110706</id>
		<title>MC-Basic:axis.VelocityLimitTorqueMax</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MC-Basic:axis.VelocityLimitTorqueMax&amp;diff=110706"/>
				<updated>2012-11-12T12:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MC-Basic&lt;br /&gt;
|SHORT FORM=&lt;br /&gt;
''&amp;lt;axis&amp;gt;''.VlimTmax&lt;br /&gt;
&lt;br /&gt;
|SYNTAX=&lt;br /&gt;
?''&amp;lt;axis&amp;gt;''.TlimVmax &lt;br /&gt;
&lt;br /&gt;
''&amp;lt;axis&amp;gt;''.VlimTmax = ''&amp;lt;value&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
|AVAILABILITY=&lt;br /&gt;
AMCS FW 4.9.10&lt;br /&gt;
&lt;br /&gt;
|DESCRIPTION=&lt;br /&gt;
Setup the motor torque characteristics.&lt;br /&gt;
Highest velocity, at which [[Axystems:MC-Basic:axis.TorqueMax|Tmax]] still can be applied to the motor.&lt;br /&gt;
&lt;br /&gt;
[[File:Axystems;Motor Torque-Velocity Characteristics.png]]&lt;br /&gt;
&lt;br /&gt;
|TYPE=&lt;br /&gt;
Double&lt;br /&gt;
&lt;br /&gt;
|RANGE=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|UNITS=&lt;br /&gt;
mm/s, deg/s&lt;br /&gt;
&lt;br /&gt;
|DEFAULT=&lt;br /&gt;
10000 &lt;br /&gt;
&lt;br /&gt;
|SCOPE=&lt;br /&gt;
Task or Terminal&lt;br /&gt;
&lt;br /&gt;
|LIMITATIONS=&lt;br /&gt;
&lt;br /&gt;
|EXAMPLE=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with AX1&lt;br /&gt;
  Vmax      = 350&lt;br /&gt;
  Tmax      = 150&lt;br /&gt;
  VlimTmax  = 300&lt;br /&gt;
  TlimVmax  = 100&lt;br /&gt;
end with&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|SEE ALSO=&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueMax|axis.TorqueMax]]&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueLimitVelocityMax|axis.TorqueLimitVelocityMax]]&lt;br /&gt;
* [[Axystems:MC-Basic:axis.TorqueLimit|axis.TorqueLimit]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Axystems:Motion Dynamics]]&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Edittools&amp;diff=110668</id>
		<title>MediaWiki:Edittools</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Edittools&amp;diff=110668"/>
				<updated>2012-11-11T08:19:22Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;!-- Text here will be shown below edit and upload forms. --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;my-buttons&amp;quot; id=&amp;quot;specialchars&amp;quot; style=&amp;quot;margin-top:10px;  border:1px solid #aaaaaa;  padding:1px;  text-align:center;  font-size:110%&amp;quot; title=&amp;quot;Click on the wanted special character.&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;= + =&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;== + ==&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;=== + ===&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;==== + ====&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;===== + =====&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;u&amp;gt;+&amp;lt;/u&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;s&amp;gt;+&amp;lt;/s&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;sub&amp;gt;+&amp;lt;/sub&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;big&amp;gt;+&amp;lt;/big&amp;gt;&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;pre&amp;gt;+&amp;lt;/pre&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;syntaxhighlight&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;lang=freebasic&amp;gt;+&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;syntaxhighlight&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;lang=iec61131-st&amp;gt;+&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;math&amp;gt;+&amp;lt;/math&amp;gt;&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;[+]&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;[[+]]&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;|+&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;[[Category:+]]&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;[[File:+]]&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;[[:Media:+]]&amp;lt;/charinsert&amp;gt; ·&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- + --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;{{Anchor|+}}&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;amp;rarr;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;amp;larr;&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{MC-Basic|+}}&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{Bugzilla|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{SAP|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{External-Media|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Anchor|+|anchor}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{noexport|+}}&amp;lt;/charinsert&amp;gt;.&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{Note|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Note/Important|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Note/Caution|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Note/Warning|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Note/Danger|+}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{Out-of-date}}&amp;lt;/charinsert&amp;gt;.&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{Category&amp;amp;#13;|description=+&amp;amp;#13;|frontpage=&amp;amp;#13;}}&amp;lt;/charinsert&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{|+&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;|&amp;amp;#43;+&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;!+&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;|-+&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;|+&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;|}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;{{!}}&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;&amp;lt;table&amp;gt;+&amp;lt;/table&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;tr&amp;gt;+&amp;lt;/tr&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;th&amp;gt;+&amp;lt;/th&amp;gt;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;td&amp;gt;+&amp;lt;/td&amp;gt;&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;border=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;width=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;cellpadding=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;cellspacing=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;colspan=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;rowspan=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;.&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;align=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;left&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;center&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;right&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;valign=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;top&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;middle&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;bottom&amp;lt;/charinsert&amp;gt;. &amp;lt;charinsert&amp;gt;style=&amp;quot;+&amp;quot;&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{{+}}}&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;+&lt;br /&gt;
&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;+&lt;br /&gt;
&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;{{#if:{{{+|}}}|}}&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;{{#ifexist:+|}}&amp;lt;/charinsert&amp;gt; ·&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{Template&amp;amp;#13;|description=&amp;amp;#13;|template=&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;amp;#13;|parameters=&amp;amp;#13;|operation=&amp;amp;#13;|examples=&amp;amp;#13;}}&amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;+&lt;br /&gt;
&amp;amp;#13;{{Assist&amp;amp;#13;|abstract=&amp;amp;#13;|description=&amp;amp;#13;|value=&amp;amp;#13;|default=&amp;amp;#13;|enumeration=&amp;amp;#13;|type=&amp;amp;#13;|range=&amp;amp;#13;|units=&amp;amp;#13;|added=&amp;amp;#13;|removed=&amp;amp;#13;|visibility=&amp;amp;#13;|errors=&amp;amp;#13;|warnings=&amp;amp;#13;|changes=&amp;amp;#13;|see also=&amp;amp;#13;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; · &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;{{Assist/Category}}&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt; ·&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;Boolean&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;Integer&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;Float&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;String&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;Class&amp;lt;/charinsert&amp;gt; . &amp;lt;charinsert&amp;gt;True&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;False&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;Blank&amp;lt;/charinsert&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;{{MC-Basic/ErrorCode|+|||||}}&amp;lt;/charinsert&amp;gt; &amp;lt;charinsert&amp;gt;{{MC-Basic/PredefinedConstant|+|||}}&amp;lt;/charinsert&amp;gt;&amp;lt;br/&amp;gt; &amp;lt;charinsert&amp;gt;&amp;lt;nowiki&amp;gt;{{MC-Basic&amp;amp;#13;|SHORT FORM=&amp;amp;#13;|SYNTAX=&amp;amp;#13;|AVAILABILITY=&amp;amp;#13;|DESCRIPTION=&amp;amp;#13;|TYPE=&amp;amp;#13;|RANGE=&amp;amp;#13;|UNITS=&amp;amp;#13;|DEFAULT=&amp;amp;#13;|SCOPE=&amp;amp;#13;|LIMITATIONS=&amp;amp;#13;|EXAMPLE=&amp;amp;#13;|SEE ALSO=&amp;amp;#13;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Common.css&amp;diff=110666</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Common.css&amp;diff=110666"/>
				<updated>2012-11-11T08:16:50Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* extra buttons for edit dialog (from commons:MediaWiki:Common.css) */&lt;br /&gt;
.my-buttons {&lt;br /&gt;
   padding: .5em;&lt;br /&gt;
}&lt;br /&gt;
.my-buttons a {&lt;br /&gt;
   color: black;&lt;br /&gt;
   background-color: #cde !important;&lt;br /&gt;
   font-weight: bold;&lt;br /&gt;
   font-size: .9em;&lt;br /&gt;
   text-decoration: none;&lt;br /&gt;
   border: thin #069 outset;&lt;br /&gt;
   padding: 0 .1em .1em;&lt;br /&gt;
}&lt;br /&gt;
.my-buttons a:hover, .my-buttons a:active {&lt;br /&gt;
   background-color: #bcd;&lt;br /&gt;
   border-style: inset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* narrower border */&lt;br /&gt;
pre {&lt;br /&gt;
  padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove talk page links */&lt;br /&gt;
#ca-talk, #pt-mytalk { display:none!important; }&lt;br /&gt;
&lt;br /&gt;
.firstHeading {&lt;br /&gt;
  font-weight: bold; &lt;br /&gt;
  margin-top:0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* H1 headings*/&lt;br /&gt;
h1 { &lt;br /&gt;
  clear:both;&lt;br /&gt;
  margin-top:25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* H2 headings*/&lt;br /&gt;
h2 { &lt;br /&gt;
  font-weight:normal; &lt;br /&gt;
  clear:both;&lt;br /&gt;
  margin-top:10px;&lt;br /&gt;
}&lt;br /&gt;
/* H3 headings in not bold*/&lt;br /&gt;
h3 { &lt;br /&gt;
  font-weight:normal; &lt;br /&gt;
}&lt;br /&gt;
/* H4 headings in italic */&lt;br /&gt;
h4 { &lt;br /&gt;
  font-style:italic; &lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110665</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110665"/>
				<updated>2012-11-11T08:14:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 0.5em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: medium;&lt;br /&gt;
  background-color: #f9f9f9;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110664</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110664"/>
				<updated>2012-11-11T08:14:08Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 0.5em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: medium;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110663</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110663"/>
				<updated>2012-11-11T08:13:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 0.3em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: medium;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110661</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110661"/>
				<updated>2012-11-11T08:12:15Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 1em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: medium;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110660</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110660"/>
				<updated>2012-11-11T08:10:40Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 1em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: 1.9em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110659</id>
		<title>MediaWiki:Geshi.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Geshi.css&amp;diff=110659"/>
				<updated>2012-11-11T08:10:20Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to GeSHi syntax highlighting */&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 1em; &lt;br /&gt;
  margin: 1em 0; &lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  font-size: .9em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=MediaWiki:Common.css&amp;diff=110658</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=MediaWiki:Common.css&amp;diff=110658"/>
				<updated>2012-11-11T08:09:18Z</updated>
		
		<summary type="html">&lt;p&gt;Arwiebe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* extra buttons for edit dialog (from commons:MediaWiki:Common.css) */&lt;br /&gt;
.my-buttons {&lt;br /&gt;
   padding: .5em;&lt;br /&gt;
}&lt;br /&gt;
.my-buttons a {&lt;br /&gt;
   color: black;&lt;br /&gt;
   background-color: #cde !important;&lt;br /&gt;
   font-weight: bold;&lt;br /&gt;
   font-size: .9em;&lt;br /&gt;
   text-decoration: none;&lt;br /&gt;
   border: thin #069 outset;&lt;br /&gt;
   padding: 0 .1em .1em;&lt;br /&gt;
}&lt;br /&gt;
.my-buttons a:hover, .my-buttons a:active {&lt;br /&gt;
   background-color: #bcd;&lt;br /&gt;
   border-style: inset;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Border around syntaxhighlight as with pre&lt;br /&gt;
div.mw-geshi {&lt;br /&gt;
  padding: 0.3em;&lt;br /&gt;
  border: 1px dashed #2f6fab;&lt;br /&gt;
  background-color: #f9f9f9;&lt;br /&gt;
} */&lt;br /&gt;
&lt;br /&gt;
/* narrower border */&lt;br /&gt;
pre {&lt;br /&gt;
  padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove talk page links */&lt;br /&gt;
#ca-talk, #pt-mytalk { display:none!important; }&lt;br /&gt;
&lt;br /&gt;
.firstHeading {&lt;br /&gt;
  font-weight: bold; &lt;br /&gt;
  margin-top:0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* H1 headings*/&lt;br /&gt;
h1 { &lt;br /&gt;
  clear:both;&lt;br /&gt;
  margin-top:25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* H2 headings*/&lt;br /&gt;
h2 { &lt;br /&gt;
  font-weight:normal; &lt;br /&gt;
  clear:both;&lt;br /&gt;
  margin-top:10px;&lt;br /&gt;
}&lt;br /&gt;
/* H3 headings in not bold*/&lt;br /&gt;
h3 { &lt;br /&gt;
  font-weight:normal; &lt;br /&gt;
}&lt;br /&gt;
/* H4 headings in italic */&lt;br /&gt;
h4 { &lt;br /&gt;
  font-style:italic; &lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arwiebe</name></author>	</entry>

	</feed>