|
Buran Motion Planning Framework
|
Базовый класс для всех планировщиков More...
#include <path_finder.h>

Public Member Functions | |
| PathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, int threadCnt=1) | |
| std::vector< std::vector< double > > | findPath (const std::vector< double > &startState, const std::vector< double > &endState, int &errorCode) |
| virtual bool | findTick (std::vector< double > &state)=0 |
| virtual void | prepare (const std::vector< double > &startState, const std::vector< double > &endState)=0 |
| virtual void | buildPath ()=0 |
| void | updateCollider () |
| virtual void | paint (const std::vector< double > &state, bool onlyRobot) |
| bool | divideCheckPathSegment (const std::vector< double > &prevPoint, std::vector< double > nextPoint, int checkCnt) |
| int | divideCheckPath (std::vector< std::vector< double >> path, int checkCnt) |
| bool | simpleCheckPath (const std::vector< std::vector< double >> &path, double maxDist) |
| bool | checkState (const std::vector< double > &state) |
| проверяет доступность состояния Проверяет доступность углов, после проверяет состояние на коллизии More... | |
| std::vector< double > | getRandomState () |
| std::vector< double > | getPathStateFromTM (double tm) |
| получить состояние по времени две соседние точки считаются разделёнными единичным временным интервалом. More... | |
| bool | checkCollision (const std::vector< double > &state) |
| void | addObjectToScene (std::string path) |
| void | deleteObjectFromScene (long robotNum) |
| double | getPathLength () const |
| bool | isReady () const |
| bool | getThreadCnt () const |
| void | setReady (bool ready) |
| std::vector< double > & | getStartState () |
| std::vector< double > & | getEndState () |
| int | getErrorCode () const |
| const std::vector< std::vector< double > > & | getBuildedPath () const |
| const std::shared_ptr< bmpf::Scene > & | getScene () const |
| const std::shared_ptr< bmpf::Collider > & | getCollider () const |
| double | getCalculationTimeInSeconds () const |
Static Public Member Functions | |
| static void | infoPath (const std::vector< std::vector< double >> &path) |
| static Json::Value | getJSONPath (std::vector< std::vector< double >> path) |
| static std::vector< std::vector< double > > | getPathFromJSON (const Json::Value &json) |
| static void | savePathToFile (std::vector< std::vector< double >> path, const std::string &filename) |
| static std::vector< std::vector< double > > | loadPathFromFile (const std::string &filename, std::string &scenePath) |
| static std::vector< std::vector< std::vector< double > > > | loadPathsFromFile (const std::string &filename, std::string &scenePath) |
| static std::vector< std::vector< double > > | splitPath (std::vector< std::vector< double >> path, unsigned long partCnt) |
| static std::vector< double > | getPathStateFromTM (std::vector< std::vector< double >> &path, double tm) |
| получить состояние по времени две соседние точки считаются разделёнными единичным временным интервалом. More... | |
| static double | calculatePathLength (std::vector< std::vector< double >> path) |
Static Public Attributes | |
| static const int | NO_ERROR = -1 |
| static const int | ERROR_CAN_NOT_FIND_PATH = 1 |
Protected Attributes | |
| double | _pathLength {} |
| int | _errorCode |
| std::shared_ptr< bmpf::Scene > | _scene |
| bool | _showTrace |
| std::shared_ptr< bmpf::Collider > | _collider |
| bool | _ready |
| bool | _threadCnt |
| std::vector< double > | _endState |
| std::vector< double > | _startState |
| std::vector< std::vector< double > > | _buildedPath |
| std::chrono::time_point< std::chrono::system_clock > | _startTime |
| double | _calculationTimeInSeconds |
Базовый класс для всех планировщиков
Логика работы планировщика следующая: 1) подготовка к тактам поиска пути 2) выполнение тактов поиска пути с попутным заполнением тех или иных структур 3) если путь найден из этих структур собирается путь и сохраняется в переменную _buildedPath
| PathFinder::PathFinder | ( | const std::shared_ptr< bmpf::Scene > & | scene, |
| bool | showTrace, | ||
| int | threadCnt = 1 |
||
| ) |
конструктор
| scene | сцена |
| showTrace | флаг, нужно ли выводить информацию во время поиска пути |
| threadCnt | количество потоков планировщика |
| void PathFinder::addObjectToScene | ( | std::string | path | ) |
добавить объект на сцену
| path | путь к файлу с описанием |
|
pure virtual |
построить путь, построенный путь должен быть сохранён в переменную _buildedPath
Implemented in bmpf::NodeGridPathFinder, MultiRobotPathFinder, and ContinuousPathFinder.
|
static |
рассчитать общую протяжённость пути
| path | путь |
| bool PathFinder::checkCollision | ( | const std::vector< double > & | state | ) |
проверка сцены планировщика на коллизии
| state | состояние |
| bool PathFinder::checkState | ( | const std::vector< double > & | state | ) |
проверяет доступность состояния Проверяет доступность углов, после проверяет состояние на коллизии
| state | состояние |
| void PathFinder::deleteObjectFromScene | ( | long | robotNum | ) |
Удалить объект
| robotNum | номер робота в списке роботов |
| int PathFinder::divideCheckPath | ( | std::vector< std::vector< double >> | path, |
| int | checkCnt | ||
| ) |
проверить путь с промежуточными точками на коллизии
| path | путь |
| checkCnt | количество промежуточных точек |
| bool PathFinder::divideCheckPathSegment | ( | const std::vector< double > & | prevPoint, |
| std::vector< double > | nextPoint, | ||
| int | checkCnt | ||
| ) |
проверить отрезок с промежуточными точками на коллизии
| prevPoint | первая точка отрезка |
| nextPoint | вторая точка отрезка |
| checkCnt | количество промежуточных точек |
| std::vector< std::vector< double > > PathFinder::findPath | ( | const std::vector< double > & | startState, |
| const std::vector< double > & | endState, | ||
| int & | errorCode | ||
| ) |
Поиск пути
| startState | стартовое состояние |
| endState | конечное состояние |
| errorCode | в эту переменную записывается код ошибки |
Поиск пути
| startState | стартовое состояние |
| endState | конечное состояние |
| errorCode | в эту переменную записывается код ошибки |
|
pure virtual |
такт поиска
| state | текущее состояние планировщика |
Implemented in bmpf::NodeGridPathFinder, MultiRobotPathFinder, and ContinuousPathFinder.
|
inline |
получить построенный путь
|
inline |
получить затраченное время на обработку
|
inline |
получить коллайдер
|
inline |
получить конечное состояние
|
inline |
получить код ошибки
|
static |
Получить json-представление пути
| path | путь |
|
static |
Получить путь из json-представления
| json | json-представление |
|
inline |
получить размер построенного пути
| std::vector< double > PathFinder::getPathStateFromTM | ( | double | tm | ) |
получить состояние по времени две соседние точки считаются разделёнными единичным временным интервалом.
| tm | время |
|
static |
получить состояние по времени две соседние точки считаются разделёнными единичным временным интервалом.
| path | путь |
| tm | время |
| std::vector< double > PathFinder::getRandomState | ( | ) |
получить случайное разрешённое состояние
|
inline |
получить сцену
|
inline |
получить начальное состояние
|
inline |
получить количество потоков планировщика
|
static |
вывести на консоль путь
| path | путь |
|
inline |
получить флаг, готов ли планировщик
|
static |
Загрузить список путь из файла
| filename | путь к файлу с путями |
| scenePath | путь к сцене (читается из файла, сохраняется в scenePath) |
|
static |
Загрузить список путей из файла
| filename | путь к файлу с путями |
| scenePath | путь к сцене (читается из файла, сохраняется в scenePath) |
|
virtual |
рисование сцены планировщика
| state | состояние |
| onlyRobot | флаг, нужно ли рисовать только роботов |
Reimplemented in MultiRobotPathFinder, and ContinuousPathFinder.
|
pure virtual |
подготовка к планированию
| startState | начальное состояние |
| endState | конечное состояние |
Implemented in bmpf::GridPathFinder, bmpf::NodeGridPathFinder, MultiRobotPathFinder, and ContinuousPathFinder.
|
static |
сохранить путь в файл
| path | путь |
| filename | путь к файлу |
|
inline |
задать флаг, готов ли планировщик
| ready | флаг, готов ли планировщик |
| bool PathFinder::simpleCheckPath | ( | const std::vector< std::vector< double >> & | path, |
| double | maxDist | ||
| ) |
проверить опорные точки пути на коллизии
| path | путь |
| maxDist | максимальное расстояние между опорными точками |
|
static |
разбить путь на части (partCnt - кол-во частей)
| path | путь |
| partCnt | количество разбиений каждого этапа |
| void PathFinder::updateCollider | ( | ) |
обновить коллайдер по сцене
|
protected |
построенный путь
|
protected |
затраченное время на планирование
|
protected |
коллайдер
|
protected |
конечное состояние
|
protected |
код ошибки
|
protected |
длина пути
|
protected |
флаг, готов ли планировщик, в конструкторе выставляется в false; бывает полезным, когда планировщику нужно подготовить значительный объём ресурсов, например, коллайдер может долго загружать модели
|
protected |
сцена
|
protected |
флаг, нужно ли выводить информацию во время поиска пути
|
protected |
начальное состояние
|
protected |
время начала работы планировщика
|
protected |
количество потоков планировщика
|
static |
Не удалось найти путь
|
static |
Нет ошибки
1.8.17