Skip to content
Tags give the ability to mark specific points in history as being important
  • v10.1.0 Release: v10.1.0
    New Features / Improvements
    ===========================
    - `tdma_node.py` manual_transmit feature can now take a list of modem commands (newline delimited string).  (!136)
      - when a message is published on `tdma/nmea_to_modem` and data looks like: `"$CCCFG,BND,0\n$CCCMD,RLS,2,1,0,0,\n"`, the manual transmit object will split the nmea sentences (on newlines) and publish each of them (allows users to send config commands ahead of a transmitting command)
    - Add a service to query SRC address from modem (or modem sim). (!133)
      - Use this in `message_queue_node` to get the modem SRC address if it isn't passed as a parameter.  (The SRC address may be used by packet codec plugins when encoding messages).
    - Adds `query_modem_param` service to `AcommsDriverNode` that queries uModem for any single config parameter or group of config parameters.  (!134, !135)
    
    Bugfixes
    ========
    - Fix a bug where missing SST values occasionally broke LinkLayerFeedback messaging (hotfix to 10.0.1 in !141, !132)
    - Fix conditions where packet codec is given more bits than it asked for (hotfix to 10.0.1 in !140, !139)
      - Add error handling when a dynamic queue returns more bits than we asked for, so it no longer breaks the packet codec
      - Improved logging.  
      - Fixed a bug in `link_layer_feedback_node.py` that returned messages larger than requested.
      - Fixed a (probably) harmless bug with a mutable default argument in `message_queue_node.py`
    - `get_remaining_time_to_slot()` now correctly handles case when `{slot}` passed is wrapped around the cycle from the `current_slot`. (!138)
    - CI testing: 
      - `test_tdma_extended.py` now `test_always_send_test_data_with_miniframes()` allows 1 packet (and it must be the first packet) to not fail the test if it's all zeros. (!137)
  • v10.0.1 Release: v10.0.1
    Bugfixes
    ========
    - Backport: Fix a bug where missing SST values occasionally broke LinkLayerFeedback messaging (!141, !132)
    - Backport: Fix conditions where packet codec is given more bits than it asked for (!140, !139)
      - Add error handling when a dynamic queue returns more bits than we asked for, so it no longer breaks the packet codec
      - Improved logging.  
      - Fixed a bug in `link_layer_feedback_node.py` that returned messages larger than requested.
      - Fixed a (probably) harmless bug with a mutable default argument in `message_queue_node.py`
  • v10.0.0 Release: v10.0.0
    Breaking Changes
    ================
    - adds new field to `ros_acomms_msgs/SoundSpeedProfile`: `water_depth`. !130
    - breaking changes in `tdma*`:
      - `TdmaStatus` message added field `slot_duration_seconds`. !123
      - __tdma__ slots can take a range for input. The data type is also upgraded from `int8` to `uint16`. Can now support up to __65535__ slots. !129
        - `TdmaStatus`, `TdmaScriptedStatus`, `TdmaSlottedAlohaStatus` and, `TdmaAdvancedStatus` have been updated:
          - `int8 current_slot` now: `uint16`
          - `int8 num_slots` now: `uint16` (*)does not apply to `TdmaStatus` which does not have this field)
      - `TdmaAdvancedStatus` message has new fields: !129 
        - `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 effects `tdma_scripted` and `tdma_slotted_aloha` since they use `tdma_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 of `tdma_advanced`'s `software_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
      - `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
      - 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
        - `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 of `tdma_slotted_aloha` it means time to next own slot or aloha slot (whichever is closest)
      - `GetNextPacketData.srv` changed `min_priority` to `minimum_priority` to match other calls. !123
      - `GetNextPacketData.srv` and `GetNextQueuedMessage.srv`, `minimum_priority` is type: `int8`. !123
      - All instances of `minimum_priority` and `priority` fields are now type `int8`. !123
    - Breaking changes in `ros_acomms_modeling`:
      - `sim_transmission_loss` node: Renamed `bellhop_arrivals` parameter to `use_bellhop_for_latency` for clarity. !125
    
    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
      - Added `rospy-yaml-include` parser to `tdma_scripted` for test plan parsing. (!115)
      - !115 now layering scripted dynamic reconfigure for controls related to cycling rates.
      - `tdma_scripted_node` now supports sending arbitrary NMEA modem commands. !129
        - Adds the optional key `modem_commands` to a test block entry and the modem commands in the list will be published to `nmea_to_modem` before each transmit. Examples can be found in `ros_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)
      - New Node: `tdma_slotted_aloha` uses queue priority to gate traffic sent in the `aloha_slots`.  (see notes) (!123)
      - New `DynamicReconfigure` parameters for `tdma_scripted` (overlaid on `tdma_advanced` `DynamicReconfigure`) !123
        - `scripted_test_plan_enabled`, default True if `scripted_test_plan` yaml is passed
        - `scripted_test_plan_file`, filename for test plan yaml
      - New `DynamicReconfigure` parameters for `tdma_slotted_aloha` (overlaid on `tdma_advanced` `DynamicReconfigure`) !123
        - `aloha_slot_priority`
        - `aloha_slots_`, trailing '\_' for this dynamic reconfigure param. This allows changing the `aloha_slots` after launch.
        - `tdma_slotted_aloha` now has `~aloha_slots = []` by default for test cases !121
      - New test cases added: `test_tdma_extended.py` (!121),  `test_tdma_scripted.py` (cases added: (!121), `test_tdma_slotted_aloha.py` (!118)
    - 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)
      - `sim_transmission_loss` sets depth in bellhop env on each ssp update when rosparam `~use_water_depth_from_ssp` is set to `True` (by default this is `False` to preserve the old behavior). (see notes) !130
      - updates to modem sim system: !126
        - 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 populates `miniframe_success` in `SimPacketPerformanceResponse`, currently hard coded to succeed (only the dataframe rate is being passed to this service call at the the moment)
      - Bounds checking on platform locations in `sim_transmission_loss`: !125
        - 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)
    - new features in `packet_dispatch`:
      - `packet_dispatch` handles empty packets and zero padded packets (only effects logging) !126
      - 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 
    - Added hardware CI tests (using dual modem box) !114
    
    Bugfixes
    ========
    - sim_packets that are part of a ping transaction now get a shorter (and more realistic) 0.5s duration (!126)
    - `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 prior `active_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)
    - `tdma_scripted` initialization fixes !122
      - #40 `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 `tdma_scripted` sets the parameters for the first transmit from the test plan rather than using values passed in launch for first TX
      - #40 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)
    - CI pipeline now uses tag: `pipeline_$CI_PIPELINE_ID` instead of `latest` to avoid issues when running multiple CI pipelines in parallel (!120, !121)
      - e.g., `ros_acomms-tests:latest` is now `ros_acomms-tests:pipeline_$CI_PIPELINE_ID`
    - Fixed a bug that caused the `acomms_driver_node` to hang and require SIGTERM when the ROS master is shutdown before the `acomms_driver` node is able to get a `$CCCFQ,SRC` reply from the modem. (!116)
  • v10.0.0-rc.1
    ssp water_depth, added support for setting tdma slots by range, added modem commands to tdma scripted, bug fixes to tdma, tdma status updates, new ci tests and some in progress
  • v10.0.0-rc.0 Release: v10.0.0-rc.0
    v10.0.0-rc.0: `tdma` slotted aloha, manual tx, new CI; `modem_sim` new: partial packets, bug fix in ping, `acomms_driver_node` bug fixes
  • v9.2.0 Release: v9.2.0
    New Features / Improvements
    ===========================
    - Add LinkLayerFeedback node that can batch CST (packet receive) and SST (noise) stats and transmit them to allow for feedback control. (!111)
      - Add `LinkStatsFeedback` message
      - Add unit test to CI
    - Publish SST messages from modem sim (!111)
    - Publish CST messages separate from `ReceivedPacket` messages in modem sim for received packets (!111)
    - Improved CST parameter simulation (!111)
    - Added documentation to `SST` message fields. (!111)
    - Improved documentation of `CST` message fields. (!111)
    - Add `packet_rx_topic` parameter to `modem_sim_node` to specify an alternate topic for `ReceivedPacket` messages. (!112)
  • v9.1.0 Release: v9.1.0
    New Features / Improvements
    ===========================
    - Added a field to the `QueueParams` class that includes the full parameter dictionary from the codec yaml file.  This allows other programs (like `ros_acomms_net`) to add arbitrary entries to the queue config dictionary.
    - Add support for publishing battery state from modem `CCBAT` queries
  • v9.0.1 Release: v9.0.1
    Bugfixes
    ========
    - Fix exception handling when setting fields on ROS messages inside `ros_packet_codec.py`
  • v9.0.0 Release: v9.0.0
  • v9.0.0-rc.0 Release: v9.0.0-rc.0
  • v9.0.0-beta.2 Release: v9.0.0-beta.2
  • v9.0.0-beta.1 Release: v9.0.0-beta.1
  • v9.0.0-beta.0 Release: v9.0.0-beta.0
  • v8.0.1 Release: v8.0.1
    Bugfixes
    --------
    - Fixed warning message when node_status package isn't available.  It previously printed the warning when the package was available. (ae68e564)
    - Fixed an off-by-one bug in the ROS packet codec that caused issues when sending packets that were exactly full. (6af054b8)
    - The dynamic queue query call could return invalid cached results, because the query parameters weren't checked against the cached result. This is fixed. (!85)
  • v8.0.0 Release: v8.0.0
    Breaking changes
    ----------------
    - Moved the `clock_generator` node from `ros_acomms_tests` to `ros_acomms_modeling` (!62)
    - Removed `GetPlatformLocation` service and associated functionality from modem simulator node.
    - Removed `platform_location_node.py` (!66)
    - Added `whoi-uwapm` dependency (which incorporates `bellhopcxx`) (#34)
    - Update minimum `acomms` (`pyacomms`) version to 2.4 to support modem nav messages in a future release (#35)
    - Require `rospy_yaml_include` (removed dependence on `pyyaml_include`) (!73)
    
    New Features
    ------------
    - The modem simulator can now accept location via any message that includes `latitude`, `longitude`, and `depth` fields. (!66)
    - Added message-based modem location sim that publishes a random position at specified intervals. (!66)
    - Use `bellhopcxx` rather than `bellhop` for ray tracing. (#34, !72)
    - Cleaned up some log messages, improved output, and removed fixed loglevel for `message_queue_node` (!67)
    - Made modem transmit loop run at 5Hz instead of 1Hz (!68)
    - Added dedicated travel time simulation to avoid unnecessary calls to bellhop (!71)
      - Adds `SimTravelTime` service on the `SimTransmissionLossNode` along with a geometric travel time simulator.  Uses geometric simulator by default to speed up simulation.
    - Removed dependency on acoustic toolbox / bellhop (#34)
      - Removed `setup.bash` (which was used to install the acoustic toolbox and build bellhop)
      - Removed runtime check for `bellhop.exe`
    - Removed dependencies: `arlpy`, 'scipy', and `pandas` (#34)
    - Remove dependency version pinning for `numpy` and `geopy` (#34)
    - Updated installation instructions (#34)
    - Allow setting fields on nested messages with `set_fields` in `ros_packet_codec` (!81)
    - Add packet codec plugins (!79):
      - Added the ability to load custom packet codecs. The paths to search are specified by the `custom_packet_codec_paths` rosparam (in the namespace of the packet dispatch/message queue nodes).  Custom packets codec files must end with `_packet_codec.py` and contain a class called `PacketCodec` that inherits from `BasePacketCodec` (or a derived class).
    - Via `rospy_yaml_include`, support rosparam and environment variable substitutions and include paths in codec config files. (!73)
    - Improved CI:
      - Updated CI to add parameters to control simulation speed (!62)
      - Updated CI to upgrade python packages when installing from `requirements.txt` (!62)
      - Added unit tests for dynamic queues (!65)
      - Added multistage pipeline trigger: downstream pipeline for `ros_acomms_net` and `ros_acomms_net_tools` (!69)
    
    Bugfixes
    --------
    - Repaired CI (to accommodate external changes) (!64)
    - Fixed a path in `.gitignore`
  • v7.1.0 Release: v7.1.0
    Backported features:  Allow setting fields on nested messages with set_fields in ros_packet_codec
  • v7.0.0 Release: v7.0.0
    Breaking changes
    ----------------
    - Most non-simulation-related messages have been moved to the new `ros_acomms_msgs` package (!50)
    - Removed the following and moved them to the `ros_acomms_uuv` project (!50):
      - `legacy_translator_node.py`
      - `ssp_node.py`
      - `xducer_safety_power_control.py`
    - Removed messages that had already been moved to the `ros_iridium` package (and should have been removed at that time) (!50):
      - `IridiumPacket.msg`
    - Removed `sourcePublisher` topic on `acomms_driver_node` and removed `Source.msg` message (!50)
    - Moved example launch files to new `ros_acomms_examples` package (!50)
    - Moved simulation components into new `ros_acomms_modeling` project (!50):
      - `modem_sim_node.py`
      - Messages: `Tick`, `Tock`, `SimPacket`, `Location` (see also !60)
    - Moved test code to new `ros_acomms_tests` package (!50)
    - `ltcodecs` v1.0.0 or higher is required (!59)
    - Removed `TxInhibit` and `WriteNmeaString` services (which were previously marked as deprecated) (!51)
    
    New Features
    ------------
    - Improved message queue performance and reliability (!55)
    - Improved queue status message (!52)
    - Source code cleanup (!50)
    - Added a bunch of stuff to `.gitignore` (!50)
    - Support `catkin build` (!54)
    - Added handling for message encoding exceptions (!59)
    - Added faster-than-realtime simulation capability for CI (!58)
    - Improved CI (!56)
    
    Bugfixes
    --------
    - Added missing requirements to `requirements.txt`: `crccheck`, `bitstring`, `msgpack` (!50)
    - Fixed pinned versions for packages in `requirements.txt` so `arlpy` works (!53)
    - Fixed some bugs in modem sim location handling (!60)
    - Fixed race condition in modem sim due to `acoustic_channel` subscriber being initialized too early. (!60)
    - Fixed several codec config parsing bugs (!57)
    - Correctly handle codec defaults for destination and priority (#33)
    
    Deprecation
    -----------
    - Marked `packet_codecs` rosparam as deprecated (!57).  It will be removed in a future release.  (This used the rosparam loader to load codec files  This doesn't handle includes, and it has all sorts of weird bugs, like not being able to handle uint64 literals due to a bug in the xml parser library used by roslaunch.)
  • v2023_06_25_SNAPSHOT_nugget
    This is the ros_acomms submodule currently on nugget. There were a few additons not in source control that have been added and included in this tag. This is a working snapshot of the ros_acomms submodule on nugget (IGBL).
  • v6.1.1 Release: v6.1.1
    ### Bugfixes:
    - Changed optional `ros_groundtruth` import in `modem_sim_node` to `groudtruth` because external package name changed.
  • v6.1.0 Release: v6.1.0
    ### New Features:
    - Rate and frame size settings in the TdmaMacNode are not handled using getters/setters.
    - Added `TdmaTestMacNode` (`tdma_test_mac_node.py)`: inherits from TdmaMacNode and adds the ability to cycle settings for miniframe and dataframe rates and sizes as well as packet duration. Packet duration is user-specified, with reasonable defaults based on 5kHz bandwidth FDP packets.  It publishes a new status message (`TdmaTestMacStatus`) that includes information on the rates and sizes being used, along with packet duration.
    
    ### Bugfixes:
    - Miniframe rate setting is now respected in TDMA MAC nodes
    - Invalid user settings for `bytes_per_[data|mini]frame` are now clamped to the maximum value, and a warning is logged.