AP_DDS: Support compile-time configurable rates for each publisher
Instead of hard-coded rates, allow devs to set the rates at compile time for their specific application. Rates are left the same as before, so this is reverse compatible.
FYI @tizianofiorenzani I thought you might like this.
@Ryanf55 Looks ok - backwards compatible.
Is the intention for the override to be set in a custom hdef.dat, or on the ./waf build line? Perhaps add an example usage to the README?
Either will work. I have a wiki I'm working on for compile time configuration and will add specifics there.
Here's my favorite way:
Add a HWDEF file in ardu_ws/src/ardupilot/dds_custom_rates.dat with contents:
AP_DDS_NAVSATFIX_PUB_ENABLED 0
Build
colcon build --packages-select ardupilot_sitl --cmake-args -DARDUPILOT_WAF_CONFIGURE_ARGS="--extra-hwdef=dds_custom_rates.dat" --event-handlers=console_direct+
Launch
source install/setup.bash
ros2 launch ardupilot_sitl sitl_dds_udp.launch.py
I also tried sim_vehicle.py
./Tools/autotest/sim_vehicle.py -v ArduPlane --console --enable-dds --waf-configure-arg="--extra-hwdef=dds_custom_rates.dat"
Sadly, none of these seem to affect the behavior. After talking to sid, he shared that the extra-hwdef is not used for SITL.
The way you can change any define (for SITL) when config is like so:
./waf configure --board sitl --define="AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS=5000" --enable-dds
Or with sim_vehicle.py
./Tools/autotest/sim_vehicle.py --configure-define="AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS=5000" --enable--dds
Or with colcon
colcon build --packages-select ardupilot_sitl --cmake-args -DARDUPILOT_WAF_CONFIGURE_ARGS="--define=AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS=5000" --event-handlers=console_direct+
WIKI is here: https://ardupilot.org/dev/docs/ros2-interfaces.html#configuring-interfaces-at-compile-time