The Problem:
Building a new UGV platform is daunting business. The development environment still reflects the level of novelty in emergent drone technology, with many options presenting themeselves as viable options to connect a Raspberry Pi to the Pixhawk stack for the higher processing component required for achieving the complex agricultural task within the platform scope. Most documentation from earlier than 2018 indicate that MAVproxy was the primary source of providing telemetry data from the second telemetry port of the Pixhawk to any companion computer. After that point APSync seems to be the preferred. Currently APsync can be compiled or by using a RPi image.
While there are a multitude of options for running higher function on the Raspberry Pi, with a wide range of solutions from providing highly abstracted APIs for communicating with the collection of components to bare metal platforms that allow for complete control at a very fine grained level. Our innovations are not currently expected to be software based and, frankly, my general programming skills are task and tool orientated. Abstraction and aggregation ranked high in required features. As well as easy access to OpenCV libraries for computer vision and machine learning faculties. Three projects stood out.
ROS
The grandfather of the robotics field powers everything from industrial robots to academic and hobby projects. Incredible variety of libraries, programming language agnosticism, and active (if varied) dev mailing list.
Dronekit
Another product spun by 3DR, Drone kit is the most lightweight of the three cosidered options. In their own words:
DroneKit-Python (formerly DroneAPI-Python) contains the python language implementation of DroneKit.
The API allows developers to create Python apps that communicate with vehicles over MAVLink. It provides programmatic access to a connected vehicle's telemetry, state and parameter information, and enables both mission management and direct control over vehicle movement and operations.https://github.com/dronekit/dronekit-python
FlyOS
The new entry (to me) is a project built off of ROS with a refined focus on unmanned autonomous platforms. Fairly active support in a forum style with high developer activity.
It is based on Linux and ROS (Robot Operating System) making it an ideal platform for research and commercial drone applications. It can interact with any compatible drone/autopilot using its adapter layer and exposes high level FlytAPIs in ROS, CPP, Python, REST and Websocket. It makes it easy to integrate custom payload and also provides advanced APIs using its onboard modules. These rich set of APIs allow for easy development of onboard business logic as well as remote monitoring and control through web and mobile apps. The modular design of FlytOS allows for integration with external ROS/Linux libraries and custom data plumbing between onboard and offboard apps.
http://docs.flytbase.com/docs/FlytOS/GettingStarted/FlytOS.html
Table of Considerations
| ROS | Dronekit | FlytOS | |
| Benefits |
|
|
|
| Problems |
|
|
|
Selected Platform
I believe FlytOS/FlytBase offers the best suite of options to accelerate development of the higher learning aspects of the Treescobot. I like the fact that the RPi's built in wifi is used as a local access point, which is highly useful given the field level development being done.
Using the precompiled FlytOS image and adding repositories for APSync is the best install path the the RPi as the flytOS image preinstalls the neccesary OpenCV libraries and tools.
Clear documentation for activating and using FlytOS for RPi is well written and we have the power system (5V2A BEC) in place. Code and parameters on the Pixhawk side are minimal and should not impact any run-time PID loops.
Just need to find an HDMI monitor so I can input three commands.
RGO