AmigaOS Artichoke 1.0 Release Notes
At farm-ng we love making tools for engineers, hackers, building communities, and inspiring people to make their own. For this reason, we are excited to announce the release of the AmigaOS Artichoke 1.0, the operating system and software development kit for the Farm-ng Amiga platform.
The release goes aligned with the starting of the Farm Robotics Challenge 2023 to help the student to bootstrap their ideas.
The Amigaβ
The Amiga is a platform of robotic hardware and software built by farm-ng to enable farmers, hackers, engineers, roboticists, or anyone with a vision of creating ruggedized, waterproof, outdoor robotic rover applications.
The Amiga includes two main pieces, the Dashboard and the artificial intelligence (AI) Brain.
The Dashboardβ
The Amiga robotics platform can operate under manual control through the Dashboard which is the master control of the CAN Bus commands and electricity flow to the motors. The Dashboard consists of ruggedized and waterproof case with a 4.3 inch daylight readable touchscreen display and is completely customizable through our ADK (Amiga-Dev-Kit) tools. Inside is a powerful microcontroller based on Adafruit's Feather m4 CAN, which can be programmed via CircuitPython.
The Dashboard allows the user to manually set speed limits and other system parameters as well as monitor system state (temperature, speed, CAN Bus traffic etc). It has a pendant connected to it which allows a stretchable wired interface to the Amiga with a joystick for steering and speed, brake, pose and control over any tools connected to and powered by the Amiga. An emergency stop (E-Stop) knob is attached to the Dashboard to allow users to instantly shut down the Amiga.
Farm-ng allows developers to create new tools or adapt existing tools to the Amiga with an interface to extend electricity and CAN bus control signals and even to add your own custom CAN bus feather microcontroller. There are a number of standard farming tools already available such as 3 Point Lifts, seats, plows, seeders, weeders, dibblers etc, see https://farm-ng.com/collections/amiga-attachments
The Brainβ
The Amiga Brain allows the platform to run complex artificial intelligence applications with a powerful computer encased in a weatherized, rugged aluminum case sporting a daylight readable 10. 1 inch touch screen. Inside is a NVIDIA Xavier NX computer with up to 21 TOPS of performance. It includes CAN bus, USB and GIGe communication along with built-in WiFi. The brain allows a developer to write and deploy powerful AI applications using standard Python. There are several example applications and examples available at https://amiga.farm-ng.com/docs/examples/examples-index#brain-adk-examples
Most Brain systems come with two Oak-D Smart Camera which are powered by the system over ethernet and themselves can run AI models at 4 TOPS in addition to stereo depth computations.
Amiga OSβ
The Amiga Brain includes the AmigaOS, a robotics operating system exclusively developed for the Amiga platform and for its specific farming applications. The operating system is the one in charge to manage the different supported devices, and interact with the native or user provided.
Below you can see a couple of screenshots of the main layouts to navigate through the different apps, settings pages, or access to the developers tools.
Microservices Architectureβ
The AmigaOS and therefore the SDK are designed following a microservices architecture leveraging gRPC as a lightweight protocol framework for message passing, and asyncio to concurrently orchestrate the different services as independent asynchronous tasks.
Below you can see a high level description of the Amiga OS architecture, starting from the Amiga platform which is the hardware layer, until the final user layer which are the GUI apps. The connection in between happens thanks to the gRPC message passing framework.
gRPC Servicesβ
The Amiga includes different core gRPC services that expose the basic sensors and intercommunication within the robot. We expose to the user the services to interact with the OAK-D cameras and the CAN bus used to receive the robot telemetry and send the signal to the motors.
The way to access this data is using the Python Open Source clients in the Python farm-ng-amiga package. We also provide examples about how to use this either as a standalone Python script, or as a Kivy application.
Below is a snippet of the Python API to interact with the Oak cameras:
The native Appsβ
The AmigaOS provides some native apps to fulfill different needs and requirements from a GUI perspective.
Recorderβ
The recorder app is the tool we provide to collect data from the GUI. Itβs a replica of the camera apps that you can find in any smartphone, but it records all the data (for example all CAN bus messages) coming from the connected sensors and devices.
With this app you can customize the numbers of sensors to record the data, adjust the camera parameters, and visualize in real time from the different cameras modes e.g rgb, disparity or left/ right grayscale images.
In addition, we provide the open source library (in Python and C++) to decode the events file generated by the recorder. See: https://github.com/farm-ng/farm-ng-core
Gallery / Playbackβ
With this app you can explore the different files collected with the Recorder app and visualize in situ the collected data. In the future weβll provide more functionality to perform data annotation e.g to train AI models. In addition, we also provide a playback tool to visualize the video sequences at different speed and seek frames.
File moverβ
We provide a simple application so that you can copy in your external drive all the data stored in the robot to perform later any type of data analysis.
Create custom appsβ
With the Amiga SDK we want to encourage anyone to create their own applications and improve the development experience. For this reason we provide an app-template in github so that you can clone and start building your robotics app, integrate with any Python library from your vs-code via ssh directly in the robot (enjoying also the co-pilot).
You can follow this tutorial to start developing your Amiga apps: https://amiga.farm-ng.com/docs/brain/brain-apps
For a full developed tutorial, see the Virtual Joystick example, copy, paste, modify and have fun ! https://amiga.farm-ng.com/docs/tutorials/introduction/tutorial-introduction
Ecosystemβ
- Developer documentation
- Documentation for how the key electrical and software work is available at https://amiga.farm-ng.com/docs/getting-started
- Video tutorials:
- Tutorials with a quickstart guide, an introduction to the components of the tractor and itβs software development kit are available on this playlist: https://youtube.com/playlist?list=PLWQmpzk0y9NDXFKSwvCjYtRL8QNWfK4ND
- Discourse:
- There is an active Discourse community at https://discourse.farm-ng.com
- Farm Robotics Challenge:
- Together with University of California Agriculture and Natural Resources division (UC ANR) and farm-ng, we are hosting a nation wide agriculture competition to use farm-ngβs Amiga robot to create innovative solutions to automate an essential farm function on any crop or farm size. https://farm-ng.com/products/farmbot-ai-challenge-package
- Community examples: