Jonathan Ung activity https://gitlab.com/jonathan.keith.ung 2026-03-12T22:49:02Z tag:gitlab.com,2026-03-12:5199056866 Jonathan Ung commented on merge request !725 at SFU Robot Soccer / software 2026-03-12T22:49:02Z jonathan.keith.ung Jonathan Ung

your code still has build issues btw

tag:gitlab.com,2026-03-12:5198985046 Jonathan Ung commented on merge request !725 at SFU Robot Soccer / software 2026-03-12T22:15:18Z jonathan.keith.ung Jonathan Ung

"manual" is a stringly-typed key with no compile-time safety. A typo here silently compiles and fails at runtime. Consider introducing a FeatureFlag enum with a toConfigKey() mapping, then overloading isFeatureEnabled(FeatureFlag) to delegate to the string version. Usage becomes isFeatureEnabled(FeatureFlag::Manual), which is typo-safe, autocomplete-friendly, and grep-reliable. The string overload can stay for config file parsing.

ie:

// FeatureFlag.h
enum class FeatureFlag {
    Manual,
    AutoReplay,
    DebugOverlay,
    // Add new flags here. Compiler enforces the switch stays in sync.
};

[[nodiscard]] constexpr std::string_view toConfigKey(FeatureFlag flag) {
    switch (flag) {
        case FeatureFlag::Manual:       return "manual";
        case FeatureFlag::AutoReplay:   return "auto_replay";
        case FeatureFlag::DebugOverlay: return "debug_overlay";
    }
    // Unreachable, but suppresses warnings on some compilers
    return "";
}
tag:gitlab.com,2026-03-12:5198983448 Jonathan Ung commented on merge request !725 at SFU Robot Soccer / software 2026-03-12T22:14:31Z jonathan.keith.ung Jonathan Ung

typo: isFeatureEnable should be isFeatureEnabled

tag:gitlab.com,2026-03-08:5179644630 Jonathan Ung approved merge request !716: Pathplanning agentcontrol majorchanges at SFU Robot Soccer / software 2026-03-08T18:04:46Z jonathan.keith.ung Jonathan Ung

A lot of changes made using Claude, have potentially solved any collision problems and have integrated RVO controlled velocity with the Agent. I have attached the changes md file in the PR.Calude_Changes.md

tag:gitlab.com,2026-03-08:5179630089 Jonathan Ung opened issue #895: [BT/QML] Init panel for the BT Debugger in QML at SFU Robot Soccer / software 2026-03-08T17:52:37Z jonathan.keith.ung Jonathan Ung tag:gitlab.com,2026-03-08:5179614718 Jonathan Ung deleted project branch 892-jimmyvu-behaviortree-making-navigateto-more-dynamic at SFU Robot Soccer / software 2026-03-08T17:40:15Z jonathan.keith.ung Jonathan Ung

Jonathan Ung (b3ebbb0c) at 08 Mar 17:40

tag:gitlab.com,2026-03-08:5179614709 Jonathan Ung pushed to project branch develop at SFU Robot Soccer / software 2026-03-08T17:40:14Z jonathan.keith.ung Jonathan Ung

Jonathan Ung (4beedb2e) at 08 Mar 17:40

[!718: 892-jimmyvu-behaviortree-making-navigateto-mor...

... and 1 more commit

tag:gitlab.com,2026-03-08:5179614706 Jonathan Ung closed issue #892: [BehaviorTree] making navigateTo more dynamic at SFU Robot Soccer / software 2026-03-08T17:40:14Z jonathan.keith.ung Jonathan Ung

Feature Request

Summary

Acceptance Criteria

  • Criterion

Design / Technical Approach

Dependencies

Testing Plan

  • Write unit tests for feat
tag:gitlab.com,2026-03-08:5179614693 Jonathan Ung accepted merge request !718: #892 [BehaviorTree] improvement to make navigateto more dynamic at SFU Robot Soccer / software 2026-03-08T17:40:13Z jonathan.keith.ung Jonathan Ung

Merge Request Template

Summary

Added dynamic path re-request functionality to the navigation system with two new DSL v2 utility nodes that allow robots to adaptively request new paths when their navigation target moves significantly during movement.

Changes Made

New Utility Nodes (DSL v2)

  1. SetPrevNavigationTarget (src/agent/bt/nodesV2/utils/SetPrevNavigationTarget.h)

    • Simple utility node that stores the current navigation target coordinates (nav_to_x, nav_to_y) as previous coordinates (prev_x, prev_y)
    • Used to initialize or update the tracked previous target position
    • Includes logging for debugging
  2. RequestPathIfTargetMoved (src/agent/bt/nodesV2/utils/RequestPathIfTargetMoved.h)

    • Checks if the navigation target has moved beyond a configurable threshold distance from the previous target
    • Uses distance formula: √(dx² + dy²)
    • If distance ≥ threshold: emits pathTo() signal and updates previous coordinates
    • If distance < threshold: no action, keeps previous coordinates
    • Returns SUCCESS immediately (non-stateful)
    • Includes comprehensive logging showing distances, thresholds, and decisions

Registration and Integration

  • Added SetPrevNavigationTarget and RequestPathIfTargetMoved to NodeId enum in src/agent/bt/nodesV2/dsl/NodeId.h
  • Added prev_x and prev_y ports to PortId enum in src/agent/bt/nodesV2/dsl/PortId.h
  • Added includes to BehaviorTreeManager.cpp to trigger auto-registration

Usage Pattern

These nodes enable a ReactiveSequence pattern for adaptive navigation:

ReactiveSequence()
    .child(Node(N::RequestPathIfTargetMoved)
        .port(P::robot_id, port(P::robot_id))
        .port(P::prev_x, var(P::prev_x))
        .port(P::prev_y, var(P::prev_y))
        .port(P::nav_to_x, port(P::nav_to_x))
        .port(P::nav_to_y, port(P::nav_to_y))
        .port(P::threshold, lit("50.0")))
    .child(Node(N::FollowPathSmooth)
        ...)

Testing

  • Created tests
  • Updated tests
  • Tested in simulation (integration tests)
  • Tested in real robot (if applicable)
  • No tests (reason):

Screenshots/Videos

Before:

After:

Changes

Blast Radius

Checklist

  • All relevant unit tests are passing
  • Documentation updated (if applicable)
  • No debug logs or commented-out code

Reviewer Notes

Closes #892

tag:gitlab.com,2026-03-08:5179614393 Jonathan Ung pushed to project branch 892-jimmyvu-behaviortree-making-navigateto-more-dynamic at SFU Robot Soccer / software 2026-03-08T17:39:57Z jonathan.keith.ung Jonathan Ung

Jonathan Ung (b3ebbb0c) at 08 Mar 17:39

improvement to make navigateto more dynamic

... and 9 more commits

tag:gitlab.com,2026-03-08:5179607771 Jonathan Ung approved merge request !718: #892 [BehaviorTree] improvement to make navigateto more dynamic at SFU Robot Soccer / software 2026-03-08T17:35:12Z jonathan.keith.ung Jonathan Ung

Merge Request Template

Summary

Added dynamic path re-request functionality to the navigation system with two new DSL v2 utility nodes that allow robots to adaptively request new paths when their navigation target moves significantly during movement.

Changes Made

New Utility Nodes (DSL v2)

  1. SetPrevNavigationTarget (src/agent/bt/nodesV2/utils/SetPrevNavigationTarget.h)

    • Simple utility node that stores the current navigation target coordinates (nav_to_x, nav_to_y) as previous coordinates (prev_x, prev_y)
    • Used to initialize or update the tracked previous target position
    • Includes logging for debugging
  2. RequestPathIfTargetMoved (src/agent/bt/nodesV2/utils/RequestPathIfTargetMoved.h)

    • Checks if the navigation target has moved beyond a configurable threshold distance from the previous target
    • Uses distance formula: √(dx² + dy²)
    • If distance ≥ threshold: emits pathTo() signal and updates previous coordinates
    • If distance < threshold: no action, keeps previous coordinates
    • Returns SUCCESS immediately (non-stateful)
    • Includes comprehensive logging showing distances, thresholds, and decisions

Registration and Integration

  • Added SetPrevNavigationTarget and RequestPathIfTargetMoved to NodeId enum in src/agent/bt/nodesV2/dsl/NodeId.h
  • Added prev_x and prev_y ports to PortId enum in src/agent/bt/nodesV2/dsl/PortId.h
  • Added includes to BehaviorTreeManager.cpp to trigger auto-registration

Usage Pattern

These nodes enable a ReactiveSequence pattern for adaptive navigation:

ReactiveSequence()
    .child(Node(N::RequestPathIfTargetMoved)
        .port(P::robot_id, port(P::robot_id))
        .port(P::prev_x, var(P::prev_x))
        .port(P::prev_y, var(P::prev_y))
        .port(P::nav_to_x, port(P::nav_to_x))
        .port(P::nav_to_y, port(P::nav_to_y))
        .port(P::threshold, lit("50.0")))
    .child(Node(N::FollowPathSmooth)
        ...)

Testing

  • Created tests
  • Updated tests
  • Tested in simulation (integration tests)
  • Tested in real robot (if applicable)
  • No tests (reason):

Screenshots/Videos

Before:

After:

Changes

Blast Radius

Checklist

  • All relevant unit tests are passing
  • Documentation updated (if applicable)
  • No debug logs or commented-out code

Reviewer Notes

Closes #892

tag:gitlab.com,2026-03-07:5178586471 Jonathan Ung approved merge request !713: [Integration] Finished Memory Leak Stage at SFU Robot Soccer / software 2026-03-07T22:37:56Z jonathan.keith.ung Jonathan Ung
tag:gitlab.com,2026-03-07:5178586410 Jonathan Ung commented on merge request !713 at SFU Robot Soccer / software 2026-03-07T22:37:50Z jonathan.keith.ung Jonathan Ung

nit: remove the unit testing stage altogether since it just runs as part of the memory check anyway

tag:gitlab.com,2026-03-07:5178585951 Jonathan Ung pushed to project branch 873-memoryLeakFixedV2-RavdeepA at SFU Robot Soccer / software 2026-03-07T22:36:58Z jonathan.keith.ung Jonathan Ung

Jonathan Ung (36b07fbd) at 07 Mar 22:36

updated paths for tests

... and 12 more commits

tag:gitlab.com,2026-03-01:5155150133 Jonathan Ung approved merge request !710: [Analytics] Implemented AnalyticsCore to extract telemetry data from WorldStates for Ingest layer at SFU Robot Socc... 2026-03-01T20:37:25Z jonathan.keith.ung Jonathan Ung

Merge Request Template

Summary

  • Ended up doing more than in the original issue
  • This MR adds several classes that will be core for the ingest layer
    • WorldStateEventHelper.h: define methods to extract telemetry/metrics from WorldState objects
    • WolrdStateSchema.h: Define inner structure of data which AnalyticsCore will use to store and pass data
    • AnalyticsCore Object which handles the actual population of WolrdStateSchema. Has slot to subscribe to updates from WorldStateManager.

Testing

  • Created tests: unit test
  • Updated tests
  • Tested in simulation (integration tests): tested with BtTestPlay to ensure robot data updating
  • Tested in real robot (if applicable)
  • No tests (reason):

Screenshots/Videos

Changes

Blast Radius

Checklist

  • All relevant unit tests are passing
  • Documentation updated (if applicable)
  • No debug logs or commented-out code

Reviewer Notes

Closes #786

tag:gitlab.com,2026-03-01:5155147437 Jonathan Ung commented on merge request !710 at SFU Robot Soccer / software 2026-03-01T20:34:12Z jonathan.keith.ung Jonathan Ung

is this a sub?

tag:gitlab.com,2026-03-01:5155143779 Jonathan Ung commented on merge request !710 at SFU Robot Soccer / software 2026-03-01T20:30:44Z jonathan.keith.ung Jonathan Ung

Can you move this into a test util so other people can use it?

tag:gitlab.com,2026-03-01:5155142775 Jonathan Ung commented on merge request !710 at SFU Robot Soccer / software 2026-03-01T20:30:05Z jonathan.keith.ung Jonathan Ung

nit - put MS in the const name

tag:gitlab.com,2026-03-01:5155008274 Jonathan Ung pushed new project branch POC-agent-test at SFU Robot Soccer / software 2026-03-01T18:24:29Z jonathan.keith.ung Jonathan Ung

Jonathan Ung (ccb3bd4d) at 01 Mar 18:24

testing POC v2 agent