70 lines
4.7 KiB
Markdown
70 lines
4.7 KiB
Markdown
# Pyrate ⛵🛥️🗺
|
|
|
|
[](https://gitlab.sailingteam.hg.tu-darmstadt.de/informatik/pyrate/-/commits/master)
|
|
[](https://gitlab.sailingteam.hg.tu-darmstadt.de/informatik/pyrate/-/commits/master)
|
|
[](https://gitlab.sailingteam.hg.tu-darmstadt.de/informatik/pyrate/-/commits/master)
|
|
|
|
[](http://informatik.pages.sailingteam.hg.tu-darmstadt.de/pyrate/)
|
|
[](https://devguide.python.org/#status-of-python-branches)
|
|
|
|
This project offers algorithms targeted towards autonomous surface vehicles implemented in the Python 3.6+ programming language.
|
|
The functionality included in the Pyrate Python package enables the perception and processing of environmental features, planning of strategies and trajectories as well as action taking.
|
|
Pyrate is therefore divided into multiple distinct subpackages *sense*, *plan* and *act*, as well as the *common* package for additional features such as file I/O and mathematical abstractions.
|
|
|
|
The sense subpackage includes algorithms for computer vision, single and multi target state estimation, data smoothing and more.
|
|
In the plan subpackage, the perceived state of the agent and its environment is processed to compute trajectories for long- and short-term navigation as well as strategic decisions.
|
|
This also includes methods for gradient based and gradient free optimization methods.
|
|
Finally, the act subpackage contains state controllers to carry out planned behavior.
|
|
|
|
<img src="resources/project_structure.png" width="1080">
|
|
|
|
This project aims at providing the algorithmic backend for the ROS driven on-board systems and simulations.
|
|
Models of the robot's mechanics, electronics and its environment shall be developed within their own respective repository.
|
|
Furthermore, technical specifications, maps and so on go into a separate project repository as well.
|
|
This ensures a clean separation of distinct requirements for quality assurance and responsibilities that distinguish these projects.
|
|
|
|
## Features
|
|
|
|
These are the currently supported features:
|
|
|
|
- Sense:
|
|
- Filters:
|
|
- Kalman filters for linear and non-linear state estimation
|
|
- A gaussian mixture PHD filter for multi target tracking
|
|
- Smoothers:
|
|
- Rauch-Tung-Striebel based smoothing of time series data.
|
|
- Extended and Unscented Kalman filter extension to the RTS smoothing approach for non-linear models.
|
|
- Vision:
|
|
- Base classes for simple image regions, e.g. lines and boxes.
|
|
- Horizon line detection as basis for later obstacle localization.
|
|
- Plan:
|
|
- Geometric primitives for both cartesian and polar coordinate systems
|
|
- Locations, polygons and routes
|
|
- Transformations, unary and binary geometric operations based on [shapely](https://shapely.readthedocs.io/en/latest/project.html)
|
|
- Graphs for use in navigation
|
|
- Base classes and common abstractions like (de)serialization and pruning
|
|
- Generation of graphs covering the entire globe
|
|
- Act
|
|
- Controllers
|
|
- PID & LQR implementations
|
|
- Optional anti-windup
|
|
- Common
|
|
- Chart IO
|
|
- Discovery and loading of obstacles, e.g. landmasses, from S-57 chart files
|
|
- Writing and querying of a [spatialite database](https://www.gaia-gis.it/fossil/libspatialite) containing obstacles/polygons
|
|
- Raster dataset IO
|
|
- Math helpers
|
|
- Other:
|
|
- [Hypothesis](https://hypothesis.readthedocs.io/en/latest/) driven testing environment (including generators for simple testing of geometric calculations)
|
|
- Documentation generated by [Sphinx](https://www.sphinx-doc.org/en/master/)
|
|
- Continuous integration (CI) pipeline with linting, type checking, auto formatting, testing and documentation generation
|
|
|
|
**Documentation**: For a complete overview over the project, how to set things up and contribute,
|
|
please visit [our documentation](http://informatik.pages.sailingteam.hg.tu-darmstadt.de/pyrate/).
|
|
It can also be reached by the "External Wiki" link on the left sidebar the project overview.
|
|
The CI pipeline ensures that its content is always up to date with the current `master` branch.
|
|
|
|
**New Features**: Upcoming or required features and existing problems can be found, added and discussed in the
|
|
[Gitlab issues](https://gitlab.sailingteam.hg.tu-darmstadt.de/informatik/pyrate/-/boards)
|
|
and [merge requests](https://gitlab.sailingteam.hg.tu-darmstadt.de/informatik/pyrate/-/merge_requests).
|