22#include <tf2/transform_datatypes.h> 
   26#include <rclcpp/rclcpp.hpp> 
   32#include <geometry_msgs/msg/point.hpp> 
   33#include <geometry_msgs/msg/pose.hpp> 
   34#include <nav2_msgs/action/navigate_to_pose.hpp> 
   35#include <nav_msgs/msg/odometry.hpp> 
   36#include <nav_msgs/msg/path.hpp> 
   38#include <std_msgs/msg/header.hpp> 
   58  OdomTracker(std::string odomtopicName = 
"/odom", std::string odomFrame = 
"odom");
 
   79  void popPath(
int pathCount = 1, 
bool keepPreviousPath = 
false);
 
   85  void setStartPoint(
const geometry_msgs::msg::PoseStamped & pose);
 
  125  rclcpp::Subscription<nav_msgs::msg::Odometry>::SharedPtr 
odomSub_;
 
  158    std::optional<geometry_msgs::msg::PoseStamped> 
goalPose;
 
  180  const geometry_msgs::msg::Point & p1, 
const geometry_msgs::msg::Point & p2)
 
  182  double dx = (p1.x - p2.x);
 
  183  double dy = (p1.y - p2.y);
 
  184  double dz = (p2.z - p2.z);
 
  185  double dist = sqrt(dx * dx + dy * dy + dz * dz);
 
void setCurrentPathName(const std::string ¤tPathName)
 
nav_msgs::msg::Path getPath()
 
void setCurrentMotionGoal(const geometry_msgs::msg::PoseStamped &pose)
 
virtual void rtPublishPaths(rclcpp::Time timestamp)
 
bool subscribeToOdometryTopic_
 
double recordPointDistanceThreshold_
How much distance there is between two points of the path.
 
virtual bool updateClearPath(const nav_msgs::msg::Odometry &odom)
 
std::string currentPathName_
 
void logStateString(bool debug=true)
 
void setPublishMessages(bool value)
 
double recordAngularDistanceThreshold_
Meters.
 
double clearPointDistanceThreshold_
rads
 
void updateConfiguration()
 
std::optional< geometry_msgs::msg::PoseStamped > currentMotionGoal_
 
double clearAngularDistanceThreshold_
rads
 
rclcpp::Publisher< nav_msgs::msg::Path >::SharedPtr robotBasePathPub_
 
nav_msgs::msg::Path baseTrajectory_
Processed path for the mouth of the reel.
 
void setWorkingMode(WorkingMode workingMode)
 
std::vector< nav_msgs::msg::Path > pathStack_
 
void popPath(int pathCount=1, bool keepPreviousPath=false)
 
void onInitialize() override
 
std::string odomTopicName_
 
virtual void processOdometryMessage(const nav_msgs::msg::Odometry::SharedPtr odom)
odom callback: Updates the path - this must be called periodically for each odometry message.
 
void setStartPoint(const geometry_msgs::msg::PoseStamped &pose)
 
nav_msgs::msg::Path aggregatedStackPathMsg_
 
rclcpp::Subscription< nav_msgs::msg::Odometry >::SharedPtr odomSub_
 
rclcpp::Publisher< nav_msgs::msg::Path >::SharedPtr robotBasePathStackedPub_
 
void updateAggregatedStackPath()
 
virtual bool updateRecordPath(const nav_msgs::msg::Odometry &odom)
 
std::optional< geometry_msgs::msg::PoseStamped > getCurrentMotionGoal()
 
std::vector< PathInfo > pathInfos_
 
double p2pDistance(const geometry_msgs::msg::Point &p1, const geometry_msgs::msg::Point &p2)
 
std::optional< geometry_msgs::msg::PoseStamped > goalPose