Buran Motion Planning Framework
Public Member Functions | Static Public Attributes | List of all members
bmpf::SolidSyncCollider Class Reference

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

#include <solid_sync_collider.h>

Inheritance diagram for bmpf::SolidSyncCollider:
Inheritance graph
[legend]
Collaboration diagram for bmpf::SolidSyncCollider:
Collaboration graph
[legend]

Public Member Functions

 SolidSyncCollider (unsigned int mutexCnt)
 
void init (std::vector< std::vector< std::string >> groupedModelPaths, bool subColliders) override
 
void paint (std::vector< Eigen::Matrix4d > matrices, bool onlyRobot) override
 
bool isCollided (std::vector< Eigen::Matrix4d > matrices) override
 
std::vector< float > getPoints (std::vector< Eigen::Matrix4d > matrices) override
 
std::vector< double > getBoxCoords (unsigned long robotNum, std::vector< Eigen::Matrix4d > matrices) override
 получить координаты куба, ограничивающего объём робота получить координаты куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из шести координат: min.x(), min.y(), min.z(), max.x(), max.y(), max.z() More...
 
std::vector< double > getBoxPoints (unsigned long robotNum, std::vector< Eigen::Matrix4d > matrices) override
 получить точки куба, ограничивающего объём робота получить точки куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из точек, по которым построится куб линиями GL_LINES ax, ay, az, bx, by, bz. More...
 
bool isCollided (std::vector< Eigen::Matrix4d > matrices, std::vector< int > robotIndexes) override
 проверка соответствует ли состояние сцены столкновению проверка соответствует ли состояние сцены (список матриц преобразований звеньев только для задействованных объектов) столкновению при этом учитываются только объекты с индексами из robotIndexes. More...
 

Static Public Attributes

const static int MAX_MUTES_CNT = 60
 

Detailed Description

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

Constructor & Destructor Documentation

◆ SolidSyncCollider()

SolidSyncCollider::SolidSyncCollider ( unsigned int  mutexCnt)
explicit

конструктор

Parameters
mutexCntколичество мьютексов

Member Function Documentation

◆ getBoxCoords()

std::vector<double> bmpf::SolidSyncCollider::getBoxCoords ( unsigned long  robotNum,
std::vector< Eigen::Matrix4d >  matrices 
)
inlineoverridevirtual

получить координаты куба, ограничивающего объём робота получить координаты куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из шести координат: min.x(), min.y(), min.z(), max.x(), max.y(), max.z()

Parameters
robotNumномер робота в списке роботов
matricesсписок матриц преобразований звеньев
Returns
получить координаты куба, ограничивающего объём робота

Implements bmpf::Collider.

◆ getBoxPoints()

std::vector<double> bmpf::SolidSyncCollider::getBoxPoints ( unsigned long  robotNum,
std::vector< Eigen::Matrix4d >  matrices 
)
inlineoverridevirtual

получить точки куба, ограничивающего объём робота получить точки куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из точек, по которым построится куб линиями GL_LINES ax, ay, az, bx, by, bz.

Parameters
robotNumномер робота в списке роботов
matricesсписок матриц преобразований звеньев
Returns
получить точки куба, ограничивающего объём робота

Implements bmpf::Collider.

◆ getPoints()

std::vector<float> bmpf::SolidSyncCollider::getPoints ( std::vector< Eigen::Matrix4d >  matrices)
inlineoverridevirtual

возвращает список всех координат полигона (вектор нормали и координаты вершины): nx, ny, nz, ax, ay, az, bx, by, bz, cx, cy, cz по списку матриц состояния

Parameters
matricesсписок матриц преобразований звеньев
Returns
возвращает список всех координат полигона

Implements bmpf::Collider.

◆ init()

void SolidSyncCollider::init ( std::vector< std::vector< std::string >>  groupedModelPaths,
bool  subColliders 
)
overridevirtual

инициализация коллайдера

Parameters
groupedModelPathsвектор векторов путей к моделям. это связано с тем, что сцена строится на основе набора описаний роботов каждый из них содержит список путей к своим моделям
subCollidersфлаг, нудно ли составить виртуальные сцены для каждого подмножества объектов сцены

Implements bmpf::Collider.

◆ isCollided() [1/2]

bool SolidSyncCollider::isCollided ( std::vector< Eigen::Matrix4d >  matrices)
overridevirtual

проверка соответствует ли состояние сцены столкновению

Parameters
matricesсписок матриц преобразований звеньев
Returns
флаг, соответствует ли состояние сцены столкновению

Implements bmpf::Collider.

◆ isCollided() [2/2]

bool SolidSyncCollider::isCollided ( std::vector< Eigen::Matrix4d >  matrices,
std::vector< int >  robotIndexes 
)
overridevirtual

проверка соответствует ли состояние сцены столкновению проверка соответствует ли состояние сцены (список матриц преобразований звеньев только для задействованных объектов) столкновению при этом учитываются только объекты с индексами из robotIndexes.

Parameters
matricesсписок матриц преобразований звеньев
robotIndexesиндексы роботов
Returns
флаг, соответствует ли состояние сцены столкновению

Implements bmpf::Collider.

◆ paint()

void bmpf::SolidSyncCollider::paint ( std::vector< Eigen::Matrix4d >  matrices,
bool  onlyRobot 
)
inlineoverridevirtual

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

Parameters
matricesсписок матриц преобразования из текущей СК звена в следующую
onlyRobotфлаг, нужно ли рисовать только роботов или ещё и статические объекты сцены

Implements bmpf::Collider.

Member Data Documentation

◆ MAX_MUTES_CNT

const static int bmpf::SolidSyncCollider::MAX_MUTES_CNT = 60
static

максимальное количество потоков


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