Agri-OpenCore Architecture Overview
The Agri-OpenCore project follows a carefully designed architecture that promotes modularity, reusability, and clear separation of concerns. This architecture enables seamless deployment of robotic solutions across different agricultural scenarios, supporting both real-world and simulation environments.
Core Components
Scenarios
At the top level, our architecture is organised around Scenarios. These represent complete agricultural use cases and orchestrate the interaction between platforms, environments, and algorithmic stacks. Importantly, scenarios are designed to be parameterised, allowing the same setup to be used in both real-world deployments and simulations.
Platforms
The Platform layer defines the robotic hardware configurations. This includes:
- Robot base configuration
- Sensor arrays (from individual sensors to complex sensing solutions)
- ROS control interfaces
Platforms are primarily configuration-focused, ensuring clean separation between hardware specifications and algorithmic implementations.
Environments
The Environment component encapsulates all environment-specific configurations and parameters. Using standardised templates, we ensure consistent environment representation across different deployment scenarios.
Stacks
Stacks contain the core algorithmic implementations and form the backbone of our agricultural robotics solutions. Multiple stacks can be combined to create complex behaviours, with each stack focusing on specific functionalities such as navigation, perception, or manipulation.
Deployment
Our architecture features automated deployment processes, including:
- Docker image generation for each scenario
- Deployment via the LCAS Lincoln registry (lcas.lincoln.ac.uk)
- Continuous Integration/Continuous Deployment (CI/CD) pipelines
Template System
The architecture leverages a comprehensive template system:
- AOC Robot Templates: Standardised structure for robot configurations
- Environment Templates: Consistent environment setup and parameterisation
- Repository Templates: Common structure across all component repositories
Design Principles
- Clear Separation: Stacks contain algorithms and implementations, while platforms and scenarios focus on configuration and integration.
- Modular Design: Components are designed to be interchangeable and reusable across different scenarios.
- Configuration Over Implementation: Platforms, environments, and scenarios emphasise configuration rather than implementation, promoting flexibility and maintainability.
- Hardware Abstraction: Driver packages encapsulate hardware interactions and simulation plugins, enabling seamless switching between real and simulated environments.
Getting Started
We will soon release more detailed tutorials on getting started. For now, explore some of our open-source github repositories:
- The ros2_pkg_template serves as a foundational component within the Agri-OpenCore architecture, providing a standardised approach to ROS2 package development. This template repository comes equipped with comprehensive continuous integration workflows and devcontainer configurations, enabling developers to quickly bootstrap new algorithmic components or drivers. The template’s containerised development environment, complete with a lightweight desktop interface, ensures consistency across the project whilst supporting both CPU and GPU-accelerated development paths.
- The environment_template repository forms a crucial part of the Agri-OpenCore environmental modelling framework, offering a standardised approach to describing agricultural environments for both simulation and real-world deployments. It encompasses essential components including map file placeholders, automated map generators, and procedural generation tools for robustness evaluation. This template ensures consistency across different agricultural scenarios whilst providing the flexibility to maintain both public and private environment configurations, making it particularly valuable for agricultural robotics development and testing.
- The docker_cuda_desktop repository stands as a cornerstone of our deployment infrastructure, providing CUDA-enabled Docker containers with desktop environment support for GPU-accelerated agricultural robotics applications. This setup is particularly crucial for computationally intensive tasks such as real-time image processing and machine learning applications in agricultural environments. The containers are specifically configured to support the Agri-OpenCore architecture’s requirements for both development and deployment scenarios, ensuring seamless integration with our continuous deployment pipeline through the LCAS registry.