<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title> – Set up a robot</title>
    <link>/docs/applications/configure_application/robot/</link>
    <description>Recent content in Set up a robot on </description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/docs/applications/configure_application/robot/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Kinematics and mass</title>
      <link>/docs/applications/configure_application/robot/robotmechanism/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/applications/configure_application/robot/robotmechanism/</guid>
      <description>
        
        
        &lt;p&gt;A robot&amp;rsquo;s kinematic model tells Motorcortex how the segments of the arm are connected, so it can turn joint angles into a tool pose and back. Add the mass of each segment, and it also calculates the torque that gravity puts on every joint. Both are in &lt;code&gt;mech/mech-parameters.xml&lt;/code&gt; in the configuration package, or the file that &lt;code&gt;Path&lt;/code&gt; › &lt;code&gt;Mechanism&lt;/code&gt; in &lt;code&gt;config.json&lt;/code&gt; points to.&lt;/p&gt;



 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;A wrong model makes the robot move differently from what you command, and can make it jump. Test every change in simulation mode first, with the real robot disengaged.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;This is the outline of the file, with the step of this page that fills in each part:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;robot&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Cobot&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;numberDoFs=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;ik_type=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;anthropomorphic2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;   &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;!-- 1. the solver --&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;                                            &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;!-- 2. one per joint --&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.147&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_z&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;mass&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/mass&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;cog&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/cog&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;inertia&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/inertia&amp;gt;&lt;/span&gt;      &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;!-- 4. optional --&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;!-- segments 2 to 6 --&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tool&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tool&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;...&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/tool&amp;gt;&lt;/span&gt;                                    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;!-- 3. the tool point --&amp;gt;&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/robot&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Work through it in this order; click a step to jump to it.&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;Five steps: 1 solver, that fits your arm; 2 segments, from joint to joint; 3 tool point, from the flange; 4 mass and inertia, optional, for dynamics; 5 apply and check, because control.xml wins.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 104&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-mss-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mss-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mss-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;a href=&#34;#choose-the-solver&#34; aria-label=&#34;Step 1: Solver&#34;&gt;
    &lt;title&gt;Step 1: Solver&lt;/title&gt;
    &lt;g class=&#34;mcx-ax-card&#34;&gt;&lt;rect x=&#34;12&#34; y=&#34;22&#34; width=&#34;130&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
      &lt;text class=&#34;mcx-ax-title&#34; x=&#34;77.0&#34; y=&#34;50&#34;&gt;Solver&lt;/text&gt;
      &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;77.0&#34; y=&#34;68&#34;&gt;fits your arm&lt;/text&gt;
      &lt;circle class=&#34;mcx-ax-num&#34; cx=&#34;16&#34; cy=&#34;26&#34; r=&#34;11&#34;/&gt;&lt;text class=&#34;mcx-ax-num-text&#34; x=&#34;16&#34; y=&#34;30&#34;&gt;1&lt;/text&gt;&lt;/g&gt;
  &lt;/a&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M145 54 L163 54&#34; marker-end=&#34;url(#mcx-mss-line)&#34;/&gt;
  &lt;a href=&#34;#describe-the-segments&#34; aria-label=&#34;Step 2: Segments&#34;&gt;
    &lt;title&gt;Step 2: Segments&lt;/title&gt;
    &lt;g class=&#34;mcx-ax-card&#34;&gt;&lt;rect x=&#34;166&#34; y=&#34;22&#34; width=&#34;130&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
      &lt;text class=&#34;mcx-ax-title&#34; x=&#34;231.0&#34; y=&#34;50&#34;&gt;Segments&lt;/text&gt;
      &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;231.0&#34; y=&#34;68&#34;&gt;joint to joint&lt;/text&gt;
      &lt;circle class=&#34;mcx-ax-num&#34; cx=&#34;170&#34; cy=&#34;26&#34; r=&#34;11&#34;/&gt;&lt;text class=&#34;mcx-ax-num-text&#34; x=&#34;170&#34; y=&#34;30&#34;&gt;2&lt;/text&gt;&lt;/g&gt;
  &lt;/a&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M299 54 L317 54&#34; marker-end=&#34;url(#mcx-mss-line)&#34;/&gt;
  &lt;a href=&#34;#set-the-tool-point&#34; aria-label=&#34;Step 3: Tool point&#34;&gt;
    &lt;title&gt;Step 3: Tool point&lt;/title&gt;
    &lt;g class=&#34;mcx-ax-card&#34;&gt;&lt;rect x=&#34;320&#34; y=&#34;22&#34; width=&#34;130&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
      &lt;text class=&#34;mcx-ax-title&#34; x=&#34;385.0&#34; y=&#34;50&#34;&gt;Tool point&lt;/text&gt;
      &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;385.0&#34; y=&#34;68&#34;&gt;from the flange&lt;/text&gt;
      &lt;circle class=&#34;mcx-ax-num&#34; cx=&#34;324&#34; cy=&#34;26&#34; r=&#34;11&#34;/&gt;&lt;text class=&#34;mcx-ax-num-text&#34; x=&#34;324&#34; y=&#34;30&#34;&gt;3&lt;/text&gt;&lt;/g&gt;
  &lt;/a&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M453 54 L471 54&#34; marker-end=&#34;url(#mcx-mss-line)&#34;/&gt;
  &lt;a href=&#34;#add-mass-and-inertia&#34; aria-label=&#34;Step 4: Mass, inertia&#34;&gt;
    &lt;title&gt;Step 4: Mass, inertia&lt;/title&gt;
    &lt;g class=&#34;mcx-ax-card mcx-ax-grey&#34;&gt;&lt;rect x=&#34;474&#34; y=&#34;22&#34; width=&#34;130&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
      &lt;text class=&#34;mcx-ax-title&#34; x=&#34;539.0&#34; y=&#34;50&#34;&gt;Mass, inertia&lt;/text&gt;
      &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;539.0&#34; y=&#34;68&#34;&gt;optional: dynamics&lt;/text&gt;
      &lt;circle class=&#34;mcx-ax-num&#34; cx=&#34;478&#34; cy=&#34;26&#34; r=&#34;11&#34;/&gt;&lt;text class=&#34;mcx-ax-num-text&#34; x=&#34;478&#34; y=&#34;30&#34;&gt;4&lt;/text&gt;&lt;/g&gt;
  &lt;/a&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M607 54 L625 54&#34; marker-end=&#34;url(#mcx-mss-line)&#34;/&gt;
  &lt;a href=&#34;#apply-your-changes&#34; aria-label=&#34;Step 5: Apply, check&#34;&gt;
    &lt;title&gt;Step 5: Apply, check&lt;/title&gt;
    &lt;g class=&#34;mcx-ax-card&#34;&gt;&lt;rect x=&#34;628&#34; y=&#34;22&#34; width=&#34;130&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
      &lt;text class=&#34;mcx-ax-title&#34; x=&#34;693.0&#34; y=&#34;50&#34;&gt;Apply, check&lt;/text&gt;
      &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;693.0&#34; y=&#34;68&#34;&gt;control.xml wins&lt;/text&gt;
      &lt;circle class=&#34;mcx-ax-num&#34; cx=&#34;632&#34; cy=&#34;26&#34; r=&#34;11&#34;/&gt;&lt;text class=&#34;mcx-ax-num-text&#34; x=&#34;632&#34; y=&#34;30&#34;&gt;5&lt;/text&gt;&lt;/g&gt;
  &lt;/a&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;h2 id=&#34;choose-the-solver&#34;&gt;Choose the solver&lt;/h2&gt;
&lt;p&gt;The solver turns a tool pose into joint angles. It is set on the root element, together with the robot&amp;rsquo;s name and number of axes:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The robot&amp;rsquo;s name, shown in &lt;code&gt;root/ManipulatorControl/mechanism/info/name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;numberDoFs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The number of axes. Only this many segments are used&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ik_type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The solver. Older files use &lt;code&gt;type&lt;/code&gt;, which is still read. Without either, &lt;code&gt;anthropomorphic&lt;/code&gt; is used&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pick the solver that fits your arm. An analytical solver is exact and fast, so use one when your robot fits it:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;Which solver: six axes with axes 4, 5 and 6 meeting in one point, anthropomorphic, a spherical wrist. Six axes with axes 2, 3 and 4 parallel, anthropomorphic2, most cobots. SCARA, planar. Seven axes, anthropomorphic_7dof and the other seven-axis solvers. None of these, kdl_nrjl, any arm but much slower.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 290&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-slv-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-slv-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-slv-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;16&#34; y=&#34;118&#34; width=&#34;120&#34; height=&#34;56&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;76.0&#34; y=&#34;150.0&#34;&gt;Your arm&lt;/text&gt;
  &lt;/g&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;480&#34; y=&#34;12&#34; width=&#34;264&#34; height=&#34;46&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;612.0&#34; y=&#34;30.5&#34;&gt;anthropomorphic&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;612.0&#34; y=&#34;47.5&#34;&gt;spherical wrist&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M136 146 L170 146 L170 35 L476 35&#34; marker-end=&#34;url(#mcx-slv-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;184&#34; y=&#34;28&#34;&gt;6 axes, axes 4, 5 and 6 meet in one point&lt;/text&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;480&#34; y=&#34;66&#34; width=&#34;264&#34; height=&#34;46&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;612.0&#34; y=&#34;84.5&#34;&gt;anthropomorphic2&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;612.0&#34; y=&#34;101.5&#34;&gt;most cobots&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M136 146 L170 146 L170 89 L476 89&#34; marker-end=&#34;url(#mcx-slv-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;184&#34; y=&#34;82&#34;&gt;6 axes, axes 2, 3 and 4 parallel&lt;/text&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;480&#34; y=&#34;120&#34; width=&#34;264&#34; height=&#34;46&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;612.0&#34; y=&#34;147.0&#34;&gt;planar&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M136 146 L170 146 L170 143 L476 143&#34; marker-end=&#34;url(#mcx-slv-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;184&#34; y=&#34;136&#34;&gt;SCARA&lt;/text&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;480&#34; y=&#34;174&#34; width=&#34;264&#34; height=&#34;46&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;612.0&#34; y=&#34;192.5&#34;&gt;anthropomorphic_7dof, …&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;612.0&#34; y=&#34;209.5&#34;&gt;seven-axis solvers&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M136 146 L170 146 L170 197 L476 197&#34; marker-end=&#34;url(#mcx-slv-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;184&#34; y=&#34;190&#34;&gt;7 axes&lt;/text&gt;
  &lt;g class=&#34;mcx-ax-grey&#34;&gt;&lt;rect x=&#34;480&#34; y=&#34;228&#34; width=&#34;264&#34; height=&#34;46&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;612.0&#34; y=&#34;246.5&#34;&gt;kdl_nrjl&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;612.0&#34; y=&#34;263.5&#34;&gt;any arm, much slower&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M136 146 L170 146 L170 251 L476 251&#34; marker-end=&#34;url(#mcx-slv-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;184&#34; y=&#34;244&#34;&gt;none of these&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;p&gt;In detail:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;code&gt;ik_type&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;For&lt;/th&gt;
&lt;th&gt;Joint axes, from the base&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;anthropomorphic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Six axes with a spherical wrist: axes 4, 5 and 6 meet in one point&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;anthropomorphic2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Six axes with axes 2, 3 and 4 parallel, like most cobots&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;planar&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SCARA robots&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;tran_z&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;anthropomorphic_7dof&lt;/code&gt;, &lt;code&gt;iterative_7dof&lt;/code&gt;, &lt;code&gt;weighted_7dof&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Seven-axis arms&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kdl_nrjl&lt;/code&gt;, &lt;code&gt;kdl:&amp;lt;position&amp;gt;:&amp;lt;velocity&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Any serial arm. Iterative, so much slower than an analytical solver&lt;/td&gt;
&lt;td&gt;Any&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;passthrough&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Passes X, Y, Z, rz, ry, rx one to one to joints 1 to 6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The two six-axis layouts, each with its axes drawn in:&lt;/p&gt;
&lt;div class=&#34;card-deck mb-4&#34;&gt;
  &lt;div class=&#34;card mb-4&#34;&gt;
  
    &lt;div class=&#34;card-header&#34;&gt;
      
        &lt;strong&gt;anthropomorphic&lt;/strong&gt;
      
    &lt;/div&gt;
  
  &lt;div class=&#34;card-body&#34;&gt;
    
    
    
      &lt;p class=&#34;card-text&#34;&gt;
        
            &lt;figure&gt;&lt;img src=&#34;/docs/motorcortex-io-tools/motorcortex-io/project-packages/config_package/mech/_media/anthropomorphic_example.png&#34;
         alt=&#34;A six-axis arm with a spherical wrist, where axes 4, 5 and 6 meet in one point, with its segment lengths marked&#34; width=&#34;560&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

        
      &lt;/p&gt;
    
  &lt;/div&gt;
  
    
  
  
    &lt;div class=&#34;card-footer&#34;&gt;
      
        Axes 4, 5 and 6 meet in one point: the wrist.
      
    &lt;/div&gt;
  
&lt;/div&gt;

  &lt;div class=&#34;card mb-4&#34;&gt;
  
    &lt;div class=&#34;card-header&#34;&gt;
      
        &lt;strong&gt;anthropomorphic2&lt;/strong&gt;
      
    &lt;/div&gt;
  
  &lt;div class=&#34;card-body&#34;&gt;
    
    
    
      &lt;p class=&#34;card-text&#34;&gt;
        
            &lt;figure&gt;&lt;img src=&#34;/docs/motorcortex-io-tools/motorcortex-io/project-packages/config_package/mech/_media/anthropomorphic2_example.png&#34;
         alt=&#34;A six-axis cobot with axes 2, 3 and 4 parallel, stretched straight up, with its segment lengths marked&#34; width=&#34;560&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

        
      &lt;/p&gt;
    
  &lt;/div&gt;
  
    
  
  
    &lt;div class=&#34;card-footer&#34;&gt;
      
        Axes 2, 3 and 4 are parallel. The wrist is offset sideways.
      
    &lt;/div&gt;
  
&lt;/div&gt;

&lt;/div&gt;
&lt;p&gt;A parallel mechanism, such as a delta robot, uses a &lt;code&gt;.json&lt;/code&gt; file and the &lt;code&gt;parallel&lt;/code&gt; solver. See the &lt;a href=&#34;/docs/motorcortex-io-tools/motorcortex-io/project-packages/config_package/mech/&#34;&gt;mech-parameters.xml reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;describe-the-segments&#34;&gt;Describe the segments&lt;/h2&gt;
&lt;p&gt;Picture the robot with all joint angles at &lt;code&gt;0&lt;/code&gt;. For &lt;code&gt;anthropomorphic2&lt;/code&gt; that is the arm stretched straight up. Each segment is one step up the arm, from its own joint to the next one:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;A six-axis cobot in its zero pose, seen with y to the left and z up. From the robot base, segment 1 goes z 0.147 from joint J1 (rot_z) to J2 (rot_y); segment 2 z 0.427 to J3 (rot_y); segment 3 z 0.357 to J4 (rot_y); segment 4 y 0.141 to J5 (rot_z); segment 5 z 0.116 to J6 (rot_y); segment 6 y 0.1045 to the flange, where the tool starts.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 440&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-seg-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-seg-y&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-y&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-seg-z&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-z&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;rect class=&#34;mcx-ax-base&#34; x=&#34;470&#34; y=&#34;392&#34; width=&#34;100&#34; height=&#34;16&#34; rx=&#34;3&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;520&#34; y=&#34;428&#34;&gt;robot base&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M520 371 L520 329&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M520 301 L520 211&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M520 183 L520 111&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M507 96 L415 96&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M400 83 L400 51&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M387 36 L295 36&#34; marker-end=&#34;url(#mcx-seg-fwd)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-tool&#34; d=&#34;M272 36 L210 36&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-end&#34; x=&#34;204&#34; y=&#34;40&#34;&gt;tool&lt;/text&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;520&#34; cy=&#34;384&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;520&#34; cy=&#34;314&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;520&#34; cy=&#34;196&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;520&#34; cy=&#34;96&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;400&#34; cy=&#34;96&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;400&#34; cy=&#34;36&#34; r=&#34;10&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-dot&#34; cx=&#34;280&#34; cy=&#34;36&#34; r=&#34;7&#34;/&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;540&#34; y=&#34;389&#34;&gt;J1&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;566&#34; y=&#34;389&#34;&gt;rot_z&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;540&#34; y=&#34;319&#34;&gt;J2&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;566&#34; y=&#34;319&#34;&gt;rot_y&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;540&#34; y=&#34;201&#34;&gt;J3&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;566&#34; y=&#34;201&#34;&gt;rot_y&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;540&#34; y=&#34;101&#34;&gt;J4&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;566&#34; y=&#34;101&#34;&gt;rot_y&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title&#34; x=&#34;400&#34; y=&#34;126&#34;&gt;J5&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;400&#34; y=&#34;142&#34;&gt;rot_z&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;418&#34; y=&#34;41&#34;&gt;J6&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;444&#34; y=&#34;41&#34;&gt;rot_y&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-end&#34; x=&#34;302&#34; y=&#34;64&#34;&gt;flange&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd mcx-ax-start&#34; x=&#34;540&#34; y=&#34;349.0&#34;&gt;segment 1&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;540&#34; y=&#34;365.0&#34;&gt;z = 0.147&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd mcx-ax-start&#34; x=&#34;540&#34; y=&#34;255.0&#34;&gt;segment 2&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;540&#34; y=&#34;271.0&#34;&gt;z = 0.427&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd mcx-ax-start&#34; x=&#34;540&#34; y=&#34;146.0&#34;&gt;segment 3&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;540&#34; y=&#34;162.0&#34;&gt;z = 0.357&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd&#34; x=&#34;466&#34; y=&#34;124&#34;&gt;segment 4&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;466&#34; y=&#34;140&#34;&gt;y = 0.141&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd mcx-ax-start&#34; x=&#34;414&#34; y=&#34;66&#34;&gt;segment 5&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;414&#34; y=&#34;82&#34;&gt;z = 0.116&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd&#34; x=&#34;340&#34; y=&#34;16&#34;&gt;segment 6: y = 0.1045&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-zaxis&#34; d=&#34;M110 390 L110 340&#34; marker-end=&#34;url(#mcx-seg-z)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-yaxis&#34; d=&#34;M110 390 L60 390&#34; marker-end=&#34;url(#mcx-seg-y)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-text-z&#34; x=&#34;110&#34; y=&#34;332&#34;&gt;z&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-text-y&#34; x=&#34;48&#34; y=&#34;395&#34;&gt;y&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;122&#34; y=&#34;394&#34;&gt;x points away from you&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;20&#34; y=&#34;200&#34;&gt;All joint angles at 0.&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;20&#34; y=&#34;218&#34;&gt;Each tip pose, in m, goes&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;20&#34; y=&#34;236&#34;&gt;from one joint to the next.&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;20&#34; y=&#34;254&#34;&gt;Not to scale.&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;p&gt;Each &lt;code&gt;&amp;lt;segment number=&amp;quot;N&amp;quot;&amp;gt;&lt;/code&gt; has two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;tippose&amp;gt;&lt;/code&gt; › &lt;code&gt;&amp;lt;position&amp;gt;&lt;/code&gt;: where the next joint sits, in m, measured from this segment&amp;rsquo;s joint. For the last segment, that is the flange.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;jointaxis&amp;gt;&lt;/code&gt;: the axis this segment&amp;rsquo;s joint turns around or slides along: &lt;code&gt;rot_x&lt;/code&gt;, &lt;code&gt;rot_y&lt;/code&gt;, &lt;code&gt;rot_z&lt;/code&gt;, &lt;code&gt;tran_x&lt;/code&gt;, &lt;code&gt;tran_y&lt;/code&gt; or &lt;code&gt;tran_z&lt;/code&gt;. Any other text, &lt;code&gt;trans_x&lt;/code&gt; for example, silently makes a fixed joint.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An analytical solver reads only some position values of each segment:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Segment&lt;/th&gt;
&lt;th&gt;&lt;code&gt;anthropomorphic&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;anthropomorphic2&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;planar&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;x, y, z&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;x, z&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;x, z&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Set every value the solver does not read to 0, and leave segment orientations at 0. The forward kinematics use all values, so anything extra makes them disagree with the solver, and the robot jumps when you switch to Cartesian motion.&lt;/p&gt;
&lt;/div&gt;


&lt;h3 id=&#34;example-from-dh-parameters&#34;&gt;Example: from DH parameters&lt;/h3&gt;
&lt;p&gt;Robot data sheets usually give the geometry as DH parameters. This cobot fits &lt;code&gt;anthropomorphic2&lt;/code&gt;:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/applications/configure_application/robot/_media/DHexample.png&#34;
         alt=&#34;DH frames and DH table of a six-axis cobot: d1 0.147, a2 -0.427, a3 -0.357, d4 0.141, d5 0.116, d6 0.1045&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Each length becomes the one tip-pose value that &lt;code&gt;anthropomorphic2&lt;/code&gt; reads. The DH signs of &lt;code&gt;a2&lt;/code&gt; and &lt;code&gt;a3&lt;/code&gt; do not carry over: in the zero pose the arm points up, so those lengths are positive z.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;DH&lt;/th&gt;
&lt;th&gt;Length&lt;/th&gt;
&lt;th&gt;Segment&lt;/th&gt;
&lt;th&gt;Tip pose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.147 m&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;z = 0.147&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;a2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.427 m&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;z = 0.427&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;a3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.357 m&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;z = 0.357&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.141 m&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;y = 0.141&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.116 m&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;z = 0.116&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.1045 m&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;y = 0.1045&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    The resulting mech-parameters.xml
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;robot&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Cobot&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;numberDoFs=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;ik_type=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;anthropomorphic2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.147&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_z&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.427&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_y&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.357&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_y&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.141&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_y&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.116&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_z&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.1045&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_y&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tool&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tool&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/tool&amp;gt;&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/robot&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&#34;set-the-tool-point&#34;&gt;Set the tool point&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;tool&amp;gt;&lt;/code&gt; element places the tool point, seen from the flange. Unlike a segment, its &lt;code&gt;&amp;lt;orientation&amp;gt;&lt;/code&gt; is used too, as &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt; and &lt;code&gt;c&lt;/code&gt; in rad around Z, Y and X:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;The tool point, seen from the flange: tippose position x, y, z in m goes from the flange to the tool point, and tippose orientation a, b, c in rad turns the tool point&amp;#39;s frame around Z, then Y, then X.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 200&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-tlp-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-tlp-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-tlp-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;rect class=&#34;mcx-ax-base&#34; x=&#34;40&#34; y=&#34;50&#34; width=&#34;26&#34; height=&#34;110&#34; rx=&#34;4&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;53&#34; y=&#34;182&#34;&gt;flange&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-tool&#34; d=&#34;M66 80 L250 80 L250 90 L330 90 M66 140 L250 140 L250 130 L330 130 M250 90 L250 130&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;160&#34; y=&#34;164&#34;&gt;tool&lt;/text&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;66&#34; cy=&#34;110&#34; r=&#34;5&#34;/&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M74 110 L336 110&#34; marker-end=&#34;url(#mcx-tlp-fwd)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label-fwd&#34; x=&#34;200&#34; y=&#34;68&#34;&gt;tippose › position: x, y, z in m&lt;/text&gt;
  &lt;circle class=&#34;mcx-ax-dot&#34; cx=&#34;350&#34; cy=&#34;110&#34; r=&#34;7&#34;/&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M350 110 L385 90&#34; marker-end=&#34;url(#mcx-tlp-line)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M350 110 L330 75&#34; marker-end=&#34;url(#mcx-tlp-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;420&#34; y=&#34;100&#34;&gt;Tool point&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;420&#34; y=&#34;120&#34;&gt;tippose › orientation: a, b, c in rad,&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;420&#34; y=&#34;138&#34;&gt;around Z, then Y, then X&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tool&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gripper&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.12&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;orientation&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;a=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;b=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;c=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/tool&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;&amp;lt;basepose&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;tool-offset&amp;gt;&lt;/code&gt; elements of older files are ignored. Set where the robot stands, and an extra tool offset, as in &lt;a href=&#34;/docs/applications/configure_application/robot/frames/&#34;&gt;Frames and tool offset&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;add-mass-and-inertia&#34;&gt;Add mass and inertia&lt;/h2&gt;
&lt;p&gt;You can move the robot without this step, but the model&amp;rsquo;s torques under &lt;code&gt;root/ManipulatorControl/idJointTorque/&lt;/code&gt; depend on it, and three features use them:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;Mass, centre of gravity and inertia feed the dynamics model, idJointTorque, the torque per joint. Its actual/gravity torque is added to each axis&amp;#39;s torque target for gravity compensation. Its reference/total torque is compared with the measured torque for collision detection. Its gravity torque is the reference, Static Grav. Tq., for torque sensor calibration.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 230&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-mus-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mus-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mus-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;16&#34; y=&#34;80&#34; width=&#34;150&#34; height=&#34;70&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;91.0&#34; y=&#34;110.5&#34;&gt;Mass, cog,&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;91.0&#34; y=&#34;127.5&#34;&gt;inertia&lt;/text&gt;
  &lt;/g&gt;
  &lt;g class=&#34;mcx-ax-grey&#34;&gt;&lt;rect x=&#34;214&#34; y=&#34;72&#34; width=&#34;170&#34; height=&#34;86&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;299.0&#34; y=&#34;102.0&#34;&gt;Dynamics model&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;299.0&#34; y=&#34;119.0&#34;&gt;idJointTorque/&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;299.0&#34; y=&#34;136.0&#34;&gt;torque per joint&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M166 115 L210 115&#34; marker-end=&#34;url(#mcx-mus-line)&#34;/&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;440&#34; y=&#34;12&#34; width=&#34;304&#34; height=&#34;66&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;592.0&#34; y=&#34;32.0&#34;&gt;Gravity compensation&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592.0&#34; y=&#34;49.0&#34;&gt;actual/gravity, added to&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592.0&#34; y=&#34;66.0&#34;&gt;each axis&#39;s torque target&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M384 115 C 410 115, 410 45, 436 45&#34; marker-end=&#34;url(#mcx-mus-line)&#34;/&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;440&#34; y=&#34;82&#34; width=&#34;304&#34; height=&#34;66&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;592.0&#34; y=&#34;102.0&#34;&gt;Collision detection&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592.0&#34; y=&#34;119.0&#34;&gt;reference/total, compared&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592.0&#34; y=&#34;136.0&#34;&gt;with the measured torque&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M384 115 C 410 115, 410 115, 436 115&#34; marker-end=&#34;url(#mcx-mus-line)&#34;/&gt;
  &lt;a href=&#34;/docs/applications/configure_application/axes_control/transformation/#sensor-torque&#34; aria-label=&#34;Torque sensor calibration&#34;&gt;&lt;title&gt;Torque sensor calibration&lt;/title&gt;
  &lt;g class=&#34;mcx-ax-card&#34;&gt;&lt;rect x=&#34;440&#34; y=&#34;152&#34; width=&#34;304&#34; height=&#34;66&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;592&#34; y=&#34;176&#34;&gt;Torque sensor calibration&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592&#34; y=&#34;193&#34;&gt;gravity torque as the&lt;/text&gt;&lt;text class=&#34;mcx-ax-sub&#34; x=&#34;592&#34; y=&#34;208&#34;&gt;reference: Static Grav. Tq.&lt;/text&gt;&lt;/g&gt;&lt;/a&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M384 115 C 410 115, 410 185, 436 185&#34; marker-end=&#34;url(#mcx-mus-line)&#34;/&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;p&gt;With every mass at &lt;code&gt;0&lt;/code&gt; there is no error: all model torques are simply &lt;code&gt;0&lt;/code&gt;, so there is no gravity compensation and a collision detector compares against zero.&lt;/p&gt;
&lt;p&gt;Add these to each segment, and to the tool if it carries weight:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;One segment, from joint N to its tip pose at the next joint. The centre of gravity is measured from the tip pose; the mass sits there, the inertia is taken around it, and gravity on it makes a torque on joint N.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 260&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-sgm-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-sgm-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-sgm-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;path class=&#34;mcx-ax-base&#34; d=&#34;M110 174 L540 64 L540 116 L110 226 Z&#34;/&gt;
  &lt;ellipse class=&#34;mcx-ax-tool&#34; cx=&#34;330&#34; cy=&#34;150&#34; rx=&#34;70&#34; ry=&#34;30&#34; transform=&#34;rotate(-14 330 150)&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;110&#34; cy=&#34;200&#34; r=&#34;14&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;540&#34; cy=&#34;90&#34; r=&#34;14&#34;/&gt;
  &lt;text class=&#34;mcx-ax-title&#34; x=&#34;110&#34; y=&#34;250&#34;&gt;joint N&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;564&#34; y=&#34;86&#34;&gt;tip pose of segment N&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;564&#34; y=&#34;104&#34;&gt;the next joint&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M524 96 L342 147&#34; marker-end=&#34;url(#mcx-sgm-fwd)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label-fwd&#34; x=&#34;470&#34; y=&#34;152&#34;&gt;cog: measured from&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label-fwd&#34; x=&#34;470&#34; y=&#34;168&#34;&gt;the tip pose&lt;/text&gt;
  &lt;circle class=&#34;mcx-ax-dot&#34; cx=&#34;330&#34; cy=&#34;150&#34; r=&#34;8&#34;/&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-end&#34; x=&#34;314&#34; y=&#34;154&#34;&gt;mass&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;270&#34; y=&#34;98&#34;&gt;inertia: around the cog&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-back&#34; d=&#34;M330 162 L330 220&#34; marker-end=&#34;url(#mcx-sgm-back)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label-back mcx-ax-start&#34; x=&#34;342&#34; y=&#34;216&#34;&gt;gravity: a torque on joint N&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Element&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Unit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;mass&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The mass of the segment&lt;/td&gt;
&lt;td&gt;kg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;cog&amp;gt;&lt;/code&gt; › &lt;code&gt;&amp;lt;position&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The centre of gravity, measured from the segment&amp;rsquo;s tip pose&lt;/td&gt;
&lt;td&gt;m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;inertia&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The inertia around the centre of gravity, along the segment&amp;rsquo;s axes. Only &lt;code&gt;Ixx&lt;/code&gt;, &lt;code&gt;Iyy&lt;/code&gt;, &lt;code&gt;Izz&lt;/code&gt;, &lt;code&gt;Ixy&lt;/code&gt;, &lt;code&gt;Ixz&lt;/code&gt; and &lt;code&gt;Iyz&lt;/code&gt; are used&lt;/td&gt;
&lt;td&gt;kg·m²&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Count each part once.&lt;/strong&gt; The output shaft of a gearbox belongs to the segment it drives; the rest of the gearbox and the motor belong to the segment before it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the Motorcortex frame.&lt;/strong&gt; Data sheets and CAD often give these values in their own frame. Turn them into x forward, y left, z up, with the robot in its zero pose.&lt;/li&gt;
&lt;/ul&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Example: mass data of the six-axis cobot, before and after conversion
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;From the data sheet:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Segment&lt;/th&gt;
&lt;th&gt;Mass (kg)&lt;/th&gt;
&lt;th&gt;Centre of gravity (m): x, y, z&lt;/th&gt;
&lt;th&gt;Inertia (kg·m²): Ixx, Iyy, Izz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5.096092&lt;/td&gt;
&lt;td&gt;-0.00004, -0.01290, -0.01726&lt;/td&gt;
&lt;td&gt;0.0127270, 0.0096427, 0.0119825&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;10.70249&lt;/td&gt;
&lt;td&gt;-0.21335, 0.00000, 0.13058&lt;/td&gt;
&lt;td&gt;0.0215573, 0.4351312, 0.4335571&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4.341977&lt;/td&gt;
&lt;td&gt;-0.20021, 0.00000, 0.03962&lt;/td&gt;
&lt;td&gt;0.0074610, 0.1187431, 0.1173773&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1.835048&lt;/td&gt;
&lt;td&gt;-0.00019, -0.01377, -0.00809&lt;/td&gt;
&lt;td&gt;0.0030334, 0.0021003, 0.0024817&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1.877054&lt;/td&gt;
&lt;td&gt;0.00014, 0.01278, -0.00773&lt;/td&gt;
&lt;td&gt;0.0034297, 0.0021536, 0.0028632&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0.449071&lt;/td&gt;
&lt;td&gt;0.00000, -0.00009, -0.03035&lt;/td&gt;
&lt;td&gt;0.0003376, 0.0003316, 0.0003881&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In the Motorcortex frame:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Segment&lt;/th&gt;
&lt;th&gt;Mass (kg)&lt;/th&gt;
&lt;th&gt;Centre of gravity (m): x, y, z&lt;/th&gt;
&lt;th&gt;Inertia (kg·m²): Ixx, Iyy, Izz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5.096092&lt;/td&gt;
&lt;td&gt;0.00004, 0.01290, -0.01726&lt;/td&gt;
&lt;td&gt;0.0127270, 0.0096427, 0.0119825&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;10.70249&lt;/td&gt;
&lt;td&gt;0.00000, 0.13058, -0.21335&lt;/td&gt;
&lt;td&gt;0.0215573, 0.4335571, 0.4351312&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4.341977&lt;/td&gt;
&lt;td&gt;0.00000, 0.03962, -0.20021&lt;/td&gt;
&lt;td&gt;0.0074610, 0.1173773, 0.1187431&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1.835048&lt;/td&gt;
&lt;td&gt;0.00019, -0.01377, -0.00809&lt;/td&gt;
&lt;td&gt;0.0030334, 0.0024817, 0.0021003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1.877054&lt;/td&gt;
&lt;td&gt;-0.00014, 0.01278, 0.00773&lt;/td&gt;
&lt;td&gt;0.0034297, 0.0021536, 0.0028632&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0.449071&lt;/td&gt;
&lt;td&gt;0.00000, -0.03035, -0.00009&lt;/td&gt;
&lt;td&gt;0.0003376, 0.0003881, 0.0003316&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Segment 1 in the file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;segment&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;number=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;tippose&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.147&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/tippose&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;jointaxis&amp;gt;&lt;/span&gt;rot_z&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/jointaxis&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;mass&amp;gt;&lt;/span&gt;5.096092&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/mass&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;cog&amp;gt;&amp;lt;position&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;x=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.00004&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;y=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0.01290&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c4a000&#34;&gt;z=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;-0.01726&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;/&amp;gt;&amp;lt;/cog&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;inertia&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Ixx&amp;gt;&lt;/span&gt;0.0127270&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Ixx&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Ixy&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Ixy&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Ixz&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Ixz&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Iyx&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Iyx&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Iyy&amp;gt;&lt;/span&gt;0.0096427&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Iyy&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Iyz&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Iyz&amp;gt;&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Izx&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Izx&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Izy&amp;gt;&lt;/span&gt;0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Izy&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;Izz&amp;gt;&lt;/span&gt;0.0119825&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/Izz&amp;gt;&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/inertia&amp;gt;&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;lt;/segment&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&#34;apply-your-changes&#34;&gt;Apply your changes&lt;/h2&gt;
&lt;p&gt;The file is not the only place these values live. &lt;code&gt;control.xml&lt;/code&gt; can hold them too, and it wins:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;At start-up, mech-parameters.xml fills the parameter tree under mechanism/segmentN and mechanism/tool with its start values. Then control.xml is loaded and overrides them with values saved earlier. The kinematics and dynamics use the tree, and are rebuilt when a value changes. Save writes all values back into control.xml.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 250&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-mst-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mst-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-mst-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;16&#34; y=&#34;16&#34; width=&#34;210&#34; height=&#34;86&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;121.0&#34; y=&#34;46.0&#34;&gt;mech-parameters.xml&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;121.0&#34; y=&#34;63.0&#34;&gt;solver, axes, segments:&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;121.0&#34; y=&#34;80.0&#34;&gt;the start values&lt;/text&gt;
  &lt;/g&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;16&#34; y=&#34;148&#34; width=&#34;210&#34; height=&#34;86&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;121.0&#34; y=&#34;178.0&#34;&gt;control.xml&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;121.0&#34; y=&#34;195.0&#34;&gt;values saved earlier,&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;121.0&#34; y=&#34;212.0&#34;&gt;loaded after the file&lt;/text&gt;
  &lt;/g&gt;
  &lt;g class=&#34;mcx-ax-grey&#34;&gt;&lt;rect x=&#34;290&#34; y=&#34;70&#34; width=&#34;220&#34; height=&#34;110&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;400.0&#34; y=&#34;103.5&#34;&gt;Parameter tree&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;400.0&#34; y=&#34;120.5&#34;&gt;…/mechanism/segmentN/&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;400.0&#34; y=&#34;137.5&#34;&gt;…/mechanism/tool/&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;400.0&#34; y=&#34;154.5&#34;&gt;the values in use&lt;/text&gt;
  &lt;/g&gt;
  &lt;g class=&#34;mcx-ax-plain&#34;&gt;&lt;rect x=&#34;574&#34; y=&#34;80&#34; width=&#34;170&#34; height=&#34;90&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ax-title&#34; x=&#34;659.0&#34; y=&#34;112.0&#34;&gt;Kinematics&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;659.0&#34; y=&#34;129.0&#34;&gt;and dynamics&lt;/text&gt;
    &lt;text class=&#34;mcx-ax-sub&#34; x=&#34;659.0&#34; y=&#34;146.0&#34;&gt;IK, FK, torques&lt;/text&gt;
  &lt;/g&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M226 59 C 258 59, 258 100, 288 100&#34; marker-end=&#34;url(#mcx-mst-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;236&#34; y=&#34;40&#34;&gt;1. start-up&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-fwd&#34; d=&#34;M226 176 C 258 176, 258 150, 288 150&#34; marker-end=&#34;url(#mcx-mst-fwd)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-stop mcx-ax-start&#34; x=&#34;236&#34; y=&#34;134&#34;&gt;2. overrides&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-back&#34; d=&#34;M400 182 C 400 226, 300 226, 228 214&#34; marker-end=&#34;url(#mcx-mst-back)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;352&#34; y=&#34;242&#34;&gt;Save writes all values here&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M512 125 L572 125&#34; marker-end=&#34;url(#mcx-mst-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;542&#34; y=&#34;196&#34;&gt;rebuilt when&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;542&#34; y=&#34;212&#34;&gt;a value changes&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;p&gt;Every save of the parameter tree, including &lt;strong&gt;Save Settings&lt;/strong&gt; in the robot GUI, writes the segment and tool values into &lt;code&gt;control.xml&lt;/code&gt;. From then on, a change in &lt;code&gt;mech-parameters.xml&lt;/code&gt; has no effect until you remove those lines again. So how you apply a change depends on what you changed:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you changed&lt;/th&gt;
&lt;th&gt;Where to change it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tip poses, masses, centres of gravity, inertias&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#change-values-live&#34;&gt;Live, in Motorcortex Desk&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The solver, the number of axes, a joint axis&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#change-the-solver-axes-or-joint-axes&#34;&gt;In the file, then clean up control.xml&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;change-values-live&#34;&gt;Change values live&lt;/h3&gt;
&lt;p&gt;Each segment is under &lt;code&gt;root/ManipulatorControl/mechanism/segmentN/&lt;/code&gt;, the tool under &lt;code&gt;mechanism/tool/&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Values&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tippose&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[x, y, z, rz, ry, rx]&lt;/code&gt;, in m and rad&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mass&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;kg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cog&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[x, y, z]&lt;/code&gt;, in m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;inertia&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[Ixx, Ixy, Ixz, Iyx, Iyy, Iyz, Izx, Izy, Izz]&lt;/code&gt;, in kg·m²&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The model is rebuilt as soon as you write a value. Save the parameter tree to keep it; the values then go into &lt;code&gt;control.xml&lt;/code&gt;. Copy them into &lt;code&gt;mech-parameters.xml&lt;/code&gt; too, so the file stays a correct description of the robot.&lt;/p&gt;
&lt;h3 id=&#34;change-the-solver-axes-or-joint-axes&#34;&gt;Change the solver, axes or joint axes&lt;/h3&gt;
&lt;p&gt;These are read only from the file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit &lt;code&gt;mech-parameters.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;control.xml&lt;/code&gt; and delete every line whose path starts with &lt;code&gt;root/ManipulatorControl/mechanism/segment&lt;/code&gt; or &lt;code&gt;root/ManipulatorControl/mechanism/tool&lt;/code&gt;. Keep the &lt;code&gt;mechanism/frames/&lt;/code&gt; lines: the base and tool offset are not in the file.
&lt;figure&gt;&lt;img src=&#34;/docs/applications/configure_application/robot/_media/defaultParameters.png&#34;
         alt=&#34;control.xml open in motorcortex.io with a search for mechanism, showing the root/ManipulatorControl/mechanism/frames lines&#34; width=&#34;900&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;Deploy the configuration.&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;root/ManipulatorControl/mechanism/info/&lt;/code&gt;: &lt;code&gt;ikType&lt;/code&gt; and &lt;code&gt;numJoints&lt;/code&gt; must match the file, and the &lt;code&gt;segmentN/tippose&lt;/code&gt; values must match your segments.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;check-the-model&#34;&gt;Check the model&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In simulation mode, jog the robot in joint mode to a few poses, and compare &lt;code&gt;root/ManipulatorControl/manipulatorToolPoseActual&lt;/code&gt; with the pose you expect.&lt;/li&gt;
&lt;li&gt;Jog in Cartesian mode: the tool must move along the axis you jog, without jumps.&lt;/li&gt;
&lt;li&gt;On the real robot, measure the tool point in a few poses and compare again.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/applications/configure_application/robot/frames/&#34;&gt;Set the frames and tool offset&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Frames and tool offset</title>
      <link>/docs/applications/configure_application/robot/frames/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/applications/configure_application/robot/frames/</guid>
      <description>
        
        
        &lt;p&gt;This page covers the frame parameters in the tree, and the user frames that shift a motion program. The conventions behind the values, right-handed frames and poses written as &lt;code&gt;[x, y, z, rz, ry, rx]&lt;/code&gt;, are explained in &lt;a href=&#34;/docs/applications/configure_application/definitions/&#34;&gt;Definitions&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;frame-parameters&#34;&gt;Frame parameters&lt;/h2&gt;
&lt;p&gt;Each frame is placed in the one before it, from the world down to the tool. The red arrows are parameters you can set; the dashed arrow is the robot&amp;rsquo;s own motion. Under each frame is the parameter that reads back its pose in the world. Paths are relative to &lt;code&gt;root/ManipulatorControl/&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-chain&#34; role=&#34;group&#34; aria-label=&#34;Frame chain: World, then Origin via mechanism/frames/origin, then Base via mechanism/frames/base, then Flange via the joint angles, then Tool via mechanism/tool/tippose and mechanism/frames/toolOffset/input&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 720 592&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;&lt;marker id=&#34;mcx-ch-arrow&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ch-head&#34;/&gt;&lt;/marker&gt;&lt;/defs&gt;
  &lt;g class=&#34;mcx-ch-node mcx-ch-world&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;20&#34; width=&#34;230&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ch-name&#34; x=&#34;46&#34; y=&#34;46&#34;&gt;World&lt;/text&gt;
    &lt;text class=&#34;mcx-ch-desc&#34; x=&#34;46&#34; y=&#34;68&#34;&gt;fixed to the ground&lt;/text&gt;
  &lt;/g&gt;
  &lt;line class=&#34;mcx-ch-link mcx-ch-set&#34; x1=&#34;70&#34; y1=&#34;88&#34; x2=&#34;70&#34; y2=&#34;138&#34; marker-end=&#34;url(#mcx-ch-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-ch-lead&#34; x1=&#34;78&#34; y1=&#34;113&#34; x2=&#34;292&#34; y2=&#34;113&#34;/&gt;
  &lt;text class=&#34;mcx-ch-param&#34; x=&#34;300&#34; y=&#34;109&#34;&gt;mechanism/frames/origin&lt;/text&gt;
  &lt;text class=&#34;mcx-ch-note&#34; x=&#34;300&#34; y=&#34;129&#34;&gt;Origin in World. Default in control.xml&lt;/text&gt;
  &lt;g class=&#34;mcx-ch-node&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;142&#34; width=&#34;230&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ch-name&#34; x=&#34;46&#34; y=&#34;168&#34;&gt;Origin&lt;/text&gt;
    &lt;text class=&#34;mcx-ch-desc&#34; x=&#34;46&#34; y=&#34;190&#34;&gt;optional extra frame&lt;/text&gt;
  &lt;/g&gt;
  &lt;line class=&#34;mcx-ch-link mcx-ch-set&#34; x1=&#34;70&#34; y1=&#34;210&#34; x2=&#34;70&#34; y2=&#34;260&#34; marker-end=&#34;url(#mcx-ch-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-ch-lead&#34; x1=&#34;78&#34; y1=&#34;235&#34; x2=&#34;292&#34; y2=&#34;235&#34;/&gt;
  &lt;text class=&#34;mcx-ch-param&#34; x=&#34;300&#34; y=&#34;231&#34;&gt;mechanism/frames/base&lt;/text&gt;
  &lt;text class=&#34;mcx-ch-note&#34; x=&#34;300&#34; y=&#34;251&#34;&gt;Base in Origin. Default in control.xml&lt;/text&gt;
  &lt;g class=&#34;mcx-ch-node&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;264&#34; width=&#34;230&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ch-name&#34; x=&#34;46&#34; y=&#34;290&#34;&gt;Base&lt;/text&gt;
    &lt;text class=&#34;mcx-ch-sub&#34; x=&#34;46&#34; y=&#34;312&#34;&gt;mechanism/frames/baseGlobal&lt;/text&gt;
  &lt;/g&gt;
  &lt;line class=&#34;mcx-ch-link mcx-ch-kin&#34; x1=&#34;70&#34; y1=&#34;332&#34; x2=&#34;70&#34; y2=&#34;382&#34; marker-end=&#34;url(#mcx-ch-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-ch-lead&#34; x1=&#34;78&#34; y1=&#34;357&#34; x2=&#34;292&#34; y2=&#34;357&#34;/&gt;
  &lt;text class=&#34;mcx-ch-kin-text&#34; x=&#34;300&#34; y=&#34;353&#34;&gt;joint angles&lt;/text&gt;
  &lt;text class=&#34;mcx-ch-note&#34; x=&#34;300&#34; y=&#34;373&#34;&gt;segments in mech/mech-parameters.xml&lt;/text&gt;
  &lt;g class=&#34;mcx-ch-node&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;386&#34; width=&#34;230&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ch-name&#34; x=&#34;46&#34; y=&#34;412&#34;&gt;Flange&lt;/text&gt;
    &lt;text class=&#34;mcx-ch-sub&#34; x=&#34;46&#34; y=&#34;434&#34;&gt;manipulatorFlangePoseActual&lt;/text&gt;
  &lt;/g&gt;
  &lt;line class=&#34;mcx-ch-link mcx-ch-set&#34; x1=&#34;70&#34; y1=&#34;454&#34; x2=&#34;70&#34; y2=&#34;504&#34; marker-end=&#34;url(#mcx-ch-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-ch-lead&#34; x1=&#34;78&#34; y1=&#34;479&#34; x2=&#34;292&#34; y2=&#34;479&#34;/&gt;
  &lt;text class=&#34;mcx-ch-param&#34; x=&#34;300&#34; y=&#34;466&#34;&gt;mechanism/tool/tippose&lt;/text&gt;
  &lt;text class=&#34;mcx-ch-param&#34; x=&#34;300&#34; y=&#34;484&#34;&gt;mechanism/frames/toolOffset/input&lt;/text&gt;
  &lt;text class=&#34;mcx-ch-note&#34; x=&#34;300&#34; y=&#34;504&#34;&gt;tool in mech-parameters.xml, then a runtime offset&lt;/text&gt;
  &lt;g class=&#34;mcx-ch-node&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;508&#34; width=&#34;230&#34; height=&#34;64&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-ch-name&#34; x=&#34;46&#34; y=&#34;534&#34;&gt;Tool&lt;/text&gt;
    &lt;text class=&#34;mcx-ch-sub&#34; x=&#34;46&#34; y=&#34;556&#34;&gt;manipulatorToolPoseActual&lt;/text&gt;
  &lt;/g&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/frames/origin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;setting&lt;/td&gt;
&lt;td&gt;An extra frame between the world and the robot base, for example a platform the robot stands on. Zero by default.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/frames/base&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;setting&lt;/td&gt;
&lt;td&gt;The robot base, seen from the origin frame.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/frames/baseGlobal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;The resulting base pose in the world: origin, then base.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/tool/tippose&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;setting&lt;/td&gt;
&lt;td&gt;The tool tip seen from the flange, from &lt;code&gt;mech/mech-parameters.xml&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/frames/toolOffset/input&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;setting&lt;/td&gt;
&lt;td&gt;An extra offset on top of the tool. A change fades in over &lt;code&gt;toolOffset/fader/fadeTime&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mechanism/frames/toolOffset/output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;The tool offset in use, while it fades.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;manipulatorFlangePoseActual&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;The flange pose in the world.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;manipulatorToolPoseActual&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;The tool pose in the world.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;user-frames&#34;&gt;User frames&lt;/h2&gt;
&lt;p&gt;User frames shift where a motion program runs, without changing the program. There are two sets: world user frames move the programmed poses in the world, and tool user frames move the tool point the program drives. They apply to Cartesian moves in automatic mode.&lt;/p&gt;
&lt;p&gt;Each set has &lt;code&gt;Frame01&lt;/code&gt;, &lt;code&gt;Frame02&lt;/code&gt; and so on, under &lt;code&gt;userFramesWorld/&lt;/code&gt; and &lt;code&gt;userFramesTool/&lt;/code&gt;. How many there are is set by &lt;code&gt;UserFrame&lt;/code&gt; in the application&amp;rsquo;s &lt;code&gt;config.json&lt;/code&gt;; the standard configuration has three of each.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FrameNN/enable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switches the frame on. The shift fades in over &lt;code&gt;FrameNN/Switch/fadeInTime&lt;/code&gt; (5 s in the standard configuration) instead of jumping.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FrameNN/referenceFrame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The frame the shift is expressed in, for example a fixture&amp;rsquo;s frame.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FrameNN/offsetFrame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The shift itself, seen from the reference frame.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FrameNN/outputFrame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read-only: the reference frame with the shift applied.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For example, when a fixture has moved 5 mm along its own X axis, set &lt;code&gt;referenceFrame&lt;/code&gt; to the fixture&amp;rsquo;s pose and &lt;code&gt;offsetFrame&lt;/code&gt; to &lt;code&gt;[0.005, 0, 0, 0, 0, 0]&lt;/code&gt;, then enable the frame. The program follows the fixture.&lt;/p&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/applications/configure_application/robot/joint-jog-limiters/&#34;&gt;Set the joint jog limits&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Joint jog limits</title>
      <link>/docs/applications/configure_application/robot/joint-jog-limiters/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/applications/configure_application/robot/joint-jog-limiters/</guid>
      <description>
        
        
        &lt;p&gt;The joint jog limits keep each joint inside a range while you jog it in manual joint mode. They are separate from the axis &lt;a href=&#34;/docs/applications/configure_application/axes_control/axes_limiters/pva-limiters/&#34;&gt;limiter&lt;/a&gt;, which limits every mode: set the jog limits a little inside it, so a jog stops before the limiter has to step in.&lt;/p&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Using the standard robot GUI?
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;The jog limits are under &lt;strong&gt;Joint Jog Limiters&lt;/strong&gt; on the robot GUI&amp;rsquo;s &lt;strong&gt;Axis Limiters&lt;/strong&gt; tab, one row per axis. Press &lt;strong&gt;Save Settings&lt;/strong&gt; to keep your changes.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/applications/configure_application/robot/_media/jointJogLimiters.png&#34;
         alt=&#34;Joint Jog Limiters panel of the robot GUI: for Axis1 to Axis6 an Enable switch, LowerLimit and UpperLimit in degrees, and an indicator light&#34; width=&#34;450&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enable&lt;/strong&gt;: &lt;code&gt;outputLimiterEnable&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LowerLimit&lt;/strong&gt; and &lt;strong&gt;UpperLimit&lt;/strong&gt;: &lt;code&gt;outputLimiterMin&lt;/code&gt; and &lt;code&gt;outputLimiterMax&lt;/code&gt;. The GUI shows them in degrees.&lt;/li&gt;
&lt;li&gt;The light: &lt;code&gt;outputLimiterIsActive&lt;/code&gt;, on while the joint is outside its range.&lt;/li&gt;
&lt;/ul&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Outside the range, a joint can only be jogged back towards it:&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;Between outputLimiterMin and outputLimiterMax the joint can be jogged freely. Beyond either limit it can only be jogged back towards the range, and warning 112 is shown.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 170&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-jog-fwd&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-fwd&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-jog-back&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-back&#34;/&gt;&lt;/marker&gt;
    &lt;marker id=&#34;mcx-jog-line&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;6&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;&lt;/marker&gt;
  &lt;/defs&gt;
  &lt;rect class=&#34;mcx-ax-zone-warn&#34; x=&#34;40&#34; y=&#34;40&#34; width=&#34;150&#34; height=&#34;70&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-zone-ok&#34; x=&#34;190&#34; y=&#34;40&#34; width=&#34;380&#34; height=&#34;70&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-zone-warn&#34; x=&#34;570&#34; y=&#34;40&#34; width=&#34;150&#34; height=&#34;70&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-frame&#34; x=&#34;40&#34; y=&#34;40&#34; width=&#34;680&#34; height=&#34;70&#34;/&gt;
  &lt;line class=&#34;mcx-ax-level&#34; x1=&#34;190&#34; y1=&#34;28&#34; x2=&#34;190&#34; y2=&#34;116&#34;/&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;190&#34; y=&#34;22&#34;&gt;outputLimiterMin&lt;/text&gt;
  &lt;line class=&#34;mcx-ax-level&#34; x1=&#34;570&#34; y1=&#34;28&#34; x2=&#34;570&#34; y2=&#34;116&#34;/&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;570&#34; y=&#34;22&#34;&gt;outputLimiterMax&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;380.0&#34; y=&#34;65.0&#34;&gt;jog freely&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M380.0 85.0 L460.0 85.0&#34; marker-end=&#34;url(#mcx-jog-line)&#34;/&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M380.0 85.0 L300.0 85.0&#34; marker-end=&#34;url(#mcx-jog-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-warn&#34; x=&#34;115.0&#34; y=&#34;65.0&#34;&gt;back only&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M75.0 85.0 L155.0 85.0&#34; marker-end=&#34;url(#mcx-jog-line)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-warn&#34; x=&#34;645.0&#34; y=&#34;65.0&#34;&gt;back only&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-line&#34; d=&#34;M685.0 85.0 L605.0 85.0&#34; marker-end=&#34;url(#mcx-jog-line)&#34;/&gt;
  &lt;line class=&#34;mcx-ax-axis&#34; x1=&#34;40&#34; y1=&#34;112&#34; x2=&#34;720&#34; y2=&#34;112&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;380.0&#34; y=&#34;134&#34;&gt;joint position, rad&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-warn&#34; x=&#34;115.0&#34; y=&#34;154&#34;&gt;warning 112&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-warn&#34; x=&#34;645.0&#34; y=&#34;154&#34;&gt;warning 112&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;p&gt;Each axis has its own set, under &lt;code&gt;root/ManipulatorControl/jointCompliance/Controllers/admittanceControlNN/positionIntegrator/&lt;/code&gt;, with &lt;code&gt;NN&lt;/code&gt; the axis number: &lt;code&gt;01&lt;/code&gt;, &lt;code&gt;02&lt;/code&gt; and so on.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Standard robot configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outputLimiterEnable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt; switches the limits on. They are switched on again at every start-up&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outputLimiterMin&lt;/code&gt;, &lt;code&gt;outputLimiterMax&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The jog range, in rad&lt;/td&gt;
&lt;td&gt;For example ±3.124 on axis 1, ±1.292 on axis 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outputLimiterClampDisable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;: outside the range, the joint only stops moving further out. &lt;code&gt;0&lt;/code&gt;: the target is pulled back onto the limit at once&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outputLimiterIsActive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Output: &lt;code&gt;1&lt;/code&gt; above the upper limit, &lt;code&gt;-1&lt;/code&gt; below the lower limit, &lt;code&gt;0&lt;/code&gt; inside&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Keep outputLimiterClampDisable at 1. With 0, switching to joint jog outside the range makes the joint jump to the limit.&lt;/p&gt;
&lt;/div&gt;


&lt;h2 id=&#34;what-happens-at-a-limit&#34;&gt;What happens at a limit&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;While a joint is outside its range, the robot shows warning 112, &lt;code&gt;WA_JOG_JOINT_JOYSTICK_OUTSIDE_LIMITS_ERROR&lt;/code&gt;, with the axis number. Jog the joint back into its range to clear it.&lt;/li&gt;
&lt;li&gt;The limits apply to joint jog only. Cartesian jog, programs and the joint trajectory input are limited by the axis limiter instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;set-the-limits&#34;&gt;Set the limits&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Find the range of each joint on the robot&amp;rsquo;s data sheet, and keep a margin to the axis limiter.&lt;/li&gt;
&lt;li&gt;Write &lt;code&gt;outputLimiterMin&lt;/code&gt; and &lt;code&gt;outputLimiterMax&lt;/code&gt; for each axis, in rad.&lt;/li&gt;
&lt;li&gt;Jog each joint slowly to both limits in simulation mode, and check that it stops there and that warning 112 appears.&lt;/li&gt;
&lt;li&gt;Save the parameter tree.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/applications/configure_application/robot/manipulability/&#34;&gt;Set the manipulability limits&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Manipulability</title>
      <link>/docs/applications/configure_application/robot/manipulability/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/applications/configure_application/robot/manipulability/</guid>
      <description>
        
        
        &lt;p&gt;Close to a singular pose a robot loses a direction it can move in, and a small tool motion can need a large joint motion. Manipulability measures how far the robot is from such a pose: it is &lt;code&gt;0&lt;/code&gt; at a singularity and grows further away. Motorcortex uses it in two ways: a detector warns and stops, and a lookup table slows Cartesian motion down.&lt;/p&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Using the standard robot GUI?
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;The detector is under &lt;strong&gt;Manipulability&lt;/strong&gt; on the robot GUI&amp;rsquo;s &lt;strong&gt;Alarms&lt;/strong&gt; tab. Press &lt;strong&gt;Save Settings&lt;/strong&gt; to keep your changes. The lookup table has no GUI fields; set it in Motorcortex Desk.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/applications/configure_application/robot/_media/manipulability_detector.png&#34;
         alt=&#34;Manipulability panel of the robot GUI: Input 0.056, an Enable switch, Too Low 0.005 and Low 0.015, each with an indicator light&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input&lt;/strong&gt;: the current manipulability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable&lt;/strong&gt;: &lt;code&gt;enable&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too Low&lt;/strong&gt; and &lt;strong&gt;Low&lt;/strong&gt;: &lt;code&gt;tooLow&lt;/code&gt; and &lt;code&gt;low&lt;/code&gt;. The lights next to them are &lt;code&gt;isTooLow&lt;/code&gt; and &lt;code&gt;isLow&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;div class=&#34;mcx-svg mcx-axis&#34; role=&#34;group&#34; aria-label=&#34;Manipulability runs from 0 in a singular pose, such as an arm stretched out, and grows as the arm bends away from it. Detector row: below tooLow an emergency stop, 507; between tooLow and low warning 109; above low no action. Lookup row: the speed factor from 0 to 1. The standard setting is 1 everywhere, so no slowing down. An example line stays low up to x[0], y[0], rises to x[1], y[1] and stays at 1 after it.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 760 414&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-man-head&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;7&#34; markerHeight=&#34;7&#34; orient=&#34;auto-start-reverse&#34;&gt;
      &lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-ax-head-line&#34;/&gt;
    &lt;/marker&gt;
  &lt;/defs&gt;

  &lt;!-- poses along the scale --&gt;
  &lt;rect class=&#34;mcx-ax-base&#34; x=&#34;215&#34; y=&#34;100&#34; width=&#34;30&#34; height=&#34;8&#34; rx=&#34;2&#34;/&gt;
  &lt;path class=&#34;mcx-ax-signal&#34; d=&#34;M230 100 V60 V22&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;230&#34; cy=&#34;100&#34; r=&#34;5&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;230&#34; cy=&#34;60&#34; r=&#34;5&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;230&#34; cy=&#34;22&#34; r=&#34;5&#34;/&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;246&#34; y=&#34;50&#34;&gt;Arm stretched out&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-sub mcx-ax-start&#34; x=&#34;246&#34; y=&#34;66&#34;&gt;singular pose&lt;/text&gt;

  &lt;rect class=&#34;mcx-ax-base&#34; x=&#34;645&#34; y=&#34;100&#34; width=&#34;30&#34; height=&#34;8&#34; rx=&#34;2&#34;/&gt;
  &lt;path class=&#34;mcx-ax-signal&#34; d=&#34;M660 100 L660 62 L700 44 L712 74&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;660&#34; cy=&#34;100&#34; r=&#34;5&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;660&#34; cy=&#34;62&#34; r=&#34;5&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-joint&#34; cx=&#34;700&#34; cy=&#34;44&#34; r=&#34;5&#34;/&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-end&#34; x=&#34;640&#34; y=&#34;50&#34;&gt;Arm bent&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-sub mcx-ax-end&#34; x=&#34;640&#34; y=&#34;66&#34;&gt;far from a singularity&lt;/text&gt;

  &lt;line class=&#34;mcx-ax-line&#34; x1=&#34;400&#34; y1=&#34;90&#34; x2=&#34;560&#34; y2=&#34;90&#34; marker-end=&#34;url(#mcx-man-head)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;480&#34; y=&#34;82&#34;&gt;manipulability grows&lt;/text&gt;

  &lt;!-- row titles --&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;10&#34; y=&#34;150&#34;&gt;Detector&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-sub mcx-ax-start&#34; x=&#34;10&#34; y=&#34;166&#34;&gt;warns and stops&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-title mcx-ax-start&#34; x=&#34;10&#34; y=&#34;262&#34;&gt;Lookup&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-sub mcx-ax-start&#34; x=&#34;10&#34; y=&#34;278&#34;&gt;slows Cartesian&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-sub mcx-ax-start&#34; x=&#34;10&#34; y=&#34;292&#34;&gt;motion down&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;10&#34; y=&#34;316&#34;&gt;speed factor, 0 to 1&lt;/text&gt;

  &lt;!-- detector band --&gt;
  &lt;rect class=&#34;mcx-ax-zone-stop&#34; x=&#34;170&#34; y=&#34;130&#34; width=&#34;120&#34; height=&#34;48&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-zone-warn&#34; x=&#34;290&#34; y=&#34;130&#34; width=&#34;130&#34; height=&#34;48&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-zone-ok&#34; x=&#34;420&#34; y=&#34;130&#34; width=&#34;310&#34; height=&#34;48&#34;/&gt;
  &lt;rect class=&#34;mcx-ax-frame&#34; x=&#34;170&#34; y=&#34;130&#34; width=&#34;560&#34; height=&#34;48&#34;/&gt;
  &lt;text class=&#34;mcx-ax-stop&#34; x=&#34;230&#34; y=&#34;151&#34;&gt;Emergency stop&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;230&#34; y=&#34;168&#34;&gt;507&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-warn&#34; x=&#34;355&#34; y=&#34;151&#34;&gt;Warning&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;355&#34; y=&#34;168&#34;&gt;109&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;575&#34; y=&#34;159&#34;&gt;No action&lt;/text&gt;

  &lt;!-- lookup plot --&gt;
  &lt;rect class=&#34;mcx-ax-frame&#34; x=&#34;170&#34; y=&#34;215&#34; width=&#34;560&#34; height=&#34;120&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-end&#34; x=&#34;162&#34; y=&#34;234&#34;&gt;1&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-end&#34; x=&#34;162&#34; y=&#34;339&#34;&gt;0&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-input&#34; d=&#34;M170 230 H730&#34;/&gt;
  &lt;path class=&#34;mcx-ax-output&#34; d=&#34;M170 310 H290 L620 230 H730&#34;/&gt;
  &lt;circle class=&#34;mcx-ax-dot&#34; cx=&#34;290&#34; cy=&#34;310&#34; r=&#34;6&#34;/&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-start&#34; x=&#34;300&#34; y=&#34;326&#34;&gt;x[0], y[0]&lt;/text&gt;
  &lt;circle class=&#34;mcx-ax-dot&#34; cx=&#34;620&#34; cy=&#34;230&#34; r=&#34;6&#34;/&gt;
  &lt;text class=&#34;mcx-ax-mono mcx-ax-end&#34; x=&#34;610&#34; y=&#34;252&#34;&gt;x[1], y[1]&lt;/text&gt;

  &lt;!-- levels through both rows --&gt;
  &lt;line class=&#34;mcx-ax-level&#34; x1=&#34;290&#34; y1=&#34;124&#34; x2=&#34;290&#34; y2=&#34;352&#34;/&gt;
  &lt;line class=&#34;mcx-ax-level&#34; x1=&#34;420&#34; y1=&#34;124&#34; x2=&#34;420&#34; y2=&#34;352&#34;/&gt;

  &lt;!-- axis --&gt;
  &lt;line class=&#34;mcx-ax-axis&#34; x1=&#34;170&#34; y1=&#34;352&#34; x2=&#34;730&#34; y2=&#34;352&#34; marker-end=&#34;url(#mcx-man-head)&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label&#34; x=&#34;170&#34; y=&#34;370&#34;&gt;0&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;290&#34; y=&#34;370&#34;&gt;tooLow&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-mono&#34; x=&#34;420&#34; y=&#34;370&#34;&gt;low&lt;/text&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-end&#34; x=&#34;730&#34; y=&#34;370&#34;&gt;manipulability, not to scale&lt;/text&gt;

  &lt;!-- legend for the lookup --&gt;
  &lt;path class=&#34;mcx-ax-output&#34; d=&#34;M170 398 H200&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;208&#34; y=&#34;402&#34;&gt;example: slows down near a singularity&lt;/text&gt;
  &lt;path class=&#34;mcx-ax-input&#34; d=&#34;M460 398 H490&#34;/&gt;
  &lt;text class=&#34;mcx-ax-label mcx-ax-start&#34; x=&#34;498&#34; y=&#34;402&#34;&gt;standard: 1 everywhere, no slowing down&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;




 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Wrong manipulability settings can make the robot move suddenly near a singular pose. Try every change in simulation mode first.&lt;/p&gt;
&lt;/div&gt;


&lt;h2 id=&#34;find-your-robots-values&#34;&gt;Find your robot&amp;rsquo;s values&lt;/h2&gt;
&lt;p&gt;The value depends on the robot and has no unit, so look at it on your own robot first:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In simulation mode, switch to manual joint mode. The detector is off in joint mode, so it does not stop you.&lt;/li&gt;
&lt;li&gt;Watch &lt;code&gt;root/ManipulatorControl/manipulabilityDetector/input&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Move one joint at a time towards a singular pose, such as a straight wrist or a fully stretched arm, and note the value where Cartesian motion should slow down, warn and stop.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;warn-and-stop&#34;&gt;Warn and stop&lt;/h2&gt;
&lt;p&gt;The detector is a window detector at &lt;code&gt;root/ManipulatorControl/manipulabilityDetector/&lt;/code&gt;. It works only while the robot is engaged in manual Cartesian mode, or runs a Cartesian motion in automatic mode.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Standard robot configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;enable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt; switches the detector on&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;At or below this value: warning 109, &lt;code&gt;WA_CLOSE_TO_SINGULARITY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.015&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tooLow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;At or below this value: emergency stop 507, &lt;code&gt;ES_TOO_CLOSE_TO_SINGULARITY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.005&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;timeWindow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How long, in s, the value must stay below a level before it trips&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;input&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Output: the current manipulability&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;isLow&lt;/code&gt;, &lt;code&gt;isTooLow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Outputs: &lt;code&gt;1&lt;/code&gt; once a level has tripped, until the errors are reset&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;high&lt;/code&gt; and &lt;code&gt;tooHigh&lt;/code&gt; exist too, but are not used.&lt;/p&gt;
&lt;p&gt;Switching to manual Cartesian mode in a pose below &lt;code&gt;tooLow&lt;/code&gt; gives the emergency stop straight away. Move the robot away from the singularity in manual joint mode first.&lt;/p&gt;
&lt;h2 id=&#34;slow-down-near-a-singularity&#34;&gt;Slow down near a singularity&lt;/h2&gt;
&lt;p&gt;The lookup table at &lt;code&gt;root/ManipulatorControl/manipulabilityGainLookup/&lt;/code&gt; turns the manipulability into a speed factor, normally between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;, as in the Lookup row of the figure above. It draws straight lines between its points, and keeps the first and last value outside them. The factor slows down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cartesian jog, while you move towards a singularity. Moving away is not slowed.&lt;/li&gt;
&lt;li&gt;Cartesian moves in automatic mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Joint jog and joint moves are not slowed.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Standard robot configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;numPoints&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How many points of &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; are used, at most 7&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;x&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The manipulability at each point. Must increase from point to point, or the factor becomes &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.005&lt;/code&gt;, &lt;code&gt;0.05&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;y&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The speed factor at each point&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;: no slowing down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Multiplies the result&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Output: the speed factor in use&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;Set &lt;code&gt;numPoints&lt;/code&gt;, then &lt;code&gt;x&lt;/code&gt; from about &lt;code&gt;tooLow&lt;/code&gt; up to where slowing down should stop, and &lt;code&gt;y&lt;/code&gt; rising to &lt;code&gt;1&lt;/code&gt; at the last point.&lt;/li&gt;
&lt;li&gt;In simulation mode, jog towards a singular pose in manual Cartesian mode and watch &lt;code&gt;output&lt;/code&gt;: the robot should slow down smoothly before &lt;code&gt;low&lt;/code&gt; is reached.&lt;/li&gt;
&lt;li&gt;Save the parameter tree.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/applications/configure_application/alarm_devices/&#34;&gt;Configure the alarm devices&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
  </channel>
</rss>
