| Buran Motion Planning Framework
    | 
#include <one_direction_sync_path_finder.h>


| Public Member Functions | |
| OneDirectionSyncPathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, unsigned int maxOpenSetSize, int gridSize, unsigned int maxNodeCnt, unsigned int kG=1, unsigned int kD=0, int threadCnt=1) | |
|  Public Member Functions inherited from bmpf::OneDirectionPathFinder | |
| OneDirectionPathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, unsigned int maxOpenSetSize, int gridSize, unsigned int maxNodeCnt, unsigned int kG=1, unsigned int kD=0, int threadCnt=1) | |
|  Public Member Functions inherited from bmpf::NodeGridPathFinder | |
| NodeGridPathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, int gridSize, unsigned int maxNodeCnt, unsigned int kG=1, unsigned int kD=0, int threadCnt=1) | |
| std::vector< std::vector< double > > | getAllProcessedStates () | 
| bool | findTick (std::vector< double > &state) override | 
| std::shared_ptr< PathNode > | tryToGetNeighborPtr (std::vector< int > newCoords, const std::shared_ptr< PathNode > &parentNode, double sum) | 
| void | buildPath () override | 
| void | prepare (const std::vector< double > &startState, const std::vector< double > &endState) override | 
| void | prepare (std::vector< int > &startState, std::vector< int > &endState) override | 
| std::vector< double > | getCurrentState () | 
| void | nextNode () | 
| double | _findLinkDistance (std::vector< int > &a, std::vector< int > &b) | 
|  Public Member Functions inherited from bmpf::GridPathFinder | |
| GridPathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, int gridSize, int threadCnt=1) | |
| std::vector< double > | coordsToState (std::vector< int > &coords) const | 
| std::vector< double > | coordsToState (std::vector< int > coords, unsigned long robotNum) | 
| bool | checkCoords (std::vector< int > coords) | 
| std::vector< std::vector< double > > | findGridPath (std::vector< int > &startCoords, std::vector< int > &endCoords, int &errorCode) | 
| bool | checkCoords (const std::vector< int > &coords, unsigned int robotNum) | 
| virtual std::vector< int > | stateToCoords (std::vector< double > state) | 
| std::vector< std::vector< double > > | checkTask (const std::vector< double > &startState, const std::vector< double > &endState, double opacity) | 
| проверка задания проверка задания, возвращает пустой вектор, если маршрут можно строить штатным образом, в противном случае сохраняет в _buildedPath готовый маршрут (из стартового и конечного положений) и возвращает его  More... | |
| const std::vector< std::vector< int > > & | getBuildedGridPath () const | 
| const std::vector< double > & | getStartStateFromCoords () const | 
| const std::vector< double > & | getEndStateFromCoords () const | 
| const std::vector< double > & | getGridSteps () const | 
| const double & | getMaxDist () const | 
| const std::vector< std::vector< double > > & | getGroupedGridSteps () const | 
|  Public Member Functions inherited from bmpf::PathFinder | |
| 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) | 
| 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 | 
| Protected Member Functions | |
| std::shared_ptr< PathNode > | _forEachNeighbor (std::shared_ptr< PathNode > currentNode, std::vector< int > &endCoords) override | 
|  Protected Member Functions inherited from bmpf::NodeGridPathFinder | |
| void | _moveNodeFromOpenedToClosed (const std::shared_ptr< PathNode > &node) | 
| bool | _findCoordsInClosedList (std::vector< int > &coords) | 
| bool | _findCoordsInOpenedList (std::vector< int > &coords) | 
| double | _getPathNodeWeight (std::vector< int > curCoords, std::vector< int > &endCoords) | 
|  Protected Member Functions inherited from bmpf::GridPathFinder | |
| virtual std::vector< int > | _findFreePoint (std::vector< int > coords, unsigned long pos, unsigned long maxPos, const std::vector< double > &state) | 
| поиск координат соседней свободной точки Это - рекуррентный метод, он пробует прибавить -1, 0 и 1 к каждой из координат из интервала [pos, maxPos] включительно  More... | |
| Protected Attributes | |
| std::vector< std::vector< std::vector< int > > > | _groupedOffsetList | 
|  Protected Attributes inherited from bmpf::OneDirectionPathFinder | |
| std::vector< unsigned long > | _offsetStandartIndexes | 
| std::vector< std::vector< int > > | _offsetList | 
| unsigned int | _maxOpenSetSize | 
|  Protected Attributes inherited from bmpf::NodeGridPathFinder | |
| unsigned int | _kG | 
| unsigned int | _kD | 
| std::shared_ptr< PathNode > | _endNode | 
| std::vector< std::shared_ptr< PathNode > > | _closedNodes | 
| std::unordered_set< long > | _closedStateConvCodeSet | 
| std::set< PathNodePtr > | _openSet | 
| unsigned int | _maxNodeCnt | 
|  Protected Attributes inherited from bmpf::GridPathFinder | |
| std::vector< double > | _gridSteps | 
| std::vector< std::vector< double > > | _groupedGridSteps | 
| int | _gridSize | 
| std::vector< int > | _startCoords | 
| std::vector< int > | _endCoords | 
| std::vector< double > | _startStateFromCoords | 
| std::vector< double > | _endStateFromCoords | 
| double | _maxDist | 
| bool | _coordsUsed = false | 
| std::vector< std::vector< int > > | _buildedGridPath | 
|  Protected Attributes inherited from bmpf::PathFinder | |
| 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 | 
| Additional Inherited Members | |
|  Static Public Member Functions inherited from bmpf::PathFinder | |
| 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 inherited from bmpf::NodeGridPathFinder | |
| static const int | ERROR_REACHED_MAX_NODE_CNT = 4 | 
|  Static Public Attributes inherited from bmpf::GridPathFinder | |
| static const int | ERROR_CAN_NOT_FIND_FREE_START_POINT = 2 | 
| static const int | ERROR_CAN_NOT_FIND_FREE_END_POINT = 3 | 
|  Static Public Attributes inherited from bmpf::PathFinder | |
| static const int | NO_ERROR = -1 | 
| static const int | ERROR_CAN_NOT_FIND_PATH = 1 | 
@brief Многопоточный планировщик со смещениями вдоль одной из координат
Многопоточный планировщик со смещениями вдоль одной из координат (поворот на каждом шаге ровно звена робота). Реализовано это с помощью списков смещений, которые перебираются при каждом вызове _forEachNeighbor
Отличается от предка тем, что все смещения разбиваются по пакетам, размером, равным количеству потоков, в цикле каждый пакет по очереди перебирается заданным количеством потоков (использует многопоточный коллайдер)
Cуть планирования на сетке заключается в том, что каждой вещественной координате состояния мы ставим в соответствие целочисленную координату из заданного диапазона. В данном планировщике предполагается, что каждая координата состояния разбивается на равное число точек (_gridSize)
Получается, что в данном планировщике одно и тоже пространство конфигураций описывается двумя пространствами: вещественным пространством состояний и целочисленным пространством координат. При этом размерности пространств совпадают.
Методы, реализованные в этом классе, позволяют переходить от вещественного пространства к целочисленному и наоброт.
Логика работы планировщика следующая: 1) подготовка к тактам поиска пути 2) выполнение тактов поиска пути с попутным заполнением тех или иных структур 3) если путь найден из этих структур собирается путь и сохраняется в переменную _buildedPath 
| 
 | inline | 
конструктор
| scene | сцена | 
| showTrace | флаг, нужно ли выводить информацию во время поиска пути | 
| maxOpenSetSize | максимальный размер открытого множества | 
| gridSize | размер сетки планирования | 
| maxNodeCnt | максимальное кол-во нод в закрытом множестве | 
| kG | коэффициент разницы в углах поворота сочленений робота | 
| kD | коэффициент разницы в положениях звеньев робота | 
| threadCnt | количество потоков планировщика | 
| 
 | overrideprotectedvirtual | 
для всех соседей текущей ноды метод должен добавить только подходящих в множество _openSet, если один из соседей имеет целевые указания (т.е. найден путь), то возвращаем указатель на эту ноду, в противном случае должен быть возвращён nullptr
| currentNode | текущая нода | 
| endCoords | целевые координаты | 
Reimplemented from bmpf::OneDirectionPathFinder.
| 
 | protected | 
список смещений, сгруппированый по пакетам, размером равным кол-ву потоков
 1.8.17
 1.8.17