Skip to content

Different type of controller support #30

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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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