You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
map building (EKF) and simultaneous localization and mapping (EKF).
49
48
50
49
The Toolbox provides:
51
50
52
-
* code that is mature and provides a point of comparison for other
53
-
implementations of the same algorithms;
54
-
* routines which are generally written in a straightforward manner which
55
-
allows for easy understanding, perhaps at the expense of computational
56
-
efficiency;
57
-
* source code which can be read for learning and teaching;
58
-
* backward compatability with the Robotics Toolbox for MATLAB
51
+
- code that is mature and provides a point of comparison for other
52
+
implementations of the same algorithms;
53
+
- routines which are generally written in a straightforward manner which
54
+
allows for easy understanding, perhaps at the expense of computational
55
+
efficiency;
56
+
- source code which can be read for learning and teaching;
57
+
- backward compatability with the Robotics Toolbox for MATLAB
59
58
60
59
The Toolbox leverages the [Spatial Maths Toolbox for Python](https://github.com/petercorke/spatialmath-python) to
61
60
provide support for data types such as SO(n) and SE(n) matrices, quaternions, twists and spatial vectors.
62
-
61
+
63
62
## Code Example
64
63
65
64
We will load a model of the Franka-Emika Panda robot defined classically using
@@ -97,14 +96,15 @@ print(robot)
97
96
T = robot.fkine(robot.qz) # forward kinematics
98
97
print(T)
99
98
100
-
0.7071070.70710700.088
101
-
0.707107-0.70710700
102
-
00-10.823
103
-
0001
99
+
0.7071070.70710700.088
100
+
0.707107-0.70710700
101
+
00-10.823
102
+
0001
104
103
```
104
+
105
105
(Python prompts are not shown to make it easy to copy+paste the code, console output is indented)
106
106
107
-
We can solve inverse kinematics very easily. We first choose an SE(3) pose
107
+
We can solve inverse kinematics very easily. We first choose an SE(3) pose
108
108
defined in terms of position and orientation (end-effector z-axis down (A=-Z) and finger
109
109
orientation parallel to y-axis (O=+Y)).
110
110
@@ -119,11 +119,11 @@ print(sol)
119
119
q_pickup = sol.q
120
120
print(robot.fkine(q_pickup)) # FK shows that desired end-effector pose was achieved
121
121
122
-
Out[35]:
123
-
-19.43001e-142.43909e-120.7
124
-
9.43759e-1417.2574e-130.2
125
-
-2.43913e-127.2575e-13-10.1
126
-
0001
122
+
Out[35]:
123
+
-19.43001e-142.43909e-120.7
124
+
9.43759e-1417.2574e-130.2
125
+
-2.43913e-127.2575e-13-10.1
126
+
0001
127
127
```
128
128
129
129
Note that because this robot is redundant we don't have any control over the arm configuration apart from end-effector pose, ie. we can't control the elbow height.
which uses the default matplotlib backend. Grey arrows show the joint axes and the colored frame shows the end-effector pose.
140
+
which uses the default matplotlib backend. Grey arrows show the joint axes and the colored frame shows the end-effector pose.
141
141
142
-
Let's now load a URDF model of the same robot. The kinematic representation is no longer
142
+
Let's now load a URDF model of the same robot. The kinematic representation is no longer
143
143
based on Denavit-Hartenberg parameters, it is now a rigid-body tree.
144
144
145
145
```python
@@ -172,7 +172,7 @@ print(robot) # display the model
172
172
The symbol `@` indicates the link as an end-effector, a leaf node in the rigid-body
173
173
tree.
174
174
175
-
We can instantiate our robot inside a browser-based 3d-simulation environment.
175
+
We can instantiate our robot inside a browser-based 3d-simulation environment.
176
176
177
177
```python
178
178
from roboticstoolbox.backends.Swift import Swift # instantiate 3D browser-based visualizer
@@ -238,6 +238,16 @@ The toolbox is incredibly useful for developing and prototyping algorithms for r
238
238
239
239
### Publication List
240
240
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.
J. Haviland and P. Corke, "**NEO: A Novel Expeditious Optimisation Algorithm for Reactive Motion Control of Manipulators**," in _IEEE Robotics and Automation Letters_, doi: 10.1109/LRA.2021.3056060. 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.
0 commit comments