Skip to content

Commit cf4a60f

Browse files
committed
Merge branch 'master' into release
2 parents c94efff + 564d062 commit cf4a60f

File tree

728 files changed

+216791
-54700
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

728 files changed

+216791
-54700
lines changed

.github/workflows/future_testing.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
strategy:
1212
matrix:
1313
os: [windows-latest, ubuntu-latest, macos-latest]
14-
python-version: [3.7, 3.8, 3.9]
14+
python-version: [3.7, 3.8, 3.9, '3.10']
1515

1616
steps:
1717
- name: Set up Python ${{ matrix.python-version }}
@@ -28,18 +28,21 @@ jobs:
2828
- name: Checkout Swift
2929
uses: actions/checkout@v2
3030
with:
31+
ref: future
3132
repository: jhavl/swift
3233
path: swift
3334

3435
- name: Checkout Spatialmath
3536
uses: actions/checkout@v2
3637
with:
38+
ref: future
3739
repository: petercorke/spatialmath-python
3840
path: sm
3941

4042
- name: Checkout Spatialgeometry
4143
uses: actions/checkout@v2
4244
with:
45+
ref: future
4346
repository: jhavl/spatialgeometry
4447
path: sg
4548

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
2+
*.doctree
3+
14
# Vim
25
*.sw*
36

README.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,26 @@ Or you can run them, and experiment with them, at [mybinder.org](https://mybinde
236236

237237
The toolbox is incredibly useful for developing and prototyping algorithms for research, thanks to the exhaustive set of well documented and mature robotic functions exposed through clean and painless APIs. Additionally, the ease at which a user can visualize their algorithm supports a rapid prototyping paradigm.
238238

239+
Check out our ICRA 2021 paper on [IEEE Xplore](https://ieeexplore.ieee.org/document/9561366) or get the PDF from [Peter's website](https://petercorke.com/download/31/python-tools/1296/python_toolbox_icra_2020-5.pdf).
240+
241+
If the toolbox helped you in your research, please cite
242+
243+
```
244+
@inproceedings{rtb,
245+
title={Not your grandmother’s toolbox--the Robotics Toolbox reinvented for Python},
246+
author={Corke, Peter and Haviland, Jesse},
247+
booktitle={2021 IEEE International Conference on Robotics and Automation (ICRA)},
248+
pages={11357--11363},
249+
year={2021},
250+
organization={IEEE}
251+
}
252+
```
253+
239254
### Publication List
240255

241-
J. Haviland, N. Sünderhauf and P. Corke, "**A Holistic Approach to Reactive Mobile Manipulation**,". In the video, the robot is controlled using the Robotics toolbox for Python and features a recording from the [Swift](https://github.com/jhavl/swift) Simulator.
256+
J. Haviland, N. Sünderhauf and P. Corke, "**A Holistic Approach to Reactive Mobile Manipulation**," in _IEEE Robotics and Automation Letters_, doi: 10.1109/LRA.2022.3146554. In the video, the robot is controlled using the Robotics toolbox for Python and features a recording from the [Swift](https://github.com/jhavl/swift) Simulator.
242257

243-
[[Arxiv Paper](https://arxiv.org/abs/2109.04749)] [[Project Website](https://jhavl.github.io/holistic/)] [[Video](https://youtu.be/-DXBQPeLIV4)] [[Code Example](https://github.com/petercorke/robotics-toolbox-python/blob/master/roboticstoolbox/examples/holistic_mm_non_holonomic.py)]
258+
[[Arxiv Paper](https://arxiv.org/abs/2109.04749)] [[IEEE Xplore](https://ieeexplore.ieee.org/abstract/document/9695298)] [[Project Website](https://jhavl.github.io/holistic/)] [[Video](https://youtu.be/-DXBQPeLIV4)] [[Code Example](https://github.com/petercorke/robotics-toolbox-python/blob/master/roboticstoolbox/examples/holistic_mm_non_holonomic.py)]
244259

245260
<p>
246261
<a href="https://youtu.be/-DXBQPeLIV4">

docs/source/arm_ets.rst

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ Consider the example:
1212
.. runblock:: pycon
1313
:linenos:
1414

15-
>>> from roboticstoolbox import ETS
16-
>>> ETS.rx(45, 'deg')
17-
>>> ETS.tz(0.75)
18-
>>> e = ETS.rx(0.3) * ETS.tz(0.75)
15+
>>> from roboticstoolbox import ET
16+
>>> ET.Rx(45, 'deg')
17+
>>> ET.tz(0.75)
18+
>>> e = ET.Rx(0.3) * ET.tz(0.75)
1919
>>> print(e)
20-
>>> e.eval()
20+
>>> e.fkine([])
2121

2222
In lines 2-5 we defined two elementary transforms. Line 2 defines a rotation
2323
of 45° about the x-axis, and line 4 defines a translation of 0.75m along the z-axis.
2424
Compounding them in line 6, the result is the two elementary transforms in a
2525
sequence - an elementary transform sequence (ETS). An ETS can be arbitrarily
2626
long.
2727

28-
Line 8 *evaluates* the sequence, substituting in values, and the result is an
29-
SE(3) matrix encapsulated in an ``SE3`` object.
28+
Line 8 *evaluates* the forward kinematics of the sequence, substituting in values,
29+
and the result is an SE(3) matrix encapsulated in an ``4x4`` numpy array.
3030

3131
The real power comes from having variable arguments to the elementary transforms
3232
as shown in this example where we define a simple two link planar manipulator.
@@ -35,18 +35,18 @@ as shown in this example where we define a simple two link planar manipulator.
3535
.. runblock:: pycon
3636
:linenos:
3737

38-
>>> from roboticstoolbox import ETS
39-
>>> e = ETS.rz() * ETS.tx(1) * ETS.rz() * ETS.tx(1)
38+
>>> from roboticstoolbox import ET
39+
>>> e = ET.Rz() * ET.tx(1) * ET.Rz() * ET.tx(1)
4040
>>> print(e)
4141
>>> len(e)
4242
>>> e[1:3]
43-
>>> e.eval([0, 0])
44-
>>> e.eval([90, -90], 'deg')
43+
>>> e.fkine([0, 0])
44+
>>> e.fkine([1.57, -1.57])
4545

46-
Line 2 succinctly describes the kinematics in terms of elementary transforms: a rotation around the z-axis by the
47-
first joint angle, then a translation in the x-direction, then a rotation around
48-
the z-axis by the second joint angle, and finally a translation in the
49-
x-direction.
46+
Line 2 succinctly describes the kinematics in terms of elementary transforms: a
47+
rotation around the z-axis by the first joint angle, then a translation in the
48+
x-direction, then a rotation around the z-axis by the second joint angle, and
49+
finally a translation in the x-direction.
5050

5151
Line 3 creates the elementary transform sequence, with variable transforms.
5252
``e`` is a single object that encapsulates a list of elementary transforms, and list like
@@ -70,15 +70,16 @@ ETS - 3D
7070
--------
7171

7272
.. autoclass:: roboticstoolbox.robot.ETS.ETS
73-
:members: rx, ry, rz, tx, ty, tz, eta, n, joints, isjoint, isconstant, isrevolute, isprismatic, axis, config, __getitem__, pop, __mul__, __repr__, __str__, T, eval, compile, SE3, jacob0, hessian0
73+
:members: __str__, __repr__, __mul__, __getitem__, n, m, structure, joints, jointset, split, inv, compile, insert, fkine, jacob0, jacobe, hessian0, hessiane
7474
:undoc-members:
7575
:show-inheritance:
76+
:member-order: bysource
7677

7778
ETS - 2D
7879
--------
7980

8081
.. autoclass:: roboticstoolbox.robot.ETS.ETS2
81-
:members: r, tx, ty, eta, n, joints, isjoint, isconstant, isrevolute, isprismatic, axis, config, __getitem__, pop, __mul__, __repr__, __str__, T, eval, compile
82+
:members: __str__, __repr__, __mul__, __getitem__, n, m, structure, joints, jointset, split, inv, compile, insert, fkine, jacob0, jacobe
8283
:undoc-members:
8384
:show-inheritance:
8485

docs/source/conf.py

Lines changed: 51 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@
1717
import re
1818

1919
# defined relative to configuration directory which is where this file conf.py lives
20-
sys.path.append(os.path.abspath('exts'))
20+
sys.path.append(os.path.abspath("exts"))
2121

2222
# -- Project information -----------------------------------------------------
2323

24-
project = 'Robotics Toolbox for Python'
25-
copyright = '2020, Jesse Haviland and Peter Corke'
26-
author = 'Jesse Haviland and Peter Corke'
24+
project = "Robotics Toolbox for Python"
25+
copyright = "2020, Jesse Haviland and Peter Corke"
26+
author = "Jesse Haviland and Peter Corke"
2727

2828
# print(__file__)
2929

3030
# parse version number out of setup.py
31-
with open('../../setup.py', encoding='utf-8') as f:
31+
with open("../../setup.py", encoding="utf-8") as f:
3232
setup_py = f.read()
3333
m = re.search("version='([0-9\.]*)',", setup_py, re.MULTILINE)
3434

@@ -37,33 +37,36 @@
3737
# Add any Sphinx extension module names here, as strings. They can be
3838
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
3939
# ones.
40-
extensions = [
41-
'sphinx.ext.autodoc',
42-
'sphinx.ext.todo',
43-
'sphinx.ext.viewcode',
44-
'sphinx.ext.mathjax',
45-
'sphinx.ext.coverage',
46-
'sphinx.ext.doctest',
47-
'sphinx.ext.inheritance_diagram',
48-
'sphinx_autorun',
49-
'blockname',
50-
]
40+
extensions = [
41+
"sphinx.ext.autodoc",
42+
"sphinx.ext.todo",
43+
"sphinx.ext.viewcode",
44+
"sphinx.ext.mathjax",
45+
"sphinx.ext.coverage",
46+
"sphinx.ext.doctest",
47+
"sphinx.ext.inheritance_diagram",
48+
"sphinx_autorun",
49+
"blockname",
50+
"sphinx.ext.intersphinx",
51+
]
5152

5253
autosummary_generate = True
53-
autodoc_member_order = 'bysource'
54+
autodoc_member_order = "bysource"
5455

5556
# Add any paths that contain templates here, relative to this directory.
56-
templates_path = ['_templates']
57+
templates_path = ["_templates"]
5758

58-
exclude_patterns = ['test_*']
59+
exclude_patterns = ["test_*"]
5960

6061
# options for spinx_autorun, used for inline examples
6162
# choose UTF-8 encoding to allow for Unicode characters, eg. ansitable
6263
# Python session setup, turn off color printing for SE3, set NumPy precision
6364
autorun_languages = {}
64-
autorun_languages['pycon_output_encoding'] = 'UTF-8'
65-
autorun_languages['pycon_input_encoding'] = 'UTF-8'
66-
autorun_languages['pycon_runfirst'] = """
65+
autorun_languages["pycon_output_encoding"] = "UTF-8"
66+
autorun_languages["pycon_input_encoding"] = "UTF-8"
67+
autorun_languages[
68+
"pycon_runfirst"
69+
] = """
6770
from spatialmath import SE3
6871
SE3._color = False
6972
import numpy as np
@@ -74,20 +77,20 @@
7477

7578
# -- Options for HTML output -------------------------------------------------
7679

77-
html_theme = 'sphinx_rtd_theme'
80+
html_theme = "sphinx_rtd_theme"
7881

7982
html_theme_options = {
8083
#'github_user': 'petercorke',
8184
#'github_repo': 'spatialmath-python',
8285
#'logo_name': False,
83-
'logo_only': False,
84-
'display_version': True,
85-
'prev_next_buttons_location': 'both',
86-
'analytics_id': 'G-11Q6WJM565',
87-
'style_external_links': True,
88-
}
89-
html_logo = '../figs/RobToolBox_RoundLogoB.png'
90-
html_last_updated_fmt = '%d-%b-%Y'
86+
"logo_only": False,
87+
"display_version": True,
88+
"prev_next_buttons_location": "both",
89+
"analytics_id": "G-11Q6WJM565",
90+
"style_external_links": True,
91+
}
92+
html_logo = "../figs/RobToolBox_RoundLogoB.png"
93+
html_last_updated_fmt = "%d-%b-%Y"
9194
show_authors = True
9295

9396
# mathjax_config = {
@@ -98,33 +101,33 @@
98101
# Add any paths that contain custom static files (such as style sheets) here,
99102
# relative to this directory. They are copied after the builtin static files,
100103
# so a file named "default.css" will overwrite the builtin "default.css".
101-
html_static_path = ['_static']
104+
html_static_path = ["_static"]
102105
html_css_files = [
103-
'css/custom.css',
106+
"css/custom.css",
104107
]
105-
# autodoc_mock_imports = ["numpy", "scipy"]
108+
# autodoc_mock_imports = ["numpy", "scipy"]
106109

107110

108111
# -- Options for LaTeX/PDF output --------------------------------------------
109-
latex_engine = 'xelatex'
112+
latex_engine = "xelatex"
110113
# maybe need to set graphics path in here somewhere
111114
# \graphicspath{{figures/}{../figures/}{C:/Users/me/Documents/project/figures/}}
112115
# https://stackoverflow.com/questions/63452024/how-to-include-image-files-in-sphinx-latex-pdf-files
113116
latex_elements = {
114117
# The paper size ('letterpaper' or 'a4paper').
115-
'papersize': 'a4paper',
118+
"papersize": "a4paper",
116119
#'releasename':" ",
117120
# Sonny, Lenny, Glenn, Conny, Rejne, Bjarne and Bjornstrup
118121
# 'fncychap': '\\usepackage[Lenny]{fncychap}',
119-
'fncychap': '\\usepackage{fncychap}',
120-
'maketitle': "blah blah blah"
122+
"fncychap": "\\usepackage{fncychap}",
123+
"maketitle": "blah blah blah",
121124
}
122125

123126
# Use RVC book notation for maths
124127
# see https://stackoverflow.com/questions/9728292/creating-latex-math-macros-within-sphinx
125128
mathjax_config = {
126-
'TeX': {
127-
'Macros': {
129+
"TeX": {
130+
"Macros": {
128131
# RVC Math notation
129132
# - not possible to do the if/then/else approach
130133
# - subset only
@@ -154,7 +157,13 @@
154157
# quaternions
155158
"q": r"\mathring{q}",
156159
"fq": [r"\presup{#1}\mathring{q}", 1],
157-
158160
}
159-
}
161+
}
162+
}
163+
intersphinx_mapping = {
164+
"numpy": ("http://docs.scipy.org/doc/numpy/", None),
165+
"scipy": ("http://docs.scipy.org/doc/scipy/reference/", None),
166+
"matplotlib": ("http://matplotlib.sourceforge.net/", None),
160167
}
168+
169+
# 'python': ('http://docs.python.org/2', None),

docs/source/mobile.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and state estimation.
1111

1212
mobile_vehicle
1313
mobile_vehicle_animation
14+
mobile_drivers
1415
mobile_reactive
1516
mobile_planner
16-
mobile_EKF
17+
mobile_SLAM

docs/source/mobile_SLAM.rst

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
Localization and Mapping
2+
========================
3+
4+
These classes support simulation of vehicle and map estimation in a simple
5+
planar world with point landmarks.
6+
7+
8+
State estimation
9+
----------------
10+
11+
Two state estimators are included.
12+
13+
Extended Kalman filter
14+
^^^^^^^^^^^^^^^^^^^^^^
15+
16+
The EKF is capable of vehicle localization, map estimation or SLAM.
17+
18+
.. autoclass:: roboticstoolbox.mobile.EKF
19+
:undoc-members:
20+
:show-inheritance:
21+
:inherited-members:
22+
:special-members: __init__
23+
24+
Particle filter
25+
^^^^^^^^^^^^^^^
26+
27+
The particle filter is capable of map-based vehicle localization.
28+
29+
.. autoclass:: roboticstoolbox.mobile.ParticleFilter
30+
:undoc-members:
31+
:show-inheritance:
32+
:inherited-members:
33+
:special-members: __init__
34+
35+
Sensor models
36+
-------------
37+
38+
.. autoclass:: roboticstoolbox.mobile.RangeBearingSensor
39+
:undoc-members:
40+
:show-inheritance:
41+
:inherited-members:
42+
:special-members: __init__
43+
44+
.. autoclass:: roboticstoolbox.mobile.SensorBase
45+
:undoc-members:
46+
:show-inheritance:
47+
:inherited-members:
48+
:special-members: __init__
49+
50+
Map models
51+
----------
52+
53+
.. automodule:: roboticstoolbox.mobile.landmarkmap
54+
:undoc-members:
55+
:show-inheritance:
56+
:inherited-members:
57+
:special-members: __init__
58+
59+

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy