DroneCAN doesn't output servo messages

Hi,

I am using a Pixhawk 6C to run Arducopter V4.3.7. I was trying to use the CAN Bus, via DroneCAN, to control an actuator that runs on CAN 2.0B frame protocol and realized that the DroneCAN doesn’t output servo messages.

Configuration/steps to recreate:
CAN_D1_PROTOCOL=1
CAN_D1_UC_ESC_BM=0
CAN_D1_UC_ESC_OF=0
CAN_D1_UC_NODE=10
CAN_D1_UC_NTF_RT=1
CAN_D1_UC_OPTION=0
CAN_D1_UC_POOL=16384
CAN_D1_UC_SRV_BM=1
CAN_D1_UC_SRV_RT=50
CAN_D2_PROTOCOL=1
CAN_P1_BITRATE=1000000
CAN_P1_DRIVER=1
CAN_P2_DRIVER=0
CAN_SLCAN_CPORT=0
CAN_SLCAN_SERNUM=-1
CAN_SLCAN_TIMOUT=0
(Full parameter file attached)
Test.param (17.0 KB)

Shouldn’t I expect 50 servo messages per second given that CAN_D1_UC_SRV_BM=1 and CAN_D1_UC_SRV_RT=50? See screenshot below where I do not get servo messages.


Am I missing anything?

is the safety off? Check BRD_SAFETYENABLE or use control-F toggle safety

Safety was on.
BRD_SAFETYENABLE=1
BRD_SAFETY_MASK=0
BRD_SAFETYOPTION=3

I set the BRD_SAFETYENABLE to 0 and I am able to get servo messages.

I tried using PiccoloCAN in one of of the drivers but it doesn’t seems to output servo messages. I set BRD_SAFETYENABLE to 0.

I took a quick look at AP_PiccoloCAN, and it seems that it requires a servo to be present. Is there a param to temporarily disable this check? Any thoughts?

@tridge any thoughts?