1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef _HYBRID_GRIDNODE_H_COMBINE
- #define _HYBRID_GRIDNODE_H_COMBINE
- // 如果两个不同的 cpp 文件都包含了同一个头文件而没有使用 #ifndef,则可能导致:重复定义错误、链接错误、代码膨胀等问题
- #include <Eigen/Eigen>
- #include <Eigen/Dense> // Eigen 库中的矩阵运算库
- #include <vector>
- #include <Eigen/Core>
- namespace combine_planning_ns
- {
- #define inf 1 >> 20 // 定义一个宏,宏的名称是 inf, >> 是右移运算符,让inf表示无穷大
- // 宏 inf 被定义为 1>>20,即右移运算,将整数1向右移动20位,相当于将二进制数1变成了一个非常大的数,通常表示无穷大或无限大
- // struct HybridGridNode;
- struct HybridGridNode
- {
- EIGEN_MAKE_ALIGNED_OPERATOR_NEW // 宏,用于为该结构体启用 Eigen 库的对齐内存分配支持
- enum NODE_STATUS // 定义了一个枚举类型 NODE_STATUS,包含了状态节点可能的状态
- {
- NOT_VISITED = 0, // 未访问
- IN_OPENSET = 1, // 在 openset 中
- IN_CLOSESET = 2 // 在 closeset 中(作为主节点被扩展过)
- };
- enum DIRECTION // 定义一个枚举类型 direction 表示状态节点的方向
- {
- FORWARD = 0, // 向前
- BACKWARD = 1, // 向后
- NO = 3 // 无方向
- };
- HybridGridNode(const Eigen::Vector3i &index)
- {
- grid_index = index;
- }
- double g_cost = inf;
- double f_cost = inf;
- int steering_grade = 0; // 节点的转向等级
- Eigen::Vector3d state; // 节点坐标(x,y,theta(弧度制))
- Eigen::Vector3i grid_index; // 节点索引坐标
- HybridGridNode *parent_node = nullptr; // 父节点指针
- NODE_STATUS node_status = NOT_VISITED; // 是否被访问,默认是否
- DIRECTION direction = NO; // 朝向,默认是无
- double reach_time = 0;
- HybridGridNode(){};
- ~HybridGridNode(){}; // 析构函数
- };
- typedef HybridGridNode *HybridGridNodePtr; // 命名规律:在变量名后面添加Ptr后缀表示这是一个指针类型
- };
- #endif
|