HumanPoseBody25.cpp
Go to the documentation of this file.
1 #include "HumanPoseBody25.h"
2 
4 
6 
8 
9 namespace armarx::viz
10 {
11 
13 
14  void
16  HumanPoseLayers& layers,
17  const std::string& prefix)
18  {
20  static const int segmentThickness = 20;
21  static const int jointThickness = 30;
22 
23  // Segments.
24  for (const auto& [index1, index2] : Segments)
25  {
26  const std::string& name1 = JointNames.map().left.at(index1);
27  const std::string& name2 = JointNames.map().left.at(index2);
28 
29  // Only draw segment if start end end are in keypoint map.
30  if (pose.keypoints.find(name1) == pose.keypoints.end() or
31  pose.keypoints.find(name2) == pose.keypoints.end())
32  {
33  continue;
34  }
35 
36  const armarx::armem::human::PoseKeypoint p1 = pose.keypoints.at(name1);
37  const armarx::armem::human::PoseKeypoint p2 = pose.keypoints.at(name2);
38 
39  const Eigen::Vector3f pos1 = p1.positionGlobal->toEigen();
40  const Eigen::Vector3f pos2 = p2.positionGlobal->toEigen();
41 
42  if (pos1.allFinite() and pos2.allFinite())
43  {
44  if (pos1 == Eigen::Vector3f(0, 0, 0) or pos2 == Eigen::Vector3f(0, 0, 0))
45  {
46  continue;
47  }
48 
49  const armarx::viz::Color color = Colors.at(index2);
50 
52  armarx::viz::Cylinder(prefix + "::" + p1.label + "_" + p2.label)
53  .fromTo(pos1, pos2)
54  .radius(segmentThickness)
55  .color(color);
56  layers.skeleton.add(line);
57  }
58  }
59 
60  // Keypoints.
61  for (auto const& [id, name] : JointNames.map())
62  {
63  if (pose.keypoints.find(name) != pose.keypoints.end() and
64  name != JointNames.map().left.at(Joints::Background))
65  {
67 
68  const armarx::viz::Color color = Colors.at(id);
69  armarx::viz::Sphere sphere = armarx::viz::Sphere(prefix + "::" + name)
70  .position(kp.positionGlobal->toEigen())
71  .radius(jointThickness)
72  .color(color);
73  layers.skeleton.add(sphere);
74  }
75  }
76  }
77 
78 } // namespace armarx::viz
armarx::viz::Cylinder::radius
Cylinder & radius(float r)
Definition: Elements.h:76
armarx::viz::Cylinder::fromTo
Cylinder & fromTo(Eigen::Vector3f from, Eigen::Vector3f to)
Definition: Elements.cpp:93
armarx::armem::human::PoseKeypoint::label
std::string label
Definition: types.h:19
armarx::viz::Layer::add
void add(ElementT const &element)
Definition: Layer.h:31
armarx::viz::Sphere
Definition: Elements.h:133
Elements.h
armarx::viz::HumanPoseLayers::skeleton
viz::Layer & skeleton
Definition: HumanPose.h:16
armarx::viz::ElementOps::position
DerivedT & position(float x, float y, float z)
Definition: ElementOps.h:136
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
armarx::armem::human::PoseKeypoint
Definition: types.h:17
armarx::human::pose::model::k4a_bt_body_32::JointNames
const simox::meta::EnumNames< Joints > JointNames
Names of the joints as defined in the body model.
Definition: k4a_bt_body_32.h:77
HumanPoseBody25.h
armarx::viz::Cylinder
Definition: Elements.h:71
armarx::viz::Sphere::radius
Sphere & radius(float r)
Definition: Elements.h:138
armarx::human::pose::model::k4a_bt_body_32::Segments
const std::vector< std::pair< Joints, Joints > > Segments
Segments (defined by pairs of joints) as defined in the body model.
Definition: k4a_bt_body_32.h:113
armarx::viz::Color
Definition: Color.h:12
armarx::armem::human::HumanPose
Definition: types.h:30
openpose_body_25.h
armarx::viz::body_25::addPoseToLayer
void addPoseToLayer(const armarx::armem::human::HumanPose &pose, HumanPoseLayers &layer, const std::string &prefix)
Definition: HumanPoseBody25.cpp:15
armarx::viz::ElementOps::color
DerivedT & color(Color color)
Definition: ElementOps.h:218
armarx::armem::human::PoseKeypoint::positionGlobal
std::optional< armarx::FramedPosition > positionGlobal
Definition: types.h:26
armarx::viz::HumanPoseLayers
Definition: HumanPose.h:14
armarx::human::pose::model::openpose_body_25
This file is part of ArmarX.
Definition: openpose_body_25.h:27
armarx::armem::human::HumanPose::keypoints
KeyPointMap keypoints
Definition: types.h:35
Logging.h
armarx::viz
This file is part of ArmarX.
Definition: ArVizStorage.cpp:418
armarx::human::pose::model::k4a_bt_body_32::Colors
const std::map< Joints, simox::Color > Colors
Definition: k4a_bt_body_32.h:147