v10.0
Breaking Changes
- adds new field to
ros_acomms_msgs/SoundSpeedProfile:water_depth. !130 (merged) - breaking changes in
tdma*:-
TdmaStatusmessage added fieldslot_duration_seconds. !123 (merged) -
tdma slots can take a range for input. The data type is also upgraded from
int8touint16. Can now support up to 65535 slots. !129 (merged)-
TdmaStatus,TdmaScriptedStatus,TdmaSlottedAlohaStatusand,TdmaAdvancedStatushave been updated:-
int8 current_slotnow:uint16 -
int8 num_slotsnow:uint16(*)does not apply toTdmaStatuswhich does not have this field)
-
-
-
TdmaAdvancedStatusmessage has new fields: !129 (merged)-
string[] this_cycle_modem_commands: list of modem commands send this test cycle -
string[] last_cycle_modem_commands: list of modem commands sent last test cycle
-
- removed the unused dynamic reconfigure params from
tdma_advanced(also effectstdma_scriptedandtdma_slotted_alohasince they usetdma_advanceds' dynamic reconfigure method on top of their own). -
tdma_nodewill no longer run with a configuration that does not allow transmit because of padding and self imposed guard time. If intentional, this forces users to make use oftdma_advanced'ssoftware_mutefeature (this is the tested and maintained code path for software mute with TDMA). If unintentional, this draws attention to the configuration mistake immediately. !123 (merged) -
tdma_scriptedwill not transmit during its very first active slot after enabling a test plan (or when it is reloaded or changed with dynamic reconfigure). Burning the first slot means we can depend on the test plan order defined in the yaml file. !123 (merged) - changes to:
TdmaAdvancedStatus.msg,TdmaScriptedStatus.msg,TdmaSlottedAlohaStatus.msg. Switching from nested message types for super class, to a flat message type. e.g.,we_are_active, etc.. is now at the top level of these messages. Previously they were nested in the super classes type. !123 (merged)-
active_slotschanged field type from int8 to int8[]. -
nav_slotsis now a list type (int8[]) -
comms_slotsis now a list type (int8[]) -
time_to_next_activein the context oftdma_slotted_alohait means time to next own slot or aloha slot (whichever is closest)
-
-
GetNextPacketData.srvchangedmin_prioritytominimum_priorityto match other calls. !123 (merged) -
GetNextPacketData.srvandGetNextQueuedMessage.srv,minimum_priorityis type:int8. !123 (merged) - All instances of
minimum_priorityandpriorityfields are now typeint8. !123 (merged)
-
- Breaking changes in
ros_acomms_modeling:-
sim_transmission_lossnode: Renamedbellhop_arrivalsparameter touse_bellhop_for_latencyfor clarity. !125 (merged)
-
New Features / Improvements
-
tdma*MAC nodes:- Added system in tdma super class (
manual_transmit_queue) for sending modem NMEA messages manually to be queued by tdma and sent in active slot (in place of next packet) !117 (merged) - Added
rospy-yaml-includeparser totdma_scriptedfor test plan parsing. (!115 (merged)) - !115 (merged) now layering scripted dynamic reconfigure for controls related to cycling rates.
-
tdma_scripted_nodenow supports sending arbitrary NMEA modem commands. !129 (merged)- Adds the optional key
modem_commandsto a test block entry and the modem commands in the list will be published tonmea_to_modembefore each transmit. Examples can be found inros_acomms_tests/launch/tdma_scripted_test_plan_modem_cmds.yaml. -active_slots,comms_slots,nav_slotsand,aloha_slotscan be set with a range string (see notes) (!129 (merged))
- Adds the optional key
- New Node:
tdma_slotted_alohauses queue priority to gate traffic sent in thealoha_slots. (see notes) (!123 (merged)) - New
DynamicReconfigureparameters fortdma_scripted(overlaid ontdma_advancedDynamicReconfigure) !123 (merged)-
scripted_test_plan_enabled, default True ifscripted_test_planyaml is passed -
scripted_test_plan_file, filename for test plan yaml
-
- New
DynamicReconfigureparameters fortdma_slotted_aloha(overlaid ontdma_advancedDynamicReconfigure) !123 (merged)aloha_slot_priority-
aloha_slots_, trailing '_' for this dynamic reconfigure param. This allows changing thealoha_slotsafter launch. -
tdma_slotted_alohanow has~aloha_slots = []by default for test cases !121 (merged)
- New test cases added:
test_tdma_extended.py(!121 (merged)),test_tdma_scripted.py(cases added: (!121 (merged)),test_tdma_slotted_aloha.py(!118 (merged))
- Added system in tdma super class (
- new features in
ros_acomms_modelingfor simualation:- Add utility to read SSPs from CSV files and use them in
sim_transmission_loss_node.py(!119 (merged)) -
sim_transmission_losssets depth in bellhop env on each ssp update when rosparam~use_water_depth_from_sspis set toTrue(by default this isFalseto preserve the old behavior). (see notes) !130 (merged) - updates to modem sim system: !126 (merged)
- added XST to
modem_sim - more descriptive error messages, OWTT/latency and distance information
- Ping replies that have timed out will now publish ping_reply on topic even though it does not have a transaction for it anymore.
- added feature to handle partial packets (which can happen when
sim_packet_performance_node/fixed_frame_error_rate>0.0) - interpolates the frame_success masks to the size of the packet being processed, finds the first bad frame and clears the rest of the packet (like
acomms_driver_node.pythen publishes the truncated packet) -
sim_packet_performance.pynow populatesminiframe_successinSimPacketPerformanceResponse, currently hard coded to succeed (only the dataframe rate is being passed to this service call at the the moment)
- added XST to
- Bounds checking on platform locations in
sim_transmission_loss: !125 (merged)- Added bounds checking on location inputs and print errors.
- Automatically handle near-surface positions by clamping the minimum depth to 0.1m.
- Handle 0 horizontal distance between modems (same lat/lon for both modems)
- Add utility to read SSPs from CSV files and use them in
- new features in
packet_dispatch:-
packet_dispatchhandles empty packets and zero padded packets (only effects logging) !126 (merged) - Added error checking in codec config parser for multiple entries with the same ID. Logs an error message but doesn't change behavior otherwise !124 (merged)
-
- Added hardware CI tests (using dual modem box) !114 (merged)
Bugfixes
- sim_packets that are part of a ping transaction now get a shorter (and more realistic) 0.5s duration (!126 (merged))
-
tdma_node,tdma_slotted_aloha_nodeadded more informative error messages. 477f2dd0 -
active_slotswas never allowed to be an empty list but, now the error is more clear and the condition is checked more explicitly. 477f2dd0- if
active_slotswas previously set, tdma will keep the prioractive_slotsrather than raise an Exception (general M.O. only raise exc right away but once we have launched, do everything in our power to keep system up)
- if
-
tdma_scriptedinitialization fixes !122 (merged)-
#40 (closed)
tdma_scriptedwill burn it's very first active slot IF there is an active test plan. This assures the rates/buffer sizes are cycled according to the test plan from the very first packet in the slot. -
#40 (closed)
tdma_scriptedsets the parameters for the first transmit from the test plan rather than using values passed in launch for first TX - #40 (closed) when the test plan is toggled on from an off state (or it's re-read while running via dynamic reconf) the next active slot will be burned (in case the user toggled during an active slot. This keeps the code simple for handling this case and we won't activate a test plan mid slot)
-
#40 (closed)
- CI pipeline now uses tag:
pipeline_$CI_PIPELINE_IDinstead oflatestto avoid issues when running multiple CI pipelines in parallel (!120 (merged), !121 (merged))- e.g.,
ros_acomms-tests:latestis nowros_acomms-tests:pipeline_$CI_PIPELINE_ID
- e.g.,
- Fixed a bug that caused the
acomms_driver_nodeto hang and require SIGTERM when the ROS master is shutdown before theacomms_drivernode is able to get a$CCCFQ,SRCreply from the modem. (!116 (merged))
Notes and Examples
Manual transmit
See !117 (merged)
The manual_transmit_queue system is for sending nmea messages to the modem that make the modem transmit. There is only one topic logically compatible right now and it's the nmea_to_modem in the modem namespace tdma is currently servicing. In the future there may be other topics or ways of using this manual transmit system. For now, it's just a simple interface for nmea commands that you want to send in band with tdma
Example for manual_transmit:
- user publishes to
$CCACM,1,1,1,CCCFG;pwramp.txlevel;0to/modem0/tdma/nmea_to_modem -
$CCACM,1,1,1,CCCFG;pwramp.txlevel;0is now queued to transmit next - when
tdma_status.we_are_activeand ready to send a packet, we instead publish$CCACM,1,1,1,CCCFG;pwramp.txlevel;0to/modem0/nmea_to_modemwhich in this case will make the modem transmit this CCACM.
New TDMA slot range syntax
See !129 (merged)
active_slots, comms_slots, nav_slots and, aloha_slots can be set with a range string in this format:
- valid range formats:
start-slot-inclusive:end-slot-inclusive(:optional-step) - valid ranges/step values CANNOT be negative.
- valid range seperators:
":|;|-" - example range strings
-
"::"converts to:"0:{num_slots - 1}:1" -
":5:"converts to:"0:5:1" -
"90:5:2"converts to:"0:5:2,90:{num_slots - 1}:2"(wrap around case)
-
Slotted Aloha TDMA MAC
See !123 (merged)
The slotted aloha MAC adds an extra set of slots that are only used for messages above a specified priority. The name reflects the intended use, which is to have shared "high priority" slots that are used infrequently and may be assigned to multiple platforms.
If msg.priority >= aloha_slot_priority, the message can be transmitted during an aloha_slot. Otherwise this message can only be transmitted in our "normal" active slot.
-
aloha_slotsare slots that have a minimum priority and are typically shared with other platforms. -
aloha_slotsallow traffic with high enough priority to be sent during this "group" slot. The traffic can also be sent in the dedicated slot. But only traffic with priority >=aloha_slot_prioritywill be transmitted during thealoha_slots -
tdma_slotted_aloha_nodehas a new rosparam,allow_aloha_slots_only. By default this isFalseand should only be true in a special case (or for CI testing) 477f2dd0- when
allow_aloha_slots_onlyis True, the user is allowed to have a tdma configuration with only aloha slots and no standard active slots. - when
allow_aloha_slots_onlyis False, the user cannot configure tdma to only have aloha slots. It will raise an exception right away.
- when
Water depth handling in sim_transmission_loss_node
Water depth can now be set using a field in the SoundSpeedProfile message, but this behavior is controlled by the use_water_depth_from_ssp parameter:
- when
~use_water_depth_from_sspparameter isTrue:- if
ssp_message.water_depth > 0, the bellhop environment depth is set to thessp_message.water_depth. - if
ssp_message.water_depth <= 0, the bellhop environment depth is set to the depth of the deepest depth bin in the SSP array
- if
- when
use_water_depth_from_sspisFalse, the bellhop environment depth is left with the value at at launch with thewater_depthparameter