AURobotServers
4
|
Public Member Functions | |
virtual bool | handleCommand (UServerInMsg *msg, void *extra) |
UFuncBall () | |
virtual | ~UFuncBall () |
Public Member Functions inherited from UFunctionCamBase | |
virtual void | createResources () |
UImage * | getImage (UServerInMsg *msg, void *extra) |
virtual bool | setResource (UResBase *ressource, bool remove) |
UFunctionCamBase () | |
virtual | ~UFunctionCamBase () |
Public Member Functions inherited from UFunctionImgBase | |
virtual void | setCmdHandler (UCmdExe *cmdExe) |
void | showImagesAsDefault (bool show) |
UFunctionImgBase () | |
virtual | ~UFunctionImgBase () |
Public Member Functions inherited from UFunctionBase | |
bool | addResource (UResBase *resource, UFunctionBase *owner) |
void | closeLogfile () |
virtual const char * | commandList () |
const char * | getAliasName () |
const char * | getLoadedFileName () |
void * | getLoadedModuleRef () |
virtual bool | gotAllResources (char *missingThese, int missingTheseCnt) |
bool | isMine (const char *cmdName) |
bool | isStatic () |
is the module loaded as static A module is static if the ldFilename has a length of zero. More... | |
virtual const char * | name () |
bool | newCmd (UServerInMsg *newMsg, UDataBase *extra) |
bool | newCommand (UServerInMsg *newMsg, void *extra) |
bool | openLogfile (const char *name) |
void | print (const char *preString) |
virtual void | resourceUpdated () |
bool | sendEndTag (UServerInMsg *msg) |
bool | sendEndTag () |
bool | sendFullTag (const char *attributes) |
bool | sendHelpDone (UServerInMsg *msg) |
bool | sendHelpDone () |
bool | sendHelpStart (UServerInMsg *msg, const char *subject) |
bool | sendHelpStart (const char *subject) |
bool | sendHelpStart () |
bool | sendMsg (UServerInMsg *msg, const char *message, int size) |
bool | sendMsg (const char *message) |
bool | sendMsg (UServerInMsg *msg, const char *message) |
bool | sendMsg (int clientIdx, const char *message, int size) |
bool | sendMsgInt (int clientIdx, const char *message) |
bool | sendStartTag (const char *attributes) |
bool | sendText (UServerInMsg *msg, const char *text) |
bool | sendText (const char *text) |
virtual void | setAliasName (const char *name) |
virtual void | setCommand (const char *cmdList, const char *name, const char *note) |
void | setLoadedModuleRef (void *module, const char *moduleFileName) |
virtual void | setLoadTime (UTime) |
void | setName (const char *name) |
void | setVerbose (bool value) |
UFunctionBase () | |
virtual | ~UFunctionBase () |
Public Member Functions inherited from UCallBack | |
bool | addOnEvent (UOnEvent *dataObject) |
virtual bool | onEvent (const char *interface, const char *dataType, void *data) |
UCallBack () | |
virtual | ~UCallBack () |
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 () |
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) |
virtual const char * | print (const char *preString, char *buff, int buffCnt) |
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) |
void | setVarPool (UVarCalc *sharedVarPool) |
int | updateQTvars (int structIdx) |
UResVarPool () | |
virtual | ~UResVarPool () |
Public Member Functions inherited from UResBase | |
void | createReplayVar (UVarPool *pool) |
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 | 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 | calculateBallPosition (UCamPush *cam, UImage *ellImg, double ballDiam) |
void | createBaseVar () |
void | filterMask (UImage *src, UImage *dst) |
bool | findBall (UCamPush *cam, UImage *img, bool debug, bool blue) |
bool | findBallCandidates (UImage *img, UImage *ellImg) |
double | getBallSize () |
int | getCnt () |
UPosition | getPos () |
void | makeDisplayPolygon (UPosition *centerPos, bool isBlue, double size, UTime imgTime) |
void | maskColors (UImage *srcImg, UImage *dstImg, bool blue) |
Protected Member Functions inherited from UFunctionCamBase | |
UCamPush * | getCam (int imgDevice, const char *posName) |
UCamPush * | getCam (int camDevNum) |
bool | getCamAndRawImage (UCamPush **cam, UImage **imgRaw, int *imgDevice, void *imgBase, const char *posName, int rectfiedImg) |
int | getDefaultCamDevice () |
Protected Member Functions inherited from UFunctionImgBase | |
bool | sendImage (UServerInMsg *msg, const char *tagName, UImage *imgRgb, int imgLeft=0, int imgTop=0, int imgWidth=640, int imgHeight=480, int imgSource=-1, bool isCodecBin=true, bool imgIsBW=false, bool imgGetNum=true, bool imgGetTod=true, bool imgGetTime=false, const char *posName=NULL, bool imgGetName=true, bool silent=false) |
Protected Member Functions inherited from UFunctionBase | |
int | getCmdIndex () |
UResBase * | getStaticResource (const char *resName, bool mayCreate, bool staticOnly=true) |
get a pointer to a static resource. More... | |
bool | isClientAlive (int clientIdx, double holdOffTime) |
bool | sendDebug (UServerInMsg *msg, const char *debugText) |
bool | sendDebug (const char *debugText) |
bool | sendError (UServerInMsg *msg, const char *errorText) |
bool | sendError (const char *errorText) |
bool | sendHelp (UServerInMsg *msg, const char *infoText) |
bool | sendHelp (const char *infoText) |
bool | sendInfo (UServerInMsg *msg, const char *infoText) |
bool | sendInfo (const char *infoText) |
bool | sendWarning (UServerInMsg *msg, const char *warningText) |
bool | sendWarning (const char *warningText) |
UResBase * | setThisResource (const char *ID, UResBase *resource, bool remove, bool *changed, UResBase *currentResPtr, bool *isLocal) |
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... | |
Private Attributes | |
UPosition | ballPos |
most likely ball position in robot coordinates More... | |
CvBox2D32f | ell [MAX_ELL_CNT] |
resulting ellipses found in image More... | |
int | ellCnt |
number of ellipses found More... | |
int | imgSizeH |
size of source image in pixels More... | |
int | imgSizeW |
size of source image in pixels More... | |
UVariable * | varBallSize |
pointer to known size of ball More... | |
UVariable * | varBlueCnt |
pointer to number of balls found in image More... | |
UVariable * | varBlueLim |
pointer to limiting red values uMin, uMax, vMin, vMax More... | |
UVariable * | varBluePos |
pointer to ball position {x,y,z} More... | |
UVariable * | varBlueTime |
pointer to time of detection More... | |
UVariable * | varFac |
Maximum size for an estimated ball. More... | |
UVariable * | varMajMinRatio |
minimum ratio metween major and minor axis of ellipse More... | |
UVariable * | varMaxSize |
Maximum size for an estimated ball. More... | |
UVariable * | varMinSize |
Maximum size for an estimated ball. More... | |
UVariable * | varPoolImg |
pointer to limiting red values redMin, redMax, greenMin, greenMax More... | |
UVariable * | varRedCnt |
pointer to number of balls found in image More... | |
UVariable * | varRedLim |
pointer to limiting red values redMin, redMax, greenMin, greenMax More... | |
UVariable * | varRedPos |
pointer to ball position {x,y,z} More... | |
UVariable * | varRedTime |
pointer to time of detection More... | |
UVariable * | varTopLine |
topmost line in image More... | |
Static Private Attributes | |
static const int | MAX_ELL_CNT = 100 |
Additional Inherited Members | |
Static Public Member Functions inherited from UResVarPool | |
static const char * | getResClassID () |
Public Attributes inherited from UFunctionBase | |
bool | silent |
is reply to client and console to be limited More... | |
Public Attributes inherited from UReplay | |
bool | replayTimeAdvancePending |
UTime | replayTimeNow |
Static Public Attributes inherited from UFunctionBase | |
static const int | MAX_ID_LENGTH = 30 |
static const int | MAX_RESOURCE_LIST_SIZE = 250 |
Protected Attributes inherited from UFunctionCamBase | |
UCamPool * | camPool |
Protected Attributes inherited from UFunctionImgBase | |
UImagePool * | imgPool |
Protected Attributes inherited from UFunctionBase | |
char | aliasName [MAX_ID_LENGTH] |
UCmdExe * | cmdHandler |
char * | cmdToks [20] |
int | cmdToksCnt |
char | commandsHandled [MAX_RESOURCE_LIST_SIZE] |
UServerInMsg * | msg |
char | pluginName [MAX_RESOURCE_LIST_SIZE] |
bool | verboseMessages |
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 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... | |
Example plugin to find balls in camera image
|
inline |
Constructor
References createBaseVar(), ellCnt, and UFunctionBase::setCommand().
|
inlinevirtual |
Destructor - to delete the resource (etc) when finished
|
inlineprotected |
Find the best of the estimated ball candidate and calculate the ball position relalive to the robot. Expect estimate ellipses that may be balls in the array 'ell' with ellCnt ellipses found. The result is converted to first camera coordinates using the camera focal length and a known ball size. There is no radial error correction applied, so some error must be expected. The camera coordinates are transformed to robot coordinates using a known camera pose (from the camera structure). The result is saved in the 'ballPos' variable in meters relative to the robot. If the ball is close to the edge of the image and partially out of the image, then one of the flags isOutL or isOutR is set to true.
cam | is a pointer to a camera device with camera position and lens parameters |
ellImg | optional image for debug paint, emmits also more printout to console |
ballDiam | is the known diameter of the ball (in meter) |
References ballPos, UImage::cvArr(), ell, ellCnt, UCamRad::getCamPar(), UCamPar::getFocalLength(), UCamPar::getHx(), UCamPar::getHy(), UCamMounted::getPosRot(), UPosRot::getRtoMMatrix(), UPosition::print(), UPosition::x, UPosition::y, and UPosition::z.
Referenced by findBall().
|
inlineprotected |
Make the variables that will be available to other plugins
References UResVarPool::addVar(), varBallSize, varBlueCnt, varBlueLim, varBluePos, varBlueTime, varFac, varMajMinRatio, varMaxSize, varMinSize, varPoolImg, varRedCnt, varRedLim, varRedPos, varRedTime, and varTopLine.
Referenced by UFuncBall().
filter the image. Source and destination image may be the same.
src | is the source image |
dst | is the destination image |
References UImage::copyMeta(), UImage::cvArr(), UImagePool::getImage(), UVariable::getInt(), UFunctionBase::getStaticResource(), UFunctionImgBase::imgPool, and varPoolImg.
Referenced by findBall().
Find red ball in image, using parameters from global var pool
cam | camera from wich the image was taken (has focal length and camera pose) |
img | is a pointer to the image to be analized |
debug | if true, then more images are producen in the image pool |
blue | if true, then the blue color values are used (else the red values) |
References ballPos, calculateBallPosition(), UImage::copy(), ellCnt, filterMask(), findBallCandidates(), UTime::getDecSec(), UVariable::getDouble(), UImagePool::getImage(), UVariable::getInt(), UFunctionBase::getStaticResource(), UVariable::getValued(), UImage::height(), UFunctionImgBase::imgPool, imgSizeH, imgSizeW, UImage::imgTime, makeDisplayPolygon(), maskColors(), UVariable::set3D(), UImage::setName(), UVariable::setValued(), UImage::tone(), UImage::updated(), varBallSize, varBlueCnt, varBluePos, varBlueTime, varPoolImg, varRedCnt, varRedPos, varRedTime, and UImage::width().
Referenced by handleCommand().
Find balls in this image. This function is almost a direct copy of the 'fitellipse.c' example from the opencv package.
img | is a pointer to a BW mask image with interesting pixels beeing > 0 |
ellImg | optional image where found ellipses are drawn (for debug) |
References UImage::cvArr(), ell, ellCnt, UVariable::getDouble(), UVariable::getInt(), MAX_ELL_CNT, varMajMinRatio, varMaxSize, and varMinSize.
Referenced by findBall().
|
inlineprotected |
Get the ball size - from global variable store
References UVariable::getValued(), and varBallSize.
|
inlineprotected |
|
inlineprotected |
Get position of this estimated ball position
References ballPos.
Referenced by handleCommand().
|
inlinevirtual |
Handle incomming command Must return true if the function is handled - otherwise the client will get a 'failed' reply
Reimplemented from UFunctionBase.
References UImage::camDevice, USmlTag::codePosition(), findBall(), USmlTagIn::getAttValue(), USmlTagIn::getAttValueBool(), UFunctionCamBase::getCam(), getCnt(), UFunctionCamBase::getImage(), getPos(), USmlTagIn::getTagName(), img, UFunctionBase::sendHelpDone(), UFunctionBase::sendHelpStart(), UFunctionBase::sendMsg(), UFunctionBase::sendText(), UFunctionBase::sendWarning(), and UServerInMsg::tag.
|
inlineprotected |
copy ball position to polygon plugin, so that it can be shown by client in top-view image
centerPos | is center position of ball on ground |
isBlue | is color of ball |
size | is size in meters of ball |
References UPolygon::add(), UResPoly::add(), ballPos, UPolygon::clear(), UPolyItem::cooSys, UResPoly::getItem(), UResPoseHist::getPoseAtTime(), UPose::getPoseToMap(), UFunctionBase::getStaticResource(), UResPoly::gotNewData(), ULock::lock(), UPolygon::setAsPolygon(), UPolygon::setColor(), ULock::unlock(), UPolyItem::updateTime, UPosition::x, UPosition::y, and UPosition::z.
Referenced by findBall().
Find balls in this image. This function is almost a direct copy of the 'fitellipse.c' example from the opencv package.
srcImg | is a pointer to the image to be analized |
dstImg | is where the pixels with the ball color is saved. |
debug | if true, then more images are producen in the image pool |
blue | are we looking for a blue ball (else a red) |
References UImage::copyMeta(), UImage::getHeight(), UImagePool::getImage(), UVariable::getInt(), UImage::getLine(), UImage::getWidth(), UFunctionImgBase::imgPool, UImage::isYUV(), UPixel::p2, UPixel::p3, UImage::setName(), UImage::setSize(), UImage::toYUV(), UImage::updated(), UResBase::var, varBlueLim, varPoolImg, varRedLim, and varTopLine.
Referenced by findBall().
|
private |
most likely ball position in robot coordinates
Referenced by calculateBallPosition(), findBall(), getPos(), and makeDisplayPolygon().
|
private |
resulting ellipses found in image
Referenced by calculateBallPosition(), and findBallCandidates().
|
private |
number of ellipses found
Referenced by calculateBallPosition(), findBall(), findBallCandidates(), getCnt(), and UFuncBall().
|
private |
size of source image in pixels
Referenced by findBall().
|
private |
size of source image in pixels
Referenced by findBall().
|
staticprivate |
Referenced by findBallCandidates().
|
private |
pointer to known size of ball
Referenced by createBaseVar(), findBall(), and getBallSize().
|
private |
pointer to number of balls found in image
Referenced by createBaseVar(), and findBall().
|
private |
pointer to limiting red values uMin, uMax, vMin, vMax
Referenced by createBaseVar(), and maskColors().
|
private |
pointer to ball position {x,y,z}
Referenced by createBaseVar(), and findBall().
|
private |
pointer to time of detection
Referenced by createBaseVar(), and findBall().
|
private |
Maximum size for an estimated ball.
Referenced by createBaseVar().
|
private |
minimum ratio metween major and minor axis of ellipse
Referenced by createBaseVar(), and findBallCandidates().
|
private |
Maximum size for an estimated ball.
Referenced by createBaseVar(), and findBallCandidates().
|
private |
Maximum size for an estimated ball.
Referenced by createBaseVar(), and findBallCandidates().
|
private |
pointer to limiting red values redMin, redMax, greenMin, greenMax
Referenced by createBaseVar(), filterMask(), findBall(), and maskColors().
|
private |
pointer to number of balls found in image
Referenced by createBaseVar(), and findBall().
|
private |
pointer to limiting red values redMin, redMax, greenMin, greenMax
Referenced by createBaseVar(), and maskColors().
|
private |
pointer to ball position {x,y,z}
Referenced by createBaseVar(), and findBall().
|
private |
pointer to time of detection
Referenced by createBaseVar(), and findBall().
|
private |
topmost line in image
Referenced by createBaseVar(), and maskColors().