天天看點

ROS2極簡總結-Nav2-概述(中)控制器控制器概述 Controller

上一節,主要介紹導航功能包Nav2的規劃部分,本節為控制部分:

控制器概述 Controller

ROS2極簡總結-Nav2-概述(中)控制器控制器概述 Controller

注意黃色部分,具體看下圖。

ROS2極簡總結-Nav2-概述(中)控制器控制器概述 Controller

插件 Plugins

ROS2極簡總結-Nav2-概述(中)控制器控制器概述 Controller
  • 控制器
  • 過程檢查
  • 目标檢查

控制器伺服器 Controller Server

[nav2_controller_server]

  • 輸入:全局路徑,代價地圖
  • 輸出:速度指令

預設為 DWB 控制器。

釋出速度:~/cmd_vel (geometry_msgs/Twist)

包含多個插件:

  • 軌迹生成器插件
  • 評分插件
  • 目标檢查器插件

DWB控制器 DWB Controller

軌迹生成器插件

負責生成局部軌迹并輸出指令速度。

目前有兩個插件(一次隻能加載一個):

  • 标準軌迹生成器
  • 有限加速器
FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 0.22
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.22
      min_speed_theta: 0.0           

複制

評分插件 Critic Plugins

對軌迹生成器生成的軌迹進行評分。 可以加載多個插件并将它們的分數添加到每個軌迹的最終分數中。

示例:

  • BaseObstacle:基于路徑經過代價地圖的位置
  • ObstacleFootprint:基于驗證機器人足迹上的所有點都沒有接觸到代價地圖中标記的障礙物。
  • GoalDist:基于軌迹使機器人與目标姿勢的接近程度。
  • ...
critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]           

複制

目标檢查器 Goal Checker

驗證機器人是否達到了目标

目前有兩個插件(一次隻能加載一個):

  • SimpleGoalChecker - 檢查位置以檢視機器人是否已達到目标。
  • StoppedGoalChecker - 檢查位置以及機器人是否已停止。

可以參數化目标“範圍”(位置、旋轉等...)。

goal_checker:
  plugin: "nav2_controller::SimpleGoalChecker"
  xy_goal_tolerance: 0.25
  yaw_goal_tolerance: 0.25
  stateful: True           

複制

controller_server:
  ros__parameters:
    use_sim_time: False
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    controller_plugins: ["FollowPath"]

    # DWB parameters
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
      debug_trajectory_details: True
      min_vel_x: 0.0
      min_vel_y: 0.0
      max_vel_x: 0.22
      max_vel_y: 0.0
      max_vel_theta: 1.0
      min_speed_xy: 0.0
      max_speed_xy: 0.22
      min_speed_theta: 0.0
      # Add high threshold velocity for turtlebot 3 issue.
      # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
      acc_lim_x: 2.5
      acc_lim_y: 0.0
      acc_lim_theta: 3.2
      decel_lim_x: -2.5
      decel_lim_y: 0.0
      decel_lim_theta: -3.2
      vx_samples: 20
      vy_samples: 5
      vtheta_samples: 20
      sim_time: 1.7
      linear_granularity: 0.05
      angular_granularity: 0.025
      transform_tolerance: 0.2
      xy_goal_tolerance: 0.25
      trans_stopped_velocity: 0.25
      short_circuit_trajectory_evaluation: True
      stateful: True
      critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
      BaseObstacle.scale: 0.02
      PathAlign.scale: 32.0
      PathAlign.forward_point_distance: 0.1
      GoalAlign.scale: 24.0
      GoalAlign.forward_point_distance: 0.1
      PathDist.scale: 32.0
      GoalDist.scale: 24.0
      RotateToGoal.scale: 32.0
      RotateToGoal.slowing_factor: 5.0
      RotateToGoal.lookahead_time: -1.0

controller_server_rclcpp_node:
  ros__parameters:
    use_sim_time: False           

複制

下一節介紹恢複器。