Large Number of UAVCAN Outputs

Is there any way to create a configuration for an arbitrarily large number of outputs over UAVCAN? I know that UAVCAN can support over 100 nodes. Suppose I would like to utilize all of them (or a considerably large number of them anyways). From what I have seen so far, all of the actuator_control topics only support a limited amount of actuators. Is there a good way to send outputs to a large number of nodes on UAVCAN?



For anyone interested, I was able to get up to 20 outputs on the CAN bus by changing the definition of the actuator_* messages to have larger arrays and slightly modifying the UAVCAN module. It was quite a hassle and not aomething that would get included into the PX4 master, but worked for me. Since the UAVCAN module assumes all outputs are ESCs, it sends the message which is limited to 20 values by the UAVCAN standard. You could get more, but you would have to set up the CAN module to send particular outputs using a different message (see the UAVCAN data type reference page), either built in or custom. Its kinda a hack, but it works.

1 Like

Sorry, but could you share your solution, please?) i have this problem too, but can`t resolve it.

1 Like

Depends on what you want to do. If you are happy with <=20 outputs, you can use the that is built in. You will probably have to change the definition of the actuator_output message and tweak the UAVCAN code a bit to make sure it grabs all of the commands. I can’t remember exactly what all I had to do to get it working. I am running all custom code, so I’m not sure how any of this interfaces with built in features such as mixers and the like.

If you need more than that, you may wan to look into using the message. I just duplicated whatever was being done to send the esc message and modified it to fit the definition of the actuator message.


Hope you are doing good. I am trying to integrate px4 with freeRTOS using uavcan. I have posted my query over here:

Can you please take a look into it? I could not proceed further. Any inputs would be highly helpful.

Thank you