BigBowlLocalization.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package VisionX::Component
19  * @author David Schiebener (schiebener at kit dot edu)
20  * @date 2015
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
24 
25 #include "BigBowlLocalization.h"
26 
27 // Core
32 
33 // MemoryX
37 
38 // IVT
39 #include <Calibration/Calibration.h>
40 #include <Color/ColorParameterSet.h>
41 #include "Image/ByteImage.h"
42 #include "Image/ImageProcessor.h"
43 
44 // IVTRecognition
45 #include "Locators/VisualTargetLocator.h"
46 
47 namespace visionx
48 {
49 
50 
52  {
54  imageCounter = 1;
55  }
56 
57 
59  {
60  usingProxy("RobotStateComponent");
61  useVision = getProperty<bool>("UseVision").getValue();
62  objectColor = getProperty<ObjectColor>("BlobColor").getValue();
63 
64  // writing to the DebugDrawer topic. In ArmarX this topic's default name is DebugDrawerUpdates
65  offeringTopic("DebugDrawerUpdates");
66 
67  stereoMatcher = new CStereoMatcher();
68  }
69 
71  {
72  robotStateComponent = getProxy<armarx::RobotStateComponentInterfacePrx>("RobotStateComponent");
73  localRobot = armarx::RemoteRobot::createLocalClone(robotStateComponent->getSynchronizedRobot());
74 
75  // retrieve the proxy to the debug drawer
76  debugDrawerPrx = getTopic<armarx::DebugDrawerInterfacePrx>("DebugDrawerUpdates");
77 
78  stereoMatcher->InitCameraParameters(getStereoCalibration(), false);
79  }
80 
82  {
83  delete stereoMatcher;
84  }
85 
87  {
88  if (useVision)
89  {
90  ARMARX_IMPORTANT << " xxxxxxxxxxx BigBowlLocalization initRecognizer!!!!!!!!!!" ;
91 
92  std::string colorParameterFilename = getProperty<std::string>("ColorParameterFile").getValue();
93 
94  if (!armarx::ArmarXDataPath::getAbsolutePath(colorParameterFilename, colorParameterFilename))
95  {
96  ARMARX_ERROR << "Could not find color parameter file in ArmarXDataPath: " << colorParameterFilename;
97  return false;
98  }
99 
100  ARMARX_VERBOSE << "Color parameter file name: " << colorParameterFilename;
101 
102  visualTargetLocator = new CVisualTargetLocator();
103 
104  if (!visualTargetLocator->Init(colorParameterFilename.c_str(), getStereoCalibration()))
105  {
106  return false;
107  }
108  int nMinPixelsPerRegion = getProperty<int>("nMinPixelsPerRegion").getValue();
109  double dMaxEpipolarDiff = getProperty<double>("dMaxEpipolarDiff").getValue();
110  double dMinFilledRatio = getProperty<double>("dMinFilledRatio").getValue();
111  double dMaxSideRatio = getProperty<double>("dMaxSideRatio").getValue();
112  double dMinSize = getProperty<double>("dMinSize").getValue();
113  double dMaxSize = getProperty<double>("dMaxSize").getValue();
114 
115  visualTargetLocator->SetParameters(nMinPixelsPerRegion, dMaxEpipolarDiff, dMinFilledRatio, dMaxSideRatio, dMinSize, dMaxSize);
116 
117  colorParameterSet = new CColorParameterSet();
118  colorParameterSet->LoadFromFile(colorParameterFilename.c_str());
119  }
120  else
121  {
122  ARMARX_IMPORTANT << "Not using vision, will just return a fake result";
123  }
124 
125  showSegmentedResultImages = getProperty<bool>("ShowSegmentedResultImages").getValue();
126 
127  if (!showSegmentedResultImages)
128  {
129  ::ImageProcessor::Zero(resultImages[2]);
130  }
131 
132  return true;
133  }
134 
135 
136  memoryx::ObjectLocalizationResultList BigBowlLocalization::localizeObjectClasses(const std::vector<std::string>& objectClassNames, CByteImage** cameraImages, armarx::MetaInfoSizeBasePtr imageMetaInfo, CByteImage** resultImages)
137  {
138  ARMARX_CHECK_EXPRESSION(imageMetaInfo->timeProvided > 0);
139  ARMARX_DEBUG << deactivateSpam(3) << "Image is already " << (IceUtil::Time::now() - IceUtil::Time::microSeconds(imageMetaInfo->timeProvided)).toMilliSecondsDouble() << "ms old";
140  if (!armarx::RemoteRobot::synchronizeLocalCloneToTimestamp(localRobot, robotStateComponent, imageMetaInfo->timeProvided))
141  {
142  ARMARX_WARNING << deactivateSpam(1) << "Failed to synchronize local robot - results are probably wrong";
143  }
144 
145  // check if reference frame is valid
146  auto rnCamera = localRobot->getRobotNode(referenceFrameName);
147  ARMARX_CHECK_EXPRESSION(rnCamera) << "Reference frame not present in remote robot!";
148 
149  const std::string agentName = localRobot->getName();
150 
151  Eigen::Vector3f expectedPositionVec;
152  expectedPositionVec << 0, 600, 1000;
153  const std::string rootFrameName = localRobot->getRootNode()->getName();
154  armarx::FramedPositionPtr expectedPosition = new armarx::FramedPosition(expectedPositionVec, rootFrameName, agentName);
155  expectedPosition->changeFrame(localRobot, referenceFrameName);
156 
157  memoryx::ObjectLocalizationResultList resultList;
158 
159  if (useVision)
160  {
161  // localize marker(s)
162  Vec3d bigBowlPosition;
163  int numFoundBlobs = 0;
164 
165  numFoundBlobs = locateBowl(cameraImages, bigBowlPosition, resultImages);
166  ARMARX_INFO << "Found " << numFoundBlobs << " blobs.";
167 
168  if (numFoundBlobs == 0)
169  {
170  ARMARX_INFO << deactivateSpam(1) << "Object not found, color: " << objectColor;
171  }
172  else
173  {
174  // check if position is realistic
175  Eigen::Vector3f position;
176  position << bigBowlPosition.x, bigBowlPosition.y, bigBowlPosition.z;
177  float diffToExpectedPosition = (position - expectedPosition->toEigen()).norm();
178 
179  if (diffToExpectedPosition < 1200)
180  {
181  // assemble result
182  memoryx::ObjectLocalizationResult result;
183  result.recognitionCertainty = 0.96f;
184  result.objectClassName = objectClassNames.at(0);
185 
186  armarx::FramedPositionPtr positionPtr = new armarx::FramedPosition(position, referenceFrameName, agentName);
187  positionPtr->changeFrame(localRobot, localRobot->getRootNode()->getName());
188  positionPtr->z = 1030;
189  result.position = positionPtr;
191  VirtualRobot::MathTools::rpy2eigen4f(-M_PI / 2, 0, 0, orientation);
193  ori->changeFrame(localRobot, referenceFrameName);
194  result.orientation = ori;
195  result.positionNoise = calculateLocalizationUncertainty(position);
196  result.timeStamp = new armarx::TimestampVariant(imageMetaInfo->timeProvided);
197 
198  resultList.push_back(result);
199 
200  ARMARX_VERBOSE << deactivateSpam(1) << "Object found at position " << position;
201  ARMARX_INFO << "position >> x: " << positionPtr->x << " y: " << positionPtr->y
202  << " z: " << positionPtr->z << " frame: " << positionPtr->frame;
203  armarx::FramedPositionPtr globalPosPtr = positionPtr->toGlobal(localRobot);
204  ARMARX_INFO << "globalposition >> x: " << globalPosPtr->x << " y: " << globalPosPtr->y
205  << " z: " << globalPosPtr->z << " frame: " << globalPosPtr->frame;
206 
207 
208  // setup a 4x4 homogeneous matrix
209  Eigen::Matrix4f currPose;
210  currPose.setIdentity();
211  // set rotating coordinates (mm)
212  currPose(0, 3) = globalPosPtr->x;
213  currPose(1, 3) = globalPosPtr->y;
214  currPose(2, 3) = globalPosPtr->z;
215  armarx::PosePtr poseGlobal(new armarx::Pose(currPose));
216 
217  // size of the box in mm
218  Eigen::Vector3f v(100, 100, 100);
220  // draw/update red box
221  debugDrawerPrx->clearLayer("objLocalizationLayer");
222  debugDrawerPrx->setBoxDebugLayerVisu("objLocalizationLayer", poseGlobal, s, armarx::DrawColor {1, 0, 0, 1});
223 
224  // mark TCP pose with a cross
226  {
227  drawCrossInImage(resultImages[0], position, true);
228  }
229  }
230  else
231  {
232  ARMARX_INFO << deactivateSpam(1) << "Object is too far away from expected position: " << (int)diffToExpectedPosition;
233  }
234  }
235 
236  }
237  else
238  {
239  ARMARX_INFO << "Vision is switched off, returning fake result";
240 
241  memoryx::ObjectLocalizationResult result;
242  result.recognitionCertainty = 0.8f;
243  result.objectClassName = objectClassNames.at(0);
244 
245  result.position = expectedPosition;
246 
248  result.orientation = new armarx::FramedOrientation(orientation, rootFrameName, agentName);
249  result.positionNoise = calculateLocalizationUncertainty(expectedPosition->toEigen());
250 
251  resultList.push_back(result);
252  }
253 
254  ARMARX_VERBOSE << "Finished localization, returning.";
255 
256  return resultList;
257  }
258 
259 
260 
261  void BigBowlLocalization::drawCrossInImage(CByteImage* image, Eigen::Vector3f point, bool leftCamera)
262  {
263  Vec3d positionIVT = {point(0), point(1), point(2)};
264  Vec2d projectedPoint;
265 
266  if (leftCamera)
267  {
268  getStereoCalibration()->GetLeftCalibration()->WorldToImageCoordinates(positionIVT, projectedPoint, getImagesAreUndistorted());
269  }
270  else
271  {
272  getStereoCalibration()->GetRightCalibration()->WorldToImageCoordinates(positionIVT, projectedPoint, getImagesAreUndistorted());
273  }
274 
275  const int size = 15;
276  ARMARX_INFO << "projectedPoint.x :" << projectedPoint.x << " projectedPoint.y: " << projectedPoint.y;
277 
278  if (size < projectedPoint.x && size < projectedPoint.y && projectedPoint.x < image->width - size - 1 && projectedPoint.y < image->height - size - 3)
279  {
280  for (int i = -size; i <= size; i++)
281  {
282  int indexHorizontalLine = 3 * ((int)projectedPoint.y * image->width + (int)projectedPoint.x + i);
283  int indexVerticalLine = 3 * (((int)projectedPoint.y + i) * image->width + (int)projectedPoint.x);
284  image->pixels[indexHorizontalLine] = 255;
285  image->pixels[indexHorizontalLine + 1] = 255;
286  image->pixels[indexHorizontalLine + 2] = 255;
287  image->pixels[indexVerticalLine] = 255;
288  image->pixels[indexVerticalLine + 1] = 255;
289  image->pixels[indexVerticalLine + 2] = 255;
290  }
291  }
292  }
293 
294  int BigBowlLocalization::locateBowl(CByteImage** cameraImages, Vec3d& bowlPosition, CByteImage** resultImages)
295  {
296  int numberOfSegments = 0;
297  CByteImage* imageHSVLeft = new CByteImage(cameraImages[0]->width, cameraImages[0]->height, CByteImage::eRGB24);
298  CByteImage* imageHSVRight = new CByteImage(cameraImages[1]->width, cameraImages[1]->height, CByteImage::eRGB24);
299  CByteImage* imageFiltered = new CByteImage(cameraImages[0]->width, cameraImages[0]->height, CByteImage::eRGB24);
300  CByteImage* imgLeftGray = new CByteImage(cameraImages[0]->width, cameraImages[1]->height, CByteImage::eGrayScale);
301  CByteImage* imgRightGray = new CByteImage(cameraImages[1]->width, cameraImages[1]->height, CByteImage::eGrayScale);
302 
303  ::ImageProcessor::CalculateHSVImage(cameraImages[0], imageHSVLeft);
304  ::ImageProcessor::CalculateHSVImage(cameraImages[1], imageHSVRight);
305  ::ImageProcessor::ConvertImage(cameraImages[0], imgLeftGray);
306  ::ImageProcessor::ConvertImage(cameraImages[1], imgRightGray);
307  ::ImageProcessor::Zero(imageFiltered);
308 
309  int ThesholdHMinValue = 4;
310  int ThesholdHMaxValue = 20;
311  int ThesholdSMinValue = 220;
312  int ThesholdSMaxValue = 255;
313 
314  int imagePosXLeft = 0;
315  int imagePosYLeft = 0;
316  int totalPixelLeft = 0;
317  int imagePosXRight = 0;
318  int imagePosYRight = 0;
319  int totalPixelRight = 0;
320  int deltaROI = 50;
321 
322  // scan the Left HSV image and compute the histogram
323  for (int i = deltaROI; i < imageHSVLeft->width - deltaROI; i++)
324  {
325  for (int j = deltaROI; j < imageHSVLeft->height - deltaROI; j++)
326  {
327  int pixelIndex = (i + j * imageHSVLeft->width) * imageHSVLeft->bytesPerPixel;
328  double hVal = (double) imageHSVLeft->pixels[pixelIndex];
329  double sVal = (double) imageHSVLeft->pixels[pixelIndex + 1];
330 
331  if ((hVal > ThesholdHMinValue && hVal < ThesholdHMaxValue) && (sVal > ThesholdSMinValue && sVal < ThesholdSMaxValue))
332  {
333  imageFiltered->pixels[pixelIndex] = cameraImages[0]->pixels[pixelIndex];
334  imageFiltered->pixels[pixelIndex + 1] = cameraImages[0]->pixels[pixelIndex + 1];
335  imageFiltered->pixels[pixelIndex + 2] = cameraImages[0]->pixels[pixelIndex + 2];
336  imagePosXLeft += i;
337  imagePosYLeft += j;
338  totalPixelLeft++;
339  }
340  }
341  }
342  ARMARX_INFO << "totalPixel >> left " << totalPixelLeft;
343 
344 
345  // scan the Right HSV image and compute the histogram
346  for (int i = deltaROI; i < imageHSVRight->width - deltaROI; i++)
347  {
348  for (int j = deltaROI; j < imageHSVRight->height - deltaROI; j++)
349  {
350  int pixelIndex = (i + j * imageHSVRight->width) * imageHSVRight->bytesPerPixel;
351  double hVal = (double) imageHSVRight->pixels[pixelIndex];
352  double sVal = (double) imageHSVRight->pixels[pixelIndex + 1];
353 
354  if ((hVal > ThesholdHMinValue && hVal < ThesholdHMaxValue) && (sVal > ThesholdSMinValue && sVal < ThesholdSMaxValue))
355  {
356  imagePosXRight += i;
357  imagePosYRight += j;
358  totalPixelRight++;
359  }
360  }
361  }
362  ARMARX_INFO << "totalPixel >> right " << totalPixelRight;
363 
364  if (totalPixelLeft > 10000 && totalPixelRight > 10000)
365  {
366  numberOfSegments = 1;
367  }
368  else
369  {
370  resultImages[0] = cameraImages[0];
371  resultImages[1] = cameraImages[1];
372  ::ImageProcessor::Zero(imageFiltered);
373  resultImages[2] = imageFiltered;
374  numberOfSegments = 0;
375  return numberOfSegments;
376  }
377 
378  Vec2d imageCoorLeft, imageCoorRight;
379  imageCoorLeft.x = (int) imagePosXLeft / totalPixelLeft;
380  imageCoorLeft.y = (int) imagePosYLeft / totalPixelLeft;
381  imageCoorRight.x = (int) imagePosXRight / totalPixelRight;
382  imageCoorRight.y = (int) imagePosYRight / totalPixelRight;
383 
384  ARMARX_INFO << "imageCoorLeft x: " << imageCoorLeft.x << " y: " << imageCoorLeft.y;
385  ARMARX_INFO << "imageCoorRight x: " << imageCoorRight.x << " y: " << imageCoorRight.y;
386  // bowl must be somewhere in the middle in the left camera
387  if (imageCoorLeft.x < 250 || imageCoorLeft.x > 470 || imageCoorLeft.y < 150 || imageCoorLeft.y > 320)
388  {
389  resultImages[0] = cameraImages[0];
390  resultImages[1] = cameraImages[1];
391  ::ImageProcessor::Zero(imageFiltered);
392  resultImages[2] = imageFiltered;
393  numberOfSegments = 0;
394  return numberOfSegments;
395  }
396 
397  Vec2d vCorrespondingPointRight;
398  const int nDispMin = stereoMatcher->GetDisparityEstimate(10000);
399  const int nDispMax = stereoMatcher->GetDisparityEstimate(500);
400 
401  // img l, img r, px, py, size of correlation window, min disparity, max disparity,
402  // corresponding point 2d, 3d point, correlation threshold, images are undistorted
403  int nMatchingResult = stereoMatcher->Match(imgLeftGray, imgRightGray, (int) imageCoorLeft.x, (int) imageCoorLeft.y,
404  50, nDispMin, nDispMax, vCorrespondingPointRight, bowlPosition, 0.7f, true);
405 
406 
407  ARMARX_INFO << "nMatchingResult " << nMatchingResult;
408  //bowlPosition.x -= 0.2;
409  //ARMARX_INFO << "worldCoor x: " << bowlPosition.x << " y: " << bowlPosition.y << " z: " << bowlPosition.z;
410 
411  if (nMatchingResult <= 0)
412  {
413  resultImages[0] = cameraImages[0];
414  resultImages[1] = cameraImages[1];
415  ::ImageProcessor::Zero(imageFiltered);
416  resultImages[2] = imageFiltered;
417  numberOfSegments = 0;
418  return numberOfSegments;
419  }
420 
421  // draw a white dot in the object center
422  int deltaCenter = 10;
423  for (int i = imageCoorLeft.x - deltaCenter; i < imageCoorLeft.x + deltaCenter; i++)
424  {
425  for (int j = imageCoorLeft.y - deltaCenter; j < imageCoorLeft.y + deltaCenter; j++)
426  {
427  int pixelIndex = (i + j * imageHSVLeft->width) * imageHSVLeft->bytesPerPixel;
428  imageFiltered->pixels[pixelIndex] = 255;
429  imageFiltered->pixels[pixelIndex + 1] = 255;
430  imageFiltered->pixels[pixelIndex + 2] = 255;
431  }
432  }
433 
434  /*
435  std::stringstream str;
436  str << "/common/homes/staff/aksoy/Desktop/testBowlImages/org_" << imageCounter++ << ".bmp";
437  cameraImages[0]->SaveToFile(str.str().c_str());
438  std::stringstream strFlt;
439  strFlt << "/common/homes/staff/aksoy/Desktop/testBowlImages/flt_" << imageCounter++ << ".bmp";
440  imageFiltered->SaveToFile(strFlt.str().c_str());
441 
442  ARMARX_INFO << " xxxxxxxxxxx Images are saved!!!!!!!!!!" << str.str().c_str();
443  */
444 
445  resultImages[0] = cameraImages[0];
446  resultImages[1] = cameraImages[1];
447  resultImages[2] = imageFiltered;
448  return numberOfSegments;
449  }
450 }
RemoteRobot.h
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:180
visionx::ObjectLocalizerProcessor::resultImages
CByteImage ** resultImages
Definition: ObjectLocalizerProcessor.h:374
visionx::BigBowlLocalization::onConnectObjectLocalizerProcessor
void onConnectObjectLocalizerProcessor() override
Initialize stuff here?
Definition: BigBowlLocalization.cpp:70
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
visionx::ObjectLocalizerProcessor::referenceFrameName
std::string referenceFrameName
Definition: ObjectLocalizerProcessor.h:368
visionx
ArmarX headers.
Definition: OpenPoseStressTest.h:38
Pose.h
visionx::ObjectLocalizerProcessor::getResultImagesEnabled
bool getResultImagesEnabled() const
Retrieve whether result images are enabled.
Definition: ObjectLocalizerProcessor.h:284
armarx::GlobalFrame
const std::string GlobalFrame
Definition: FramedPose.h:62
armarx::TimestampVariant
Definition: TimestampVariant.h:54
GfxTL::Vec2d
VectorXD< 2, double > Vec2d
Definition: VectorXD.h:694
ObjectRecognitionWrapper.h
visionx::BigBowlLocalization::onInitObjectLocalizerProcessor
void onInitObjectLocalizerProcessor() override
Definition: BigBowlLocalization.cpp:58
visionx::BigBowlLocalization::localizeObjectClasses
memoryx::ObjectLocalizationResultList localizeObjectClasses(const std::vector< std::string > &objectClassNames, CByteImage **cameraImages, armarx::MetaInfoSizeBasePtr imageMetaInfo, CByteImage **resultImages) override
localize one or both hand markers
Definition: BigBowlLocalization.cpp:136
visionx::ObjectLocalizerProcessor::imageMetaInfo
armarx::MetaInfoSizeBasePtr imageMetaInfo
Definition: ObjectLocalizerProcessor.h:375
IceInternal::Handle< FramedPosition >
visionx::BigBowlLocalization::initRecognizer
bool initRecognizer() override
Initializes segmentable recognition.
Definition: BigBowlLocalization.cpp:86
visionx::ObjectLocalizerProcessor::getImagesAreUndistorted
bool getImagesAreUndistorted() const
Retrieve whether images are undistorted.
Definition: ObjectLocalizerProcessor.h:314
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:523
M_PI
#define M_PI
Definition: MathTools.h:17
if
if(!yyvaluep)
Definition: Grammar.cpp:724
visionx::ObjectLocalizerProcessor::cameraImages
CByteImage * cameraImages[2]
Definition: ObjectLocalizerProcessor.h:372
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:177
GfxTL::Vec3d
VectorXD< 3, double > Vec3d
Definition: VectorXD.h:695
TimestampVariant.h
armarx::Vector3
The Vector3 class.
Definition: Pose.h:112
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:189
visionx::BigBowlLocalization::onExitObjectLocalizerProcessor
void onExitObjectLocalizerProcessor() override
Definition: BigBowlLocalization.cpp:81
ProbabilityMeasures.h
armarx::Pose
The Pose class.
Definition: Pose.h:242
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition: CtrlUtil.h:39
GfxTL::Matrix3f
MatrixXX< 3, 3, float > Matrix3f
Definition: MatrixXX.h:600
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:601
visionx::ObjectLocalizerProcessor::getStereoCalibration
CStereoCalibration * getStereoCalibration() const
Retrieve stereo calibration corresponding to image provider.
Definition: ObjectLocalizerProcessor.h:334
ARMARX_CHECK_EXPRESSION
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
Definition: ExpressionException.h:73
armarx::VariantType::FramedOrientation
const VariantTypeId FramedOrientation
Definition: FramedPose.h:40
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::RemoteRobot::createLocalClone
VirtualRobot::RobotPtr createLocalClone()
Clones the structure of this remote robot to a local instance.
Definition: RemoteRobot.cpp:328
armarx::ManagedIceObject::offeringTopic
void offeringTopic(const std::string &name)
Registers a topic for retrival after initialization.
Definition: ManagedIceObject.cpp:290
Entity.h
armarx::RemoteRobot::synchronizeLocalCloneToTimestamp
static bool synchronizeLocalCloneToTimestamp(VirtualRobot::RobotPtr robot, RobotStateComponentInterfacePrx robotStatePrx, Ice::Long timestamp)
Synchronizes a local robot to a robot state at timestamp.
Definition: RemoteRobot.cpp:487
armarx::Logging::deactivateSpam
SpamFilterDataPtr deactivateSpam(float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const
disables the logging for the current line for the given amount of seconds.
Definition: Logging.cpp:92
armarx::ArmarXDataPath::getAbsolutePath
static bool getAbsolutePath(const std::string &relativeFilename, std::string &storeAbsoluteFilename, const std::vector< std::string > &additionalSearchPaths={}, bool verbose=true)
Definition: ArmarXDataPath.cpp:111
visionx::ObjectLocalizerProcessor::calculateLocalizationUncertainty
memoryx::MultivariateNormalDistributionPtr calculateLocalizationUncertainty(Vec2d left_point, Vec2d right_point)
Calculate 3D uncertainty from two 2d points in left and right camera.
Definition: ObjectLocalizerProcessor.cpp:201
armarx::VariantType::FramedPosition
const VariantTypeId FramedPosition
Definition: FramedPose.h:39
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
BigBowlLocalization.h
visionx::BigBowlLocalization::BigBowlLocalization
BigBowlLocalization()
Definition: BigBowlLocalization.cpp:51
ArmarXDataPath.h
armarx::ManagedIceObject::usingProxy
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
Definition: ManagedIceObject.cpp:151
armarx::ctrlutil::s
double s(double t, double s0, double v0, double a0, double j)
Definition: CtrlUtil.h:33
visionx::BigBowlLocalization::debugDrawerPrx
armarx::DebugDrawerInterfacePrx debugDrawerPrx
Definition: BigBowlLocalization.h:181
visionx::ObjectLocalizerProcessor::numberOfResultImages
int numberOfResultImages
Definition: ObjectLocalizerProcessor.h:376
norm
double norm(const Point &a)
Definition: point.hpp:94