Homepage GitHub

Nunavut compatibility for UAVCAN v0 and v1

We are creating a battery monitor system that we already have working with UAVCAN v1. However, since Ardupilot uses UAVCAN v0, we want to make it work with that as well. The trick is, they use C++ headers generated using a custom Python script, and we would rather use plain C headers. So, I could use their DSDL file for the data type they use and compile it using the latest Nunavut version, but I’m worried about compatibility. Has much changed in the serialization algorithm since then, and if I serialize a message with my Nunavut-generated headers, will it be able to decode it on the other side?

Unfortunately, this is not going to work.

The optimal course of action is to approach the ArduPilot maintainers (@jani.hirvinen @tridge) and inform them that the ecosystem is converging on the stable version of UAVCAN, which is v1, and there is demand in having v1 supported.

Manufacturers should be targeting the stable protocol - v0 - as it’s supported by both key flight stacks, and is proven.
v1 will see a lot of churn as it’s rolled out as it’s basically untested. Pushing vendors to it prematurely is irresponsible and will harm the ecosystem.

V0 was never called “stable” but “experimental” instead: UAVCAN
It is now legacy and deprecated.

I agree with @pavel.kirienko, new hardware should support the V1 and existing hardware should be updated to support V1 as much as possible.

1 Like