v10.0
Breaking Changes
- adds new field to
ros_acomms_msgs/SoundSpeedProfile
:water_depth
. !130 (merged) - breaking changes in
tdma*
:-
TdmaStatus
message added fieldslot_duration_seconds
. !123 (merged) -
tdma slots can take a range for input. The data type is also upgraded from
int8
touint16
. Can now support up to 65535 slots. !129 (merged)-
TdmaStatus
,TdmaScriptedStatus
,TdmaSlottedAlohaStatus
and,TdmaAdvancedStatus
have been updated:-
int8 current_slot
now:uint16
-
int8 num_slots
now:uint16
(*)does not apply toTdmaStatus
which does not have this field)
-
-
-
TdmaAdvancedStatus
message 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_scripted
andtdma_slotted_aloha
since they usetdma_advanced
s' dynamic reconfigure method on top of their own). -
tdma_node
will 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_mute
feature (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_scripted
will 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_slots
changed field type from int8 to int8[]. -
nav_slots
is now a list type (int8[]) -
comms_slots
is now a list type (int8[]) -
time_to_next_active
in the context oftdma_slotted_aloha
it means time to next own slot or aloha slot (whichever is closest)
-
-
GetNextPacketData.srv
changedmin_priority
tominimum_priority
to match other calls. !123 (merged) -
GetNextPacketData.srv
andGetNextQueuedMessage.srv
,minimum_priority
is type:int8
. !123 (merged) - All instances of
minimum_priority
andpriority
fields are now typeint8
. !123 (merged)
-
- Breaking changes in
ros_acomms_modeling
:-
sim_transmission_loss
node: Renamedbellhop_arrivals
parameter touse_bellhop_for_latency
for 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-include
parser totdma_scripted
for test plan parsing. (!115 (merged)) - !115 (merged) now layering scripted dynamic reconfigure for controls related to cycling rates.
-
tdma_scripted_node
now supports sending arbitrary NMEA modem commands. !129 (merged)- Adds the optional key
modem_commands
to a test block entry and the modem commands in the list will be published tonmea_to_modem
before each transmit. Examples can be found inros_acomms_tests/launch/tdma_scripted_test_plan_modem_cmds.yaml
. -active_slots
,comms_slots
,nav_slots
and,aloha_slots
can be set with a range string (see notes) (!129 (merged))
- Adds the optional key
- New Node:
tdma_slotted_aloha
uses queue priority to gate traffic sent in thealoha_slots
. (see notes) (!123 (merged)) - New
DynamicReconfigure
parameters fortdma_scripted
(overlaid ontdma_advanced
DynamicReconfigure
) !123 (merged)-
scripted_test_plan_enabled
, default True ifscripted_test_plan
yaml is passed -
scripted_test_plan_file
, filename for test plan yaml
-
- New
DynamicReconfigure
parameters fortdma_slotted_aloha
(overlaid ontdma_advanced
DynamicReconfigure
) !123 (merged)aloha_slot_priority
-
aloha_slots_
, trailing '_' for this dynamic reconfigure param. This allows changing thealoha_slots
after launch. -
tdma_slotted_aloha
now 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_modeling
for simualation:- Add utility to read SSPs from CSV files and use them in
sim_transmission_loss_node.py
(!119 (merged)) -
sim_transmission_loss
sets depth in bellhop env on each ssp update when rosparam~use_water_depth_from_ssp
is set toTrue
(by default this isFalse
to 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.py
then publishes the truncated packet) -
sim_packet_performance.py
now populatesminiframe_success
inSimPacketPerformanceResponse
, 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_dispatch
handles 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_node
added more informative error messages. 477f2dd0 -
active_slots
was never allowed to be an empty list but, now the error is more clear and the condition is checked more explicitly. 477f2dd0- if
active_slots
was previously set, tdma will keep the prioractive_slots
rather 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_scripted
initialization fixes !122 (merged)-
#40 (closed)
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. -
#40 (closed)
tdma_scripted
sets 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_ID
instead oflatest
to avoid issues when running multiple CI pipelines in parallel (!120 (merged), !121 (merged))- e.g.,
ros_acomms-tests:latest
is nowros_acomms-tests:pipeline_$CI_PIPELINE_ID
- e.g.,
- Fixed a bug that caused the
acomms_driver_node
to hang and require SIGTERM when the ROS master is shutdown before theacomms_driver
node is able to get a$CCCFQ,SRC
reply 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
manual_transmit
:
Example for - user publishes to
$CCACM,1,1,1,CCCFG;pwramp.txlevel;0
to/modem0/tdma/nmea_to_modem
-
$CCACM,1,1,1,CCCFG;pwramp.txlevel;0
is now queued to transmit next - when
tdma_status.we_are_active
and ready to send a packet, we instead publish$CCACM,1,1,1,CCCFG;pwramp.txlevel;0
to/modem0/nmea_to_modem
which 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_slots
are slots that have a minimum priority and are typically shared with other platforms. -
aloha_slots
allow 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_priority
will be transmitted during thealoha_slots
-
tdma_slotted_aloha_node
has a new rosparam,allow_aloha_slots_only
. By default this isFalse
and should only be true in a special case (or for CI testing) 477f2dd0- when
allow_aloha_slots_only
is True, the user is allowed to have a tdma configuration with only aloha slots and no standard active slots. - when
allow_aloha_slots_only
is False, the user cannot configure tdma to only have aloha slots. It will raise an exception right away.
- when
sim_transmission_loss_node
Water depth handling in 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_ssp
parameter 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_ssp
isFalse
, the bellhop environment depth is left with the value at at launch with thewater_depth
parameter