{ "cells": [ { "cell_type": "markdown", "id": "26fee538", "metadata": {}, "source": [ "# CompositeInertia\n", "\n", "Generally there are two algorithm to calculate robot dynamics.\n", "\n", "Featherstone’s algorithm\n", "Lagrangian method\n", "\n", "Fetherstone's algorithm best practice is so-called Articulated-Body Algorithm which is described in forward_dynamics_propagation.md\n", "\n", "Here we discuss a most import part in Lagrangian method. how to get composite inertia.\n", "\n", "Theory\n", "\n", "\n", "\n", "Pseudo\n", "\n", "\n", "Code\n", "H = 0\n", "for $i = 1$ to $N_B$\n", "  $I^c_i = I_i$\n", "end\n", "for i = N_B to 1\n", "    if $\\lambda(i) \\ne 0$\n", "$\\qquad I^A_{\\lambda(i)} = I^A_{\\lambda(i)} + {}^{\\lambda(i)}X^*_i I^c_i \\space {}^iX_{\\lambda(i)}$\n", "end\n", "Generally there are two algorithm to calculate robot dynamics.\n", "\n", "Featherstone’s algorithm\n", "Lagrangian method\n", "\n", "Fetherstone's algorithm best practice is so-called Articulated-Body Algorithm which is described in forward_dynamics_propagation.md\n", "\n", "Here we discuss a most import part in Lagrangian method. how to get composite inertia.\n", "\n", "Theory\n", "\n", "\n", "\n", "Pseudo\n", "\n", "\n", "Code\n", "H = 0\n", "for $i = 1$ to $N_B$\n", "  $I^c_i = I_i$\n", "end\n", "for i = N_B to 1\n", "    if $\\lambda(i) \\ne 0$\n", "$\\qquad I^A_{\\lambda(i)} = I^A_{\\lambda(i)} + {}^{\\lambda(i)}X^*_i I^c_i \\space {}^iX_{\\lambda(i)}$\n", "end" ] }, { "cell_type": "code", "execution_count": null, "id": "56fc47ba", "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 }