【无人水面艇路径跟随控制1】(C++)USV代码阅读:包含了路径点的索引、期望的航向和速度、前视距离等参数,并提供了从路径点和里程计信息中计算期望航向的功能。

时间:2024-10-06 20:01:09

【无人水面艇路径跟随控制1】(C++)USV代码阅读:包含了路径点的索引、期望的航向和速度、前视距离等参数,并提供了从路径点和里程计信息中计算期望航向的功能。

  • 写在最前面
  • set_of_los.h
    • 梳理
    • 详细解释
      • 宏定义
      • 头文件包含
      • 命名空间
      • 类定义
        • 私有成员变量
        • 公有成员函数
      • 结束宏定义


请添加图片描述

????你好呀!我是 是Yu欸
???? 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
???? 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

阅读代码:https://github.com/USE-jx/USV_path_follow/tree/main

usv path follow:无人水面艇路径跟随
trajectory tracking:轨迹跟踪

请添加图片描述

set_of_los.h

motion_control\guidance\los_guidance\include\los_guidance\set_of_los.h

这个文件 set_of_los.h 是一个C++头文件,定义了一个名为 SetOfLos 的类,该类属于 motion_control 命名空间。这个类主要用于路径跟随和轨迹跟踪控制。

梳理

这个类 SetOfLos 主要用于路径跟随控制,包含了路径点的索引、期望的航向和速度、前视距离等参数,并提供了从路径点和里程计信息中计算期望航向的功能。

详细解释

以下是代码的详细解释:

宏定义

#ifndef SET_OF_LOS_H
#define SET_OF_LOS_H

这些宏定义用于防止头文件被多次包含,避免重复定义。

头文件包含

#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <nav_msgs/Path.h>
#include <nav_msgs/Odometry.h>
#include <Eigen/Eigen.h>
#include <tf2/utils.h>

这些头文件提供了ROS功能、几何消息、路径消息、里程计消息、Eigen库(用于线性代数操作)和TF2库(用于坐标变换)的支持。

命名空间

namespace motion_control {

SetOfLos 类放在 motion_control 命名空间中,以避免命名冲突。

类定义

class SetOfLos {
private:
    double desired_course_;
    double desired_speed_;
    bool is_final_;
    int index_;  //index of waypoints
    double switch_dist_;

    //if use const lookahead distance
    bool use_const_delta_;
    double const_delta_;

    //time-varying params
    double delta_max_;
    double delta_min_;
    double gamma_;
私有成员变量
  • desired_course_:期望的航向。
  • desired_speed_:期望的速度。
  • is_final_:标志是否到达最终目标。
  • index_:当前路径点的索引。
  • switch_dist_:切换路径点的距离。
  • use_const_delta_:是否使用常量前视距离。
  • const_delta_:常量前视距离。
  • delta_max_delta_min_gamma_:时间变化参数。
公有成员函数
public:
    SetOfLos();
    ~SetOfLos();

    void setParam(ros::NodeHandle& nh);

    //get desired course from waypoints path
    Eigen::Vector2d getCourseFromWaypoints(const nav_msgs::Path &path, 
                                  const nav_msgs::Odometry &odom,
                                  bool &is_final);
  • 构造函数 SetOfLos() 和析构函数 ~SetOfLos():用于初始化和清理对象。
  • setParam(ros::NodeHandle& nh):从ROS节点句柄中设置参数。
  • getCourseFromWaypoints(const nav_msgs::Path &path, const nav_msgs::Odometry &odom, bool &is_final):从路径点和里程计信息中获取期望的航向。

结束宏定义

}
#endif

结束命名空间和宏定义。


hello,我是 是Yu欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:????点赞 ???? 关注 ????评论,我会给大家带来更多有用有趣的文章。
原文链接 ???? ,⚡️更新更及时。

欢迎大家添加好友交流。