35 #ifndef DWB_PLUGINS__XY_THETA_ITERATOR_HPP_
36 #define DWB_PLUGINS__XY_THETA_ITERATOR_HPP_
41 #include "dwb_plugins/velocity_iterator.hpp"
42 #include "dwb_plugins/one_d_velocity_iterator.hpp"
43 #include "nav2_util/lifecycle_node.hpp"
51 : kinematics_handler_(
nullptr), x_it_(
nullptr), y_it_(
nullptr), th_it_(
nullptr) {}
53 const nav2_util::LifecycleNode::SharedPtr & nh,
54 KinematicsHandler::Ptr kinematics,
55 const std::string & plugin_name)
override;
56 void startNewIteration(
const nav_2d_msgs::msg::Twist2D & current_velocity,
double dt)
override;
57 bool hasMoreTwists()
override;
58 nav_2d_msgs::msg::Twist2D nextTwist()
override;
73 virtual bool isValidVelocity();
74 void iterateToValidVelocity();
75 int vx_samples_, vy_samples_, vtheta_samples_;
76 KinematicsHandler::Ptr kinematics_handler_;
78 std::shared_ptr<OneDVelocityIterator> x_it_, y_it_, th_it_;
bool isValidSpeed(double x, double y, double theta)
Check to see whether the combined x/y/theta velocities are valid.