Buran Motion Planning Framework
Public Member Functions | Protected Attributes | List of all members
MultiRobotPathFinder Class Reference

#include <multirobot_path_finder.h>

Inheritance diagram for MultiRobotPathFinder:
Inheritance graph
[legend]
Collaboration diagram for MultiRobotPathFinder:
Collaboration graph
[legend]

Public Member Functions

 MultiRobotPathFinder (const std::shared_ptr< bmpf::Scene > &scene, bool showTrace, unsigned int maxOpenSetSize, int gridSize, unsigned int maxNodeCnt, int threadCnt=1)
 
virtual ~MultiRobotPathFinder ()
 
void paint (const std::vector< double > &state, bool onlyRobot) override
 
bool findTick (std::vector< double > &state) override
 
void prepare (const std::vector< double > &startState, const std::vector< double > &endState) override
 
void buildPath () override
 
std::vector< std::vector< double > > checkTask (const std::vector< double > &startState, const std::vector< double > &endState, double opacity)
 проверка задания проверка задания, возвращает пустой вектор, если маршрут можно строить штатным образом, в противном случае сохраняет в _buildedPath готовый маршрут (из стартового и конечного положений) и возвращает его More...
 
- 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 ()
 
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 Attributes

std::vector< std::shared_ptr< bmpf::NodeGridPathFinder > > _singleRobotPathFinders
 
unsigned int _maxNodeCnt
 
unsigned int _maxOpenSetSize
 
int _gridSize
 
int _scaleGridSize
 
std::vector< double > _prevState
 
std::unordered_set< int > _pfsNotReadyIndexes
 
std::shared_ptr< bmpf::NodeGridPathFinder_wholeScenePathFinder
 
std::shared_ptr< bmpf::NodeGridPathFinder_scaleWholeScenePathFinder
 
- 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::PathFinder
static const int NO_ERROR = -1
 
static const int ERROR_CAN_NOT_FIND_PATH = 1
 

Detailed Description

Планировщик для сцены с несколькими роботами. Каждый такт планирования он сначала запускает для каждого робота в отдельности. Потом, если нет коллизий на общей сцене, то переходит к следующему, если нет, то откатывает к предыдущему состоянию всех роботов, кроме одного и повторяет планирование из предыдущего состояния

Логика работы планировщика следующая: 1) подготовка к тактам поиска пути 2) выполнение тактов поиска пути с попутным заполнением тех или иных структур 3) если путь найден из этих структур собирается путь и сохраняется в переменную _buildedPath

Constructor & Destructor Documentation

◆ MultiRobotPathFinder()

MultiRobotPathFinder::MultiRobotPathFinder ( const std::shared_ptr< bmpf::Scene > &  scene,
bool  showTrace,
unsigned int  maxOpenSetSize,
int  gridSize,
unsigned int  maxNodeCnt,
int  threadCnt = 1 
)
inline

конструктор

Parameters
sceneсцена
showTraceфлаг, нужно ли выводить информацию во время поиска пути
maxOpenSetSizeмаксимальный размер закрытого множества
gridSizeразмер сетки планирования
maxNodeCntмаксимальное кол-во нод в закрытом множестве
threadCntколичество потоков планировщика

◆ ~MultiRobotPathFinder()

virtual MultiRobotPathFinder::~MultiRobotPathFinder ( )
inlinevirtual

Деструктор

Member Function Documentation

◆ buildPath()

void MultiRobotPathFinder::buildPath ( )
overridevirtual

построить путь, построенный путь должен быть сохранён в переменную _buildedPath

Implements bmpf::PathFinder.

◆ checkTask()

std::vector< std::vector< double > > MultiRobotPathFinder::checkTask ( const std::vector< double > &  startState,
const std::vector< double > &  endState,
double  opacity 
)

проверка задания проверка задания, возвращает пустой вектор, если маршрут можно строить штатным образом, в противном случае сохраняет в _buildedPath готовый маршрут (из стартового и конечного положений) и возвращает его

Parameters
startStateначальное состояние
endStateконечное состояние
opacityточность проверки
Returns
пустой вектор, если маршрут можно строить, вектор из стартового и конечного состояний, если нельзя

◆ findTick()

bool MultiRobotPathFinder::findTick ( std::vector< double > &  state)
overridevirtual

такт поиска

Parameters
stateтекущее состояние планировщика
Returns
возвращает true, если планирование закончено

Implements bmpf::PathFinder.

◆ paint()

void MultiRobotPathFinder::paint ( const std::vector< double > &  state,
bool  onlyRobot 
)
overridevirtual

рисование сцены планировщика

Parameters
stateсостояние
onlyRobotфлаг, нужно ли рисовать только роботов

Reimplemented from bmpf::PathFinder.

◆ prepare()

void MultiRobotPathFinder::prepare ( const std::vector< double > &  startState,
const std::vector< double > &  endState 
)
overridevirtual

подготовка к планированию

Parameters
startStateначальное состояние
endStateконечное состояние

Implements bmpf::PathFinder.

Member Data Documentation

◆ _gridSize

int MultiRobotPathFinder::_gridSize
protected

количество ячеек сетки планирования вдоль каждой из координат

◆ _maxNodeCnt

unsigned int MultiRobotPathFinder::_maxNodeCnt
protected

максимальное кол-во нод

◆ _maxOpenSetSize

unsigned int MultiRobotPathFinder::_maxOpenSetSize
protected

максимальный размер открытого множества

◆ _pfsNotReadyIndexes

std::unordered_set<int> MultiRobotPathFinder::_pfsNotReadyIndexes
protected

индексы не готовых планировщиков

◆ _prevState

std::vector<double> MultiRobotPathFinder::_prevState
protected

предыдущее состояние сцены

◆ _scaleGridSize

int MultiRobotPathFinder::_scaleGridSize
protected

количество ячеек сетки планирования вдоль каждой из координат с возможностью увеличения

◆ _scaleWholeScenePathFinder

std::shared_ptr<bmpf::NodeGridPathFinder> MultiRobotPathFinder::_scaleWholeScenePathFinder
protected

планировщик для всей сцены с возможностью уменьшения ячейки сетки планирования

◆ _singleRobotPathFinders

std::vector<std::shared_ptr<bmpf::NodeGridPathFinder> > MultiRobotPathFinder::_singleRobotPathFinders
protected

планировщики отдельных роботов

◆ _wholeScenePathFinder

std::shared_ptr<bmpf::NodeGridPathFinder> MultiRobotPathFinder::_wholeScenePathFinder
protected

планировщик для всей сцены


The documentation for this class was generated from the following files: