v10.0.0
Breaking Changes
- adds new field to
ros_acomms_msgs/SoundSpeedProfile:water_depth!130 (merged) - breaking changes in
tdma*:-
TdmaStatusadded 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
-
-
-
!129 (merged)
TdmaAdvancedStatusnow has:-
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_scriptedburns it's 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 (which ever is closest)
-
-
GetNextPacketData.srvchangedmin_prioritytominimum_priorityto match other calls. !123 (merged) -
GetNextPacketData.srvandGetNextQueuedMessage.srv,minimum_priorityis type:int8. !123 (merged) - Setting all instances of
minimum_priorityandpriorityto type:int8. !123 (merged)
-
- breaking changes in modem sim system:
-
sim_transmission_lossnode: Renamedbellhop_arrivalsparameter touse_bellhop_for_latencyfor clarity. !125 (merged)
-
New Features / Improvements
- new features in
tdma*:- 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) -
!115 (merged) added
rospy-yaml-includeparser totdma_scriptedfor test plan parsing. - !115 (merged) now layering scripted dynamic reconfigure for controls related to cycling rates.
-
tdma_scripted_nodenow support modem commands. !129 (merged)- add 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 in
ros_acomms_tests/launch/tdma_scripted_test_plan_modem_cmds.yaml.
- add the optional key
-
!129 (merged)
active_slots,comms_slots,nav_slotsand,aloha_slotscan be set with a range string:- 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)
-
- valid range formats:
- New Node:
tdma_slotted_alohauses queue priority to gate traffic sent in thealoha_slots. !123 (merged)-
aloha_slot_prioritycondition:msg.priority >= aloha_slot_priority, msg can be transmitted duringaloha_slot. Otherwise this msg can only be transmitted in our own 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
-
- New
DynamicReconfigurefortdma_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
DynamicReconfigurefortdma_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)
-
test_tdma_extended.pytest cases added: !121 (merged) -
test_tdma_scripted.pycases added: !121 (merged) -
test_tdma_slotted_aloha.py!118 (merged)
- Added system in tdma super class (
- new features in modem sim system:
-
!119 (merged) Add utility to read SSPs from CSV files and use it in
sim_transmission_loss_node.py -
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). !130 (merged)- when
~use_water_depth_from_ssp:True- and
ssp_message.water_depth > 0,env['depth'] = float(ssp_message.water_depth) - else,
env['depth'] = float(ssp_message.depths[-1])
- and
- when
~use_water_depth_from_ssp:False, the bellhopenv['depth']is left with the value at at launch (self.water_depth)
- when
- 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)
-
!119 (merged) Add utility to read SSPs from CSV files and use it 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)
-
- !114 (merged) added hardware CI tests (using dual modem box)
Bugfixes
- !129 (merged) adding support for more slots means making all slot data types uniform uint16. I think I've hit them all..
- !129 (merged) fixed bug in aloha slots and nav slots overlap that I had not hit in the non-extreme test
-
!128 (merged)
sim_transmission_lossbug fix on depth. Positive depths are allowed and required. Previously the depth logic checking was reversed - !126 (merged) sim_packets that are part of a ping transaction get a shorter duration (0.5) compared to other packets
-
!125 (merged) Fixed bugs related to bounds checking on platform locations in
sim_transmission_loss -
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_slotted_aloha_nodeadded new rosparamallow_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 none of it's own. - when
allow_aloha_slots_onlyis False, the user cannot configure tdma to only have aloha slots. It will raise an exception right away.
- when
-
tdma_scripted!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)
- (duplicate of !120 (merged)) pipeline now uses tag:
pipeline_$CI_PIPELINE_IDinstead oflatest!121 (merged)- e.g.,
ros_acomms-tests:latestis nowros_acomms-tests:pipeline_$CI_PIPELINE_ID
- e.g.,
- tdma scripted will 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.
- tdma sets the parameters for the first transmit from the test plan rather than using values passed in launch for first TX
- 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)
-
!116 (merged) fixes bug that happened when ros master is shutdown before the
acomms_drivernode is able to get a$CCCFQ,SRCreply$CACFG,SRC,Xfrom the modem. Before this query was in awhile Trueloop. Now it's inwhile not rospy.is_shutdown()andconnected_to_modem = Falseto start and is onlyconnected_to_modem = Truewhen we got a reply and we break from the loop. After breaking out of this loop, we check ifconnected_to_modem. If we are, we proceed, Else,rospy.is_shutdown()isTrueso we print an error and return
Examples/Notes
Notes for manual_transmit:
- The
manual_transmit_queuesystem 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 thenmea_to_modemin 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.
Edited by Caileigh Fitzgerald