As we can see, in the param file, we can find different type of controller with different param, having different feature.
|
DidilongController: |
|
plugin: "custom_controller::CustomController" |
|
external_velocity_data_path: "$(find-pkg-share navigation2_run)/params/dynamic_params/nav_didilong_params.yaml" |
|
max_linear_vel: 1.5 |
|
max_angular_vel: 1.0 |
|
linear_kp: 2.2 |
|
angular_kp: 3.7 |
|
transform_tolerance: 0.1 |
|
look_ahead_distance: 0.2 |
|
speed_decade: 0.125 |
|
costmap_tolerance: 95 # rival is 98 |
|
keep_planning: false |
|
non_stop_min_vel: 0.3 |
|
|
|
Fast: |
|
plugin: "custom_controller::CustomController" |
|
external_velocity_data_path: "$(find-pkg-share navigation2_run)/params/dynamic_params/nav_fast_params.yaml" |
|
max_linear_vel: 1.1 |
|
max_angular_vel: 12.0 |
|
linear_kp: 2.2 |
|
angular_kp: 3.7 |
|
transform_tolerance: 0.1 |
|
look_ahead_distance: 0.2 |
|
speed_decade: 0.125 |
|
costmap_tolerance: 95 # rival is 98 |
|
keep_planning: false |
|
spin_delay_threshold: 0.5 |
|
rival_slowdown_radius: 0.5 |
|
rival_decay: 0.5 |
|
non_stop_min_vel: 0.3 |
|
|
|
Slow: |
|
plugin: "custom_controller::CustomController" |
|
external_velocity_data_path: "$(find-pkg-share navigation2_run)/params/dynamic_params/nav_slow_params.yaml" |
|
max_linear_vel: 0.8 |
|
max_angular_vel: 2.0 |
|
linear_kp: 2.2 |
|
angular_kp: 3.7 |
|
transform_tolerance: 0.1 |
|
look_ahead_distance: 0.2 |
|
speed_decade: 0.125 |
|
costmap_tolerance: 95 # rival is 98 |
|
keep_planning: false |
|
non_stop_min_vel: 0.3 |
|
|
|
LinearBoost: |
|
plugin: "custom_controller::CustomController" |
|
external_velocity_data_path: "$(find-pkg-share navigation2_run)/params/dynamic_params/nav_linearBoost_params.yaml" |
|
max_linear_vel: 1.1 |
|
max_angular_vel: 2.0 |
|
linear_kp: 2.2 |
|
angular_kp: 3.7 |
|
transform_tolerance: 0.1 |
|
look_ahead_distance: 0.2 |
|
speed_decade: 0.125 |
|
costmap_tolerance: 95 # rival is 98 |
|
keep_planning: false |
|
non_stop_min_vel: 0.3 |
|
|
|
AngularBoost: |
|
plugin: "custom_controller::CustomController" |
|
external_velocity_data_path: "$(find-pkg-share navigation2_run)/params/dynamic_params/nav_angularBoost_params.yaml" |
|
max_linear_vel: 0.5 |
|
max_angular_vel: 12.0 |
|
linear_kp: 2.2 |
|
angular_kp: 3.7 |
|
transform_tolerance: 0.1 |
|
look_ahead_distance: 0.2 |
|
speed_decade: 0.125 |
|
costmap_tolerance: 95 # rival is 98 |
|
keep_planning: false |
|
non_stop_min_vel: 0.3 |
please look into your teb controller implementation, mock the functionality of each controller, and test if each work on both rviz2 and real robot.
For [custom_controller] to have these parameters to set, it defined:
|
declare_parameter_if_not_declared(node, plugin_name_ + ".max_linear_vel", rclcpp::ParameterValue(0.7)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".min_linear_vel", rclcpp::ParameterValue(0.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".max_angular_vel", rclcpp::ParameterValue(3.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".min_angular_vel", rclcpp::ParameterValue(0.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".max_linear_acc", rclcpp::ParameterValue(0.3)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".max_angular_acc", rclcpp::ParameterValue(1.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".yaw_goal_tolerance", rclcpp::ParameterValue(0.01)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".angular_kp", rclcpp::ParameterValue(4.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".linear_kp", rclcpp::ParameterValue(1.5)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".transform_tolerance", rclcpp::ParameterValue(0.1)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".look_ahead_distance", rclcpp::ParameterValue(1.0)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".costmap_tolerance", rclcpp::ParameterValue(60)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".speed_decade", rclcpp::ParameterValue(0.7)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".keep_planning", rclcpp::ParameterValue(true)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".spin_delay_threshold", rclcpp::ParameterValue(0.5)); |
|
declare_parameter_if_not_declared(node, plugin_name_ + ".non_stop_min_vel", rclcpp::ParameterValue(0.3)); |
Look into your implementation of teb, what parameter did you define? Can they be used and tuned to make different type of controller?
As we can see, in the param file, we can find different type of controller with different param, having different feature.
Eurobot-2026-Navigation2/src/navigation2_run/params/nav2_params_default.yaml
Lines 147 to 218 in 6778933
please look into your teb controller implementation, mock the functionality of each controller, and test if each work on both rviz2 and real robot.
For [custom_controller] to have these parameters to set, it defined:
Eurobot-2026-Navigation2/src/custom_controller/src/custom_controller.cpp
Lines 83 to 98 in 6778933
Look into your implementation of teb, what parameter did you define? Can they be used and tuned to make different type of controller?