CCPP、ECPP全覆盖路径规划-牛耕法弓字路径(tsp和整数规划)及改进、回字路径规划实现
覆盖路径规划,牛耕法弓字路径(tsp和整数规划)及改进;光滑回字路径实现;
全覆盖路径规划相关
使用区域分解的方法,实现,和cleanPack一样的效果
技术要点
轮廓相关,计算多边形相交,可见性图计算最短路径;
这个使用了cgal库,这个库需要依赖boost;
RicheyHuang/CoveragePlanner: Complete Coverage Path Planning Using BCD Algorithm (github.com)
E:\[openFromGit]\CoveragePlanner-master
从代码里面看到的论文链接
// Choset, Howie. "Coverage of known spaces: The boustrophedon cellular
// decomposition." Autonomous Robots 9.3 (2000): 247-253.
// https://www.cs.cmu.edu/~motionplanning/lecture/Chap6-CellDecomp_howie.pdf
E:\[openFromGit]\Chap6-CellDecomp_howie(牛耕法原理).pdf
full_coverage_path_planner-master,效果一般
common.h
实现了:到一个区域的astar路径规划算法;
bool a_star_to_open_space(std::vector<std::vector<bool> > const &grid, gridNode_t init, int cost,
std::vector<std::vector<bool> > &visited, std::list<Point_t> const &open_space,
std::list<gridNode_t> &pathNodes);
全覆盖规划开源项目中的技术要点总结
- todo全覆盖路径规划开源项目里面还有很多可以参考的代码和实现思路,例如tsp问题的求解,地图旋转,raytrace,距离变换,astar搜索,wavefront,tsp求解是使用的图的数据结构,使用的是线程的操作;
- 地图降采样,路径降采样,腐蚀;返回链码路径;
-
void AStarPlanner::downsampleMap(const cv::Mat& map, cv::Mat& downsampled_map, const double downsampling_factor, const double robot_radius, const double map_resolution) { //erode the map so the planner doesn't go near the walls // --> calculate the number of times for eroding from Robot Radius [m] cv::Mat eroded_map; int number_of_erosions = (robot_radius / map_resolution); cv::erode(map, eroded_map, cv::Mat(), cv::Point(-1, -1), number_of_erosions); //downsampling of the map to reduce calculation time if (downsampling_factor != 1.) cv::resize(eroded_map, downsampled_map, cv::Size(0, 0), downsampling_factor, downsampling_factor, cv::INTER_NEAREST);//_LINEAR); else downsampled_map = eroded_map; }
极大团,图论算法
/home/tang/Desktop/123MyProj/test_room_segmentation/lib_navigation/common/src/maximal_clique_finder.cpp
concorde TSP 求解器,开源求解器
/home/tang/Desktop/123MyProj/test_room_segmentation/lib_navigation/common/include/ipa_building_navigation/concorde_TSP.
路径降采样