Skip to content

Commit 953cc38

Browse files
committed
update docs
1 parent 906681c commit 953cc38

26 files changed

Lines changed: 577 additions & 131 deletions

ArmNavigation/two_joint_arm_to_point_control/Planar_Two_Link_IK.ipynb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,22 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# Inverse Kinematics for a Planar Two-Link Robotic Arm\n",
7+
"## Two joint arm to point control\n",
8+
"\n",
9+
"![TwoJointArmToPointControl](https://github.com/AtsushiSakai/PythonRobotics/raw/master/ArmNavigation/two_joint_arm_to_point_control/animation.gif)\n",
10+
"\n",
11+
"\n",
12+
"\n",
13+
"\n",
14+
"This is two joint arm to a point control simulation.\n",
15+
"\n",
16+
"This is a interactive simulation.\n",
17+
"\n",
18+
"You can set the goal position of the end effector with left-click on the ploting area.\n",
19+
"\n",
20+
"\n",
21+
"\n",
22+
"### Inverse Kinematics for a Planar Two-Link Robotic Arm\n",
823
"\n",
924
"A classic problem with robotic arms is getting the end-effector, the mechanism at the end of the arm responsible for manipulating the environment, to where you need it to be. Maybe the end-effector is a gripper and maybe you want to pick up an object and maybe you know where that object is relative to the robot - but you cannot tell the end-effector where to go directly. Instead, you have to determine the joint angles that get the end-effector to where you want it to be. This problem is known as inverse kinematics.\n",
1025
"\n",
@@ -403,7 +418,7 @@
403418
"name": "python",
404419
"nbconvert_exporter": "python",
405420
"pygments_lexer": "ipython3",
406-
"version": "3.5.2"
421+
"version": "3.6.6"
407422
}
408423
},
409424
"nbformat": 4,

Localization/Kalmanfilter_basics.ipynb

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# _KF Basics - Part I_\n",
8-
"----\n"
7+
"## KF Basics - Part I\n"
98
]
109
},
1110
{
1211
"cell_type": "markdown",
1312
"metadata": {},
1413
"source": [
15-
"##### What is the need to describe belief in terms of PDF's?\n",
14+
"### Introduction\n",
15+
"#### What is the need to describe belief in terms of PDF's?\n",
1616
"This is because robot environments are stochastic. A robot environment may have cows with Tesla by side. That is a robot and it's environment cannot be deterministically modelled(e.g as a function of something like time t). In the real world sensors are also error prone, and hence there'll be a set of values with a mean and variance that it can take. Hence, we always have to model around some mean and variances associated."
1717
]
1818
},
1919
{
2020
"cell_type": "markdown",
2121
"metadata": {},
2222
"source": [
23-
"##### What is Expectation of a Random Variables?\n",
23+
"#### What is Expectation of a Random Variables?\n",
2424
" Expectation is nothing but an average of the probabilites\n",
2525
" \n",
2626
"$$\\mathbb E[X] = \\sum_{i=1}^n p_ix_i$$\n",
@@ -56,7 +56,7 @@
5656
"cell_type": "markdown",
5757
"metadata": {},
5858
"source": [
59-
"##### What is the advantage of representing the belief as a unimodal as opposed to multimodal?\n",
59+
"#### What is the advantage of representing the belief as a unimodal as opposed to multimodal?\n",
6060
"Obviously, it makes sense because we can't multiple probabilities to a car moving for two locations. This would be too confusing and the information will not be useful."
6161
]
6262
},
@@ -71,9 +71,9 @@
7171
"cell_type": "markdown",
7272
"metadata": {},
7373
"source": [
74-
"## Variance, Covariance and Correlation\n",
75-
"----\n",
76-
"### Variance\n",
74+
"### Variance, Covariance and Correlation\n",
75+
"\n",
76+
"#### Variance\n",
7777
"Variance is the spread of the data. The mean does'nt tell much **about** the data. Therefore the variance tells us about the **story** about the data meaning the spread of the data.\n",
7878
"\n",
7979
"$$\\mathit{VAR}(X) = \\frac{1}{n}\\sum_{i=1}^n (x_i - \\mu)^2$$"
@@ -104,7 +104,7 @@
104104
"cell_type": "markdown",
105105
"metadata": {},
106106
"source": [
107-
"### Covariance\n",
107+
"#### Covariance\n",
108108
"\n",
109109
"This is for a multivariate distribution. For example, a robot in 2-D space can take values in both x and y. To describe them, a normal distribution with mean in both x and y is needed.\n",
110110
"\n",
@@ -224,10 +224,7 @@
224224
"cell_type": "markdown",
225225
"metadata": {},
226226
"source": [
227-
"# Gaussians \n",
228-
"----\n",
229-
"\n",
230-
"\n",
227+
"### Gaussians \n",
231228
"\n",
232229
"#### Central Limit Theorem\n",
233230
"\n",
@@ -285,7 +282,7 @@
285282
"cell_type": "markdown",
286283
"metadata": {},
287284
"source": [
288-
"##### Gaussian Distribution\n",
285+
"#### Gaussian Distribution\n",
289286
"A Gaussian is a *continuous probability distribution* that is completely described with two parameters, the mean ($\\mu$) and the variance ($\\sigma^2$). It is defined as:\n",
290287
"\n",
291288
"$$ \n",
@@ -337,7 +334,7 @@
337334
"cell_type": "markdown",
338335
"metadata": {},
339336
"source": [
340-
"##### Why do we need Gaussian distributions?\n",
337+
"#### Why do we need Gaussian distributions?\n",
341338
"Since it becomes really difficult in the real world to deal with multimodal distribution as we cannot put the belief in two seperate location of the robots. This becomes really confusing and in practice impossible to comprehend. \n",
342339
"Gaussian probability distribution allows us to drive the robots using only one mode with peak at the mean with some variance."
343340
]
@@ -346,8 +343,8 @@
346343
"cell_type": "markdown",
347344
"metadata": {},
348345
"source": [
349-
"## Gaussian Properties\n",
350-
"----\n",
346+
"### Gaussian Properties\n",
347+
"\n",
351348
"**Multiplication**\n",
352349
"\n",
353350
"\n",
@@ -569,7 +566,7 @@
569566
"\n",
570567
"\n",
571568
"\n",
572-
"##### numpy einsum examples"
569+
"** numpy einsum examples **"
573570
]
574571
},
575572
{
@@ -757,7 +754,7 @@
757754
"name": "python",
758755
"nbconvert_exporter": "python",
759756
"pygments_lexer": "ipython3",
760-
"version": "3.6.5"
757+
"version": "3.6.6"
761758
}
762759
},
763760
"nbformat": 4,

Localization/Kalmanfilter_basics_2.ipynb

Lines changed: 41 additions & 16 deletions
Large diffs are not rendered by default.

Localization/extended_kalman_filter/notebook.ipynb renamed to Localization/extended_kalman_filter/extended_kalman_filter_localization.ipynb

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,19 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# Extended Kalman Filter Localization\n",
7+
"## Extended Kalman Filter Localization\n",
8+
"\n",
9+
"![EKF](https://github.com/AtsushiSakai/PythonRobotics/raw/master/Localization/extended_kalman_filter/animation.gif)\n",
10+
"\n",
11+
"This is a sensor fusion localization with Extended Kalman Filter(EKF).\n",
12+
"\n",
13+
"The blue line is true trajectory, the black line is dead reckoning\n",
14+
"trajectory,\n",
15+
"\n",
16+
"the green point is positioning observation (ex. GPS), and the red line\n",
17+
"is estimated trajectory with EKF.\n",
18+
"\n",
19+
"The red ellipse is estimated covariance ellipse with EKF.\n",
820
"\n",
921
"Code; [PythonRobotics/extended\\_kalman\\_filter\\.py at master · AtsushiSakai/PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics/blob/master/Localization/extended_kalman_filter/extended_kalman_filter.py)"
1022
]
@@ -13,15 +25,24 @@
1325
"cell_type": "markdown",
1426
"metadata": {},
1527
"source": [
16-
"# Kalman Filter"
28+
"### Kalman Filter"
1729
]
1830
},
1931
{
2032
"cell_type": "markdown",
2133
"metadata": {},
2234
"source": [
23-
"# Ref"
35+
"### Ref\n",
36+
"\n",
37+
"- [PROBABILISTIC\\-ROBOTICS\\.ORG](http://www.probabilistic-robotics.org/)"
2438
]
39+
},
40+
{
41+
"cell_type": "code",
42+
"execution_count": null,
43+
"metadata": {},
44+
"outputs": [],
45+
"source": []
2546
}
2647
],
2748
"metadata": {

docs/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ See this paper for more details:
4040
modules/path_tracking
4141
modules/arm_navigation
4242
modules/aerial_navigation
43+
modules/appendix
4344

4445

4546
Indices and tables

docs/jupyternotebook2rst.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,35 @@ def generate_rst(npath):
2323
# print(npath)
2424

2525
# generate dir
26-
dirpath = "./modules/" + os.path.dirname(npath)[3:]
26+
dirpath = os.path.dirname(npath)
2727
# print(dirpath)
2828

29-
if not os.path.exists(dirpath):
30-
os.makedirs(dirpath)
31-
3229
rstpath = os.path.abspath("./modules/" + npath[3:-5] + "rst")
33-
print(rstpath)
30+
# print(rstpath)
31+
32+
basename = os.path.basename(rstpath)
3433

3534
cmd = "jupyter nbconvert --to rst "
3635
cmd += npath
37-
cmd += " --output "
38-
cmd += rstpath
36+
print(cmd)
37+
subprocess.call(cmd, shell=True)
38+
39+
cmd = "rm -rf "
40+
cmd += "./modules/"
41+
cmd += basename[:-4]
42+
cmd += "*"
43+
print(cmd)
44+
subprocess.call(cmd, shell=True)
45+
46+
cmd = "mv "
47+
cmd += dirpath
48+
cmd += "/*.rst ./modules/"
49+
print(cmd)
50+
subprocess.call(cmd, shell=True)
51+
52+
cmd = "mv "
53+
cmd += dirpath
54+
cmd += "/*_files ./modules/"
3955
print(cmd)
4056
subprocess.call(cmd, shell=True)
4157

0 commit comments

Comments
 (0)