AmigaOS 2.0 Barley Release Notes
We are excited to announce AmigaOS 2.0 βBarleyβ, a major release providing the foundation of built-in autonomy features and powerful custom application development on the Amiga robot.
Highlights of Barley include:
- Core capabilities for autonomy and precision navigation:
- Precise geo-location, up to 2 cm accuracy, with integrated RTK-GPS receiver.
- Robust tracking of robot movement (position and orientation), fusing GPS, IMU, and wheel odometry.
- Autoplot app providing user-friendly control of the Amiga, including:
- Teach-and-repeat workflow for automating navigation tasks.
- Remote teleoperation from any web browser.
- Developer-focused environment for custom application development, including:
- Ubuntu 20.04 and Jetpack 5.1 for NVIDIA Jetson ecosystem compatibility.
- Remote SSH access from any network.
- API access to all sensor data streams, robot state estimation and control, and autonomous track following.
- Custom web application deployment to the Brain display.
- Optional ROS bridge.
- Bandwidth-optimized over-the-air (OTA) updates for future AmigaOS releases.
Due to the significant platform- and OS-level changes, existing Brains running AmigaOS 1.0 require a one-time physical upgrade by farm-ng staff to install the GPS receiver module and re-image the Brain to AmigaOS 2.0. Please contact support@farm-ng.com if your Brain has not been upgraded already. Future software updates will be provided over-the-air.
AmigaOS Architectureβ
AmigaOS 2.0 is a major upgrade at all levels of the Brain software stack:
Amiga Platformβ
At the hardware layer, the Brain now integrates a GPS receiver to track the robotβs position on earth. GPS is indispensable for tasks that require geo-location, from simple navigation to complex tasks like field mapping or precision agriculture. When paired with an RTK base station, GPS can provide up to 2 cm accuracy. See our GPS Overview for more!
Amiga OSβ
At the operating system level, AmigaOS 2.0 is now based on Ubuntu 20.04 and Jetpack 5.1 for compatibility with the broader NVIDIA Jetson developer ecosystem. AmigaOS additionally includes system services for:
- User management, securely providing remote SSH access to the Brain.
- Over-the-air updates for future AmigaOS releases, following industry best practices for robust atomic updates (image-based OTA) and minimal data transfer (compressed binary diffs).
Amiga Servicesβ
The service layer provides gRPC API access to the various functions of the Amiga. Each service handles a distinct aspect of the robot's operation, from processing imagery to managing movement. They're the cogs that make the Amiga machine tick.
The key services include:
- Canbus: Manages the robot's motors. It's like the nervous system, transmitting movement commands and receiving feedback.
- Oak: The eyes and balance of the robot. It streams imagery and provides IMU data, crucial for services like Filter and Track Follower.
- GPS: The robot's global positioning sense. It knows where the Amiga is in the world.
- Filter (UKF): Acts as the robot's sense of self-awareness. By using IMU data from the OAK service, wheel odometry from CANBUS, and global positioning from GPS, it estimates the state of the robot.
- Recorder: The memory of the robot. It logs data, ensuring we can revisit past operations or analyze performance.
- Track Follower: The brain of the operation. It uses algorithms like pure pursuit and PID to guide the Amiga. It makes decisions based on data from other services.
The architectural diagram below represents how these services interact:
Amiga Appsβ
Autoplotβ
The Autoplot app is an advanced control interface for your Amiga, offering multiple modes of operation:
- Direct control: Manually drive the robot with simple controls for straight, turn, and backwards.
- Teach-and-repeat: Manually drive the robot along a desired path, save it, and then command the robot to repeat the path autonomously.
- Remote teleoperation: Control the robot through any web browser using a keyboard.
See our Autoplot App Guide to try it out!
GPS and Filterβ
The GPS and Filter apps provide controls to configure, fine-tune, and troubleshoot the Amigaβs autonomous driving. Use them to connect to an RTK base station, calibrate the IMU, and input the physical location of components.
Recorder and File Managerβ
The Recorder App / Service is the backbone of the Amiga's data logging and playback functionality. It is designed to capture and store raw data from various robot services, facilitating later analysis, debugging, and model training. The File Manager app allows you to list your recorded log files and manage your disk space.
Amiga Developmentβ
Create custom web appsβ
A key pillar of the Amiga Development Kit is the ability for any user to create their own custom applications that run on the Amiga Brain. We have updated our application framework from a Kivy-based application approach to a web app based approach. This change facilitates:
- Seamless embedding of custom apps into the system UI.
- Teleoperation and remote monitoring of your Amiga, as demonstrated by the Autoplot app.
- Separation of rate-critical robotics functionality from visualization processes.
- Use of modern web standards and frameworks.
Please check out our instructions for getting started at Developing Custom Applications.
Porting apps from 1.0β
AmigaOS 1.0 supported Kivy as the framework for running custom applications on the Brain. To port your existing app to run on the Brain with AmigaOS 2.0, youβll need to:
- Update your use of Amiga services to match our current APIs; see our examples. You will still use Python for backend / application / data processing logic.
- Port the frontend / visualization code to your web application framework of choice. We provide a template for a Python/FastAPI backend serving a TypeScript/ReactJS-based frontend.
As an intermediate step, after (1) updating your use of Amiga APIs, you should be able to run your Kivy app on an external PC connected to the Amiga services over the network.
If you need additional guidance on porting your application, please reach out on Discourse or via support@farm-ng.com.
Integrate with ROSβ
The updated farm-ng/amiga-ros-bridge supports interfacing ROS Noetic nodes with the gRPC services running on the Amiga brains. Supported features include:
- Stream data from the Amiga brain services: wheel odometry, state estimation filter results, video streams, etc.
- Control the Amiga using the available vehicle control APIs.
Check out the documentation at amiga-ros-bridge README for installation and usage details.
Happy coding π from the Amiga Brain Team!