RGBDOpenPoseEstimationComponent.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package armarx::ArmarXObjects::OpenPoseEstimation
17  * @author Stefan Reither ( stef dot reither at web dot de )
18  * @date 2018
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
24 
27 #include <VisionX/interface/components/RGBDImageProvider.h>
28 
29 
30 #include <SimoxUtility/algorithm/string.h>
32 //#include <VisionX/libraries/ArViz/HumanPoseBody25.h>
33 
34 using namespace armarx;
35 
37 {
39 
40  def->topic(listener3DPrx, "OpenPoseEstimation3D", "OpenPoseEstimation3DTopicName");
41  def->component(robotStateInterface, "RobotStateComponent");
42 
43  def->optional(useDistortionParameters, "UseDistortionParameters", "Whether to use distortion parameters when transforming image coordinates into world coordinates");
44 
45  def->optional(radius, "DepthMedianRadius", "Depth Median Radius");
46  def->optional(maxDepth, "MaxDepth", "Pixels with a distance higher than this value are masked out. Only for depth camera mode.", PropertyDefinitionBase::eModifiable);
47  def->optional(maxDepthDifference, "MaxDepthDifference", "Allowed difference of depth value for one keypoint to median of all keypoints.", PropertyDefinitionBase::eModifiable);
48  def->optional(cameraNodeName, "CameraNodeName", "The robot node name of the camera");
49 
50  def->optional(brightnessIncrease, "BrightnessIncrease", "Increase brightness of masked pixels");
51 }
52 
54 {
56 
57  // Trying to access robotStateComponent if it is avaiable
59 
60  ARMARX_VERBOSE << "Trying to get StereoCalibrationInterface proxy: " << getIceManager()->getCommunicator()->proxyToString(imageProviderInfo.proxy);
61  visionx::StereoCalibrationInterfacePrx calib = visionx::StereoCalibrationInterfacePrx::checkedCast(imageProviderInfo.proxy);
62  if (!calib)
63  {
64  ARMARX_ERROR << "Image provider does not provide a stereo calibration - 3D will not work - " << imageProviderInfo.proxy->ice_ids();
65  }
66  else
67  {
68  ARMARX_VERBOSE << "got StereoCalibrationInterface proxy" ;
69  CStereoCalibration* stereoCalibration = visionx::tools::convert(calib->getStereoCalibration());
70  ARMARX_VERBOSE << "got StereoCalibration";
71  calibration = stereoCalibration->GetLeftCalibration();
72  ARMARX_VERBOSE << "got mono Calibration";
73  }
74 
75 
77  {
79  }
80 }
81 
83 {
85 
86  delete maskedrgbImageBuffer;
87  delete depthImageBuffer;
88 }
89 
91 {
93 }
94 
96 {
98 }
99 
101 {
103 }
104 
106 {
107 }
108 
110 {
111  Base::renderOutputImage(op_array);
112 
113  if (!localRobot || !running3D)
114  {
115  ARMARX_WARNING << deactivateSpam() << "Could not render output image for 3d pose estimation";
116  return;
117  }
118 
119  std::unique_lock depthImage_lock(depthImageBufferMutex);
120 
121  maskOutputImageBasedOnDepth();
123 
124  const int depthThreshold = maxDepthDifference;
125  openposeResult3D.clear();
126 
127  for (const auto& [name, entity] : openposeResult)
128  {
129  if (entity.keypointMap.size() == 0)
130  {
131  continue;
132  }
133 
134  std::map<std::string, int> depthStorage; // we do not want to store perspective depth-values in a Keypoint, we transfer them into world-coordiantes (in cameraframe) anyways
135  std::vector<int> depthsCopy;
136 
137  // Get camera depth information from image coordinates
138  for (const auto& [kp_name, point] : entity.keypointMap)
139  {
140  int depth = getMedianDepthFromImage(static_cast<int>(point.x), static_cast<int>(point.y), radius);
141  depthStorage[kp_name] = depth;
142  depthsCopy.push_back(depth);
143  }
144 
145  // Find outlier in depth values and set them to median of depth values
146  std::sort(depthsCopy.begin(), depthsCopy.end());
147  const int medianDepth = depthsCopy.at(depthsCopy.size() / 2);
148  for (auto& [storage_name, depth] : depthStorage)
149  {
150  if (depth > medianDepth + depthThreshold || depth < medianDepth - depthThreshold)
151  {
152  depth = medianDepth;
153  }
154  }
155 
156  // Transform pixel + depth into world coordinates
157  // and update stored 3d entity
158  openposeResult3D[name] = HumanPose3D();
159  for (const auto& [kp_name, point] : entity.keypointMap)
160  {
161  Vec2d imagePoint;
162  imagePoint.x = point.x;
163  imagePoint.y = point.y;
164  Vec3d result;
166  calibration->ImageToWorldCoordinates(imagePoint, result, static_cast<float>(depthStorage.at(kp_name)), useDistortionParameters);
167 
168  FramedPosition pos = FramedPosition(Eigen::Vector3f(result.x, result.y, result.z), cameraNodeName, localRobot->getName());
169  auto globalEigen = pos.toGlobalEigen(localRobot);
170  openposeResult3D[name].keypointMap[kp_name].x = result.x;
171  openposeResult3D[name].keypointMap[kp_name].y = result.y;
172  openposeResult3D[name].keypointMap[kp_name].z = result.z;
173 
174  openposeResult3D[name].keypointMap[kp_name].globalX = globalEigen(0);
175  openposeResult3D[name].keypointMap[kp_name].globalY = globalEigen(1);
176  openposeResult3D[name].keypointMap[kp_name].globalZ = globalEigen(2);
177 
178  openposeResult3D[name].keypointMap[kp_name].label = point.label;
179  openposeResult3D[name].keypointMap[kp_name].confidence = point.confidence;
180  openposeResult3D[name].keypointMap[kp_name].dominantColor = point.dominantColor;
181  }
182  }
183 
184  filterToNearest();
185 }
186 
188 {
190  ARMARX_DEBUG << deactivateSpam(0.5) << "Reporting 3Dkeypoints for " << openposeResult3D.size() << " entities";
192 }
193 
194 int RGBDOpenPoseEstimationComponentPluginUser::getMedianDepthFromImage(int x, int y, int radius) const
195 {
196  std::vector<int> depths;
197  for (int xoffset = -radius; xoffset < radius; xoffset++)
198  {
199  int xo = x + xoffset;
200  if (xo < 0 || xo > depthImageBuffer->width)
201  {
202  continue;
203  }
204  for (int yoffset = -radius; yoffset < radius; yoffset++)
205  {
206  int yo = y + yoffset;
207  if (yo < 0 || yo > depthImageBuffer->height)
208  {
209  continue;
210  }
211 
212  // Check whether (x,y) is in circle:
213  if (xoffset * xoffset + yoffset * yoffset <= radius * radius)
214  {
215  unsigned int pixelPos = static_cast<unsigned int>(3 * (yo * depthImageBuffer->width + xo));
216  int z_value = depthImageBuffer->pixels[pixelPos + 0]
217  + (depthImageBuffer->pixels[pixelPos + 1] << 8)
218  + (depthImageBuffer->pixels[pixelPos + 2] << 16);
219  if (z_value > 0)
220  {
221  depths.push_back(z_value);
222  }
223  }
224  }
225  }
226  std::sort(depths.begin(), depths.end());
227 
228  return depths.empty() ? 0 : depths[depths.size() / 2];
229 }
230 
231 void RGBDOpenPoseEstimationComponentPluginUser::maskOutputImageBasedOnDepth()
232 {
233  if (maxDepth <= 0)
234  {
235  return;
236  }
237 
240 
242 
243  int pixelCount = depthImageBuffer->width * depthImageBuffer->height;
244  int depthThresholdmm = maxDepth;
245  CByteImage depthMaskImage(depthImageBuffer->width, depthImageBuffer->height, CByteImage::eGrayScale);
246  CByteImage brightenMaskImage(openposeResultImage[0]->width, openposeResultImage[0]->height, CByteImage::eGrayScale);
247  ::ImageProcessor::Zero(&depthMaskImage);
248  ::ImageProcessor::Zero(&brightenMaskImage);
249 
250  for (int i = 0; i < pixelCount; i += 1)
251  {
252  int z_value = depthImageBuffer->pixels[i * 3 + 0] + (depthImageBuffer->pixels[i * 3 + 1] << 8) + (depthImageBuffer->pixels[i * 3 + 2] << 16);
253  depthMaskImage.pixels[i] = z_value > depthThresholdmm || z_value == 0 ? 0 : 255;
254  }
255 
256  ::ImageProcessor::Erode(&depthMaskImage, &depthMaskImage, 5);
257  ::ImageProcessor::Dilate(&depthMaskImage, &depthMaskImage, 20);
258 
259  for (int i = 0; i < pixelCount; i += 1)
260  {
261  if (depthMaskImage.pixels[i] == 0)
262  {
263  // set to green
264  openposeResultImage[0]->pixels[i * 3] = 0;
265  openposeResultImage[0]->pixels[i * 3 + 1] = 255;
266  openposeResultImage[0]->pixels[i * 3 + 2] = 0;
267 
268  // add brightness to mask
269  brightenMaskImage.pixels[i] = 255;
270  }
271  }
272 
273  // brighten if necessary
274  if (brightnessIncrease > 0)
275  {
276  CByteImage smoothedImageMask(&brightenMaskImage);
277  ::ImageProcessor::GaussianSmooth5x5(&brightenMaskImage, &smoothedImageMask);
278 
279  for (int i = 0; i < pixelCount; i += 1)
280  {
281  if (depthMaskImage.pixels[i] == 0)
282  {
283  float perc = static_cast<float>(smoothedImageMask.pixels[i]) / 255.f;
284  int effectiveBrightnessIncrease = brightnessIncrease * perc;
285  openposeResultImage[0]->pixels[i * 3] = std::min<int>(openposeResultImage[0]->pixels[i * 3] + effectiveBrightnessIncrease, 255);
286  openposeResultImage[0]->pixels[i * 3 + 1] = std::min<int>(openposeResultImage[0]->pixels[i * 3 + 1] + effectiveBrightnessIncrease, 255);
287  openposeResultImage[0]->pixels[i * 3 + 2] = std::min<int>(openposeResultImage[0]->pixels[i * 3 + 2] + effectiveBrightnessIncrease, 255);
288  }
289  }
290  }
291 }
292 
294 {
296  Base::stop(c);
297 }
298 
300 {
301  if (running3D)
302  {
303  return;
304  }
305  else
306  {
307  ARMARX_INFO << "Starting OpenposeEstimation -- 3D";
308  running3D = true;
309  }
310 }
311 
313 {
314  start();
315  if (running3D)
316  {
317  ARMARX_INFO << "Stopping OpenposeEstimation -- 3D";
318  running3D = false;
319  }
320 }
321 
322 void RGBDOpenPoseEstimationComponentPluginUser::enableHumanPoseEstimation(const EnableHumanPoseEstimationInput &input, const Ice::Current&)
323 {
324  running3D = input.enable3d;
326 }
327 
328 /*void OpenPoseEstimationComponent::filterEntitiesBasedOnWorkspacePolygon()
329 {
330  // polygon was: -5000,-5000;5000,-5000;5000,5000;-5000,5000;-5000,-5000
331  // Setup workspace-polygon
332  std::vector<Polygon2D::Point> points;
333  std::vector<std::string> pointStrings = simox::alg::split(pluginUser.workspacePolygonString, ";");
334  for (auto s : pointStrings)
335  {
336  ARMARX_VERBOSE << "WorkspacePolygon: " << s;
337  std::vector<std::string> workSpacePolygonPoint = simox::alg::split(s, ",");
338  ARMARX_CHECK_EXPRESSION(workSpacePolygonPoint.size() == 2);
339  Polygon2D::Point point;
340  point.x = std::strtof(workSpacePolygonPoint.at(0).c_str(), nullptr);
341  point.y = std::strtof(workSpacePolygonPoint.at(1).c_str(), nullptr);
342  points.push_back(point);
343  }
344  pluginUser.workspacePolygon = Polygon2D(points);
345 
346  if (!localRobot || !running3D_is_possible || !running3D)
347  {
348  return;
349  }
350 
351  Entity3DMap::iterator iter = openposeResult3D.begin();
352  while (iter != openposeResult3D.end())
353  {
354  const std::string& name = iter->first;
355  const Entity3D& entity = iter->second;
356 
357  for(const auto& [kp_name, point] : entity.keypointMap)
358  {
359  FramedPositionPtr pos = point->get3D()->toGlobal(localRobot); // Changing frame of copy
360  if (!workspacePolygon.isInside(pos))
361  {
362  ARMARX_VERBOSE << deactivateSpam(1) << "removing entity due out of workspace";
363  iter = openposeResult3D.erase(iter);
364  }
365  else
366  {
367  iter++;
368  }
369  }
370  }
371 }*/
372 
373 void RGBDOpenPoseEstimationComponentPluginUser::filterToNearest()
374 {
375  if (!reportOnlyNearestPerson || openposeResult3D.size() == 0)
376  {
377  return;
378  }
379 
380  std::vector<std::pair<std::string, HumanPose3D>> poses;
381  for (const auto& [key, humanPose] : openposeResult3D)
382  {
383  poses.push_back({key, humanPose});
384  }
385 
386  std::sort(poses.begin(), poses.end(), [](std::pair<std::string, HumanPose3D> o1, std::pair<std::string, HumanPose3D> o2)
387  {
388  auto humanPose1 = o1.second;
389  auto humanPose2 = o2.second;
390  float humanPose1AverageDepth = std::numeric_limits<float>::quiet_NaN();
391  float humanPose2AverageDepth = std::numeric_limits<float>::quiet_NaN();
392  if (humanPose1.keypointMap.size() == 0)
393  {
394  float result = 0.0f;
395  int amountDepths = 0;
396  for (const auto& [k, point] : humanPose1.keypointMap)
397  {
398  result += point.z;
399  amountDepths++;
400  }
401  humanPose1AverageDepth = result / static_cast<float>(amountDepths);
402  }
403 
404  if (humanPose2.keypointMap.size() == 0)
405  {
406  float result = 0.0f;
407  int amountDepths = 0;
408  for (const auto& [k, point] : humanPose2.keypointMap)
409  {
410  result += point.z;
411  amountDepths++;
412  }
413  humanPose2AverageDepth = result / static_cast<float>(amountDepths);
414  }
415 
416  return humanPose1AverageDepth < humanPose2AverageDepth;
417  });
418  poses.resize(1);
419 
420  openposeResult3D.clear();
421  for (const auto& p : poses)
422  {
423  openposeResult3D[p.first] = p.second;
424  }
425 }
426 
427 
429 {
430  // also show in ArViz
431  viz::Layer openPoseArVizLayer = arviz.layer(layerName);
432  if (openposeResult3D.empty())
433  {
434  arviz.commit(openPoseArVizLayer);
435 
436  return;
437  }
438 
439  int human = 1;
440  for (const auto& [name, humanPose] : openposeResult3D)
441  {
442  std::string objectName = "human_" + name;
443  //armarx::viz::HumanPoseBody25::addPoseToLayer(humanPose.keypointMap, openPoseArVizLayer, objectName);
444  human++;
445  }
446 
447  arviz.commit(openPoseArVizLayer);
448  openposeResult3D.clear(); // its the last step
449  Base::visualize();
450 }
armarx::RGBDOpenPoseEstimationComponentPluginUser::maskedrgbImageBuffer
CByteImage * maskedrgbImageBuffer
Definition: RGBDOpenPoseEstimationComponent.h:84
RemoteRobot.h
armarx::viz::Client::commit
CommitResult commit(StagedCommit const &commit)
Definition: Client.cpp:80
armarx::RGBDOpenPoseEstimationComponentPluginUser::stop
void stop(const Ice::Current &=Ice::emptyCurrent) override
Definition: RGBDOpenPoseEstimationComponent.cpp:293
armarx::RGBDOpenPoseEstimationComponentPluginUser::brightnessIncrease
int brightnessIncrease
Definition: RGBDOpenPoseEstimationComponent.h:88
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:180
armarx::ManagedIceObject::getIceManager
IceManagerPtr getIceManager() const
Returns the IceManager.
Definition: ManagedIceObject.cpp:353
armarx::OpenPoseEstimationComponentPluginUser::active_upon_startup
bool active_upon_startup
Definition: OpenPoseEstimationComponent.h:87
armarx::RGBDOpenPoseEstimationComponentPluginUser::localRobot
VirtualRobot::RobotPtr localRobot
Definition: RGBDOpenPoseEstimationComponent.h:101
armarx::OpenPoseEstimationComponentPluginUser::preOnDisconnectImageProcessor
virtual void preOnDisconnectImageProcessor()
Definition: OpenPoseEstimationComponent.cpp:85
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
armarx::RGBDOpenPoseEstimationComponentPluginUser::enableHumanPoseEstimation
void enableHumanPoseEstimation(const EnableHumanPoseEstimationInput &input, const Ice::Current &) override
Definition: RGBDOpenPoseEstimationComponent.cpp:322
armarx::RGBDOpenPoseEstimationComponentPluginUser::running3D
std::atomic_bool running3D
Definition: RGBDOpenPoseEstimationComponent.h:104
GfxTL::Vec2d
VectorXD< 2, double > Vec2d
Definition: VectorXD.h:694
armarx::RGBDOpenPoseEstimationComponentPluginUser::preOnConnectImageProcessor
void preOnConnectImageProcessor() override
Definition: RGBDOpenPoseEstimationComponent.cpp:95
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
armarx::RGBDOpenPoseEstimationComponentPluginUser::stop3DPoseEstimation
void stop3DPoseEstimation(const Ice::Current &=Ice::emptyCurrent) override
Definition: RGBDOpenPoseEstimationComponent.cpp:312
armarx::RGBDOpenPoseEstimationComponentPluginUser::depthImageBuffer
CByteImage * depthImageBuffer
Definition: RGBDOpenPoseEstimationComponent.h:86
armarx::OpenPoseEstimationComponentPluginUser::layerName
std::string layerName
Definition: OpenPoseEstimationComponent.h:125
armarx::OpenPoseEstimationComponentPluginUser::preOnInitImageProcessor
virtual void preOnInitImageProcessor()
Definition: OpenPoseEstimationComponent.cpp:70
armarx::RGBDOpenPoseEstimationComponentPluginUser::postCreatePropertyDefinitions
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
Definition: RGBDOpenPoseEstimationComponent.cpp:36
armarx::RGBDOpenPoseEstimationComponentPluginUser::listener3DPrx
OpenPose3DListenerPrx listener3DPrx
Definition: RGBDOpenPoseEstimationComponent.h:94
armarx::RGBDOpenPoseEstimationComponentPluginUser::reportOnlyNearestPerson
bool reportOnlyNearestPerson
Definition: RGBDOpenPoseEstimationComponent.h:91
armarx::OpenPoseEstimationComponentPluginUser::openposeResultImage
CByteImage ** openposeResultImage
Definition: OpenPoseEstimationComponent.h:113
armarx::FramedPosition::toGlobalEigen
Eigen::Vector3f toGlobalEigen(const SharedRobotInterfacePrx &referenceRobot) const
Definition: FramedPose.cpp:752
armarx::RGBDOpenPoseEstimationComponentPluginUser::openposeResult3D
HumanPose3DMap openposeResult3D
Definition: RGBDOpenPoseEstimationComponent.h:97
armarx::OpenPoseEstimationComponentPluginUser::start
void start(const Ice::Current &=Ice::emptyCurrent) override
Definition: OpenPoseEstimationComponent.cpp:168
visionx::tools::convert
CByteImage::ImageType convert(const ImageType visionxImageType)
Converts a VisionX image type into an image type of IVT's ByteImage.
Definition: TypeMapping.cpp:95
armarx::RGBDOpenPoseEstimationComponentPluginUser::maxDepthDifference
unsigned int maxDepthDifference
Definition: RGBDOpenPoseEstimationComponent.h:76
armarx::OpenPoseEstimationComponentPluginUser::stop
void stop(const Ice::Current &=Ice::emptyCurrent) override
Definition: OpenPoseEstimationComponent.cpp:183
if
if(!yyvaluep)
Definition: Grammar.cpp:724
armarx::RGBDOpenPoseEstimationComponentPluginUser::robotStateInterface
armarx::RobotStateComponentInterfacePrx robotStateInterface
Definition: RGBDOpenPoseEstimationComponent.h:100
armarx::OpenPoseEstimationComponentPluginUser::timestamp_of_update
std::atomic_long timestamp_of_update
Definition: OpenPoseEstimationComponent.h:131
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:177
GfxTL::Vec3d
VectorXD< 3, double > Vec3d
Definition: VectorXD.h:695
armarx::FramedPosition
The FramedPosition class.
Definition: FramedPose.h:142
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:19
armarx::RGBDOpenPoseEstimationComponentPluginUser::renderOutputImage
void renderOutputImage(const op::Array< float > &) override
Definition: RGBDOpenPoseEstimationComponent.cpp:109
armarx::OpenPoseEstimationComponentPluginUser::postOnConnectImageProcessor
virtual void postOnConnectImageProcessor()
Definition: OpenPoseEstimationComponent.cpp:62
armarx::RGBDOpenPoseEstimationComponentPluginUser::radius
unsigned int radius
Definition: RGBDOpenPoseEstimationComponent.h:74
armarx::RGBDOpenPoseEstimationComponentPluginUser::postOnConnectImageProcessor
void postOnConnectImageProcessor() override
Definition: RGBDOpenPoseEstimationComponent.cpp:53
armarx::OpenPoseEstimationComponentPluginUser::imageProviderInfo
visionx::ImageProviderInfo imageProviderInfo
Definition: OpenPoseEstimationComponent.h:92
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:189
armarx::RGBDOpenPoseEstimationComponentPluginUser::start3DPoseEstimation
void start3DPoseEstimation(const Ice::Current &=Ice::emptyCurrent) override
Definition: RGBDOpenPoseEstimationComponent.cpp:299
armarx::OpenPoseEstimationComponentPluginUser::postOnDisconnectImageProcessor
virtual void postOnDisconnectImageProcessor()
Definition: OpenPoseEstimationComponent.cpp:80
RGBDOpenPoseEstimationComponent.h
armarx::OpenPoseEstimationComponentPluginUser::renderOutputImage
virtual void renderOutputImage(const op::Array< float > &)
Definition: OpenPoseEstimationComponent.cpp:98
armarx::RGBDOpenPoseEstimationComponentPluginUser::calibration
const CCalibration * calibration
Definition: RGBDOpenPoseEstimationComponent.h:79
armarx::RGBDOpenPoseEstimationComponentPluginUser::RGBDOpenPoseEstimationComponentPluginUser
RGBDOpenPoseEstimationComponentPluginUser()
Definition: RGBDOpenPoseEstimationComponent.cpp:105
armarx::OpenPoseEstimationComponentPluginUser::openposeResult
HumanPose2DMap openposeResult
Definition: OpenPoseEstimationComponent.h:109
armarx::OpenPoseEstimationComponentPluginUser::reportEntities
virtual void reportEntities()
Definition: OpenPoseEstimationComponent.cpp:103
armarx::OpenPoseEstimationComponentPluginUser::visualize
virtual void visualize()
Definition: OpenPoseEstimationComponent.cpp:109
armarx::RGBDOpenPoseEstimationComponentPluginUser::reportEntities
void reportEntities() override
Definition: RGBDOpenPoseEstimationComponent.cpp:187
visionx::ImageProviderInfo::proxy
ImageProviderInterfacePrx proxy
proxy to image provider
Definition: ImageProcessor.h:472
armarx::navigation::algorithms::visualize
void visualize(const algorithms::Costmap &costmap, viz::Layer &layer, const std::string &name, const float zOffset)
Definition: visualization.cpp:20
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::RGBDOpenPoseEstimationComponentPluginUser::preOnDisconnectImageProcessor
void preOnDisconnectImageProcessor() override
Definition: RGBDOpenPoseEstimationComponent.cpp:82
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::ArVizComponentPluginUser::arviz
armarx::viz::Client arviz
Definition: ArVizComponentPlugin.h:43
armarx::RemoteRobot::createLocalClone
VirtualRobot::RobotPtr createLocalClone()
Clones the structure of this remote robot to a local instance.
Definition: RemoteRobot.cpp:328
armarx::OpenPoseEstimationComponentPluginUser::preOnConnectImageProcessor
virtual void preOnConnectImageProcessor()
Definition: OpenPoseEstimationComponent.cpp:75
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::RGBDOpenPoseEstimationComponentPluginUser::cameraNodeName
std::string cameraNodeName
Definition: RGBDOpenPoseEstimationComponent.h:80
armarx::RGBDOpenPoseEstimationComponentPluginUser::maxDepth
unsigned int maxDepth
Definition: RGBDOpenPoseEstimationComponent.h:75
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
ImageUtil.h
armarx::RGBDOpenPoseEstimationComponentPluginUser::preOnInitImageProcessor
void preOnInitImageProcessor() override
Definition: RGBDOpenPoseEstimationComponent.cpp:90
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::RGBDOpenPoseEstimationComponentPluginUser::depthImageBufferMutex
std::mutex depthImageBufferMutex
Definition: RGBDOpenPoseEstimationComponent.h:87
TypeMapping.h
armarx::OpenPoseEstimationComponentPluginUser::enableHumanPoseEstimation
void enableHumanPoseEstimation(const EnableHumanPoseEstimationInput &input, const Ice::Current &=Ice::emptyCurrent) override
Definition: OpenPoseEstimationComponent.cpp:206
armarx::VariantType::FramedPosition
const VariantTypeId FramedPosition
Definition: FramedPose.h:39
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::viz::Client::layer
Layer layer(std::string const &name) const
Definition: Client.cpp:73
armarx::RGBDOpenPoseEstimationComponentPluginUser::postOnDisconnectImageProcessor
void postOnDisconnectImageProcessor() override
Definition: RGBDOpenPoseEstimationComponent.cpp:100
armarx::viz::Layer
Definition: Layer.h:12
armarx::PropertyDefinitionBase::eModifiable
@ eModifiable
Definition: PropertyDefinitionInterface.h:57
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::RGBDOpenPoseEstimationComponentPluginUser::useDistortionParameters
bool useDistortionParameters
Definition: RGBDOpenPoseEstimationComponent.h:81
armarx::OpenPoseEstimationComponentPluginUser::postCreatePropertyDefinitions
virtual void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties)
Definition: OpenPoseEstimationComponent.cpp:32