Homepage GitHub

ESC support in UAVCAN v1

Hi,
I have some questions about supporting an ESC with UAVCAN v1.

This document is a good starting point:

There are no regulated data types specific to ESCs.
How to send commands to the ESC?
Commands would be setpoints like: speed, torque, duty etc…
Configuration parameters are also required to set maximum speed, current, acceleration, etc…

Are there types defined somewhere else, or do they need to be defined for ESCs? In which case I’d be happy to help.
Thanks

The document you referenced is the ESC network service specification you are looking for. It is not yet stable (it’s v0.1 at the moment), but it is complete and there is a chance that it will make it to v1.0 with no substantial changes.

The document has a diagram that is intended to explain how to implement and use the service:

#                                                   SUBJECT
#                                                   NAME        SUBJECT TYPE                                SUBJECT-ID
#  +----------------+
#  |   Controller   |---------+------------+----... setpoint    reg.drone.service.actuator.common.sp.*      S
#  |                |-------+-)----------+-)----... readiness   reg.drone.service.common.Readiness          S+1
#  +----------------+       | |          | |
#   ^ ^ ^ ^  ^ ^ ^ ^        v v          v v
#   | | | |  | | | |   +---------+  +---------+
#   | | | |  | | | |   |Drive i=0|  |Drive i=1| ...
#   | | | |  | | | |   +---------+  +---------+
#   | | | |  | | | |     | | | |      | | | |
#   | | | |  | | | +-----+ | | |      | | | |       feedback    reg.drone.service.actuator.common.Feedback   S+(i+1)*5+1
#   | | | |  | | +---------+ | |      | | | |       status      reg.drone.service.actuator.common.Status     S+(i+1)*5+2
#   | | | |  | +-------------+ |      | | | |       power       reg.drone.physics.electricity.PowerTs        S+(i+1)*5+3
#   | | | |  +-----------------+      | | | |       dynamics    reg.drone.physics.dynamics.rotation.PlanarTs S+(i+1)*5+4
#   | | | |                           | | | |
#   | | | +---------------------------+ | | |
#   | | +-------------------------------+ | |
#   | +-----------------------------------+ |
#   +---------------------------------------+

For example, if you need to publish a setpoint for a group of six ESC, you publish a message of type reg.drone.service.actuator.common.sp.Vector6.0.1; if you want RPM and such, you subscribe to six subjects (one per ESC) of type reg.drone.physics.dynamics.rotation.PlanarTs.0.1; and so on.

It is also possible to apply constraints on acceleration, speed, and torque, but for that, you will need to also support the Servo service (it is very similar to ESC).

Configuration parameters are currently not regulated by DS-015 (neither they were in v0), but this may change at some point in the future if there is interest.