Homepage GitHub

KDECAN protocol from KDE Direct


(Pavel Kirienko) #1

KDE Direct have created their own CAN bus protocol designed specifically for their ESC. It is soon to be supported in ArduPilot.

I have skimmed through the description and the ArduPilot setup guide, here they are attached:

KDECAN_Bus_Protocol_1.0.0.pdf (973.4 KB)
KDECAN_Pixhawk_QuickStart.pdf (538.1 KB)

I was delighted to see that the auto-enumeration and the ID allocation feature have been borrowed from UAVCAN and Sapog (that means that those ideas are valuable), and that they have adopted a similar approach to CAN ID conflict resolution (except that the chosen method of ID randomization is still collision-prone, but they don’t seem to require high levels of determinism/predictability).

The fact that they rely exclusively on point-to-point addressable transfers seems to go against the core principles of the CAN bus, but that is unlikely to create any significant issues in such a narrow use case.

The license stated in the documents is rather weird as it seems to prohibit any third parties from re-implementing/supporting this protocol, which seems to kind of defeat the purpose. Perhaps there is more hidden reasoning I am not aware of.

The legal restrictions put on the protocol and the mere fact that it seems to re-create the functionality already available in UAVCAN v0 are disappointing, as that increases fragmentation of the ecosystem. I guess we should extract some learning experience from this, but I am not quite sure yet what it would be. Opinions welcome.