【无人水面艇路径跟随控制1】(C++)USV代码阅读:包含了路径点的索引、期望的航向和速度、前视距离等参数,并提供了从路径点和里程计信息中计算期望航向的功能。
- 写在最前面
- set_of_los.h
- 梳理
- 详细解释
- 宏定义
- 头文件包含
- 命名空间
- 类定义
- 私有成员变量
- 公有成员函数
- 结束宏定义
写在最前面
阅读代码: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欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:????点赞 ???? 关注 ????评论,我会给大家带来更多有用有趣的文章。
原文链接 ???? ,⚡️更新更及时。
欢迎大家添加好友交流。