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
InterpolatePy provides a collection of algorithms for generating smooth trajectories and curves with precise control over position, velocity, acceleration, and jerk. The library implements numerous interpolation techniques ranging from simple linear interpolation to advanced B-splines and motion profiles.
10
+
InterpolatePy is a comprehensive Python library for generating smooth trajectories and curves with precise control over position, velocity, acceleration, and jerk profiles. Designed for robotics, motion planning, computer graphics, and scientific computing applications, it provides a wide range of interpolation techniques from simple linear interpolation to advanced B-splines and motion profiles.
11
+
12
+
Whether you need to generate smooth robotic joint motions, create path planning for autonomous vehicles, or design animation curves with specific dynamic properties, InterpolatePy offers the tools to create trajectories that maintain continuity while adhering to physical constraints.
10
13
11
14
## Key Features
12
15
13
16
### Spline Interpolation
14
17
15
18
#### B-Splines
16
-
-**BSpline**: Base implementation of B-splines with customizable degree and knot vectors
17
-
-**ApproximationBSpline**: B-spline curve approximation of sets of points
The library implements several key mathematical concepts for trajectory generation:
212
+
InterpolatePy implements several key mathematical concepts for trajectory generation:
213
+
214
+
### B-splines
215
+
Piecewise parametric curves defined by control points and a knot vector. B-splines offer local control (changes to a control point only affect the curve locally) and customizable continuity.
216
+
217
+
### Cubic Splines
218
+
Piecewise polynomials with C² continuity (continuous position, velocity, and acceleration) that interpolate a given set of points.
219
+
220
+
### Smoothing Splines
221
+
Splines with a controllable balance between accuracy (passing through points exactly) and smoothness (minimizing curvature). The μ parameter controls this tradeoff.
222
+
223
+
### Trapezoidal Velocity Profiles
224
+
Trajectories with linear segments of constant acceleration and velocity, creating a trapezoidal shape in the velocity profile.
152
225
153
-
-**B-splines**: Parametric curves defined by control points and a knot vector, offering local control and customizable continuity
154
-
-**Cubic splines**: Piecewise polynomials with C2 continuity (continuous position, velocity, and acceleration)
155
-
-**Smoothing splines**: Splines with a controllable balance between accuracy and smoothness
156
-
-**Trapezoidal velocity profiles**: Trajectories with linear segments of constant acceleration and velocity
157
-
-**Double-S trajectories**: Motions with bounded jerk, acceleration, and velocity, creating smooth S-curves
158
-
-**Frenet frames**: Local coordinate systems defined by tangent, normal, and binormal vectors along a curve
226
+
### Double-S Trajectories
227
+
Motion profiles with bounded jerk, acceleration, and velocity, creating smooth S-curves in the acceleration profile. These are ideal for robotic motion to reduce stress on mechanical systems.
228
+
229
+
### Frenet Frames
230
+
Local coordinate systems defined by tangent, normal, and binormal vectors along a curve, useful for tool orientation and trajectory tracking.
159
231
160
232
## Requirements
161
233
@@ -166,12 +238,11 @@ The library implements several key mathematical concepts for trajectory generati
166
238
167
239
## Development
168
240
169
-
InterpolatePy uses modern Python tools for development:
241
+
InterpolatePy uses modern Python tooling for development:
170
242
171
-
- Black and isort for code formatting
172
-
- Ruff and mypy for linting and type checking
173
-
- pytest for testing
174
-
- mkdocs for documentation
243
+
-**Code Quality**: Black and isort for formatting, Ruff and mypy for linting and type checking
244
+
-**Testing**: pytest for unit tests and benchmarks
245
+
-**Documentation**: mkdocs for documentation generation
175
246
176
247
To set up the development environment:
177
248
@@ -180,6 +251,43 @@ pip install -e ".[all]"
180
251
pre-commit install
181
252
```
182
253
254
+
### Running Tests
255
+
256
+
```bash
257
+
python -m pytest tests
258
+
```
259
+
260
+
### Building Documentation
261
+
262
+
```bash
263
+
mkdocs build
264
+
# or to serve locally
265
+
mkdocs serve
266
+
```
267
+
268
+
## Contributing
269
+
270
+
Contributions to InterpolatePy are welcome! To contribute:
271
+
272
+
1. Fork the repository
273
+
2. Create a feature branch
274
+
3. Add your changes
275
+
4. Run tests to ensure they pass
276
+
5. Submit a pull request
277
+
278
+
Please follow the existing code style and include appropriate tests for new features.
279
+
183
280
## License
184
281
185
-
MIT License
282
+
InterpolatePy is released under the MIT License. See the [LICENSE](LICENSE) file for more details.
283
+
284
+
## Acknowledgments
285
+
286
+
InterpolatePy implements algorithms and mathematical concepts primarily from the following authoritative textbooks:
287
+
288
+
- Biagiotti, L., & Melchiorri, C. (2008). *Trajectory Planning for Automatic Machines and Robots*. Springer.
289
+
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2010). *Robotics: Modelling, Planning and Control*. Springer.
290
+
291
+
The library's implementation draws heavily from the theoretical frameworks, mathematical formulations, and algorithms presented in these works.
292
+
293
+
I express my gratitude to these authors for their significant contributions to the field of trajectory planning and robotics, which have made this library possible.
0 commit comments