Dear all,
I am curious about what determines the frequency of the bidirectional DShot feedback (ESC status). When I attempt direct motor control via ROS2 at a frequency of 500 Hz, I observe the following in the working queue, indicating that the DShot is running at 500 Hz:
Work Queue: 10 threads RATE INTERVAL
|__ 1) wq:rate_ctrl
| |__ 1) control_allocator 20.0 Hz 49996 us
| |__ 2) dshot 500.0 Hz 2000 us
| |__ 3) mc_rate_control 2003.1 Hz 499 us
| \__ 4) vehicle_angular_velocity 2003.1 Hz 499 us
|__ 2) wq:SPI1
...
I have increased the DDS frequency under the suggestion mentioned in this question
However, the frequency of esc_status is only ~45 Hz by ros2 topic hz /fmu/out/esc_status
.
average rate: 42.159
min: 0.015s max: 0.051s std dev: 0.01121s window: 43
average rate: 42.865
min: 0.014s max: 0.083s std dev: 0.01229s window: 87
average rate: 42.028
min: 0.014s max: 0.083s std dev: 0.01260s window: 128
average rate: 44.132
min: 0.009s max: 0.083s std dev: 0.01174s window: 179
average rate: 45.366
min: 0.009s max: 0.083s std dev: 0.01109s window: 230
average rate: 45.637
min: 0.009s max: 0.083s std dev: 0.01079s window: 278
average rate: 45.315
min: 0.009s max: 0.083s std dev: 0.01099s window: 323
I also noticed that when I decrease the Dshot frequency, the frequency of esc_status
decreases as well. Is there any correlation between the two?
Additionally, I’m wondering how I can increase the feedback frequency of the esc_status
.
Thank you all!