Viper MAV 2020 Retrospective

Dear Viper MAV Co-conspirators,

Let me start by wishing a happy new year to all of you! Let’s hope that the Corona crisis will be collectively overcome in 2021 and we’ll be able to resume dearly missed activities made impossible by the ongoing pandemic. Since it’s customary to become reflective at the end of the year I’d like to use this opportunity and take a look back on what was accomplished in 2020 …

When looking at the sheer number of repositories within the 107-systems org it seems almost impossible that all of this (firmware, hardware, mechanical design) was done within the short span of just one year. It is, however, totally what happened for which I extend my deepest thanks and gratitude to all of you. Let’s take a closer look:

  • Continuous Integration: We’ve got the most advanced GitHub actions based CI workflows available within the Arduino-verse. Our CI is so cutting edge that on several occasions CI concepts initially introduced within 107-systems repositories were later transferred to repositories within the arduino-libraries and arduino github organisation because key members of the Arduino firmware team wished just so.

  • Firmware: A large number of Arduino libraries were created which cover several required aspects for building a Arduino based UAV:

    • 107-Arduino-NMEA-Parser: This Arduino library provides a unit-tested parser for interfacing with any GPS, GLONASS, Galileo or GNSS location sensor and decoding its NMEA messages (RMC and GGA).
    • 107-Arduino-BMP388: This Arduino library provides a sensor driver for interfacing with the BMP388 barometric pressure sensor which can be used for inferring altitude information.
    • 107-Arduino-TMF8801: This Arduino library provides a sensor driver interface for the AMS TMF8801 - a advanced ToF sensor which provides millimeter-accurate distance measurement. This is the first (and only) Arduino library to provide support for this sensor.
    • 107-Arduino-Debug: A very small single-header configurable printf-style debugging library.
    • 107-Arduino-MCP2515: This Arduino library provides a driver interface for transmitting and receiving CAN frames via the well-known MCP2515 CAN transceiver. Although its by no means the first type of this library it makes use of advanced C++ features and a minimal API which is directly tailored to support UAVCAN. For this reason it is also referenced within UAVCAN/platform_specific_components.
    • 107-Arduino-UAVCAN: Last (but not least) this Arduino library built on top of libcanard provides a simplified access to UAVCAN communication. Initially conceived to allow interfacing with ESCs developed by Zubax Robotics its simplicity is attracting 3rd party developer which leverage the simplicity of Arduino to work on their own UAVCAN applications.

    Furthermore I want to highlight the fact that we are using host based unit testing for all libraries (where doing so is feasible) which is both ensuring code high quality and loose code coupling as well as ensuring against regressions due to future code extension. Doing so eliminates one of the regularly voiced prejudices against Arduino (“The Arduino platform is not suitable for professional application development.”).

  • Hardware:

    • hw-VidorCameraAdapter: This adapter allows to connect a OV2640 style camera to the Mini-PCIe connector of the Arduino MKR Vidor 4000.
    • TMF8801Breakout: This breakout board allows easy interfacing with the AMS TMF8801 ToF sensor for firmware development.
    • NavShieldBNO: This Arduino MKR family shield provides access to an BNO085 IMU as well as a BMP88 barometric pressure sensor.
    • CANFDMKRShield: This Arduino MKR family shield is built around the MCP2517 CAN transceiver which supports both regular CAN and CAN FD. It’s notable that this board posseses CAN connectors following the Dronecode standard connector therefore allowing easy integration with other sensors and actuators utilizing the Dronecode standard connector.
    • ElaraGNSSMKRShield: This Arduino MKR family shield provides an easy interface to the Würth Elara GNSS sensor. 107-Arduino-NMEA-Parser can be used to decode this GNSS location sensors messages and has in fact used extensively by @generationmake to do just that.
  • Forum: Thanks to @pavel.kirienko who generously allowed us to use a sub-category on this forum we can now have our discussions in a more open form (instead via E-mail) which should attract further contributors and/or users to our project.

Let me finish by again thanking all of you for your contributions,
I am looking forward to continue working with you in 2021,
Alexander Entinger