|
Package Summary
Tags | No category tags. |
Version | 1.1.17 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2024-11-26 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 1.3.4 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | jazzy |
Last Updated | 2024-12-13 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.3.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/locusrobotics/robot_navigation.git |
VCS Type | git |
VCS Version | noetic |
Last Updated | 2022-06-27 |
Dev Status | DEVELOPED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
dwb_plugins
This package contains the standard implementations of the GoalChecker and TrajectoryGenerators for dwb_local_planner
. The TrajectoryCritic implementations are in dwb_critics
.
Goal Checkers
There are two goal checkers implemented.
SimpleGoalChecker
SimpleGoalChecker will return true indicating a goal has been reached when the query pose is sufficiently close to the goal pose. It does this by comparing the cartesian difference against the xy_goal_tolerance
and the shortest angular difference to the yaw_goal_tolerance
. It does not check velocity.
If the stateful
parameter is set to true (which it is by default), once the desired cartesian difference is obtained, it will not check the cartesian difference again (until reset) and only check the yaw tolerance. This handles cases where the robot may accidentally leave the desired xy_goal_tolerance
while rotating to the desired yaw. If stateful
is true, this won’t force the robot to try to move closer to the goal again, and instead just rotate to the goal.
StoppedGoalChecker
StoppedGoalChecker builds off of the above functionality, but also ensures that the robot’s linear velocity is less than trans_stopped_velocity
and the rotational velocity is less than rot_stopped_velocity
.
Trajectory Generation
Trajectory Generation covers two separate but related components.
- First, it defines which command velocities are available, given the current velocity.
- Second, given a velocity, it defines the trajectory the robot would take.
Generally, the available velocities are constrained by the robot’s velocity and acceleration limits.
In the above diagram, the robot’s current velocity is marked with a blue circle, and the grey rectangle marks the allowable velocities, limited by acceleration, and the robot’s maximum x velocity. However, the exact size of the rectangle also depends on a time parameter, which we get into below.
When converting the velocities to trajectories, the robot’s position is projected ahead in both time and space. This is dependent on a time parameter (called sim_time
) for how far into the future to project the robot’s position. For a simple example, assume we had a robot at x=0
travelling at xv=2.0
, and we want to calculate the trajectory for xv=2.0
. It might result in the following poses if sim_time=2.0
.
t=0.0, x=0
t=1.0, x=2.0
t=2.0, x=4.0
However, the trajectory is more open to interpretation when the speed is not constant.
StandardTrajGenerator and LimitedAccelGenerator
To replicate the functionality of dwa_local_planner
, this package implements two TrajectoryGenerators. StandardTrajGenerator is equivalent to using DWA with use_dwa=false
and LimitedAccelGenerator is equivalent to DWA with use_dwa=true
(which is the default). The key difference in these generators are how time and acceleration are handled.
As discussed above, sim_time
is the parameter used for determining the time ellapsed in the trajectories (DWA’s default was 1.7 seconds). In StandardTrajGenerator
the available command velocities are limited by velocities reachable given the robot’s acceleration in sim_time
, i.e. the maximum available linear velocity is vel_x + accel_x * sim_time
. In practice, given the relatively high value of sim_time
, StandardTrajGenerator
would allow for high accelerations almost instantaenously. For example, if initially motionless, with an accerlation of 1.0 m/s^2 and sim_time=1.7
, the initial velocity could be 1.7 m/s.
In LimitedAccelGenerator
the time used for calculating the accerlation portion is either the parameter sim_period
, or the inverse of the controller_frequency
(i.e. if controller_frequency
is 20.0, sim_period
is set to 0.05). Then the maximum linear velocity is calculated with vel_x + accel_x * sim_period
. This results in MUCH lower velocities.
The other key difference between these two is how the acceleration is handled over time in the trajectory generation. In StandardTrajGenerator
the velocity is allowed to change over the course of the trajectory based on the robot’s acceleration, ramping up to the command velocity. In LimitedAccelGenerator
the velocity is constant throughout the trajectory.
In the below example, the velocities are shown for an initial speed of 0.0 and commanded speed of 3.5 m/s.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roslint | |
rostest | |
rosunit | |
angles | |
dwb_local_planner | |
dynamic_reconfigure | |
nav_2d_msgs | |
nav_2d_utils | |
nav_core2 | |
pluginlib | |
roscpp |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav_core_adapter | |
robot_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.1.7 |
License | BSD |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | crystal-devel |
Last Updated | 2019-03-13 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.3.5 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | eloquent-devel |
Last Updated | 2021-01-04 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.2.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | dashing-devel |
Last Updated | 2020-12-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
ament_cmake_pytest | |
launch | |
launch_testing | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 1.0.12 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | galactic |
Last Updated | 2022-09-15 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.4.7 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | foxy-devel |
Last Updated | 2022-08-31 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 1.2.10 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-planning/navigation2.git |
VCS Type | git |
VCS Version | iron |
Last Updated | 2024-10-02 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
nav2_common | |
ament_cmake | |
ament_lint_common | |
ament_lint_auto | |
ament_cmake_gtest | |
angles | |
dwb_core | |
nav_2d_msgs | |
nav_2d_utils | |
pluginlib | |
rclcpp | |
nav2_util |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav2_dwb_controller |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.2.5 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/locusrobotics/robot_navigation.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2020-07-03 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
dwb_plugins
This package contains the standard implementations of the GoalChecker and TrajectoryGenerators for dwb_local_planner
. The TrajectoryCritic implementations are in dwb_critics
.
Goal Checkers
There are two goal checkers implemented.
SimpleGoalChecker
SimpleGoalChecker will return true indicating a goal has been reached when the query pose is sufficiently close to the goal pose. It does this by comparing the cartesian difference against the xy_goal_tolerance
and the shortest angular difference to the yaw_goal_tolerance
. It does not check velocity.
If the stateful
parameter is set to true (which it is by default), once the desired cartesian difference is obtained, it will not check the cartesian difference again (until reset) and only check the yaw tolerance. This handles cases where the robot may accidentally leave the desired xy_goal_tolerance
while rotating to the desired yaw. If stateful
is true, this won’t force the robot to try to move closer to the goal again, and instead just rotate to the goal.
StoppedGoalChecker
StoppedGoalChecker builds off of the above functionality, but also ensures that the robot’s linear velocity is less than trans_stopped_velocity
and the rotational velocity is less than rot_stopped_velocity
.
Trajectory Generation
Trajectory Generation covers two separate but related components.
- First, it defines which command velocities are available, given the current velocity.
- Second, given a velocity, it defines the trajectory the robot would take.
Generally, the available velocities are constrained by the robot’s velocity and acceleration limits.
In the above diagram, the robot’s current velocity is marked with a blue circle, and the grey rectangle marks the allowable velocities, limited by acceleration, and the robot’s maximum x velocity. However, the exact size of the rectangle also depends on a time parameter, which we get into below.
When converting the velocities to trajectories, the robot’s position is projected ahead in both time and space. This is dependent on a time parameter (called sim_time
) for how far into the future to project the robot’s position. For a simple example, assume we had a robot at x=0
travelling at xv=2.0
, and we want to calculate the trajectory for xv=2.0
. It might result in the following poses if sim_time=2.0
.
t=0.0, x=0
t=1.0, x=2.0
t=2.0, x=4.0
However, the trajectory is more open to interpretation when the speed is not constant.
StandardTrajGenerator and LimitedAccelGenerator
To replicate the functionality of dwa_local_planner
, this package implements two TrajectoryGenerators. StandardTrajGenerator is equivalent to using DWA with use_dwa=false
and LimitedAccelGenerator is equivalent to DWA with use_dwa=true
(which is the default). The key difference in these generators are how time and acceleration are handled.
As discussed above, sim_time
is the parameter used for determining the time ellapsed in the trajectories (DWA’s default was 1.7 seconds). In StandardTrajGenerator
the available command velocities are limited by velocities reachable given the robot’s acceleration in sim_time
, i.e. the maximum available linear velocity is vel_x + accel_x * sim_time
. In practice, given the relatively high value of sim_time
, StandardTrajGenerator
would allow for high accelerations almost instantaenously. For example, if initially motionless, with an accerlation of 1.0 m/s^2 and sim_time=1.7
, the initial velocity could be 1.7 m/s.
In LimitedAccelGenerator
the time used for calculating the accerlation portion is either the parameter sim_period
, or the inverse of the controller_frequency
(i.e. if controller_frequency
is 20.0, sim_period
is set to 0.05). Then the maximum linear velocity is calculated with vel_x + accel_x * sim_period
. This results in MUCH lower velocities.
The other key difference between these two is how the acceleration is handled over time in the trajectory generation. In StandardTrajGenerator
the velocity is allowed to change over the course of the trajectory based on the robot’s acceleration, ramping up to the command velocity. In LimitedAccelGenerator
the velocity is constant throughout the trajectory.
In the below example, the velocities are shown for an initial speed of 0.0 and commanded speed of 3.5 m/s.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roslint | |
rostest | |
rosunit | |
angles | |
dwb_local_planner | |
dynamic_reconfigure | |
nav_2d_msgs | |
nav_2d_utils | |
nav_core2 | |
pluginlib | |
roscpp |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav_core_adapter | |
robot_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.2.5 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/locusrobotics/robot_navigation.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2020-07-03 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
dwb_plugins
This package contains the standard implementations of the GoalChecker and TrajectoryGenerators for dwb_local_planner
. The TrajectoryCritic implementations are in dwb_critics
.
Goal Checkers
There are two goal checkers implemented.
SimpleGoalChecker
SimpleGoalChecker will return true indicating a goal has been reached when the query pose is sufficiently close to the goal pose. It does this by comparing the cartesian difference against the xy_goal_tolerance
and the shortest angular difference to the yaw_goal_tolerance
. It does not check velocity.
If the stateful
parameter is set to true (which it is by default), once the desired cartesian difference is obtained, it will not check the cartesian difference again (until reset) and only check the yaw tolerance. This handles cases where the robot may accidentally leave the desired xy_goal_tolerance
while rotating to the desired yaw. If stateful
is true, this won’t force the robot to try to move closer to the goal again, and instead just rotate to the goal.
StoppedGoalChecker
StoppedGoalChecker builds off of the above functionality, but also ensures that the robot’s linear velocity is less than trans_stopped_velocity
and the rotational velocity is less than rot_stopped_velocity
.
Trajectory Generation
Trajectory Generation covers two separate but related components.
- First, it defines which command velocities are available, given the current velocity.
- Second, given a velocity, it defines the trajectory the robot would take.
Generally, the available velocities are constrained by the robot’s velocity and acceleration limits.
In the above diagram, the robot’s current velocity is marked with a blue circle, and the grey rectangle marks the allowable velocities, limited by acceleration, and the robot’s maximum x velocity. However, the exact size of the rectangle also depends on a time parameter, which we get into below.
When converting the velocities to trajectories, the robot’s position is projected ahead in both time and space. This is dependent on a time parameter (called sim_time
) for how far into the future to project the robot’s position. For a simple example, assume we had a robot at x=0
travelling at xv=2.0
, and we want to calculate the trajectory for xv=2.0
. It might result in the following poses if sim_time=2.0
.
t=0.0, x=0
t=1.0, x=2.0
t=2.0, x=4.0
However, the trajectory is more open to interpretation when the speed is not constant.
StandardTrajGenerator and LimitedAccelGenerator
To replicate the functionality of dwa_local_planner
, this package implements two TrajectoryGenerators. StandardTrajGenerator is equivalent to using DWA with use_dwa=false
and LimitedAccelGenerator is equivalent to DWA with use_dwa=true
(which is the default). The key difference in these generators are how time and acceleration are handled.
As discussed above, sim_time
is the parameter used for determining the time ellapsed in the trajectories (DWA’s default was 1.7 seconds). In StandardTrajGenerator
the available command velocities are limited by velocities reachable given the robot’s acceleration in sim_time
, i.e. the maximum available linear velocity is vel_x + accel_x * sim_time
. In practice, given the relatively high value of sim_time
, StandardTrajGenerator
would allow for high accelerations almost instantaenously. For example, if initially motionless, with an accerlation of 1.0 m/s^2 and sim_time=1.7
, the initial velocity could be 1.7 m/s.
In LimitedAccelGenerator
the time used for calculating the accerlation portion is either the parameter sim_period
, or the inverse of the controller_frequency
(i.e. if controller_frequency
is 20.0, sim_period
is set to 0.05). Then the maximum linear velocity is calculated with vel_x + accel_x * sim_period
. This results in MUCH lower velocities.
The other key difference between these two is how the acceleration is handled over time in the trajectory generation. In StandardTrajGenerator
the velocity is allowed to change over the course of the trajectory based on the robot’s acceleration, ramping up to the command velocity. In LimitedAccelGenerator
the velocity is constant throughout the trajectory.
In the below example, the velocities are shown for an initial speed of 0.0 and commanded speed of 3.5 m/s.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roslint | |
rostest | |
rosunit | |
angles | |
dwb_local_planner | |
dynamic_reconfigure | |
nav_2d_msgs | |
nav_2d_utils | |
nav_core2 | |
pluginlib | |
roscpp |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav_core_adapter | |
robot_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.3.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/locusrobotics/robot_navigation.git |
VCS Type | git |
VCS Version | kinetic |
Last Updated | 2021-01-08 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
dwb_plugins
This package contains the standard implementations of the GoalChecker and TrajectoryGenerators for dwb_local_planner
. The TrajectoryCritic implementations are in dwb_critics
.
Goal Checkers
There are two goal checkers implemented.
SimpleGoalChecker
SimpleGoalChecker will return true indicating a goal has been reached when the query pose is sufficiently close to the goal pose. It does this by comparing the cartesian difference against the xy_goal_tolerance
and the shortest angular difference to the yaw_goal_tolerance
. It does not check velocity.
If the stateful
parameter is set to true (which it is by default), once the desired cartesian difference is obtained, it will not check the cartesian difference again (until reset) and only check the yaw tolerance. This handles cases where the robot may accidentally leave the desired xy_goal_tolerance
while rotating to the desired yaw. If stateful
is true, this won’t force the robot to try to move closer to the goal again, and instead just rotate to the goal.
StoppedGoalChecker
StoppedGoalChecker builds off of the above functionality, but also ensures that the robot’s linear velocity is less than trans_stopped_velocity
and the rotational velocity is less than rot_stopped_velocity
.
Trajectory Generation
Trajectory Generation covers two separate but related components.
- First, it defines which command velocities are available, given the current velocity.
- Second, given a velocity, it defines the trajectory the robot would take.
Generally, the available velocities are constrained by the robot’s velocity and acceleration limits.
In the above diagram, the robot’s current velocity is marked with a blue circle, and the grey rectangle marks the allowable velocities, limited by acceleration, and the robot’s maximum x velocity. However, the exact size of the rectangle also depends on a time parameter, which we get into below.
When converting the velocities to trajectories, the robot’s position is projected ahead in both time and space. This is dependent on a time parameter (called sim_time
) for how far into the future to project the robot’s position. For a simple example, assume we had a robot at x=0
travelling at xv=2.0
, and we want to calculate the trajectory for xv=2.0
. It might result in the following poses if sim_time=2.0
.
t=0.0, x=0
t=1.0, x=2.0
t=2.0, x=4.0
However, the trajectory is more open to interpretation when the speed is not constant.
StandardTrajGenerator and LimitedAccelGenerator
To replicate the functionality of dwa_local_planner
, this package implements two TrajectoryGenerators. StandardTrajGenerator is equivalent to using DWA with use_dwa=false
and LimitedAccelGenerator is equivalent to DWA with use_dwa=true
(which is the default). The key difference in these generators are how time and acceleration are handled.
As discussed above, sim_time
is the parameter used for determining the time ellapsed in the trajectories (DWA’s default was 1.7 seconds). In StandardTrajGenerator
the available command velocities are limited by velocities reachable given the robot’s acceleration in sim_time
, i.e. the maximum available linear velocity is vel_x + accel_x * sim_time
. In practice, given the relatively high value of sim_time
, StandardTrajGenerator
would allow for high accelerations almost instantaenously. For example, if initially motionless, with an accerlation of 1.0 m/s^2 and sim_time=1.7
, the initial velocity could be 1.7 m/s.
In LimitedAccelGenerator
the time used for calculating the accerlation portion is either the parameter sim_period
, or the inverse of the controller_frequency
(i.e. if controller_frequency
is 20.0, sim_period
is set to 0.05). Then the maximum linear velocity is calculated with vel_x + accel_x * sim_period
. This results in MUCH lower velocities.
The other key difference between these two is how the acceleration is handled over time in the trajectory generation. In StandardTrajGenerator
the velocity is allowed to change over the course of the trajectory based on the robot’s acceleration, ramping up to the command velocity. In LimitedAccelGenerator
the velocity is constant throughout the trajectory.
In the below example, the velocities are shown for an initial speed of 0.0 and commanded speed of 3.5 m/s.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roslint | |
rostest | |
rosunit | |
angles | |
dwb_local_planner | |
dynamic_reconfigure | |
nav_2d_msgs | |
nav_2d_utils | |
nav_core2 | |
pluginlib | |
roscpp |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav_core_adapter | |
robot_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged dwb_plugins at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 0.3.0 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/locusrobotics/robot_navigation.git |
VCS Type | git |
VCS Version | melodic |
Last Updated | 2021-07-30 |
Dev Status | DEVELOPED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- David V. Lu!!
Authors
dwb_plugins
This package contains the standard implementations of the GoalChecker and TrajectoryGenerators for dwb_local_planner
. The TrajectoryCritic implementations are in dwb_critics
.
Goal Checkers
There are two goal checkers implemented.
SimpleGoalChecker
SimpleGoalChecker will return true indicating a goal has been reached when the query pose is sufficiently close to the goal pose. It does this by comparing the cartesian difference against the xy_goal_tolerance
and the shortest angular difference to the yaw_goal_tolerance
. It does not check velocity.
If the stateful
parameter is set to true (which it is by default), once the desired cartesian difference is obtained, it will not check the cartesian difference again (until reset) and only check the yaw tolerance. This handles cases where the robot may accidentally leave the desired xy_goal_tolerance
while rotating to the desired yaw. If stateful
is true, this won’t force the robot to try to move closer to the goal again, and instead just rotate to the goal.
StoppedGoalChecker
StoppedGoalChecker builds off of the above functionality, but also ensures that the robot’s linear velocity is less than trans_stopped_velocity
and the rotational velocity is less than rot_stopped_velocity
.
Trajectory Generation
Trajectory Generation covers two separate but related components.
- First, it defines which command velocities are available, given the current velocity.
- Second, given a velocity, it defines the trajectory the robot would take.
Generally, the available velocities are constrained by the robot’s velocity and acceleration limits.
In the above diagram, the robot’s current velocity is marked with a blue circle, and the grey rectangle marks the allowable velocities, limited by acceleration, and the robot’s maximum x velocity. However, the exact size of the rectangle also depends on a time parameter, which we get into below.
When converting the velocities to trajectories, the robot’s position is projected ahead in both time and space. This is dependent on a time parameter (called sim_time
) for how far into the future to project the robot’s position. For a simple example, assume we had a robot at x=0
travelling at xv=2.0
, and we want to calculate the trajectory for xv=2.0
. It might result in the following poses if sim_time=2.0
.
t=0.0, x=0
t=1.0, x=2.0
t=2.0, x=4.0
However, the trajectory is more open to interpretation when the speed is not constant.
StandardTrajGenerator and LimitedAccelGenerator
To replicate the functionality of dwa_local_planner
, this package implements two TrajectoryGenerators. StandardTrajGenerator is equivalent to using DWA with use_dwa=false
and LimitedAccelGenerator is equivalent to DWA with use_dwa=true
(which is the default). The key difference in these generators are how time and acceleration are handled.
As discussed above, sim_time
is the parameter used for determining the time ellapsed in the trajectories (DWA’s default was 1.7 seconds). In StandardTrajGenerator
the available command velocities are limited by velocities reachable given the robot’s acceleration in sim_time
, i.e. the maximum available linear velocity is vel_x + accel_x * sim_time
. In practice, given the relatively high value of sim_time
, StandardTrajGenerator
would allow for high accelerations almost instantaenously. For example, if initially motionless, with an accerlation of 1.0 m/s^2 and sim_time=1.7
, the initial velocity could be 1.7 m/s.
In LimitedAccelGenerator
the time used for calculating the accerlation portion is either the parameter sim_period
, or the inverse of the controller_frequency
(i.e. if controller_frequency
is 20.0, sim_period
is set to 0.05). Then the maximum linear velocity is calculated with vel_x + accel_x * sim_period
. This results in MUCH lower velocities.
The other key difference between these two is how the acceleration is handled over time in the trajectory generation. In StandardTrajGenerator
the velocity is allowed to change over the course of the trajectory based on the robot’s acceleration, ramping up to the command velocity. In LimitedAccelGenerator
the velocity is constant throughout the trajectory.
In the below example, the velocities are shown for an initial speed of 0.0 and commanded speed of 3.5 m/s.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
roslint | |
rostest | |
rosunit | |
angles | |
dwb_local_planner | |
dynamic_reconfigure | |
nav_2d_msgs | |
nav_2d_utils | |
nav_core2 | |
pluginlib | |
roscpp |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mir_navigation | |
nav_core_adapter | |
robot_navigation |