Metadata-Version: 2.4
Name: orchards-semantic-slam
Version: 0.1.0
Summary: Reusable factor-graph tools for trajectory alignment and semantic SLAM
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: filterpy>=1.4.5
Requires-Dist: gtsam>=4.2
Requires-Dist: numpy<2
Requires-Dist: scipy>=1.15.3
Requires-Dist: torch>=2.11.0
Requires-Dist: torchmetrics>=1.9.0
Provides-Extra: dev
Requires-Dist: pytest>=8.3.0; extra == 'dev'
Requires-Dist: ruff>=0.11.0; extra == 'dev'
Provides-Extra: viz
Requires-Dist: matplotlib>=3.9.0; extra == 'viz'
Description-Content-Type: text/markdown

# Orchards Semantic SLAM

Factor-graph python package on top of `gtsam` for:
1. GPS-odometry trajectory alignment
2. Semantic mapping with landmark observations (for example trees)

![Semantic SLAM example](./assets/semantic_slam.gif)

## Installation

Using `uv`:

```bash
uv sync
uv pip install -e .
```

## Run Examples

Alignment-only example:

```bash
python examples/trajectory_alignment.py
```

Semantic full-SLAM example (joint robot pose + landmarks):

```bash
python examples/semantic_slam.py
```

## Related Publication

Part of this codebase was developed for the following paper:

Rapado-Rincon, D., & Kootstra, G. (2025). Tree-SLAM: semantic object SLAM for efficient mapping of individual trees in orchards. Smart Agricultural Technology, 101439.

DOI: https://doi.org/10.1016/j.atech.2025.101439

Note: not all methods from the paper are ported into this library for simplicity.