Skip to content

Commit 4a6207e

Browse files
author
Murilo Marinho
committed
[lesson3] Adding a better explanation for FKM.
1 parent a386c3a commit 4a6207e

1 file changed

Lines changed: 30 additions & 19 deletions

File tree

basic_lessons/lesson3_tutorial.ipynb

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,6 @@
7373
"from math import pi, sin, cos"
7474
]
7575
},
76-
{
77-
"cell_type": "markdown",
78-
"metadata": {},
79-
"source": [
80-
"# Suggested exercises\n",
81-
"1. What about an RRR robot?\n",
82-
"2. What about if the robot had `n` degrees-of-freedom? \n",
83-
"3. What if the robot is RP, that is, has a prismatic joint?"
84-
]
85-
},
8676
{
8777
"attachments": {
8878
"4A.png": {
@@ -92,21 +82,32 @@
9282
"cell_type": "markdown",
9383
"metadata": {},
9484
"source": [
95-
"# 2 DoF planar robot (RR)\n",
85+
"# Forward Kinematics Model (FKM)\n",
86+
"\n",
87+
"![Lesson4.png](Lesson4.png)\n",
88+
"\n",
89+
"Consider the 2-DoF planar robot shown in the figure. Let $q_0\\triangleq q_0(t)$ and $q_1\\triangleq q_1(t)$ compose its configuration space. In addition, let $l_{0}$, $l_{1} \\in \\mathbb{R}$ be the geometric parameters, which are quantities that cannot be controlled.\n",
90+
"\n",
91+
"The configuration space is what is used in practice to control the robot. You as the system designer will send configuration space values $q_0$ and $q_1$ to command the robot. You will make it move to perform a relevant task and hopefully earn your next month's salary. The parameters $l_{0}$ and $l_{1}$ are constant in time and represent time-invariant geometrical aspects of the robot, such as link lengths, that you cannot control.\n",
9692
"\n",
97-
"![4A.png](attachment:4A.png)\n",
93+
"As a representative task for robotic manipulators, let us use the configuration space and parameters to calculate the frame of the tip of the robot. This is represented mathematically as follows.\n",
9894
"\n",
99-
"For the 2-DoF planar robot shown in the figure, use $\\theta_{A0}$, $\\theta_{A1}$, $l_{A0}$, $l_{A1}$ to calculate\n",
100-
"$$\\mymatrix{H}_{A1}( \\theta_{A0},l_{A0} ) \\in SE(3)$$\n",
101-
"and\n",
102-
"$$\\mymatrix{H}_{A2}( \\theta_{A0}, l_{A0},\\theta_{A1},l_{A1}) \\in SE(3),$$\n",
103-
"given that the pose of $\\mathcal{F}_{A0}$ is $SE(3) \\ni \\mymatrix{H}_{A0} \\triangleq \\mymatrix{I}_4$.\n",
95+
"$$\\mymatrix{H}^{0}_{2}( q_0, l_{0},q_1,l_{1}) \\in SE(2).$$\n",
96+
"\n",
97+
"The equation for the end-effector (tip) pose is what is called the forward kinematics model (FKM). We need this frequently when using a robotic manipulator because the end effector is likely to be its most useful part. For instance, it could be a gripper that is used to pick and place objects. The first step towards going somewhere is knowing where you are.\n",
98+
"\n",
99+
"Thence, the first step towards controlling a robotic manipulator's end effector in any meaningful way is to obtain its FKM.\n",
104100
"\n",
105101
"## Understanding the problem\n",
106102
"\n",
107-
"There is not much we can do without understanding what is being asked. In this regard, it is important to read and understand as much as possible the content already given. The programming part is extremely simple after the math is understood.\n",
103+
"The FKM is a mathematical description of the robot. Therefore, the first step is to describe the sequential transformations that represent the robot being modeled.\n",
104+
"\n",
105+
"As shown in the figure, there are four transformations for this robot, taking us from the base, $\\mathcal{F}_0$, to the end-effector, $\\mathcal{F}_2$. The sequence can be summarised as follows.\n",
108106
"\n",
109-
"As described, the problem in question is that, for each joint transformation, we have a rotation followed by a translation.\n",
107+
"1. A rotation by $q_0$, from $\\mathcal{F}_0$ to $\\mathcal{F}_{0'}$.\n",
108+
"2. A translation of $l_0$ along the $x$-axis of the previous frame, from $\\mathcal{F}_{0'}$ to $\\mathcal{F}_{1}$.\n",
109+
"3. A rotation by $q_1$, from $\\mathcal{F}_{1}$ to $\\mathcal{F}_{1'}$.\n",
110+
"4. A translation of $l_1$ along the $x$-axis of the previous frame, from $\\mathcal{F}_{1'}$ to $\\mathcal{F}_{2}$.\n",
110111
"\n",
111112
"## The transformation of the first joint\n",
112113
"\n",
@@ -393,6 +394,16 @@
393394
"print(f\"The first transformation is\\n\\n H_A1 = \\n{H_A1}\")\n",
394395
"print(f\"The second transformation is\\n\\n H_A2 = \\n{H_A2}\")"
395396
]
397+
},
398+
{
399+
"metadata": {},
400+
"cell_type": "markdown",
401+
"source": [
402+
"# Suggested exercises\n",
403+
"1. What about an RRR robot?\n",
404+
"2. What about if the robot had `n` degrees-of-freedom?\n",
405+
"3. What if the robot is RP, that is, has a prismatic joint?"
406+
]
396407
}
397408
],
398409
"metadata": {

0 commit comments

Comments
 (0)