Agri-OpenCore Architecture Overview
Agri-OpenCore follows an architecture that promotes modularity, reusability and a clear separation of concerns. It lets robotic solutions be deployed across different agricultural scenarios, both on real farms and in simulation.

Core components
Scenarios
At the top level, the architecture is organised around scenarios. These represent complete agricultural use cases and orchestrate the interaction between platforms, environments and algorithmic stacks. Scenarios are parameterised, so the same set-up can be used in real-world deployments and in simulation. A public example is the simulation-only harvesting scenario, which follows the scenario template and builds on the scenario base image.
Platforms
The platform layer defines the robot hardware configuration: the robot base, its sensors (from individual sensors to complex sensing solutions) and the ROS control interfaces. Platforms are mainly configuration, keeping hardware specifications separate from algorithms. Examples are hunter_robot and hunter_platform for the AgileX Hunter V2, and mobile_manipulator_platform for the mobile manipulator used in the harvesting scenario.
Environments
The environment component holds all environment-specific configuration and parameters, such as maps. Standard templates keep environments consistent across scenarios.
Stacks
Stacks contain the algorithms and form the backbone of the solutions. Several stacks can be combined into complex behaviours, each focusing on a function such as navigation, perception or manipulation.
Deployment
Every repository comes with a development container, so the same environment is used for development, testing and deployment. Docker images are built for each component and scenario by continuous integration pipelines and published through a container registry (the LCAS registry, lcas.lincoln.ac.uk). Complete systems are mostly orchestrated as Docker Compose projects that combine these images with configuration.
Template system
- Robot templates: a standard structure for robot configurations.
- Environment templates: consistent environment set-up and parameters.
- Repository templates: a common structure, CI and development container across all component repositories.
- Scenario template: a minimal AOC-compatible scenario with a development container and a bringup package.
Design principles
- Clear separation: stacks contain algorithms and implementations, while platforms and scenarios focus on configuration and integration.
- Modular design: components are interchangeable and reusable across scenarios.
- Configuration over implementation: platforms, environments and scenarios emphasise configuration, which keeps them flexible and maintainable.
- Hardware abstraction: driver packages encapsulate hardware and simulation plugins, so the same software can switch between real and simulated robots.
Getting started
All open components, with licences and links, are listed on the Software and Resources page. Good starting points are:
- aoc_container_base: ROS 2 Docker images for CPU, CUDA and browser desktop use, the base for AOC containers.
- ros2_pkg_template: a template for new ROS 2 packages, with CI workflows and CPU or GPU development containers.
- environment_template: a template for describing farm environments, with map placeholders, map generators and procedural generation for robustness testing.
- Topological navigation: try it in your browser with no installation.
