<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hades.mech.northwestern.edu//index.php?action=history&amp;feed=atom&amp;title=Mobile_Manipulation_Capstone_2024</id>
	<title>Mobile Manipulation Capstone 2024 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hades.mech.northwestern.edu//index.php?action=history&amp;feed=atom&amp;title=Mobile_Manipulation_Capstone_2024"/>
	<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;action=history"/>
	<updated>2026-05-18T20:28:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26916&amp;oldid=prev</id>
		<title>Lynch: /* Milestone 3:  Feedforward Control */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26916&amp;oldid=prev"/>
		<updated>2024-11-13T00:24:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Milestone 3:  Feedforward Control&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:24, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 309:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 309:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you don&#039;t get these results (within reasonable roundoff error), you should correct your program before moving on.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you don&#039;t get these results (within reasonable roundoff error), you should correct your program before moving on.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Singularities:&#039;&#039;&#039; If the 6x9 Jacobian matrix &amp;lt;math&amp;gt;J_e&amp;lt;/math&amp;gt; is singular (i.e., its rank drops below 6) or nearly singular, the pseudoinverse algorithm may generate a pseudoinverse &amp;lt;math&amp;gt;J_e^\dagger&amp;lt;/math&amp;gt; with unreasonably large entries, which could lead to unacceptably large commanded joint speeds if we ask for even a very small component of a twist in a direction that the near-singularity nearly prevents.  A better behavior for the robot would be to essentially ignore any requested twist components in directions that the near-singularity renders difficult to achieve.  To achieve this&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; in MATLAB and Mathematica&lt;/del&gt;, you may wish to explore the tolerance options for the pseudoinverse algorithm.  The tolerance option allows you to specify how close to zero a singular value must be to be treated as zero.  By treating small singular values (that are greater than the default tolerance) as zero, you will avoid having pseudoinverse matrices with unreasonably large entries.  A MATLAB example is shown below:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Singularities:&#039;&#039;&#039; If the 6x9 Jacobian matrix &amp;lt;math&amp;gt;J_e&amp;lt;/math&amp;gt; is singular (i.e., its rank drops below 6) or nearly singular, the pseudoinverse algorithm may generate a pseudoinverse &amp;lt;math&amp;gt;J_e^\dagger&amp;lt;/math&amp;gt; with unreasonably large entries, which could lead to unacceptably large commanded joint speeds if we ask for even a very small component of a twist in a direction that the near-singularity nearly prevents.  A better behavior for the robot would be to essentially ignore any requested twist components in directions that the near-singularity renders difficult to achieve.  To achieve this, you may wish to explore the tolerance options for the pseudoinverse algorithm&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; in MATLAB, Mathematica, or NumPy&lt;/ins&gt;.  The tolerance option allows you to specify how close to zero a singular value must be to be treated as zero.  By treating small singular values (that are greater than the default tolerance) as zero, you will avoid having pseudoinverse matrices with unreasonably large entries.  A MATLAB example is shown below:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &amp;gt;&amp;gt; M = [[2,0];[0,0.00001]]   % a matrix that&#039;s nearly singular&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &amp;gt;&amp;gt; M = [[2,0];[0,0.00001]]   % a matrix that&#039;s nearly singular&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26915&amp;oldid=prev</id>
		<title>Lynch: /* Milestone 2:  Reference Trajectory Generation */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26915&amp;oldid=prev"/>
		<updated>2024-11-12T23:42:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Milestone 2:  Reference Trajectory Generation&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:42, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 227:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 227:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* A representation of the &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; configurations of the end-effector along the entire concatenated eight-segment reference trajectory.  Each of these &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; reference points represents a transformation matrix &amp;lt;math&amp;gt;T_{se}&amp;lt;/math&amp;gt; of the end-effector frame {e} relative to {s} at an instant in time, plus the gripper state (0 or 1).  For example, if your entire eight-segment trajectory takes 30 seconds&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, for example&lt;/del&gt;, you will have approximately &amp;lt;math&amp;gt;N \approx 30k/0.01&amp;lt;/math&amp;gt; sequential reference configurations (perhaps one or a few more, depending on how you treat boundary conditions), each separated by &amp;lt;math&amp;gt;0.01/k&amp;lt;/math&amp;gt; seconds in time.  These reference configurations will be used by your controller.  Your representation of the reference configurations could be anything you want.  If you use an &amp;lt;math&amp;gt;N \times 13&amp;lt;/math&amp;gt; matrix, for example, each of the &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; rows would represent a configuration of the end-effector frame {e} relative to {s} at that instant in time.  Twelve of the 13 entries of a matrix row are the top three rows of the transformation matrix &amp;lt;math&amp;gt;T_{se}&amp;lt;/math&amp;gt; at that instant of time, i.e., &amp;lt;math&amp;gt;r_{11}, r_{12}, r_{13}, r_{21}, r_{22}, r_{23}, r_{31}, r_{32}, r_{33}, p_x, p_y, p_z&amp;lt;/math&amp;gt; from &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* A representation of the &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; configurations of the end-effector along the entire concatenated eight-segment reference trajectory.  Each of these &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; reference points represents a transformation matrix &amp;lt;math&amp;gt;T_{se}&amp;lt;/math&amp;gt; of the end-effector frame {e} relative to {s} at an instant in time, plus the gripper state (0 or 1).  For example, if your entire eight-segment trajectory takes 30 seconds, you will have approximately &amp;lt;math&amp;gt;N \approx 30k/0.01&amp;lt;/math&amp;gt; sequential reference configurations (perhaps one or a few more, depending on how you treat boundary conditions), each separated by &amp;lt;math&amp;gt;0.01/k&amp;lt;/math&amp;gt; seconds in time.  These reference configurations will be used by your controller.  Your representation of the reference configurations could be anything you want.  If you use an &amp;lt;math&amp;gt;N \times 13&amp;lt;/math&amp;gt; matrix, for example, each of the &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; rows would represent a configuration of the end-effector frame {e} relative to {s} at that instant in time.  Twelve of the 13 entries of a matrix row are the top three rows of the transformation matrix &amp;lt;math&amp;gt;T_{se}&amp;lt;/math&amp;gt; at that instant of time, i.e., &amp;lt;math&amp;gt;r_{11}, r_{12}, r_{13}, r_{21}, r_{22}, r_{23}, r_{31}, r_{32}, r_{33}, p_x, p_y, p_z&amp;lt;/math&amp;gt; from &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math&amp;gt; T_{se} = \left[\begin{array}{cccc} r_{11} &amp;amp; r_{12} &amp;amp; r_{13} &amp;amp; p_x \\ r_{21} &amp;amp; r_{22} &amp;amp; r_{23} &amp;amp; p_y \\ r_{31} &amp;amp; r_{32} &amp;amp; r_{33} &amp;amp; p_z \\ 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \end{array}\right], &amp;lt;/math&amp;gt; &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math&amp;gt; T_{se} = \left[\begin{array}{cccc} r_{11} &amp;amp; r_{12} &amp;amp; r_{13} &amp;amp; p_x \\ r_{21} &amp;amp; r_{22} &amp;amp; r_{23} &amp;amp; p_y \\ r_{31} &amp;amp; r_{32} &amp;amp; r_{33} &amp;amp; p_z \\ 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \end{array}\right], &amp;lt;/math&amp;gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26914&amp;oldid=prev</id>
		<title>Lynch: /* Milestone 1:  youBot Kinematics Simulator and csv Output */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26914&amp;oldid=prev"/>
		<updated>2024-11-12T23:30:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Milestone 1:  youBot Kinematics Simulator and csv Output&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:30, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 194:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 194:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* new chassis configuration is obtained from odometry, as described in Chapter 13.4&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* new chassis configuration is obtained from odometry, as described in Chapter 13.4&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Testing the &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function:&#039;&#039;&#039; To test your &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function, you should embed it in a program that takes an initial configuration of the youBot and simulates constant controls for one second.  For example, you can set &amp;lt;math&amp;gt;\Delta t&amp;lt;/math&amp;gt; to 0.01 seconds and run a loop that calls &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; 100 times with constant controls &amp;lt;math&amp;gt;(u,\dot{\theta})&amp;lt;/math&amp;gt;.  Your program should write a csv file&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/del&gt; where each line has 13 values separated by commas (the 12-vector consisting of 3 chassis configuration variables, the 5 arm joint angles, and the 4 wheel angles, plus a &quot;0&quot; for &quot;gripper open&quot;) representing the robot&#039;s configuration after each integration step.  Then you should load the csv file into the CSV Mobile Manipulation youBot CoppeliaSim scene and watch the animation of the constant controls to see if your &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function is working properly (and to check your ability to produce a csv file).&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Testing the &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function:&#039;&#039;&#039; To test your &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function, you should embed it in a program that takes an initial configuration of the youBot and simulates constant controls for one second.  For example, you can set &amp;lt;math&amp;gt;\Delta t&amp;lt;/math&amp;gt; to 0.01 seconds and run a loop that calls &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; 100 times with constant controls &amp;lt;math&amp;gt;(u,\dot{\theta})&amp;lt;/math&amp;gt;.  Your program should write a csv file where each line has 13 values separated by commas (the 12-vector consisting of 3 chassis configuration variables, the 5 arm joint angles, and the 4 wheel angles, plus a &quot;0&quot; for &quot;gripper open&quot;) representing the robot&#039;s configuration after each integration step.  Then you should load the csv file into the CSV Mobile Manipulation youBot CoppeliaSim scene and watch the animation of the constant controls to see if your &amp;lt;tt&amp;gt;NextState&amp;lt;/tt&amp;gt; function is working properly (and to check your ability to produce a csv file).&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Writing_a_CSV_File|&#039;&#039;&#039;This page&#039;&#039;&#039;]] has information on writing csv files in Python, MATLAB, and Mathematica.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Writing_a_CSV_File|&#039;&#039;&#039;This page&#039;&#039;&#039;]] has information on writing csv files in Python, MATLAB, and Mathematica.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26913&amp;oldid=prev</id>
		<title>Lynch: /* Joints in Scene 6 */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26913&amp;oldid=prev"/>
		<updated>2024-11-12T23:24:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Joints in Scene 6&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:24, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;In Scene 6, all joints are in passive mode, except for the two joints controlling the gripper motion.&#039;&#039;&#039;  All passive joints kinematically follow the motions commanded in the csv file.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;In Scene 6, all joints are in passive mode, except for the two joints controlling the gripper motion.&#039;&#039;&#039;  All passive joints kinematically follow the motions commanded in the csv file.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All joint limits for the youBot&#039;s 5R arm are disabled in Scene 6.  This is unrealistic, but &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;respecting&lt;/del&gt; joint limits &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;not part of&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;this&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;capstone&lt;/del&gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;project&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All joint limits for the youBot&#039;s 5R arm are disabled in Scene 6.  This is unrealistic&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, of course&lt;/ins&gt;, but &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you can enforce&lt;/ins&gt; joint limits &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;once&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;everything&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;working&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Gripper ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Gripper ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26912&amp;oldid=prev</id>
		<title>Lynch: /* Kinematics of the youBot */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26912&amp;oldid=prev"/>
		<updated>2024-11-12T23:12:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kinematics of the youBot&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:12, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 109:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 109:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;lt;math&amp;gt;\mathcal{B}_5 = (\omega_5,v_5)&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\omega_5 = (0,0,1), \; v_5 = (0,0,0)&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;lt;math&amp;gt;\mathcal{B}_5 = (\omega_5,v_5)&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\omega_5 = (0,0,1), \; v_5 = (0,0,0)&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this project, for simplicity &#039;&#039;&#039;we assume no joint limits on the five joints of the robot arm.&#039;&#039;&#039; It is recommended, however, that you choose limits on the wheel and joint velocities.  We will come back to this issue later.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this project, for simplicity &#039;&#039;&#039;we assume no joint limits on the five joints of the robot arm.&#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (But see &quot;Other Things to Try&quot; at the bottom of this page.)&lt;/ins&gt; It is recommended, however, that you choose limits on the wheel and joint velocities.  We will come back to this issue later.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The end-effector frame {e} is rigidly attached to the last link and is midway between the tips of the gripper fingers.  The minimum opening distance of the gripper is &amp;lt;math&amp;gt;d_{1,\text{min}} = 2&amp;lt;/math&amp;gt; cm (i.e., the fingers cannot fully close; they can only get within 2 cm of each other), the maximum opening distance is &amp;lt;math&amp;gt;d_{1,\text{max}} = 7&amp;lt;/math&amp;gt; cm, the interior length of the fingers is &amp;lt;math&amp;gt;d_{2} = 3.5&amp;lt;/math&amp;gt; cm, and the distance from the base of the fingers to the frame {e} is &amp;lt;math&amp;gt;d_{3} = 4.3&amp;lt;/math&amp;gt; cm.  When the gripper closes, it closes until it reaches its minimum closing distance or encounters a force large enough to prevent further closing.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The end-effector frame {e} is rigidly attached to the last link and is midway between the tips of the gripper fingers.  The minimum opening distance of the gripper is &amp;lt;math&amp;gt;d_{1,\text{min}} = 2&amp;lt;/math&amp;gt; cm (i.e., the fingers cannot fully close; they can only get within 2 cm of each other), the maximum opening distance is &amp;lt;math&amp;gt;d_{1,\text{max}} = 7&amp;lt;/math&amp;gt; cm, the interior length of the fingers is &amp;lt;math&amp;gt;d_{2} = 3.5&amp;lt;/math&amp;gt; cm, and the distance from the base of the fingers to the frame {e} is &amp;lt;math&amp;gt;d_{3} = 4.3&amp;lt;/math&amp;gt; cm.  When the gripper closes, it closes until it reaches its minimum closing distance or encounters a force large enough to prevent further closing.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26911&amp;oldid=prev</id>
		<title>Lynch: /* Introduction, and the CSV Mobile Manipulation youBot CoppeliaSim Scene */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26911&amp;oldid=prev"/>
		<updated>2024-11-12T23:01:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Introduction, and the CSV Mobile Manipulation youBot CoppeliaSim Scene&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:01, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[Getting_Started_with_the_CoppeliaSim_Simulator|Make sure you have a working CoppeliaSim installation]]&#039;&#039;&#039;.  [[CoppeliaSim_Introduction#Scene_6:_CSV_Mobile_Manipulation_youBot|&#039;&#039;&#039;This project uses Scene 6 (CSV Mobile Manipulation youBot) from the CoppeliaSim Introduction wiki page&#039;&#039;&#039;]].  You should download it and test it with its sample csv file, to see what a solution looks like.  Leave the block&#039;s initial and goal configurations as the default.  The default initial block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (1~\text{m}, 0~\text{m}, 0~\text{rad})&amp;lt;/math&amp;gt; and the final block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (0~\text{m},-1~\text{m},-\pi/2~\text{rad})&amp;lt;/math&amp;gt;. (If the simulation plays too quickly, toggle the &quot;real-time mode&quot; by clicking on the icon that looks like a clock in the top toolbar.) &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[Getting_Started_with_the_CoppeliaSim_Simulator|Make sure you have a working CoppeliaSim installation]]&#039;&#039;&#039;.  [[CoppeliaSim_Introduction#Scene_6:_CSV_Mobile_Manipulation_youBot|&#039;&#039;&#039;This project uses Scene 6 (CSV Mobile Manipulation youBot) from the CoppeliaSim Introduction wiki page&#039;&#039;&#039;]].  You should download it and test it with its sample csv file, to see what a solution looks like.  Leave the block&#039;s initial and goal configurations as the default.  The default initial block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (1~\text{m}, 0~\text{m}, 0~\text{rad})&amp;lt;/math&amp;gt; and the final block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (0~\text{m},-1~\text{m},-\pi/2~\text{rad})&amp;lt;/math&amp;gt;. (If the simulation plays too quickly, toggle the &quot;real-time mode&quot; by clicking on the icon that looks like a clock in the top toolbar.) &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unlike previous projects, where we used CoppeliaSim to simply animate the robot&#039;s motion, in this project CoppeliaSim will use a physics simulator to simulate the interaction &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;of&lt;/del&gt; the youBot &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with&lt;/del&gt; the block.  In other words, if the gripper closes on the block in the wrong position or orientation, the block may simply slide out of the grasp.  The interaction between the robot and the block is governed by a physics simulator, often called a &quot;physics engine,&quot; which approximately accounts for friction, mass, inertial, and other properties.  CoppeliaSim has different physics engines which you can select, including Bullet, ODE, and MuJoCo, but ODE is the default for Scene 6.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unlike previous projects, where we used CoppeliaSim to simply animate the robot&#039;s motion, in this project CoppeliaSim will use a physics simulator to simulate the interaction &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;between&lt;/ins&gt; the youBot&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s&lt;/ins&gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gripper and&lt;/ins&gt; the block&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and between the block and the floor&lt;/ins&gt;.  In other words, if the gripper closes on the block in the wrong position or orientation, the block may simply slide out of the grasp.  The interaction between the robot and the block is governed by a physics simulator, often called a &quot;physics engine,&quot; which approximately accounts for friction, mass, inertial, and other properties.  CoppeliaSim has different physics engines which you can select, including Bullet, ODE, and MuJoCo, but ODE is the default for Scene 6.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;The time between each successive configuration in your csv file is 0.01 seconds (10 milliseconds).&#039;&#039;&#039;  This is an important bit of information, since, unlike the previous visualization scenes which simply animated a csv file with no particular notion of time, the notion of time is critical in a dynamic simulation.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;The time between each successive configuration in your csv file is 0.01 seconds (10 milliseconds).&#039;&#039;&#039;  This is an important bit of information, since, unlike the previous visualization scenes which simply animated a csv file with no particular notion of time, the notion of time is critical in a dynamic simulation.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26910&amp;oldid=prev</id>
		<title>Lynch: /* Introduction, and the CSV Mobile Manipulation youBot CoppeliaSim Scene */</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26910&amp;oldid=prev"/>
		<updated>2024-11-12T22:58:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Introduction, and the CSV Mobile Manipulation youBot CoppeliaSim Scene&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:58, 12 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The final output of your software will be a comma-separated values (csv) text file that specifies the configurations of the chassis and the arm, the angles of the four wheels, and the state of the gripper (open or closed) as a function of time.  This specification of the position-controlled youBot will then be &quot;played&quot; on the CoppeliaSim simulator to see if your trajectory succeeds in solving the task.  [[Writing_a_CSV_File|&#039;&#039;&#039;This page&#039;&#039;&#039;]] has information on writing csv files in Python, MATLAB, and Mathematica.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The final output of your software will be a comma-separated values (csv) text file that specifies the configurations of the chassis and the arm, the angles of the four wheels, and the state of the gripper (open or closed) as a function of time.  This specification of the position-controlled youBot will then be &quot;played&quot; on the CoppeliaSim simulator to see if your trajectory succeeds in solving the task.  [[Writing_a_CSV_File|&#039;&#039;&#039;This page&#039;&#039;&#039;]] has information on writing csv files in Python, MATLAB, and Mathematica.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[Getting_Started_with_the_CoppeliaSim_Simulator|Make sure you have a working CoppeliaSim installation]]&#039;&#039;&#039;.  [[CoppeliaSim_Introduction#Scene_6:_CSV_Mobile_Manipulation_youBot|&#039;&#039;&#039;This project uses Scene 6 (CSV Mobile Manipulation youBot) from the CoppeliaSim Introduction wiki page&#039;&#039;&#039;]].  You should download it and test it with its sample csv file, to see what a solution looks like.  Leave the block&#039;s initial and goal configurations as the default.  The default initial block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (1~\text{m}, 0~\text{m}, 0~\text{rad})&amp;lt;/math&amp;gt; and the final block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (0~\text{m},-1~\text{m},-\pi/2~\text{rad})&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[Getting_Started_with_the_CoppeliaSim_Simulator|Make sure you have a working CoppeliaSim installation]]&#039;&#039;&#039;.  [[CoppeliaSim_Introduction#Scene_6:_CSV_Mobile_Manipulation_youBot|&#039;&#039;&#039;This project uses Scene 6 (CSV Mobile Manipulation youBot) from the CoppeliaSim Introduction wiki page&#039;&#039;&#039;]].  You should download it and test it with its sample csv file, to see what a solution looks like.  Leave the block&#039;s initial and goal configurations as the default.  The default initial block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (1~\text{m}, 0~\text{m}, 0~\text{rad})&amp;lt;/math&amp;gt; and the final block configuration is at &amp;lt;math&amp;gt;(x,y,\theta) = (0~\text{m},-1~\text{m},-\pi/2~\text{rad})&amp;lt;/math&amp;gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; (If the simulation plays too quickly, toggle the &quot;real-time mode&quot; by clicking on the icon that looks like a clock in the top toolbar.) &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unlike previous projects, where we used CoppeliaSim to simply animate the robot&#039;s motion, in this project CoppeliaSim will use a physics simulator to simulate the interaction of the youBot with the block.  In other words, if the gripper closes on the block in the wrong position or orientation, the block may simply slide out of the grasp.  The interaction between the robot and the block is governed by a physics simulator, often called a &quot;physics engine,&quot; which approximately accounts for friction, mass, inertial, and other properties.  CoppeliaSim has different physics engines which you can select, including Bullet, ODE, and MuJoCo, but ODE is the default for Scene 6.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Unlike previous projects, where we used CoppeliaSim to simply animate the robot&#039;s motion, in this project CoppeliaSim will use a physics simulator to simulate the interaction of the youBot with the block.  In other words, if the gripper closes on the block in the wrong position or orientation, the block may simply slide out of the grasp.  The interaction between the robot and the block is governed by a physics simulator, often called a &quot;physics engine,&quot; which approximately accounts for friction, mass, inertial, and other properties.  CoppeliaSim has different physics engines which you can select, including Bullet, ODE, and MuJoCo, but ODE is the default for Scene 6.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
	<entry>
		<id>https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26909&amp;oldid=prev</id>
		<title>Lynch: Created page with &quot;x250px  This page describes the capstone project for ME 449. [https://youtu.be/Q1CekpBW6Js &#039;&#039;&#039;A video summary of this project is given in t...&quot;</title>
		<link rel="alternate" type="text/html" href="https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;diff=26909&amp;oldid=prev"/>
		<updated>2024-11-12T19:17:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php/File:Youbot-capstone.png&quot; title=&quot;File:Youbot-capstone.png&quot;&gt;right|x250px&lt;/a&gt;  This page describes the capstone project for ME 449. [https://youtu.be/Q1CekpBW6Js &amp;#039;&amp;#039;&amp;#039;A video summary of this project is given in t...&amp;quot;&lt;/p&gt;
&lt;a href=&quot;https://hades.mech.northwestern.edu//index.php?title=Mobile_Manipulation_Capstone_2024&amp;amp;diff=26909&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Lynch</name></author>
	</entry>
</feed>