Skip to content

Decision Making Node

alexrsing edited this page Dec 23, 2025 · 1 revision

Role

The decision-making node determines whether the rover is at the waypoint provided by the navigation node. If the rover is not at the waypoint, it will calculate the best trajectory's velocity commands to get the rover the the waypoint or as close as possible.

File Path

"src/autonomous_nav/autonomous_nav/decision_making_node.py"

Subscriptions

"odometry/filtered" Message Type: Odometry Description: Global position and heading of the rover.

"/projected/map" Message Type: nav_msgs/msg/Path Description: Rolling window costmap for obstacle detection

"path" Message Type: nav_msgs/msg/Path Description: ROS2 Path message with waypoints from navigation node

"/navigation_status" Message Type: nav_msgs/msg/Path Description: Status updates from navigation system

Publishers

"move_left_drivebase_side_message" Message Type: std_msgs/msg/Float32 Format: Float32 Data Type: Float32

"move_right_drivebase_side_message" Message Type: std_msgs/msg/Float32 Format: Float32 Data Type: Float32

Parameters

waypoint_reached_threshold Used to determine whether the rover is at the waypoint.

global_x Used to track global x coordinate of the rover.

global_y Used to track the global y coordinate of the rover.

local_x Used to track local x coordinate of the rover.

local_y Used to track the local y coordinate of the rover.

Internal Logic Summary

The Decision Making Node takes in an OccupancyGrid and a ROS2 Path object with waypoints. With this information, it calculates how far the rover is from the first waypoint. If the destination threshold is not broken, the the Decision Making Node will create a DWAPlanner object and calculate the velocity commands using the dynamic window approach. This approach calculates all possible trajectories the rover can make based on current velocity, and maximum change in velocity values. These trajectories are then weighed based on distance from the waypoint goal and the cost of navigating over the terrain. The velocity commands for the cheapest trajectory are then returned.

Clone this wiki locally