From 615c536b850e9417321c864d2dfeb33deb89a355 Mon Sep 17 00:00:00 2001 From: Ryan McKee Date: Thu, 13 Aug 2026 22:30:49 +0100 Subject: [PATCH 1/2] fixed hybrid automaton dependency version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 023789f..c2d7a94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ "Programming Language :: Python :: Implementation :: PyPy", ] dependencies = [ - "hybrid-automaton>=1.0.1", + "hybrid-automaton>=1.0.0", "shapely", ] From 7897ec483386a482297555469ce9149d04e95a73 Mon Sep 17 00:00:00 2001 From: Ryan McKee Date: Thu, 13 Aug 2026 22:52:59 +0100 Subject: [PATCH 2/2] added a transition from t2los to waypoint reached --- README.md | 8 ++++---- src/colav_automaton/__about__.py | 2 +- src/colav_automaton/automaton.py | 14 ++++++++++---- src/colav_automaton/dynamics/__init__.py | 2 +- src/colav_automaton/guards/__init__.py | 2 +- src/colav_automaton/invariants/__init__.py | 2 +- src/colav_automaton/resets/__init__.py | 2 +- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6ae6d9b..ae807f7 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ | Field | Value | |---------------|--------------| | Last Updated | 2026-08-13 | -| Version | 1.0.1 | +| Version | 1.0.2 | ## Overview @@ -16,7 +16,7 @@ This is not a full COLREGs rule-engine (it doesn't encode give-way/stand-on role logic for head-on, crossing, or overtaking encounters) - it's a general risk-envelope-avoidance automaton. Feed it any polygon as an unsafe region (a static hazard, a buffered obstacle, a COLREGs-derived exclusion zone computed upstream, etc.) and it will route around it. -**Framework Status**: v1.0.1 - Stable API, tested against real `hybrid-automaton>=1.0.1`, ready for simulation use and ROS2 integration testing on hardware. +**Framework Status**: v1.0.2 - Stable API, tested against real `hybrid-automaton>=1.0.1`, ready for simulation use and ROS2 integration testing on hardware. If you have ideas for improvement or want to contribute, please reach out and become a collaborator! @@ -107,7 +107,7 @@ A runnable version of this (with a few example scenarios) is in [`scripts/run_de ## Practical Use Cases -**Is this ready for real-world use?** As of v1.0.0 it's ready for simulation and ROS2 integration/hardware-in-the-loop testing - it hasn't yet been validated on a physical vessel. +**Is this ready for real-world use?** As of v1.0.2 it's ready for simulation and ROS2 integration/hardware-in-the-loop testing - it hasn't yet been validated on a physical vessel. ### Key Applications @@ -135,7 +135,7 @@ Please cite this package as described below if used in research: ```bibtex @misc{colav_automaton_2026, author = {Ryan McKee}, - title = {colav-automaton v1.0.1}, + title = {colav-automaton v1.0.2}, howpublished = {GitHub repository}, year = {2026}, note = {Accessed: Aug. 10, 2026}, diff --git a/src/colav_automaton/__about__.py b/src/colav_automaton/__about__.py index 5a30ec2..5575486 100644 --- a/src/colav_automaton/__about__.py +++ b/src/colav_automaton/__about__.py @@ -1,4 +1,4 @@ # SPDX-FileCopyrightText: 2025-present Ryan McKee # # SPDX-License-Identifier: MIT -__version__ = "1.0.1" +__version__ = "1.0.2" diff --git a/src/colav_automaton/automaton.py b/src/colav_automaton/automaton.py index f9bd50f..ceea780 100644 --- a/src/colav_automaton/automaton.py +++ b/src/colav_automaton/automaton.py @@ -100,7 +100,13 @@ def ColavAutomaton( guards=[unsafe_conditions_guard], priority=0 ) - q2.add_transitions([e5, e6]) + e7 = Transition( + name="e7", + to_state=q4, + guards=[waypoint_reached_guard], + priority=0 + ) + q2.add_transitions([e5, e6, e7]) # NOTE: transitions from FALLBACK (q3) - recover to Cruise once the # agent's safety radius no longer intersects the unsafe region. @@ -113,14 +119,14 @@ def ColavAutomaton( q3.add_transition(e8) # NOTE: from goal reached - e7 = Transition( - name="e7", + e9 = Transition( + name="e9", to_state=q1, guards=[virtual_waypoints_guard], reset=pop_virtual_waypoint, priority=0 ) - q4.add_transition(e7) + q4.add_transition(e9) ha = Automaton( diff --git a/src/colav_automaton/dynamics/__init__.py b/src/colav_automaton/dynamics/__init__.py index a97f3b5..3b64cbc 100644 --- a/src/colav_automaton/dynamics/__init__.py +++ b/src/colav_automaton/dynamics/__init__.py @@ -1,5 +1,5 @@ __author__ = "Ryan McKee " -__version__ = "1.0.1" +__version__ = "1.0.2" __description__ = "dynamics functions for the states of hybrid-automaton colav-automaton" from .dynamics import constant_heading_dynamics, flow_los_heading diff --git a/src/colav_automaton/guards/__init__.py b/src/colav_automaton/guards/__init__.py index 888dff2..58ca3ce 100644 --- a/src/colav_automaton/guards/__init__.py +++ b/src/colav_automaton/guards/__init__.py @@ -9,7 +9,7 @@ ) __author__ = "Ryan McKee " -__version__ = "1.0.1" +__version__ = "1.0.2" __description__ = "hybrid-automaton framework guards for colav-automaton" __all__ = [ diff --git a/src/colav_automaton/invariants/__init__.py b/src/colav_automaton/invariants/__init__.py index ea8af75..66cc1c1 100644 --- a/src/colav_automaton/invariants/__init__.py +++ b/src/colav_automaton/invariants/__init__.py @@ -1,7 +1,7 @@ from .invariants import failing_invariant __author__ = "Ryan McKee " -__version__ = "1.0.1" +__version__ = "1.0.2" __description__ = "hybrid-automaton framework invariants for colav-automaton" __all__ = [ diff --git a/src/colav_automaton/resets/__init__.py b/src/colav_automaton/resets/__init__.py index 08188ab..47aecba 100644 --- a/src/colav_automaton/resets/__init__.py +++ b/src/colav_automaton/resets/__init__.py @@ -7,7 +7,7 @@ ) __author__ = "Ryan McKee " -__version__ = "1.0.1" +__version__ = "1.0.2" __description__ = "resets for hybrid-automaton transitions that will takes all inputs and " \ "output update continous states (agent continous state scalers, auxielary continous" \ "states dictionary) these resets are specifically for colav-automaton"