No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro lyrical showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.1.0
License MIT
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/nova-utd/navigator.git
VCS Type git
VCS Version dev
Last Updated 2026-08-07
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Route-aware lane-change and obstacle-bypass behavior module for Navigator. PR 1: shadow-mode decision node (no vehicle control).

Maintainers

  • Nova UTD

Authors

No additional authors.

navigator_lane_change

Route-aware lane-change and obstacle-bypass behavior module for Navigator.

Runs in shadow mode by default — publishes decisions and debug output with zero vehicle control authority. Execution mode is enabled by a single parameter change once the node has been validated in shadow.


Modes

Shadow mode (default)

The node observes the environment, runs the full decision pipeline, and publishes its intent — but takes no action on the vehicle. Use this to validate behavior in simulation or on a real vehicle before enabling execution.

Set in param/lane_change_params.yaml:

shadow_mode: true

Execution mode

When you are ready to allow the node to actually command lane changes, set:

shadow_mode: false

In execution mode the FSM transitions through to EXECUTE_LANE_CHANGE and the downstream trajectory node (PR 2) picks up the decision from /behavior/lane_change_decision to generate and follow a quintic path. No other code changes are needed — the interface is identical between modes.


Triggering a lane change from another node

Any node in the stack can request a lane change by publishing a single string to:

/behavior/lane_change_command   (std_msgs/String)

Valid values: "left", "right", "cancel"

Python example

from std_msgs.msg import String

# In your node's __init__:
self._lc_pub = self.create_publisher(String, '/behavior/lane_change_command', 10)

# Request a right lane change:
msg = String()
msg.data = 'right'
self._lc_pub.publish(msg)

# Request a left lane change:
msg.data = 'left'
self._lc_pub.publish(msg)

# Cancel / abort an in-progress lane change:
msg.data = 'cancel'
self._lc_pub.publish(msg)

Commands take priority over obstacle-triggered lane changes. A command expires automatically after 30 seconds — if the publishing node goes offline, the vehicle will not be left trying to change lanes indefinitely.

From the terminal (testing / manual override)

# Change to right lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'right'"

# Change to left lane
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'left'"

# Cancel
ros2 topic pub --once /behavior/lane_change_command std_msgs/msg/String "data: 'cancel'"


Topics

Subscribed

Topic Type Description
/gnss/odometry nav_msgs/Odometry Ego position and velocity
/planning/path nav_msgs/Path Current planned path
/objdet3d_tracked navigator_msgs/Object3DArray Tracked objects from perception
/intersection_status navigator_msgs/IntersectionStatus Suppresses lane changes at intersections
/behavior/lane_change_command std_msgs/String External lane change request (left, right, cancel)

Published

Topic Type Description
/behavior/lane_change_state std_msgs/String Current FSM state name
/behavior/lane_change_decision std_msgs/String JSON decision summary (consumed by trajectory node in PR 2)
/behavior/lane_change_debug std_msgs/String JSON full debug dump — all inputs, blockers, gap values

FSM states

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged navigator_lane_change at Robotics Stack Exchange