Message 'DroneController.Messages.Command' is too late

Hi,

I’m trying to code semi-custom guidance mode using TrajectoryFcamMode.

I created a new class that herit from guidance::TrajectoryFcamMode.

I overrided beginStep() to get telemetry data, generateDroneReference() to generate target trajectory, and generateFcamAttitudeReference to generate target attitude.

Unfortunately, the drone don’t move and ULOG messages are full of

01-01 01:02:17.310 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2993)
01-01 01:02:17.310 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2993)
01-01 01:02:17.310 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2993)
01-01 01:02:17.335 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2998)
01-01 01:02:17.335 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2998)
01-01 01:02:17.335 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (2998)
01-01 01:02:17.370 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3005)
01-01 01:02:17.370 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3005)
01-01 01:02:17.370 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3005)
01-01 01:02:17.405 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3012)
01-01 01:02:17.405 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3012)
01-01 01:02:17.405 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3012)
01-01 01:02:17.435 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3018)
01-01 01:02:17.435 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3018)
01-01 01:02:17.435 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3018)
01-01 01:02:17.470 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3025)
01-01 01:02:17.470 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3025)
01-01 01:02:17.470 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3025)
01-01 01:02:17.505 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3032)
01-01 01:02:17.505 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3032)
01-01 01:02:17.505 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3032)
01-01 01:02:17.535 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3038)
01-01 01:02:17.535 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3038)
01-01 01:02:17.535 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3038)
01-01 01:02:17.570 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3045)
01-01 01:02:17.570 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3045)
01-01 01:02:17.570 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3045)
01-01 01:02:17.600 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3051)
01-01 01:02:17.600 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3051)
01-01 01:02:17.600 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3051)
01-01 01:02:17.620 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3055)
01-01 01:02:17.620 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3055)
01-01 01:02:17.620 W dronectrl   (drone-controlle-114)            : Message 'DroneController.Messages.Command' is too late: 2184 (3055)

Any idea ? I may don’t use guidance::TrajectoryFcamMode the right way as I don’t have any example.

Thank you for your help,
Best,
Clément

Hi,

From what I can see, the ticks of the messages (e.g. 2184) are in the past, compared to the ticks currently processed by drone controller (e.g. 3005). But moreover, it is always the same tick number, so I guess the first message is received correctly but then the next messages reuse the same tick.

What happens in Guidance is that when sending a message to Drone Controller, if the tick is not equal to zero in the message, it is not updated to the current tick. One possible reason for the tick to never be reset is because the bitmask returned by your getTriggers does not set TRIGGER_TICK.

You mentioned having problems with getTriggers in another question, please check if that helps.

If not, it could be useful to have a minimal working example that demonstrates the problem, I can try to reproduce the errors if you still have problems.

This topic was automatically closed after 30 days. New replies are no longer allowed.