UTM <----> FRENET

功能介绍

  • Class Map
    • getXY:输入sd,获取xy
    • getSD:输入x,y,theta,获取sd

思路介绍

  • 读入地图中的x,y,针对每对x,y,累计s值,并一起存入map类。
  • getXY和getSD是一些搜索 + 简单的几何变换
  • 搜索的过程实现了两种方案,一种基于暴力搜索,一种基于四叉树的搜索。提交给您的代码是基于四叉树搜索的,在nextWP函数中可以选择使用暴力或者四叉树。

优化方向

  • 目前只针对(x,y)最近点的搜索实现了四叉树的方法,针对s的搜索,也可以使用二叉树。考虑到实现原理基本一致,且难度比四叉树小,暂时没有实现(主要是今天还要给导师交付一个项目,时间有点匆忙)。

编译运行

  cd ${PRoJECT_FILE}
  cd build
  cmake ..
  make -j8
  ./ali

测试

  • main函数中有多个测试案例。
  • 人为定义sd转换为对应的(x,y)之后,利用得到的(x,y)转换回去(s,d),看是否与定义的sd相等。

文件介绍

├── build:在这里编译运行 ├── CMakeLists.txt ├── include │   ├── Common.h:常用头文件引用 │   ├── helper.h:简单的辅助函数 │   ├── Map.h:Map类的头文件 │   ├── QuadTree │   │   └── Quadtree.h:四叉树的头文件 │   └── WayPoint.h:路点类的头文件 ├── map │   └── map.csv:地图,存储了一堆xy坐标 ├── README.md └── src ├── main.cpp:主函数 ├── Map.cpp:Map类实现 ├── QuadTree │   └── Quadtree.cpp:四叉树实现 └── WayPoint.cpp:路点类实现