Skip to content

acomms_driver_node and modem_sim_node can now send ROS msg traffic in FDP ping payloads

Caileigh Fitzgerald requested to merge dev/use_ping_payload into devel

Breaking Changes

  • updates to acomms_driver_node dynamic reconfigure which require rebuilding the package.
  • acomms_driver_node now sets starting state of xmit.txinhibit in modem_config since it historically set it on the first dynamic reconf. call
  • acomms_driver_node now sets starting state of pwramp.txlevel in modem_config since it historically set it on the first dynamic reconf. call.
  • acomms_driver_node: the value (if passed) in modem_config for pwramp.txlevel takes priority over the value (if passed) to pwramp_txlevel rosparam. The cached value (pwramp_txlevel) will match the modem_config: pwramp.txlevel and the parameter server is updated with both.

New Features / Improvements

  • added interface to acomms_driver_node to allow sending ROS msg traffic in FDP ping payloads. To use, set ~use_ping_payload to True. To set the payload size pass: ~ping_maximum_miniframe_bytes (default is 32, max).
  • acomms_driver_node now sets the parameter server with the ~modem_config (which we now cache) after updating and setting the values for tx_inhibit and pwramp_txlevel.
  • modem_sim_node now supports same interface as acomms_driver_node for using the ping_payload to transport ros msgs. (no dynamic reconf for modem sim though)
    • same rosparams used in the acomms_driver_node: ~use_ping_payload (default:false) ~ping_maximum_miniframe_bytes (default:32)
  • test_use_ping_payload.launch, working test launch for sim or hw
  • added test case for use_ping_payload to gitlab ci. Currently only running in sim and using tdma_advanced

Bugfixes

  • acomms_driver_node has major clean up/bug fixes for dynamic reconfigure.
    • added enums for pwramp_txlevel (volume) to clarify that 0 is max and 3 is quiet in rqt.
    • added toggle for using the ping payload and setting payload size via dynamic reconf
    • added flag to init so we can set the correct values for pwramp and inhibit on first dynamic reconfigure callback. Now we can define pwramp_txlevel as a ros param or in the modem_config dict. Either way, it will be set in both places. the modem_config value wins if they differ.
  • acomms_driver_node now passes all CACFG strings through a method that will update the config params (only pwramp and inhibit currently) so next call to dynamic reconfigure will set the latest values.
  • modem_sim_node bug fix: we weren't sending the payload from the request to the method that fills the sim_packet. Now we are plus, renamed internal callback args for more clarity

Notes:

  • Note, there is code in place to handle tracking pwramp_txlevel and txinhibit out of band of dynamic reconfigure, However; we need to publish an update to the dynamic reconfigure clients topic so rqt (or other front end that uses dynamic reconf) updates the value set on the modem to reflect in the UI. Since we don't have that in place yet (#44), this still mirrors the old behavior. Whenever a dynamic reconf request is recvd, it will set the value passed from the user on the modem even if that value has not change.
  • TODO: consider setting modem_config dict in dynamic reconf (this would probably require we watch for those params in handle_config_update, called in modem_nmea_handler whenever we come across a CACFG so modem_config stays up to date)?
Edited by Caileigh Fitzgerald

Merge request reports

Loading