AURobotServers
4
|
#include <uresobj3d.h>
Public Member Functions | |
void | addObstacleParameters () |
bool | do3dCloudFromSvs (UImg3Dpoints *cloud) |
bool | do3dGroundPlane (UImg3Dpoints *cloud, bool doGndEdgeObst, bool doImg) |
find candidates for human detections. Estimates the ground plane from 3D cloud. More... | |
bool | do3dVoxels (UImg3Dpoints *cloud, bool justHuman, bool doImg) |
find candidates for human detections. Estimates the ground plane from 3D cloud. Isolates 3D voxel volumens, and filter human sized volumens. More... | |
void | doGndPlaneMask (int maskImgNum, UPlane plane, UImg3Dpoints *cloud, double cellSize, double planeDist, bool erode, bool dilate) |
bool | get3dCloud (const char *source, UImg3Dpoints **cloud) |
Get the point cloud from ing3d cloud source. The cloud is actually stored in the svs module, and a pointer the coud is provided only. Remember to lock it while processing and release after use. More... | |
bool | get3dCloudFromSvs (bool getAny, UImg3Dpoints **cloud) |
Get the newest point cloud from svs. The cloud is actually stored in the svs module, and a pointer the coud is provided only. Remember to lock it while processing and release after use. More... | |
UPlane | getGroundPlane () |
get estimated ground plane More... | |
double | getGroundPlaneQuality () |
get the quality of the ground-plane Quality is the relative count of ponts in the ground plane, relative to all points More... | |
virtual void | getObstacleGroupSettings (UObj3dGroup *og) |
virtual void | obstDataUpdated (UTime poseTime) |
virtual const char * | print (const char *preString, char *buff, int buffCnt) |
virtual const char * | snprint (const char *preString, char *buff, int buffCnt) |
UResObj3d () | |
virtual | ~UResObj3d () |
Public Member Functions inherited from UObj3dPool | |
void | addObstacle (UPolygon *newPoly, UPoseTime odoPose, bool isHuman, bool isGndBased) |
UObj3dGroup * | advanceNewGroup () |
void | clear () |
void | clearGrp (int idx) |
UObj3dGroup * | getGroup (int fromNewest) |
int | getGroupsCnt () |
UObj3dGroup * | getObstGrp (UPoseTime pt) |
void | print (const char *prestr) |
void | setLogFile (FILE *logFile) |
void | setNewGrpDist (double value) |
void | setNewGrpTime (double value) |
UObj3dPool () | |
virtual | ~UObj3dPool () |
Public Member Functions inherited from UResVarPool | |
int | addMethod (const char *formalName, const char *paramTypes, const char *comment) |
int | addMethodV (const char *formalName, const char *paramTypes, const char *comment) |
UVarPool * | addStruct (const char *name, const char *comment, bool copy=false) |
UVariable * | addVar (const char *name, const double initialValue, const char *type, const char *comment) |
UVariable * | addVar (const char *name, const char *initialValue, const char *type, const char *comment) |
UVariable * | addVarA (const char *name, const char *initialValue, const char *type, const char *comment) |
bool | callGlobal (const char *name, const char *paramOrder, char **strings, const double *doubles, double *value, UDataBase **returnStruct, int *returnStructCnt) |
bool | callGlobalV (const char *name, const char *paramOrder, UVariable **params, UDataBase **returnStruct, int *returnStructCnt) |
Call a method from the root var pool scope It may be in the structure direct (no '.') or in any sub-structure that the 'name.subname' indicate. More... | |
bool | callLocal (const char *name, const char *paramOrder, char **strings, const double *doubles, double *value, UDataBase **returnStruct, int *returnStructCnt) |
bool | callVS (const char *function, const char *stringParam) |
int | callVSCD (const char *function, const char *strPar, UDataBase *data, int cooSys) |
void | createBaseVar () |
virtual bool | createVarSpace (const int varCnt, const int structCnt, const int methCnt, const char *note, bool copy=false) |
bool | getGlobalString (const char *name, const char **value) |
bool | getGlobalValue (const char *name, double *value) |
bool | getGlobalValue (const char *name, const char **value) |
bool | getGlobalValue (const char *name, bool *value) |
bool | getGlobalValue (const char *name, UTime *value) |
bool | getLocalValue (const char *name, double *value) |
get a value in this variable tree More... | |
bool | getLocalValue (const char *name, bool *value) |
bool | getLocalValue (const char *name, UTime *value) |
double | getLocalValue (int idx) |
UPosition | getLocalValue3D (int idx) |
UPosRot | getLocalValue6D (int idx) |
bool | getLocalValueBool (int idx) |
int | getLocalValueInt (int idx) |
UTime | getLocalValueTime (int idx) |
const char * | getLogFileName () |
const char * | getVarDescription (int idx) |
UVarCalc * | getVarPool () |
virtual bool | gotAllResources (char *missingThese, int missingTheseCnt) |
bool | isLogFileOpen () |
bool | isLogFileOpen (const char *structName) |
bool | isVarPoolUpdated (int lastCnt, int *newCnt) |
void | logFileClose () |
bool | logFileOpen () |
void | logFileStart (const char *structName, bool open) |
virtual bool | methodCall (const char *name, const char *paramOrder, char **strings, const double *doubles, double *value, UDataBase **returnStruct=NULL, int *returnStructCnt=NULL) |
bool | setGlobalVar (const char *name, const double value, bool mayAdd) |
Assigns a value to a variable. The variable may be a part of a structure. More... | |
bool | setLocalVar (int idx, double value, const int element) |
bool | setLocalVar (const char *name, const double value, bool mayAdd) |
Assigns a value to a variable. The variable may be a part of a structure. More... | |
bool | setLocalVar3D (int idx, UPosition *value) |
bool | setLocalVar6D (int idx, UPosRot *value) |
bool | setLocalVarAdd (int idx, double value, const int element) |
bool | setLocalVarPose (int idx, UPose *value) |
virtual bool | setResource (UResBase *resource, bool remove) |
void | setVarPool (UVarCalc *sharedVarPool) |
int | updateQTvars (int structIdx) |
UResVarPool () | |
virtual | ~UResVarPool () |
Public Member Functions inherited from UResBase | |
void | createReplayVar (UVarPool *pool) |
virtual void | createResources () |
UCmdExe * | getCorePointer () |
char * | getLogFileName (char *fn, const int fnCnt) |
int | getResFuncIdx () |
const char * | getResID () |
int | getResVersion () |
bool | isA (const char *idStr) |
bool | isAlsoA (const char *id) |
virtual void | print (const char *preString) |
virtual void | saveSettings () |
void | setCorePointer (UCmdExe *serverCore) |
void | setResFuncIdx (int idx) |
virtual void | setResID (const char *id, const int version) |
virtual void | stop (bool) |
virtual void | updateReplayStatus () |
UResBase () | |
virtual | ~UResBase () |
Public Member Functions inherited from UReplay | |
void | addChild (UReplay *child) |
virtual bool | decodeReplayLine (char *) |
char * | getLogFileName (char *fn, const int fnCnt) |
char * | getReplayFileName (char *fn, const int fnCnt) |
int | getReplayLogLine () |
bool | isReplay () |
bool | isReplayFileOpen () |
void | removeChild (UReplay *child) |
virtual void | replayAdvanceTime (UTime untilTime) |
void | replaySetBaseFileName (const char *name, const char *preName="") |
void | replaySetFileName (const char *name) |
virtual bool | replayStep () |
int | replayStep (int steps) |
virtual bool | replayToTime (UTime untilTime) |
void | setParent (UReplay *parent) |
bool | setReplay (bool value) |
UReplay () | |
virtual | ~UReplay () |
Public Member Functions inherited from ULock | |
bool | lock () |
void | lockInit () |
void | post () |
bool | tryLock () |
bool | tryWait () |
ULock () | |
void | unlock () |
bool | wait () |
~ULock () | |
Public Member Functions inherited from UVarMethodImplement | |
virtual bool | methodCallV (const char *name, const char *paramOrder, UVariable *params[], UDataBase **returnStruct, int *returnStructCnt) |
virtual | ~UVarMethodImplement () |
Protected Member Functions | |
bool | addGroundObjects (UImg3Dpoints *cloud, double minZ, double maxZ, double maxX, double maxSep) |
void | approximatePolyLine (const CvPoint pnts[], bool pntOK[], const int pntsCnt, const float toll) |
int | countContourEdges (CvSeq *contours, int *largest) |
int | countContourLimits (CvSeq *contours, int *left, int *right, int *top, int *bottom, bool lookingLeft) |
int | findContour (UImage *imgMask, UImage *dest, CvPoint *flp, int flpMax, bool *tooHigh, bool *tooSmall, bool lookingLeft) |
float | findMostDistantVertex (const CvPoint pnts[], const int pntsCnt, int *idx) |
get most distant vertex from line between endpoints More... | |
CvSeqBlock * | findPolygonLargest (UImage *img, int *leftEdge, int *rightEdge) |
int | findPolygons (UImage *img, UImage *imgD, UImg3Dpoint **ps, const int psCnt, int scale) |
Extract polygons for z-slizes in this image. More... | |
int | findPolygonsOne (CvSeqBlock *block, UImg3Dpoint **ps, const int psCnt, UImg3Dpoint **pd, const int pdCnt, const int maxPoints, int scale) |
Extract just one polygon. More... | |
int | findPolygonsOnEdge (CvSeqBlock *block, UImg3Dpoint **ps, const int psCnt, int scale, int leftEdge, int rightEdge, int distLimit) |
Extract ground edge polygons, as obstacles. The polygons are returned in gnds[gndsCnt] The method is to convert edges on top line of the polygon in 'block' into obstacles, if thay are not on the left or right edge, and not further away than the distance limit (distLimit) More... | |
UImage * | makeGroundPlaneProfileImage (int inum1, int inum2, UImg3Dpoint **cloudPts, int cloudPtsCnt, int scale) |
void | paintGndPlane (int imgNum, UImg3Dpoints *cloud, double maxX, double maxZ, bool andBoxes, bool andGndPolygons) |
void | paintPolygonInImage (UImage *img, UImg3Dpoint **pd, const int pdCnt) |
Protected Member Functions inherited from UResVarPool | |
void | setDescription (const char *note, bool copy=false) |
Protected Member Functions inherited from UResBase | |
UResBase * | getStaticResource (const char *resName, bool mayCreate, bool staticOnly=true) |
get a pointer to a static resource. More... | |
Protected Attributes | |
UPlane | gndPlaneC |
double | gndPlaneQ |
UPlane | gndPlaneR |
UTime | gndPlaneTime |
UPolygon40 * | gnds [MAX_GND_POLYGONS] |
int | gndsCnt |
UGrid3D * | grid |
unsigned int | lastSvsSerial |
ULogFile | loghum |
UObj3dPool * | pool |
CvMemStorage * | storage |
UVariable * | varBBmaxDX |
box finder parameter maximum X extend More... | |
UVariable * | varBBmaxDY |
max box (human) filter y extend More... | |
UVariable * | varBBmaxZ |
maximum height for human finder More... | |
UVariable * | varBBmerge |
should bounding boxex be allowed to merge More... | |
UVariable * | varBBminVoxCnt |
minimum voxel cound More... | |
UVariable * | varBBminX |
humans closer to camera than this is assumed an error More... | |
UVariable * | varBBminZ |
humans lower than this are ignored More... | |
UVariable * | varCombineDist |
UVariable * | varDistMaxX |
index to maximum usable 3D distance More... | |
UVariable * | varGndFilter |
should ground filter on voxels be used More... | |
UVariable * | varGndFilterCell |
filter cell size, compared to voxed cell size (0.5 gives 4 times as many cellse) More... | |
UVariable * | varGndFilterDilate |
should ground filter on voxels be dilate-eroded More... | |
UVariable * | varGndFilterErode |
should ground filter on voxels be eroded 1 more than dilate More... | |
UVariable * | varGndMaxZ |
index to maximum Z for gorund finding More... | |
UVariable * | varGndMinQ |
minimum quality (share of inliers relative to all) to use plane estamate More... | |
UVariable * | varGndMinZ |
index to minimum Z for gorund finding More... | |
UVariable * | varGndPolyScale |
number of pixels per ground polygin image pixel before segmentation More... | |
UVariable * | varGndRedFac |
point reduction factor for ground estimate (to save time) def = 3 More... | |
UVariable * | varGridSize |
voxel cell size (in meter) More... | |
UVariable * | varGroup |
UVariable * | varGrpMaxDist |
UVariable * | varGrpMaxTime |
UVariable * | varGrps |
UVariable * | varMinDens |
minimum voxel density per footprint square meter More... | |
UVariable * | varMinDensCnt |
minimum voxel density to be tested for voxel blobs with up to this number of cells More... | |
UVariable * | varMinRoofHgt |
minimum height for roof obstacles More... | |
UVariable * | varObstMerge |
UVariable * | varUpdateTime |
Protected Attributes inherited from UObj3dPool | |
UObj3dGroup * | groups [MAX_OBSTACLE_GROUPS] |
int | groupsCnt |
FILE * | logo |
int | newest |
double | newGroupTime |
double | newGrpDist |
unsigned long | nextSerial |
Protected Attributes inherited from UResBase | |
int | resFuncIdx |
char | resID [MAX_RESOURCE_ID_LENGTH] |
char | resIsAlso [MAX_RESOURCE_ISALSO_LENGTH] |
int | resVersion |
Protected Attributes inherited from UReplay | |
bool | replay |
FILE * | replayFile |
char | replayFileName [REPLAY_FILE_NAME_LENGTH] |
replay filename More... | |
char | replayLine [MAX_LOG_LINE_LENGTH] |
int | replayLogLine |
UReplay * | replayParent |
UTime | replayTimeNext |
Static Protected Attributes | |
static const int | MAX_GND_POLYGONS = 50 |
Static Protected Attributes inherited from UReplay | |
static const int | MAX_LOG_LINE_LENGTH = 10000 |
static const int | REPLAY_FILE_NAME_LENGTH = 264 |
max length of replay filename More... | |
Private Member Functions | |
int | getBlockArea (CvSeqBlock *block, int *leftEdge, int *rightEdge) |
void | UResObj3dInit () |
Additional Inherited Members | |
Static Public Member Functions inherited from UResVarPool | |
static const char * | getResClassID () |
Public Attributes inherited from UReplay | |
bool | replayTimeAdvancePending |
UTime | replayTimeNow |
Static Public Attributes inherited from UObj3dPool | |
static const int | MAX_OBSTACLE_GROUPS = 100 |
This is the shared resource class. It must enherit from the resource base class (or one of its decendent) as shown.
|
inline |
Constructor
|
virtual |
Destructor
|
protected |
Extract the ground plane polygon object
References UImage::camDevice, UImage::clear(), UImg3Dpoint::column, UImage::cvArr(), UImage::getData(), UImagePool::getImage(), UImage::getPixRef(), UPolygon::getPoint(), UPolygon::getPointsCnt(), UImage::imageNumber, img, UImage::imgTime, MAX_IMG_NAME_SIZE, UImage::name, UImg3Dpoints::p3d, UImg3Dpoints::p3dCnt, UImage::paintGridAligned(), UImg3Dpoint::pos, UImg3Dpoint::q, roundi(), UImg3Dpoints::serial, UPixel::set(), UImage::setSize(), UImg3Dpoints::time, UImage::updated(), UPosition::x, UPosition::y, and UPosition::z.
void UResObj3d::addObstacleParameters | ( | ) |
Add special variable parameters for obstacle management
|
protected |
|
protected |
Count edges in contour sequebnce
|
protected |
Find square limits of found contour returns the point cont, and if limit pointers != NULL the left, right, top and bottol limits of the points in the sequence.
bool UResObj3d::do3dCloudFromSvs | ( | UImg3Dpoints * | cloud | ) |
Get fresh 3D cloud data from svs system and update the object pool as needed.
getAny | takes any data from SVS, if false, then only new data (based on serial number) |
References UResPoseHist::getPoseAtTime(), UImg3Dpoints::time, and UImg3Dpoints::toRobotCoordinates().
bool UResObj3d::do3dGroundPlane | ( | UImg3Dpoints * | cloud, |
bool | doGndEdgeObst, | ||
bool | doImg | ||
) |
find candidates for human detections. Estimates the ground plane from 3D cloud.
cloud | the 3D cloud to be processed. |
doGndEdgeObst | make obstacles from edge of ground polygone |
doImg | if true, then more debug images are produced. |
References UImg3Dpoints::add(), UPlane::clear(), UPosRot::getCamToRobPlane(), UPoseTime::getPoseAtTime(), UImg3Dpoints::getRansacPlane(), UPosRot::getRobToCamPlane(), UTime::getTimePassed(), img, UImg3Dpoints::inSensorCoordinates, UTime::now(), UImg3Dpoints::p3d, UImg3Dpoints::p3dCnt, UImg3Dpoint::pos, UImg3Dpoints::pose, UTime::print(), UImg3Dpoint::q, roundi(), UPoseTime::t, UImg3Dpoints::time, UImg3Dpoints::toRobotCoordinates(), UPosition::x, and UPosition::z.
Referenced by UFuncObj3d::handleCloud().
bool UResObj3d::do3dVoxels | ( | UImg3Dpoints * | cloud, |
bool | justHuman, | ||
bool | doImg | ||
) |
find candidates for human detections. Estimates the ground plane from 3D cloud. Isolates 3D voxel volumens, and filter human sized volumens.
cloud | the 3D cloud to be processed. |
justHuman | save only those obstacles that are classified human (else all obstacles) |
doImg | if true, then more debug images are produced. |
References UGridBBoxes::bb, UGridBBoxes::bbCnt, UImg3Dpoint::blue(), UImage::camDevice, UImage::clear(), UImage::cvArr(), UGridBBox::footprint, UImagePool::getImage(), UResPoseHist::getPoseAtTime(), UTime::getTimePassed(), UImg3Dpoint::gray(), UGridBBox::human, UImage::imageNumber, UImage::imgTime, MAX_IMG_NAME_SIZE, UImage::name, UTime::now(), UImg3Dpoints::p3d, UImg3Dpoints::p3dCnt, UImg3Dpoint::pos, UImg3Dpoint::red(), UImg3Dpoints::serial, UImage::setSize(), UPoseTime::t, UImg3Dpoints::time, UImg3Dpoints::toRobotCoordinates(), UImage::updated(), UGridBBox::valid, and UPosition::x.
Referenced by UFuncObj3d::handleCloud().
void UResObj3d::doGndPlaneMask | ( | int | maskImgNum, |
UPlane | plane, | ||
UImg3Dpoints * | cloud, | ||
double | cellSize, | ||
double | planeDist, | ||
bool | erode, | ||
bool | dilate | ||
) |
Paint ground plane in-laiers, and do the needed filtering for use as visible ground cells
maskImgNum | is the image number in inage pool for result mask image |
plane | is the best estimated ground plane. |
cloud | is the clouds to include in the mask |
cellSize | is the image cell sixe |
planeDist | is the maximum distance from ground-plane to cloud-point to put in mask |
erode | erode one more than dilate |
dilate | dilate and erode (once) |
References UImage::camDevice, UImage::clear(), UImage::cvArr(), UPlane::dist(), UImagePool::getImage(), UImage::imageNumber, UImage::imgTime, MAX_IMG_NAME_SIZE, UImage::name, UImg3Dpoints::p3d, UImg3Dpoints::p3dCnt, UImg3Dpoint::pos, roundi(), UImg3Dpoints::serial, UImage::setPixUChar(), UImage::setSize(), UImg3Dpoints::time, UImage::updated(), UPosition::x, and UPosition::y.
|
protected |
Test routine to segment patches of 3D detection
References UImage::cvArr(), and UTime::Now().
|
protected |
get most distant vertex from line between endpoints
pnts | is first element in array of (pixel) points |
pntsCnt | is number of elements to be investigated |
idx | is pointer, where index of most distant vertex is to be returned. |
References U2Dline::distanceSigned(), and U2Dline::set2P().
|
protected |
Find largest blob in this image using openCV segmentation.
img | is the 8-bit gray scale image, where contours with value >0 searched. |
leftEdge | will retruen the image left edge of the largest polygon if not NULL |
rightEdge | will retruen the image right edge of the largest polygon if not NULL |
References a, and UImage::cvArr().
|
protected |
Extract polygons for z-slizes in this image.
img | is the source BW image |
imgD | is a potential debug image where to paint the polygon |
ps | is the original slized 3D point cloud |
psCnt | is the number of points in the source point cloud |
pd | is the destination array for filtered polygon |
pdCnt | is the allocated number of elements in that polygon |
scale | is the number of pixels in source image for each pixel in profile image |
References UPolygon::add(), UPolygon::clear(), UImage::cvArr(), UPolygon40::MAX_POINTS, and UImg3Dpoint::pos.
|
protected |
Extract just one polygon.
block | is the structure to be converted |
ps | is the original slized 3D point cloud |
psCnt | is the number of points in the source point cloud |
pd | is the destination array for filtered polygon |
pdCnt | is the allocated number of elements in pd destination array |
scale | is the number of pixels in source image for each pixel in profile image |
References UImg3Dpoint::column, UImg3Dpoint::q, and UImg3Dpoint::row.
|
protected |
Extract ground edge polygons, as obstacles. The polygons are returned in gnds[gndsCnt] The method is to convert edges on top line of the polygon in 'block' into obstacles, if thay are not on the left or right edge, and not further away than the distance limit (distLimit)
block | is the structure to be converted |
ps | is the original slized 3D point cloud |
psCnt | is the number of points in the source point cloud |
scale | is the number of pixels in source image for each pixel in profile image |
leftEdge | is the left edge of the obstacle area (visibility limit) |
rightEdge | is the right edge of the obstacle area (visibility limit) |
distLimit | is the distance limit "visibility limit" |
References UPolygon::add(), UPolygon::clear(), UImg3Dpoint::column, UPolygon::extractConvexTo(), UPolygon::getPointsCnt(), UImg3Dpoint::pos, UImg3Dpoint::q, UImg3Dpoint::row, UPosition::x, UPosition::y, and UPosition::z.
bool UResObj3d::get3dCloud | ( | const char * | source, |
UImg3Dpoints ** | cloud | ||
) |
Get the point cloud from ing3d cloud source. The cloud is actually stored in the svs module, and a pointer the coud is provided only. Remember to lock it while processing and release after use.
source | is a string with the plug-in name of the source, i.e. a 'source'.get3d() method call must be available (see var 'source'). |
cloud | is where the function returns a pointer to the 3D point cloud, if any is found. |
References data, and UDataBase::isA().
Referenced by UFuncObj3d::handleCloud().
bool UResObj3d::get3dCloudFromSvs | ( | bool | getAny, |
UImg3Dpoints ** | cloud | ||
) |
Get the newest point cloud from svs. The cloud is actually stored in the svs module, and a pointer the coud is provided only. Remember to lock it while processing and release after use.
getAny | if false, then an imageset with a new serial number is accepted, else any serial number will do |
cloud | is where the function returns a pointer to the 3D point cloud, if any is found. |
References data, UDataBase::isA(), and roundi().
Referenced by UFuncObj3d::handleCloud().
|
private |
Get area of a openCV CvSeqBlk structure. The method is (sum(x1*y2 - x2*y1))/2 for all points and the first as the last. Calculating in integer space.
block | is the block in question |
|
inline |
get estimated ground plane
Referenced by UFuncObj3d::handleCloud().
|
inline |
get the quality of the ground-plane Quality is the relative count of ponts in the ground plane, relative to all points
References img.
Referenced by UFuncObj3d::handleCloud().
|
virtual |
Load parameter values from current settings pool to this obstacle group
Reimplemented from UObj3dPool.
References UObj3dGroup::setMergeDistance().
|
protected |
Find ground polygons using an image (profile) projection of the pixel inliers for the estimated ground plane,
inum1 | is the image pool number to be used for the source image |
inum2 | is the other image pool number to use for interim data |
cloudPts | is the inliers close to the ground plane |
cloudPtsCnt | is the number of points |
scale | is the pixel size if the filter image for each source image. |
References UImage::clear(), UImg3Dpoint::column, UImage::cvArr(), UImagePool::getImage(), img, MAX_IMG_NAME_SIZE, UImage::name, UImage::setPixUChar(), UImage::setSize(), and UImage::updated().
|
virtual |
Obstacle data is updated - tell resource
Reimplemented from UObj3dPool.
Referenced by UFuncObj3d::handleCommand().
|
protected |
Paint all 3D points in the ground plane in xz view and in xy view
imgNum | is the image pool image number to use |
cloud | is the cloud of 3D points |
maxX | is the maximum X value in image |
maxZ | is the maximum Z distance from ground plane to paint |
andBoxes | should bounding boxes be painted too |
andGndPolygons | paint also the polygons in the gnsd array |
References UGridBBoxes::bb, UGridBBoxes::bbCnt, UImage::camDevice, UImage::clear(), UImage::cvArr(), UGridBBox::footprint, UGridBBox::getCol(), UImagePool::getImage(), UPose::getMapToPose(), UResPoseHist::getNewest(), UPolygon::getPoints(), UPolygon::getPointsCnt(), UImage::height(), UGridBBox::human, UImage::imageNumber, UImage::imgTime, MAX_IMG_NAME_SIZE, UImage::name, UImg3Dpoints::p3d, UImg3Dpoints::p3dCnt, UImage::paintGridAligned(), UImg3Dpoint::pos, UGridBBox::roof, roundi(), UImg3Dpoints::serial, UImage::setSize(), UGridBBox::sideView, UImg3Dpoints::time, UPixel::toCvRGB(), UImg3Dpoints::toRobotCoordinates(), UImage::updated(), UGridBBox::valid, UImage::width(), UPosition::x, UPosition::y, and UPosition::z.
|
protected |
Paint a polyline in this image from these points
References UImg3Dpoint::column, UImage::cvArr(), UImg3Dpoint::row, and UImage::updated().
|
inlinevirtual |
print status to a string buffer
Reimplemented from UResVarPool.
|
virtual |
print status to a string buffer
References mini(), and UObstacleGroup::print().
|
private |
Remaining initialization
|
protected |
best groundplane found in camera coordinates
|
protected |
quality - percentage of pixels in gndPlane
|
protected |
best groundplane found in robot coordinates
|
protected |
detection time for current ground plane estimate
|
protected |
array of polygons
|
protected |
Number of actual polygons
|
protected |
voxel grid for filtering in 3D image
|
protected |
Lase serial number for image (svs) source
|
protected |
human logfile
|
staticprotected |
|
protected |
Storage for detected obstacles
|
protected |
Storage used by openCV
|
protected |
box finder parameter maximum X extend
|
protected |
max box (human) filter y extend
|
protected |
maximum height for human finder
|
protected |
should bounding boxex be allowed to merge
|
protected |
minimum voxel cound
|
protected |
humans closer to camera than this is assumed an error
|
protected |
humans lower than this are ignored
|
protected |
Index to variable in variable pool for fast access - obstacle merge distance (outdoor)
|
protected |
index to maximum usable 3D distance
|
protected |
should ground filter on voxels be used
|
protected |
filter cell size, compared to voxed cell size (0.5 gives 4 times as many cellse)
|
protected |
should ground filter on voxels be dilate-eroded
|
protected |
should ground filter on voxels be eroded 1 more than dilate
|
protected |
index to maximum Z for gorund finding
|
protected |
minimum quality (share of inliers relative to all) to use plane estamate
|
protected |
index to minimum Z for gorund finding
|
protected |
number of pixels per ground polygin image pixel before segmentation
|
protected |
point reduction factor for ground estimate (to save time) def = 3
|
protected |
voxel cell size (in meter)
|
protected |
newest obstacle group
|
protected |
Index to variable in variable pool for fast access - max pose distance in one group
|
protected |
Index to variable in variable pool for fast access - max time spend in one group
|
protected |
number of obstacle groups in pool
|
protected |
minimum voxel density per footprint square meter
|
protected |
minimum voxel density to be tested for voxel blobs with up to this number of cells
|
protected |
minimum height for roof obstacles
|
protected |
Index to variable in variable pool for fast access - should obstacles actually be merged (mostly for debug if false)
|
protected |
Time (tod) of last obstacle update