Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ using pip :

5. Execute python script in each directory.

For example, to run the sample code of `Extented Kalman Filter` in the
For example, to run the sample code of `Extended Kalman Filter` in the
`localization` directory, execute the following command:

.. code-block::
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ At first, please fix all CI errors before code review.
You can check your PR doc from the CI panel.

After the "ci/circleci: build_doc" CI is succeeded,
you can access you PR doc with clicking the [Details] of the "ci/circleci: build_doc artifact" CI.
you can access your PR doc with clicking the [Details] of the "ci/circleci: build_doc artifact" CI.

.. image:: /_static/img/doc_ci.png

Expand Down
4 changes: 2 additions & 2 deletions docs/modules/10_inverted_pendulum/inverted_pendulum_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Inverted Pendulum
------------------

An inverted pendulum on a cart consists of a mass :math:`m` at the top of a pole of length :math:`l` pivoted on a
horizontally moving base as shown in the adjacent.
horizontally moving base as shown in the adjacent figure.

The objective of the control system is to balance the inverted pendulum by applying a force to the cart that the pendulum is attached to.

Expand Down Expand Up @@ -97,7 +97,7 @@ Code Link

MPC control
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The MPC controller minimize this cost function defined as:
The MPC controller minimizes this cost function defined as:

.. math:: J = x^T Q x + u^T R u

Expand Down
2 changes: 1 addition & 1 deletion docs/modules/12_appendix/Kalmanfilter_basics_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Variance, Covariance and Correlation
Variance
^^^^^^^^

Variance is the spread of the data. The mean does’nt tell much **about**
Variance is the spread of the data. The mean doesn’t tell much **about**
the data. Therefore the variance tells us about the **story** about the
data meaning the spread of the data.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ Behavior Tree
-------------

Behavior Tree is a modular, hierarchical decision model that is widely used in robot control, and game development.
It present some similarities to hierarchical state machines with the key difference that the main building block of a behavior is a task rather than a state.
Behavior Tree have been shown to generalize several other control architectures (https://ieeexplore.ieee.org/document/7790863)
It presents some similarities to hierarchical state machines with the key difference that the main building block of a behavior is a task rather than a state.
Behavior Trees have been shown to generalize several other control architectures (https://ieeexplore.ieee.org/document/7790863)

Code Link
~~~~~~~~~~~~~
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Python for Robotics
----------------------

A programing language, Python is used for this `PythonRobotics` project
A programming language, Python is used for this `PythonRobotics` project
to achieve the purposes of this project described in the :ref:`What is PythonRobotics?`.

This section explains the Python itself and features for science computing and robotics.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Technologies for Robotics

The field of robotics needs wide areas of technologies such as mechanical engineering,
electrical engineering, computer science, and artificial intelligence (AI).
This project, `PythonRobotics`, only focus on computer science and artificial intelligence.
This project, `PythonRobotics`, only focuses on computer science and artificial intelligence.

The technologies for robotics are categorized as following 3 categories:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ But, the probability is getting uncertain without observations:


The `gaussian filter <https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.gaussian_filter.html>`_
is used in the simulation for adding noize.
is used in the simulation for adding noise.

Step3: Update probability by observation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ and the red line is estimated trajectory with PF.
It is assumed that the robot can measure a distance from landmarks
(RFID).

This measurements are used for PF localization.
These measurements are used for PF localization.

Code Link
~~~~~~~~~~~~~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ unknown (unobserved) areas, which are close to 0.5.
.. figure:: grid_map_example.png

In order to construct the grid map from the measurement we need to
discretise the values. But, first let’s need to ``import`` some
discretise the values. But, first we need to ``import`` some
necessary packages.

.. code:: ipython3
Expand Down
4 changes: 2 additions & 2 deletions docs/modules/4_slam/FastSLAM1/FastSLAM1_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ will converge to the correct estimate.
MAX_RANGE = 20.0 # maximum observation range
M_DIST_TH = 2.0 # Threshold of Mahalanobis distance for data association.
STATE_SIZE = 3 # State size [x,y,yaw]
LM_SIZE = 2 # LM srate size [x,y]
LM_SIZE = 2 # LM state size [x,y]
N_PARTICLE = 100 # number of particle
NTH = N_PARTICLE / 1.5 # Number of particle for re-sampling

Expand Down Expand Up @@ -409,7 +409,7 @@ probably will die out.
3- Resampling
~~~~~~~~~~~~~

In the reseampling steps a new set of particles are chosen from the old
In the resampling steps a new set of particles are chosen from the old
set. This is done according to the weight of each particle.

The figure shows 100 particles distributed uniformly between [-0.5, 0.5]
Expand Down
2 changes: 1 addition & 1 deletion docs/modules/4_slam/ekf_slam/ekf_slam_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Introduction

EKF SLAM models the SLAM problem in a single EKF where the modeled state
is both the pose :math:`(x, y, \theta)` and an array of landmarks
:math:`[(x_1, y_1), (x_2, x_y), ... , (x_n, y_n)]` for :math:`n`
:math:`[(x_1, y_1), (x_2, y_2), ... , (x_n, y_n)]` for :math:`n`
landmarks. The covariance between each of the positions and landmarks
are also tracked.

Expand Down
4 changes: 2 additions & 2 deletions docs/modules/4_slam/graph_slam/graphSLAM_doc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ available that uses graph-based approaches to perform online estimation
or to solve for a subset of the poses.

GraphSLAM uses the motion information as well as the observations of the
environment to create least square problem that can be solved using
environment to create a least squares problem that can be solved using
standard optimization techniques.

Minimal Example
Expand Down Expand Up @@ -331,7 +331,7 @@ between node 0 and 1 will be created. The equations for the error is as follows:

:math:`e_{ij}^y = y_j + d_j sin(\psi_j + \theta_j) - y_i - d_i sin(\psi_i + \theta_i)`

:math:`e_{ij}^x = \psi_j + \theta_j - \psi_i - \theta_i`
:math:`e_{ij}^{\psi} = \psi_j + \theta_j - \psi_i - \theta_i`

Where :math:`[x_i, y_i, \psi_i]` is the pose for node :math:`i` and
similarly for node :math:`j`, :math:`d` is the measured distance at
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ It can generates a shortest path between two 2D poses (x, y, yaw) with maximum c

Generated paths consist of 3 segments of maximum curvature curves or a straight line segment.

Each segment type can is categorized by 3 type: 'Right turn (R)' , 'Left turn (L)', and 'Straight (S).'
Each segment type can be categorized by 3 types: 'Right turn (R)' , 'Left turn (L)', and 'Straight (S).'

Possible path will be at least one of these six types: RSR, RSL, LSR, LSL, RLR, LRL.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Dynamic Path Maintenance
.. math::
b_i^{\text{new}} = b_i^{\text{old}} + \alpha (f_c + f_r),

where :math:`\alpha` is a step-size parameter, which often proportional to :math:`\rho(b_i^{\text{old}})`
where :math:`\alpha` is a step-size parameter, which is often proportional to :math:`\rho(b_i^{\text{old}})`

2. **Overlap Enforcement**:
- Insert new nodes if adjacent nodes are too far apart
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ This is a 2D grid based shortest path planning with Theta star algorithm.

It offers an optimization over the A star algorithm to generate any-angle paths. Unlike A star, which always assigns the current node as the parent of the successor, Theta star checks for a line-of-sight (unblocked path) from an earlier node (typically the parent of the current node) to the successor, and directly assigns it as a parent if visible. This reduces cost by replacing staggered segments with straight lines.

Checking for line of sight involves verifying that no obstacles block the straight line between two nodes. On a grid, this means identifying all the discrete cells that the line passes through to determine if they are empty. Bresenham’s line algorithm is commonly used for this purpose. Starting from one endpoint, it incrementally steps along one axis, while considering the gradient to determine the position on the other axis. Because it relies only on integer addition and subtraction, it is both efficient and precise for grid-based visibility checks in Theta*.
Checking for line of sight involves verifying that no obstacles block the straight line between two nodes. On a grid, this means identifying all the discrete cells that the line passes through to determine if they are empty. Bresenham’s line algorithm is commonly used for this purpose. Starting from one endpoint, it incrementally steps along one axis, while considering the gradient to determine the position on the other axis. Because it relies only on integer addition and subtraction, it is both efficient and precise for grid-based visibility checks in Theta star.

As a result, Theta star produces shorter, smoother paths than A star, ideal for ground or aerial robots operating in continuous environments where smoother motion enables higher acceleration and reduced travel time.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Here is an overview of mathematical derivations of formulae for individual path

In all the derivations below, radius of curvature of the vehicle is assumed to be of unit length and start pose is considered to be at origin. (*In code we are removing the offset due to start position and normalising the lengths before passing the values to these functions.*)

Also, (t, u, v) respresent the measure of each motion requried. Thus, in case of a turning maneuver, they represent the angle inscribed at the centre of turning circle and in case of straight maneuver, they represent the distance to be travelled.
Also, (t, u, v) represent the measure of each motion required. Thus, in case of a turning maneuver, they represent the angle inscribed at the centre of turning circle and in case of straight maneuver, they represent the distance to be travelled.

1. **Left-Straight-Left**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ In the animation, blue points are Voronoi points,

Cyan crosses mean searched points with Dijkstra method,

The red line is the final path of Vornoi Road-Map.
The red line is the final path of Voronoi Road-Map.

Code Link
~~~~~~~~~~~~~~~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,17 @@ Input vector is:

.. math:: u = [a, \delta]

a: accellation, δ: steering angle
a: acceleration, δ: steering angle

The MPC cotroller minimize this cost function for path tracking:
The MPC cotroller minimizes this cost function for path tracking:

.. math:: min\ Q_f(z_{T,ref}-z_{T})^2+Q\Sigma({z_{t,ref}-z_{t}})^2+R\Sigma{u_t}^2+R_d\Sigma({u_{t+1}-u_{t}})^2

z_ref come from target path and speed.
z_ref comes from target path and speed.

subject to:

- Linearlied vehicle model
- Linearized vehicle model

.. math:: z_{t+1}=Az_t+Bu+C

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Constructor

PathFinderController(Kp_rho, Kp_alpha, Kp_beta)

Constructs an instantiate of the PathFinderController for navigating a 3-DOF wheeled robot on a 2D plane.
Constructs an instance of the PathFinderController for navigating a 3-DOF wheeled robot on a 2D plane.

Parameters:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ N joint arm to point control

N joint arm to a point control simulation.

This is a interactive simulation.
This is an interactive simulation.

You can set the goal position of the end effector with left-click on the
plotting area.
Expand Down
2 changes: 1 addition & 1 deletion docs/modules/7_arm_navigation/planar_two_link_ik_main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Two joint arm to point control

This is two joint arm to a point control simulation.

This is a interactive simulation.
This is an interactive simulation.

You can set the goal position of the end effector with left-click on the plotting area.

Expand Down