GraspCandidateVisu.cpp
Go to the documentation of this file.
1 #include "GraspCandidateVisu.h"
2 
5 
6 namespace armarx::grasping
7 {
9  {
10  }
11 
12  void
13  GraspCandidateVisu::visualize(const grasping::GraspCandidateDict& candidates,
14  viz::Client& arviz)
15  {
16  viz::Layer graspsLayer = arviz.layer("Grasps");
17  viz::Layer graspsNonReachableLayer = arviz.layer("Grasps Non-Reachable");
18 
19  visualize(candidates, graspsLayer, graspsNonReachableLayer);
20  arviz.commit({graspsLayer, graspsNonReachableLayer});
21  }
22 
23  void
24  GraspCandidateVisu::visualize(const std::string& id,
25  const GraspCandidate& candidate,
26  viz::Layer& layerReachable,
27  viz::Layer& layerNonReachable)
28  {
29  int alpha = alpha_default;
30  if (auto it = alphasByKey.find(id); it != alphasByKey.end())
31  {
32  alpha = it->second;
33  }
34 
35  ARMARX_CHECK(candidate.tcpPoseInHandRoot)
36  << "Candidate needs to have tcpPoseInHandRoot to be visualized!";
37  viz::Robot hand = visualize("Grasp_" + id, candidate, alpha);
38 
39  if (candidate.reachabilityInfo && candidate.reachabilityInfo->reachable)
40  {
41  layerReachable.add(hand);
42  }
43  else
44  {
45  layerNonReachable.add(hand);
46  }
47  }
48 
49  void
50  GraspCandidateVisu::visualize(const grasping::GraspCandidateDict& candidates,
51  viz::Layer& layerReachable,
52  viz::Layer& layerNonReachable)
53  {
54  for (auto& [id, candidate] : candidates)
55  {
56  visualize(id, *candidate, layerReachable, layerNonReachable);
57  }
58  }
59 
61  GraspCandidateVisu::visualize(const std::string& name, const GraspCandidate& candidate)
62  {
63  return visualize(name, candidate, alpha_default);
64  }
65 
67  GraspCandidateVisu::visualize(const std::string& name,
68  const grasping::GraspCandidate& candidate,
69  int alpha)
70  {
71  bool isReachable = candidate.reachabilityInfo && candidate.reachabilityInfo->reachable;
72  viz::Color color = isReachable ? viz::Color::green() : viz::Color::orange();
73  color.a = alpha;
74 
75  Eigen::Matrix4f tcp2handRoot = fromIce(candidate.tcpPoseInHandRoot).inverse();
76  Eigen::Matrix4f graspPose = PosePtr::dynamicCast(candidate.graspPose)->toEigen();
77  std::string modelFile = "rt/robotmodel/Armar6-SH/Armar6-" + candidate.side + "Hand-v3.xml";
78 
79  viz::Robot hand = viz::RobotHand(name)
80  .file("Armar6RT", modelFile)
81  .pose(fromIce(candidate.robotPose) * graspPose * tcp2handRoot)
82  .overrideColor(color);
83 
84  return hand;
85  }
86 } // namespace armarx::grasping
armarx::grasping
Definition: aron_conversions.h:9
armarx::viz::Client::commit
CommitResult commit(StagedCommit const &commit)
Definition: Client.cpp:89
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::viz::Robot::file
Robot & file(std::string const &project, std::string const &filename)
Definition: Robot.h:16
Pose.h
armarx::grasping::GraspCandidateVisu::alphasByKey
std::map< std::string, int > alphasByKey
Definition: GraspCandidateVisu.h:33
GraspCandidateVisu.h
RobotHand.h
armarx::grasping::GraspCandidateVisu::visualize
void visualize(const grasping::GraspCandidateDict &candidates, viz::Client &arviz)
Definition: GraspCandidateVisu.cpp:13
armarx::viz::Layer::add
void add(ElementT const &element)
Definition: Layer.h:31
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
armarx::grasping::GraspCandidateVisu::GraspCandidateVisu
GraspCandidateVisu()
Definition: GraspCandidateVisu.cpp:8
armarx::viz::Color
Definition: Color.h:12
armarx::viz::Robot::overrideColor
Robot & overrideColor(Color c)
Definition: Robot.h:50
armarx::viz::Robot
Definition: Robot.h:10
armarx::fromIce
void fromIce(const std::map< IceKeyT, IceValueT > &iceMap, boost::container::flat_map< CppKeyT, CppValueT > &cppMap)
Definition: ice_conversions_boost_templates.h:27
armarx::viz::ElementOps::pose
DerivedT & pose(Eigen::Matrix4f const &pose)
Definition: ElementOps.h:176
armarx::viz::RobotHand
Left or right hand of a robot.
Definition: RobotHand.h:18
armarx::viz::Color::orange
static Color orange(int o=255, int a=255)
2 Red + 1 Green
Definition: Color.h:132
armarx::viz::Color::green
static Color green(int g=255, int a=255)
Definition: Color.h:94
armarx::viz::Client::layer
Layer layer(std::string const &name) const
Definition: Client.cpp:80
armarx::viz::Client
Definition: Client.h:117
armarx::viz::Layer
Definition: Layer.h:12
armarx::grasping::GraspCandidateVisu::alpha_default
int alpha_default
Definition: GraspCandidateVisu.h:32