{ "cells": [ { "cell_type": "markdown", "id": "2b9a618e", "metadata": {}, "source": [ "# DOF discussion of quadruped\n", "\n", "## Formula\n", "With basic mechanism formula\n", "\n", "$$\\sigma = 6m - \\sum_{i=1}^n p_i$$\n", "\n", "where\n", "\n", "$\\sigma$, DOF\n", "$m$, number of movable parts (links)\n", "$p_i$, number of degree constrained by $i$-th kinematic pair(joint or contact).\n", "$n$, total number of kinematic pairs\n", "\n", "In special,\n", "rotation joint, $p_i = 5$\n", "point contact, $p_i = 3$\n", "\n", "## Case study\n", "### DOF of quadruped base body with 4 legs on the ground.\n", "\n", "$m = 13$\n", "number of rotation joint($p_i = 5$), $n_1 = 12$\n", "number of point contact($p_i = 3$), $n_2 = 4$ \n", "\n", "$$\n", "\\begin{equation}\n", "\\begin{split}\n", "\\sigma \n", "&= 6 \\cdot 13 - 5 \\cdot 12 - 3 \\cdot4\\\\\n", "&=6\n", "\\end{split}\n", "\\end{equation}\n", "$$\n", "\n", "### DOF of quadruped base body with 3 legs on the ground.\n", "\n", "$m = 10$\n", "number of rotation joint($p_i = 5$), $n_1 = 9$\n", "number of point contact($p_i = 3$), $n_2 = 3$ \n", "\n", "$$\n", "\\begin{equation}\n", "\\begin{split}\n", "\\sigma \n", "&= 6 \\cdot 10 - 5 \\cdot 9 - 3 \\cdot3\\\\\n", "&=6\n", "\\end{split}\n", "\\end{equation}\n", "$$\n", "\n", "\n", "### DOF of quadruped base body with 2 legs on the ground.\n", "\n", "$m = 7$\n", "number of rotation joint($p_i = 5$), $n_1 = 6$\n", "number of point contact($p_i = 3$), $n_2 = 2$ \n", "\n", "$$\n", "\\begin{equation}\n", "\\begin{split}\n", "\\sigma \n", "&= 6 \\cdot 7 - 5 \\cdot 6 - 3 \\cdot2\\\\\n", "&=6\n", "\\end{split}\n", "\\end{equation}\n", "$$\n", "\n", "### DOF of quadruped base body with 1 legs on the ground.\n", "\n", "$m = 4$\n", "number of rotation joint($p_i = 5$), $n_1 = 3$\n", "number of point contact($p_i = 3$), $n_2 = 1$ \n", "\n", "$$\n", "\\begin{equation}\n", "\\begin{split}\n", "\\sigma \n", "&= 6 \\cdot 4 - 5 \\cdot 3 - 3 \\cdot1\\\\\n", "&=6\n", "\\end{split}\n", "\\end{equation}\n", "$$\n", "\n", "### DOF of quadruped base body with 0 legs on the ground.\n", "\n", "$m = 1$\n", "number of rotation joint($p_i = 5$), $n_1 = 0$\n", "number of point contact($p_i = 3$), $n_2 = 0$ \n", "\n", "$$\n", "\\begin{equation}\n", "\\begin{split}\n", "\\sigma \n", "&= 6 \\cdot 1 - 5 \\cdot 0 - 3 \\cdot0\\\\\n", "&=6\n", "\\end{split}\n", "\\end{equation}\n", "$$\n", "\n", "## Is it over-actuated? Is it under-actuated?\n", "\n", "Quadruped with **0 leg** on the ground: **under-actuated**\n", "Quadruped with **1 leg** on the ground: **under-actuated**\n", "Quadruped with **2 cross legs** on the ground: **under-actuated**\n", "\n", "There are 6 actuator by two Ab/ad \n", "Quadruped with **3 legs** on the ground: **over-actuated but NOT redundancy** \n", "Think 3 legs case as 2 cross legs with 1 more leg. \n", "After 2 cross legs configuration is determined, the orientation and position of base body is determined. Then the location that connect to 3rd leg is determined. If ground is in reachable domain, $\\ast$for certain ground contact point, the configuration of 3rd leg has to be determined. \n", "\n", "So, in this case, even we have 9 actuator with 6DOF, actuators are not independent and there isn't redundancy.\n", "\n", "Quadruped with **4 legs** on the ground: **over-actuated but NOT redundancy** \n", "Same reason like 3 legs\n", "\n", "\n", "$\\ast$ Notice: **certain ground contact point**, in the background of stand phase, the contact point is fixed and we are controlling the orientation or position of base body." ] }, { "cell_type": "code", "execution_count": null, "id": "62d6fed8", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 5 }