(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.1' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 41492, 1159]*) (*NotebookOutlinePosition[ 42198, 1183]*) (* CellTagsIndexPosition[ 42154, 1179]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["\<\ Mathematical Model for 2D Point-footed, Midleg-Mass (Hipped) Walker\ \>", "Title"], Cell["\<\ Modeling by Robert D Gregg rdgregg@eecs.berkeley.edu Center for Hybrid and Embedded Software Systems Electrical Engineering and Computer Sciences University of California, Berkeley\ \>", "Subsubtitle"], Cell[BoxData[{ \(<< \ H:\\Screws.m\), "\[IndentingNewLine]", \(<< \ H:\\RobotLinks.m\)}], "Input"], Cell[CellGroupData[{ Cell["Variables", "Section"], Cell[BoxData[{ \(\(x4\ --\) > \ stance\ yaw\ angle\), "\[IndentingNewLine]", \(\(x5\ --\) > \ stance\ roll\ angle\), "\n", \(\(x6\ --\) > \ stance\ pitch\ angle\), "\n", \(\(x7\ --\) > \ swing\ pitch\ angle\)}], "Input"], Cell[CellGroupData[{ Cell["Constants", "Subsection"], Cell[BoxData[{ \(\(w\ --\) > \ hip\ width\), "\n", \(\(l\ --\) > \ leg\ length\), "\n", \(\(Mp\ --\) > \ pelvis/hip\ mass\), "\n", \(\(M\ --\) > \ midleg\ mass\), "\[IndentingNewLine]", \(\(gamma\ --\) > \ slope\ angle\)}], "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["2D Walker Open Chain Kinematics", "Section"], Cell[CellGroupData[{ Cell["Foot/Leg links", "Subsection"], Cell[BoxData[{ \(\(q\ = \ {{x1[t]}, {x2[t]}, {x3[t]}, {x6[t]}, {x7[ t]}};\)\), "\[IndentingNewLine]", \(\(qdot\ = \ D[q, t];\)\)}], "Input"], Cell[BoxData[{ \(\(ax1\ = \ {1, 0, 0, 0, 0, 0};\)\), "\[IndentingNewLine]", \(\(ax2\ = \ {0, 1, 0, 0, 0, 0};\)\), "\[IndentingNewLine]", \(\(ax3\ = \ {0, 0, 1, 0, 0, 0};\)\), "\[IndentingNewLine]", \(\(ax4\ = \ {0, 0, 0, 0, 0, 1};\)\), "\[IndentingNewLine]", \(\(ax5\ = \ {0, 0, 0, 0, 1, 0};\)\), "\[IndentingNewLine]", \(\(ax6\ = \ {0, 0, 0, 1, 0, 0};\)\), "\[IndentingNewLine]", \(\(ax7\ = \ Flatten[Append[ Cross[{0, 0, l}, {1, 0, 0}], {1, 0, 0}]];\)\)}], "Input"], Cell[BoxData[{ \(\(gst01\ = \ {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, l/2}, {0, 0, 0, 1}};\)\), "\[IndentingNewLine]", \(\(gst02\ = \ {{1, 0, 0, w/2}, {0, 1, 0, 0}, {0, 0, 1, l}, {0, 0, 0, 1}};\)\), "\[IndentingNewLine]", \(\(gst03\ = \ {{1, 0, 0, w}, {0, 1, 0, 0}, {0, 0, 1, l/2}, {0, 0, 0, 1}};\)\)}], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(J1\ = \ BodyJacobian[{ax1, x1[t]}, {ax2, x2[t]}, {ax3, x3[t]}, {ax6, x6[t]}, {{0, 0, 0, 0, 0, 0}, x7[t]}, \ gst01] // FullSimplify;\)\), "\[IndentingNewLine]", \(\(J2\ = \ BodyJacobian[{ax1, x1[t]}, {ax2, x2[t]}, {ax3, x3[t]}, {ax6, x6[t]}, {{0, 0, 0, 0, 0, 0}, x7[t]}, \ gst02] // FullSimplify;\)\), "\[IndentingNewLine]", \(\(J3\ = \ BodyJacobian[{ax1, x1[t]}, {ax2, x2[t]}, {ax3, x3[t]}, {ax6, x6[t]}, {ax7, x7[t]}, \ gst03] // FullSimplify;\)\), "\[IndentingNewLine]", \(MatrixForm[J1]\), "\[IndentingNewLine]", \(MatrixForm[J2]\), "\[IndentingNewLine]", \(MatrixForm[J3]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0"}, {"0", \(Cos[x6[t]]\), \(Sin[x6[t]]\), \(-\(l\/2\)\), "0"}, {"0", \(-Sin[x6[t]]\), \(Cos[x6[t]]\), "0", "0"}, {"0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0"}, {"0", \(Cos[x6[t]]\), \(Sin[x6[t]]\), \(-l\), "0"}, {"0", \(-Sin[x6[t]]\), \(Cos[x6[t]]\), "0", "0"}, {"0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0"}, { "0", \(Cos[x6[t] + x7[t]]\), \(Sin[ x6[t] + x7[t]]\), \(1\/2\ \((l - 2\ l\ Cos[x7[t]])\)\), \(l\/2\)}, { "0", \(-Sin[x6[t] + x7[t]]\), \(Cos[ x6[t] + x7[t]]\), \(l\ Sin[x7[t]]\), "0"}, {"0", "0", "0", "1", "1"}, {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[{ \(\(genM1\ = \ M*{{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}};\)\), "\[IndentingNewLine]", \(\(genM2\ = \ Mp*{{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}};\)\), "\[IndentingNewLine]", \(\(genM3\ = \ M*{{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}};\)\)}], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[ Mmatrix\ = \ Transpose[J1] . genM1 . J1\ + \ Transpose[J2] . genM2 . J2\ + \ Transpose[J3] . genM3 . J3\ // FullSimplify]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(2\ M + Mp\), "0", "0", "0", "0"}, {"0", \(2\ M + Mp\), "0", \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\)\), \(1\/2\ l\ M\ Cos[ x6[t] + x7[t]]\)}, {"0", "0", \(2\ M + Mp\), \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Sin[x6[t]] + M\ Sin[x6[t] + x7[t]])\)\), \(1\/2\ l\ M\ Sin[ x6[t] + x7[t]]\)}, { "0", \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\)\), \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Sin[x6[t]] + M\ Sin[x6[t] + x7[t]])\)\), \(1\/2\ l\^2\ \((3\ M + 2\ Mp - 2\ M\ Cos[x7[t]])\)\), \(1\/4\ l\ M\ \((l - 2\ l\ Cos[x7[t]])\)\)}, { "0", \(1\/2\ l\ M\ Cos[x6[t] + x7[t]]\), \(1\/2\ l\ M\ Sin[ x6[t] + x7[t]]\), \(1\/4\ l\ M\ \((l - 2\ l\ Cos[x7[t]])\)\), \(\(l\^2\ M\)\/4\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Without a hip (the same thing because this is a planar walker):\ \>", "Subsection"], Cell[BoxData[ \(\(MatrixForm[Mmatrix\ /. w \[Rule] 0\ // FullSimplify];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(KE\ = \ First[First[1/2\ Transpose[qdot] . Mmatrix . qdot]] // FullSimplify\)], "Input"], Cell[BoxData[ RowBox[{\(1\/8\), " ", RowBox[{"(", RowBox[{ RowBox[{"4", " ", \((2\ M + Mp)\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x1", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"4", " ", \((2\ M + Mp)\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"8", " ", "M", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"4", " ", "Mp", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "-", RowBox[{"12", " ", "l", " ", "M", " ", \(Sin[x6[t]]\), " ", RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "-", RowBox[{"8", " ", "l", " ", "Mp", " ", \(Sin[x6[t]]\), " ", RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"6", " ", \(l\^2\), " ", "M", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"4", " ", \(l\^2\), " ", "Mp", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"2", " ", \(l\^2\), " ", "M", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(l\^2\), " ", "M", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{ "4", " ", "l", " ", "M", " ", \(Cos[x6[t]]\), " ", \(Sin[x7[t]]\), " ", RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}], "+", RowBox[{"4", " ", "l", " ", "M", " ", \(Cos[x7[t]]\), " ", RowBox[{"(", RowBox[{ RowBox[{\(Sin[x6[t]]\), " ", RowBox[{ SuperscriptBox["x3", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "-", RowBox[{"l", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}], " ", RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}], "+", RowBox[{"4", " ", "l", " ", RowBox[{ SuperscriptBox["x2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{"(", RowBox[{ RowBox[{\((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"M", " ", \(Cos[x6[t] + x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}]}]}], ")"}]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(KE /. {x1[t] \[Rule] 0, x2[t] \[Rule] 0, x3[t] \[Rule] 0, \(x1'\)[t] \[Rule] 0, \(x2'\)[t] \[Rule] 0, \(x3'\)[t] \[Rule] 0}\ // FullSimplify\)], "Input"], Cell[BoxData[ RowBox[{\(1\/8\), " ", \(l\^2\), " ", RowBox[{"(", RowBox[{ RowBox[{\((6\ M + 4\ Mp - 4\ M\ Cos[x7[t]])\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"2", " ", "M", " ", \((1 - 2\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"M", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}]}], ")"}]}]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Potential Term", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[{ \(MatrixForm[e1\ = \ TwistExp[ax1, x1[t]]]\), "\[IndentingNewLine]", \(MatrixForm[e2\ = \ TwistExp[ax2, x2[t]]]\), "\[IndentingNewLine]", \(MatrixForm[e3\ = \ TwistExp[ax3, x3[t]]]\), "\[IndentingNewLine]", \(\(MatrixForm[ e4\ = \ TwistExp[ax4, x4[t]]];\)\), "\[IndentingNewLine]", \(\(MatrixForm[ e5\ = \ TwistExp[ax5, x5[t]]];\)\), "\[IndentingNewLine]", \(MatrixForm[e6\ = \ TwistExp[ax6, x6[t]]]\), "\[IndentingNewLine]", \(MatrixForm[e7\ = \ TwistExp[ax7, x7[t]]]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", \(x1[t]\)}, {"0", "1", "0", "0"}, {"0", "0", "1", "0"}, {"0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", "1", "0", \(x2[t]\)}, {"0", "0", "1", "0"}, {"0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", "1", "0", "0"}, {"0", "0", "1", \(x3[t]\)}, {"0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", \(Cos[x6[t]]\), \(-Sin[x6[t]]\), "0"}, {"0", \(Sin[x6[t]]\), \(Cos[x6[t]]\), "0"}, {"0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", \(Cos[x7[t]]\), \(-Sin[x7[t]]\), \(l\ Sin[x7[t]]\)}, { "0", \(Sin[x7[t]]\), \(Cos[ x7[t]]\), \(l\ \((1 - Cos[x7[t]])\)\)}, {"0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[{ \(\(pS\ = \ {{0}, {0}, {l/2}, {1}};\)\), "\[IndentingNewLine]", \(\(pH\ = \ {{w/2}, {0}, {l}, {1}};\)\), "\[IndentingNewLine]", \(\(pNS\ = {{w}, {0}, {l/2}, {1}};\)\)}], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(MatrixForm[ pSp\ = \ e1 . e2 . e3 . e6 . pS\ // FullSimplify]\), "\[IndentingNewLine]", \(MatrixForm[ pHp\ = \ e1 . e2 . e3 . e6 . pH // FullSimplify]\), "\[IndentingNewLine]", \(MatrixForm[ pNSp\ = \ e1 . e2 . e3 . e6 . e7 . pNS\ // FullSimplify]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(x1[t]\)}, {\(\(-\(1\/2\)\)\ l\ Sin[x6[t]] + x2[t]\)}, {\(1\/2\ l\ Cos[x6[t]] + x3[t]\)}, {"1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(w\/2 + x1[t]\)}, {\(\(-l\)\ Sin[x6[t]] + x2[t]\)}, {\(l\ Cos[x6[t]] + x3[t]\)}, {"1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(w + x1[t]\)}, {\(1\/2\ l\ \((\(-2\)\ Sin[x6[t]] + Sin[x6[t] + x7[t]])\) + x2[t]\)}, {\(l\ Cos[x6[t]] - 1\/2\ l\ Cos[x6[t] + x7[t]] + x3[t]\)}, {"1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(PE\ = \ First[M*g*pSp[\([3]\)] + Mp*g*pHp[\([3]\)] + M*g*pNSp[\([3]\)]] // FullSimplify\)], "Input"], Cell[BoxData[ \(1\/2\ g\ \((l\ \((3\ M + 2\ Mp)\)\ Cos[x6[t]] - l\ M\ Cos[x6[t] + x7[t]] + 2\ \((2\ M + Mp)\)\ x3[t])\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(% /. w \[Rule] 0\)], "Input"], Cell[BoxData[ \(1\/2\ g\ \((l\ \((3\ M + 2\ Mp)\)\ Cos[x6[t]] - l\ M\ Cos[x6[t] + x7[t]] + 2\ \((2\ M + Mp)\)\ x3[t])\)\)], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["3D Walker Dynamics", "Section"], Cell[BoxData[ \(\(Lagrangian\ = \ KE\ - \ PE /. {x1[t] \[Rule] 0, x2[t] \[Rule] 0, x3[t] \[Rule] 0, \(x1'\)[t] \[Rule] 0, \(x2'\)[t] \[Rule] 0, \(x3'\)[t] \[Rule] 0}\ // FullSimplify;\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(eq1\ = \ D[D[Lagrangian, \(x6'\)[t]], t]\ - \ D[Lagrangian, x6[t]]\ // FullSimplify\), "\[IndentingNewLine]", \(eq2\ = \ D[D[Lagrangian, \(x7'\)[t]], t]\ - \ D[Lagrangian, x7[t]]\ // FullSimplify\)}], "Input"], Cell[BoxData[ RowBox[{\(1\/4\), " ", "l", " ", RowBox[{"(", RowBox[{\(\(-2\)\ g\ \((3\ M + 2\ Mp)\)\ Sin[x6[t]]\), "+", \(2\ g\ M\ Sin[x6[t] + x7[t]]\), "+", RowBox[{"l", " ", RowBox[{"(", RowBox[{ RowBox[{"2", " ", "M", " ", \(Sin[x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{"(", RowBox[{ RowBox[{"2", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}], "+", RowBox[{"6", " ", "M", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"4", " ", "Mp", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"M", " ", RowBox[{ SuperscriptBox["x7", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "-", RowBox[{"2", " ", "M", " ", \(Cos[x7[t]]\), " ", RowBox[{"(", RowBox[{ RowBox[{"2", " ", RowBox[{ SuperscriptBox["x6", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}]}], ")"}]}]}], ")"}]}]], "Output"], Cell[BoxData[ RowBox[{\(1\/4\), " ", "l", " ", "M", " ", RowBox[{"(", RowBox[{\(2\ g\ Sin[x6[t] + x7[t]]\), "+", RowBox[{"l", " ", RowBox[{"(", RowBox[{ RowBox[{\(-2\), " ", \(Sin[x7[t]]\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{\((1 - 2\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}]}], ")"}]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Solve[{eq1\ \[Equal] 0\ , \ eq2 \[Equal] 0}, {\(x6''\)[t], \(x7''\)[t]}] // FullSimplify\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["x6", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}], "\[Rule]", FractionBox[ RowBox[{"2", " ", RowBox[{"(", RowBox[{\(\(-2\)\ g\ \((M + Mp)\)\ Sin[x6[t]]\), "+", \(g\ M\ Sin[x6[t] + 2\ x7[t]]\), "+", RowBox[{"l", " ", "M", " ", RowBox[{"(", RowBox[{ RowBox[{\(-Sin[2\ x7[t]]\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{\(Sin[x7[t]]\), " ", SuperscriptBox[ RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "+", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}], "2"]}]}], ")"}]}]}], ")"}]}], \(l\ \((\(-3\)\ M - 4\ Mp + 2\ M\ Cos[2\ x7[t]])\)\)]}], ",", RowBox[{ RowBox[{ SuperscriptBox["x7", "\[Prime]\[Prime]", MultilineFunction->None], "[", "t", "]"}], "\[Rule]", RowBox[{\(1\/\(l\ \((\(-3\)\ M - 4\ Mp + 2\ M\ Cos[2\ x7[t]])\)\)\), RowBox[{"(", RowBox[{\(\(-2\)\ g\ \((\(-2\)\ \((M + Mp)\) + M\ \((Cos[x7[t]] + Cos[2\ x7[t]])\))\)\ Sin[x6[t]]\), "+", \(2\ g\ Cos[ x6[t]]\ \((5\ M + 4\ Mp - 2\ M\ Cos[x7[t]])\)\ Sin[ x7[t]]\), "+", RowBox[{ "4", " ", "l", " ", \((\(-3\)\ M - 2\ Mp + 2\ M\ Cos[x7[t]])\), " ", \(Sin[x7[t]]\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{ "4", " ", "l", " ", "M", " ", \((\(-Sin[x7[t]]\) + Sin[2\ x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ "2", " ", "l", " ", "M", " ", \((\(-Sin[x7[t]]\) + Sin[2\ x7[t]])\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}]}], ")"}]}]}]}], "}"}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Without a hip (the same thing because this is a planar walker):\ \>", "Subsection"], Cell[BoxData[ \(\(Solve[{eq1\ \[Equal] 0\ /. w \[Rule] 0, \ eq2 \[Equal] 0\ /. w \[Rule] 0}, {\(x6''\)[t], \(x7''\)[t]}]\ // FullSimplify;\)\)], "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Impact Equations", "Section"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(pNSFoot\ = {{w}, {0}, {0}, {1}};\)\), "\[IndentingNewLine]", \(MatrixForm[ pNSFootp\ = \ e1 . e2 . e3 . e6 . e7 . pNSFoot\ // FullSimplify]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(w + x1[t]\)}, {\(l\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\) + x2[t]\)}, {\(l\ \((Cos[x6[t]] - Cos[x6[t] + x7[t]])\) + x3[t]\)}, {"1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\(Pos1\ = \ First[pNSFootp[\([1]\)]];\)\), "\[IndentingNewLine]", \(\(Pos2\ = \ First[pNSFootp[\([2]\)]];\)\), "\[IndentingNewLine]", \(\(Pos3\ = \ First[pNSFootp[\([3]\)]];\)\), "\[IndentingNewLine]", \(MatrixForm[ F\ = \ FullSimplify[\[IndentingNewLine]{{D[Pos1, x1[t]], D[Pos1, x2[t]], D[Pos1, x3[t]], D[Pos1, x6[t]], D[Pos1, x7[t]]}, \[IndentingNewLine]{D[Pos2, x1[t]], D[Pos2, x2[t]], D[Pos2, x3[t]], D[Pos2, x6[t]], D[Pos2, x7[t]]}, \[IndentingNewLine]{D[Pos3, x1[t]], D[Pos3, x2[t]], D[Pos3, x3[t]], D[Pos3, x6[t]], D[Pos3, x7[t]]}}]]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0"}, {"0", "1", "0", \(l\ \((\(-Cos[x6[t]]\) + Cos[x6[t] + x7[t]])\)\), \(l\ Cos[x6[t] + x7[t]]\)}, {"0", "0", "1", \(l\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\), \(l\ Sin[x6[t] + x7[t]]\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[ nFT\ = \ Join[\(-Transpose[F]\), {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}]]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(-1\), "0", "0"}, {"0", \(-1\), "0"}, {"0", "0", \(-1\)}, { "0", \(\(-l\)\ \((\(-Cos[x6[t]]\) + Cos[x6[t] + x7[t]])\)\), \(\(-l\)\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\)}, { "0", \(\(-l\)\ Cos[x6[t] + x7[t]]\), \(\(-l\)\ Sin[ x6[t] + x7[t]]\)}, {"0", "0", "0"}, {"0", "0", "0"}, {"0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[ FullMatrix\ = \ Transpose[ Join[Transpose[Join[Mmatrix, F]], Transpose[nFT]]]]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(2\ M + Mp\), "0", "0", "0", "0", \(-1\), "0", "0"}, {"0", \(2\ M + Mp\), "0", \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\)\), \(1\/2\ l\ M\ Cos[ x6[t] + x7[t]]\), "0", \(-1\), "0"}, {"0", "0", \(2\ M + Mp\), \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Sin[x6[t]] + M\ Sin[x6[t] + x7[t]])\)\), \(1\/2\ l\ M\ Sin[ x6[t] + x7[t]]\), "0", "0", \(-1\)}, { "0", \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\)\), \(1\/2\ l\ \((\(-\((3\ M + 2\ Mp)\)\)\ Sin[x6[t]] + M\ Sin[x6[t] + x7[t]])\)\), \(1\/2\ l\^2\ \((3\ M + 2\ Mp - 2\ M\ Cos[x7[t]])\)\), \(1\/4\ l\ M\ \((l - 2\ l\ Cos[x7[t]])\)\), "0", \(\(-l\)\ \((\(-Cos[x6[t]]\) + Cos[x6[t] + x7[t]])\)\), \(\(-l\)\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\)}, { "0", \(1\/2\ l\ M\ Cos[x6[t] + x7[t]]\), \(1\/2\ l\ M\ Sin[ x6[t] + x7[t]]\), \(1\/4\ l\ M\ \((l - 2\ l\ Cos[x7[t]])\)\), \(\(l\^2\ M\)\/4\), "0", \(\(-l\)\ Cos[x6[t] + x7[t]]\), \(\(-l\)\ Sin[ x6[t] + x7[t]]\)}, {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", \(l\ \((\(-Cos[x6[t]]\) + Cos[x6[t] + x7[t]])\)\), \(l\ Cos[x6[t] + x7[t]]\), "0", "0", "0"}, {"0", "0", "1", \(l\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\), \(l\ Sin[x6[t] + x7[t]]\), "0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Without a hip (the same thing because this is a planar walker):\ \>", "Subsection"], Cell[BoxData[ \(\(MatrixForm[FullMatrix /. w \[Rule] 0 // FullSimplify];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[ DMatrix\ = \ Join[Mmatrix . {0, 0, 0, \(x6'\)[t], \(x7'\)[t]}, {0, 0, 0}]]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", TagBox[GridBox[{ {"0"}, { RowBox[{ RowBox[{\(1\/2\), " ", "l", " ", \((\(-\((3\ M + 2\ Mp)\)\)\ Cos[x6[t]] + M\ Cos[x6[t] + x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(1\/2\), " ", "l", " ", "M", " ", \(Cos[x6[t] + x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}, { RowBox[{ RowBox[{\(1\/2\), " ", "l", " ", \((\(-\((3\ M + 2\ Mp)\)\)\ Sin[x6[t]] + M\ Sin[x6[t] + x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(1\/2\), " ", "l", " ", "M", " ", \(Sin[x6[t] + x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}, { RowBox[{ RowBox[{\(1\/2\), " ", \(l\^2\), " ", \((3\ M + 2\ Mp - 2\ M\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(1\/4\), " ", "l", " ", "M", " ", \((l - 2\ l\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}, { RowBox[{ RowBox[{\(1\/4\), " ", "l", " ", "M", " ", \((l - 2\ l\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(1\/4\), " ", \(l\^2\), " ", "M", " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}, {"0"}, {"0"}, {"0"} }, RowSpacings->1, ColumnAlignments->{Left}], Column], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(\((% FullMatrix\ = \ FullMatrix\ /. \ w \[Rule] 0\ // FullSimplify; \[IndentingNewLine]DMatrix\ = \ DMatrix\ /. \ w \[Rule] 0\ // FullSimplify; %)\)\)], "Input"], Cell[BoxData[ \(\(K\ = \ Inverse[FullMatrix] . DMatrix;\)\)], "Input"], Cell["First, we have the angular positions for 6,7:", "Text"], Cell[BoxData[ \(\({x6impact\ = \ x6[t] + x7[t], \ x7impact\ = \ \(-x7[t]\)};\)\)], "Input"], Cell["We are interested in the angular velocities for 6,7:", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(x6dotimpact\ = \ FullSimplify[K[\([4]\)] + K[\([5]\)]]\), "\[IndentingNewLine]", \(x7dotimpact\ = \ \(-FullSimplify[K[\([5]\)]]\)\)}], "Input"], Cell[BoxData[ FractionBox[ RowBox[{ RowBox[{\((M - 2\ \((M + 2\ Mp)\)\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"M", " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], \(\(-3\)\ M - 4\ Mp + 2\ M\ Cos[2\ x7[t]]\)]], "Output"], Cell[BoxData[ RowBox[{"-", FractionBox[ RowBox[{ RowBox[{\(-4\), " ", \((M + Mp)\), " ", \((Cos[x7[t]] - Cos[2\ x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{"M", " ", \((1 - 2\ Cos[x7[t]])\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], \(\(-3\)\ M - 4\ Mp + 2\ M\ Cos[2\ x7[t]]\)]}]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Collision Guard", "Subsection"], Cell["Note: gamma is the slope angle", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(height\ = \ First[pNSFootp[\([3]\)]\ + \ Tan[gamma]*pNSFootp[\([2]\)]\ /. \ {x2[t] \[Rule] 0, x3[t] \[Rule] 0}]\)], "Input"], Cell[BoxData[ \(l\ \((Cos[x6[t]] - Cos[x6[t] + x7[t]])\) + l\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\ Tan[gamma]\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\(Avect\ = \ {{D[height, x6[t]], D[height, x7[t]]}};\)\), "\[IndentingNewLine]", \(holonomicTraj\ = \ First[First[Avect . {{\(x6'\)[t]}, {\(x7'\)[t]}}]]\ // FullSimplify\)}], "Input"], Cell[BoxData[ RowBox[{"l", " ", \(Sec[gamma]\), " ", RowBox[{"(", RowBox[{ RowBox[{\((\(-Sin[gamma + x6[t]]\) + Sin[gamma + x6[t] + x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(Sin[gamma + x6[t] + x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}]}]], "Output"] }, Open ]], Cell["The guard is the zero-level set of the height function:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(height\)\(\ \)\(\[Equal]\)\(\ \)\(0\)\(\ \)\)\)], "Input"], Cell[BoxData[ \(l\ \((Cos[x6[t]] - Cos[x6[t] + x7[t]])\) + l\ \((\(-Sin[x6[t]]\) + Sin[x6[t] + x7[t]])\)\ Tan[gamma] \[Equal] 0\)], "Output"] }, Open ]], Cell["\<\ and the negative region of the holonomic constraint's trajectory:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(holonomicTraj\ < \ 0\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"l", " ", \(Sec[gamma]\), " ", RowBox[{"(", RowBox[{ RowBox[{\((\(-Sin[gamma + x6[t]]\) + Sin[gamma + x6[t] + x7[t]])\), " ", RowBox[{ SuperscriptBox["x6", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(Sin[gamma + x6[t] + x7[t]]\), " ", RowBox[{ SuperscriptBox["x7", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}]}], "<", "0"}]], "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] }, FrontEndVersion->"5.1 for Microsoft Windows", ScreenRectangle->{{0, 1600}, {0, 975}}, WindowSize->{1592, 461}, WindowMargins->{{0, Automatic}, {0, Automatic}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic} ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1776, 53, 92, 2, 95, "Title"], Cell[1871, 57, 211, 6, 110, "Subsubtitle"], Cell[2085, 65, 107, 2, 50, "Input"], Cell[CellGroupData[{ Cell[2217, 71, 28, 0, 73, "Section"], Cell[2248, 73, 239, 4, 90, "Input"], Cell[CellGroupData[{ Cell[2512, 81, 31, 0, 38, "Subsection"], Cell[2546, 83, 256, 5, 110, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[2851, 94, 50, 0, 73, "Section"], Cell[CellGroupData[{ Cell[2926, 98, 36, 0, 38, "Subsection"], Cell[2965, 100, 165, 3, 50, "Input"], Cell[3133, 105, 529, 9, 150, "Input"], Cell[3665, 116, 367, 6, 70, "Input"], Cell[CellGroupData[{ Cell[4057, 126, 745, 15, 130, "Input"], Cell[4805, 143, 559, 14, 127, "Output"], Cell[5367, 159, 552, 14, 119, "Output"], Cell[5922, 175, 716, 19, 127, "Output"] }, Open ]], Cell[6653, 197, 638, 12, 70, "Input"], Cell[CellGroupData[{ Cell[7316, 213, 198, 4, 30, "Input"], Cell[7517, 219, 1399, 30, 141, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[8965, 255, 93, 2, 38, "Subsection"], Cell[9061, 259, 92, 1, 30, "Input"], Cell[CellGroupData[{ Cell[9178, 264, 125, 3, 30, "Input"], Cell[9306, 269, 4905, 112, 62, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[14248, 386, 198, 3, 30, "Input"], Cell[14449, 391, 897, 21, 42, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[15395, 418, 36, 0, 38, "Subsection"], Cell[CellGroupData[{ Cell[15456, 422, 554, 9, 150, "Input"], Cell[16013, 433, 412, 12, 87, "Output"], Cell[16428, 447, 412, 12, 87, "Output"], Cell[16843, 461, 412, 12, 87, "Output"], Cell[17258, 475, 451, 12, 87, "Output"], Cell[17712, 489, 521, 14, 87, "Output"] }, Open ]], Cell[18248, 506, 210, 3, 70, "Input"], Cell[CellGroupData[{ Cell[18483, 513, 337, 8, 70, "Input"], Cell[18823, 523, 417, 12, 105, "Output"], Cell[19243, 537, 408, 12, 93, "Output"], Cell[19654, 551, 488, 13, 105, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20179, 569, 137, 3, 30, "Input"], Cell[20319, 574, 148, 2, 42, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20504, 581, 49, 1, 30, "Input"], Cell[20556, 584, 148, 2, 42, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[20765, 593, 37, 0, 73, "Section"], Cell[20805, 595, 246, 4, 30, "Input"], Cell[CellGroupData[{ Cell[21076, 603, 273, 6, 50, "Input"], Cell[21352, 611, 2184, 46, 42, "Output"], Cell[23539, 659, 891, 20, 42, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24467, 684, 140, 3, 30, "Input"], Cell[24610, 689, 3596, 76, 110, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[28243, 770, 93, 2, 38, "Subsection"], Cell[28339, 774, 183, 3, 30, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[28571, 783, 35, 0, 73, "Section"], Cell[CellGroupData[{ Cell[28631, 787, 199, 4, 50, "Input"], Cell[28833, 793, 459, 12, 87, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[29329, 810, 691, 11, 150, "Input"], Cell[30023, 823, 595, 15, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[30655, 843, 135, 3, 30, "Input"], Cell[30793, 848, 758, 21, 151, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[31588, 874, 149, 4, 30, "Input"], Cell[31740, 880, 2130, 44, 189, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[33907, 929, 93, 2, 38, "Subsection"], Cell[34003, 933, 91, 1, 30, "Input"], Cell[CellGroupData[{ Cell[34119, 938, 148, 4, 30, "Input"], Cell[34270, 944, 2908, 69, 187, "Output"] }, Open ]], Cell[37193, 1016, 217, 4, 50, "Input"], Cell[37413, 1022, 75, 1, 30, "Input"], Cell[37491, 1025, 61, 0, 33, "Text"], Cell[37555, 1027, 106, 2, 30, "Input"], Cell[37664, 1031, 68, 0, 33, "Text"], Cell[CellGroupData[{ Cell[37757, 1035, 178, 3, 50, "Input"], Cell[37938, 1040, 456, 11, 44, "Output"], Cell[38397, 1053, 576, 14, 44, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[39022, 1073, 37, 0, 38, "Subsection"], Cell[39062, 1075, 46, 0, 33, "Text"], Cell[CellGroupData[{ Cell[39133, 1079, 180, 4, 30, "Input"], Cell[39316, 1085, 141, 2, 29, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[39494, 1092, 241, 5, 50, "Input"], Cell[39738, 1099, 553, 14, 29, "Output"] }, Open ]], Cell[40306, 1116, 71, 0, 33, "Text"], Cell[CellGroupData[{ Cell[40402, 1120, 82, 1, 30, "Input"], Cell[40487, 1123, 161, 3, 29, "Output"] }, Open ]], Cell[40663, 1129, 89, 2, 33, "Text"], Cell[CellGroupData[{ Cell[40777, 1135, 54, 1, 30, "Input"], Cell[40834, 1138, 606, 15, 29, "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)