Skip to content

Different type of controller support #30

@JustinShih0918

Description

@JustinShih0918

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?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions