base-visualizer.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2024-2025 INRIA
3 //
4 
5 #ifndef __pinocchio_extra_base_visualizer_hpp__
6 #define __pinocchio_extra_base_visualizer_hpp__
7 
8 #include "pinocchio/macros.hpp"
9 #include "pinocchio/visualizers/config.hpp"
12 
13 #include <boost/optional.hpp>
14 #include <utility>
15 
16 namespace pinocchio
17 {
18  namespace visualizers
19  {
22 
23  typedef Eigen::Ref<const VectorXs> ConstVectorRef;
24  typedef Eigen::Ref<const MatrixXs> ConstMatrixRef;
25 
34  class PINOCCHIO_VISUALIZERS_DLLAPI BaseVisualizer
35  {
36  public:
37  typedef SE3::Matrix4 Matrix4;
38 
54  const Model & model,
57  Data & data,
60 
68  const Model & model,
70  const GeometryModel * collision_model = nullptr);
71 
72  virtual ~BaseVisualizer();
73 
75  virtual void initViewer()
76  {
77  }
78 
80  virtual void loadViewerModel() = 0;
81 
83  virtual void rebuildData();
84 
87  virtual void display(const boost::optional<ConstVectorRef> & q = boost::none);
88 
90  template<typename D>
91  void display(const Eigen::MatrixBase<D> & q)
92  {
93  boost::optional<ConstVectorRef> q_(q);
94  display(q_);
95  }
96 
99  virtual void play(const std::vector<ConstVectorRef> & qs, Scalar dt);
100 
101  void play(const ConstMatrixRef & qs, Scalar dt);
102 
105  virtual bool forceRedraw()
106  {
107  return true;
108  }
109 
111  virtual void setCameraTarget(const Eigen::Ref<const Vector3> & /*target*/)
112  {
113  }
114 
116  virtual void setCameraPosition(const Eigen::Ref<const Vector3> & /*position*/)
117  {
118  }
119 
121  virtual void setCameraPose(const Eigen::Ref<const Matrix4> & /*pose*/)
122  {
123  }
124 
126  inline void setCameraPose(const SE3 & pose)
127  {
128  this->setCameraPose(pose.toHomogeneousMatrix());
129  }
130 
133  virtual void setCameraZoom(Scalar /*value*/)
134  {
135  }
136 
138  virtual void enableCameraControl(bool)
139  {
140  }
141 
143  virtual void clean()
144  {
145  }
146 
147  const Model & model() const
148  {
149  return m_model;
150  }
151 
152  const GeometryModel & visualModel() const
153  {
154  return *m_visualModel;
155  }
156 
158  {
160  hasCollisionModel(), std::logic_error, "No collision model in the visualizer.");
161  return *m_collisionModel;
162  }
163 
164  bool hasCollisionModel() const
165  {
166  return m_collisionModel != nullptr;
167  }
168 
170  bool hasExternalData() const
171  {
172  return !m_ownedData;
173  }
174 
175  Data & data()
176  {
177  return *m_data;
178  }
179  const Data & data() const
180  {
181  return *m_data;
182  }
183 
185  {
186  return *m_visualData;
187  }
188  const GeometryData & visualData() const
189  {
190  return *m_visualData;
191  }
192 
194  {
196  hasCollisionModel(), std::logic_error, "No collision model in the visualizer.");
197  return *m_collisionData;
198  }
199 
200  const GeometryData & collisionData() const
201  {
203  hasCollisionModel(), std::logic_error, "No collision model in the visualizer.");
204  return *m_collisionData;
205  }
206 
207  protected:
208  std::reference_wrapper<Model const> m_model;
211 
216 
218  virtual void displayPrecall()
219  {
220  }
221  virtual void displayImpl() = 0;
222 
223  void destroyData();
224  };
225  } // namespace visualizers
226 } // namespace pinocchio
227 
228 #endif // ifndef __pinocchio_extra_base_visualizer_hxx__
pinocchio::visualizers::BaseVisualizer::setCameraPose
virtual void setCameraPose(const Eigen::Ref< const Matrix4 > &)
Set the active camera 6D pose.
Definition: base-visualizer.hpp:121
Eigen
pinocchio::visualizers::BaseVisualizer::clean
virtual void clean()
Delete all objects from the scene.
Definition: base-visualizer.hpp:143
pinocchio::visualizers::BaseVisualizer::enableCameraControl
virtual void enableCameraControl(bool)
Enable/disable controlling the camera from keyboard and mouse.
Definition: base-visualizer.hpp:138
pinocchio::DataTpl
Definition: context/generic.hpp:25
macros.hpp
PINOCCHIO_THROW
#define PINOCCHIO_THROW(condition, exception_type, message)
Generic macro to throw an exception in Pinocchio if the condition is not met with a given input messa...
Definition: include/pinocchio/macros.hpp:162
pinocchio::visualizers::ConstMatrixRef
Eigen::Ref< const MatrixXs > ConstMatrixRef
Definition: base-visualizer.hpp:24
append-urdf-model-with-another-model.visual_model
visual_model
Definition: append-urdf-model-with-another-model.py:62
geometry-models.visual_data
visual_data
Definition: geometry-models.py:22
build-reduced-model.collision_model
collision_model
Definition: build-reduced-model.py:16
pinocchio::SE3
context::SE3 SE3
Definition: spatial/fwd.hpp:59
pinocchio::visualizers::BaseVisualizer::setCameraPosition
virtual void setCameraPosition(const Eigen::Ref< const Vector3 > &)
Set the active camera position.
Definition: base-visualizer.hpp:116
setup.data
data
Definition: cmake/cython/setup.in.py:48
pinocchio::visualizers::BaseVisualizer::forceRedraw
virtual bool forceRedraw()
Override this in child class when the scene has to be redrawn. Useful for play().
Definition: base-visualizer.hpp:105
pinocchio::visualizers::BaseVisualizer::display
void display(const Eigen::MatrixBase< D > &q)
Display configuration q (if an actual value is given) or update the Pinocchio frames.
Definition: base-visualizer.hpp:91
pinocchio::visualizers::BaseVisualizer::setCameraZoom
virtual void setCameraZoom(Scalar)
Set camera zoom level; what this means depends on the implementation (FOV zoom or moving forwards).
Definition: base-visualizer.hpp:133
pinocchio::GeometryData
Definition: multibody/geometry.hpp:241
pinocchio::visualizers::BaseVisualizer::m_model
std::reference_wrapper< Model const > m_model
Definition: base-visualizer.hpp:208
pinocchio::visualizers::BaseVisualizer::m_visualData
GeometryData * m_visualData
Definition: base-visualizer.hpp:213
pinocchio::python::VectorXs
context::VectorXs VectorXs
Definition: admm-solver.cpp:30
pinocchio::visualizers::BaseVisualizer::initViewer
virtual void initViewer()
Initialize the viewer.
Definition: base-visualizer.hpp:75
pinocchio::visualizers::Scalar
PINOCCHIO_SCALAR_TYPE_DEFAULT Scalar
Definition: base-visualizer.hpp:20
pinocchio::visualizers::BaseVisualizer::model
const Model & model() const
Definition: base-visualizer.hpp:147
pinocchio::visualizers::BaseVisualizer::Matrix4
SE3::Matrix4 Matrix4
Definition: base-visualizer.hpp:37
pinocchio::visualizers::BaseVisualizer::m_data
Data * m_data
Definition: base-visualizer.hpp:212
pinocchio::visualizers::BaseVisualizer::m_visualModel
const GeometryModel * m_visualModel
Definition: base-visualizer.hpp:209
data.hpp
pinocchio::visualizers::BaseVisualizer::collisionData
const GeometryData & collisionData() const
Definition: base-visualizer.hpp:200
geometry.hpp
pinocchio::visualizers::BaseVisualizer::hasCollisionModel
bool hasCollisionModel() const
Definition: base-visualizer.hpp:164
pinocchio::visualizers::BaseVisualizer::hasExternalData
bool hasExternalData() const
Whether the internal data pointers are borrowed (external), or owned.
Definition: base-visualizer.hpp:170
pinocchio::visualizers::BaseVisualizer::visualData
const GeometryData & visualData() const
Definition: base-visualizer.hpp:188
pinocchio::visualizers::BaseVisualizer::collisionData
GeometryData & collisionData()
Definition: base-visualizer.hpp:193
pinocchio::visualizers::BaseVisualizer::m_collisionModel
const GeometryModel * m_collisionModel
Definition: base-visualizer.hpp:210
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1083
pinocchio::visualizers::BaseVisualizer::data
const Data & data() const
Definition: base-visualizer.hpp:179
pinocchio::visualizers::BaseVisualizer::displayPrecall
virtual void displayPrecall()
This method is called at the beginning of display().
Definition: base-visualizer.hpp:218
pinocchio::visualizers::BaseVisualizer::visualModel
const GeometryModel & visualModel() const
Definition: base-visualizer.hpp:152
PINOCCHIO_OPTIONS_DEFAULT
#define PINOCCHIO_OPTIONS_DEFAULT
Definition: context.hpp:9
example_robot_data.__main__.display
display
Definition: __main__.py:13
pinocchio::visualizers::BaseVisualizer::visualData
GeometryData & visualData()
Definition: base-visualizer.hpp:184
pinocchio::visualizers::BaseVisualizer::setCameraTarget
virtual void setCameraTarget(const Eigen::Ref< const Vector3 > &)
Set the active camera target.
Definition: base-visualizer.hpp:111
pinocchio::visualizers::BaseVisualizer::data
Data & data()
Definition: base-visualizer.hpp:175
PINOCCHIO_SCALAR_TYPE_DEFAULT
#define PINOCCHIO_SCALAR_TYPE_DEFAULT
Definition: context.hpp:8
PINOCCHIO_COMMON_TYPEDEF
#define PINOCCHIO_COMMON_TYPEDEF(Scalar, Options)
Definition: context/generic.hpp:44
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:54
collision-with-point-clouds.collision_data
collision_data
Definition: collision-with-point-clouds.py:117
pinocchio::visualizers::BaseVisualizer::setCameraPose
void setCameraPose(const SE3 &pose)
Set the active camera 6D pose.
Definition: base-visualizer.hpp:126
pinocchio::visualizers::BaseVisualizer::m_ownedData
bool m_ownedData
Definition: base-visualizer.hpp:215
pinocchio::ModelTpl< context::Scalar, context::Options >
meshcat-viewer.qs
qs
Definition: meshcat-viewer.py:128
pinocchio::visualizers::ConstVectorRef
Eigen::Ref< const VectorXs > ConstVectorRef
Definition: base-visualizer.hpp:23
cartpole.dt
float dt
Definition: cartpole.py:145
pinocchio::visualizers::BaseVisualizer::collisionModel
const GeometryModel & collisionModel() const
Definition: base-visualizer.hpp:157
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1082
pinocchio::visualizers::BaseVisualizer::m_collisionData
GeometryData * m_collisionData
Definition: base-visualizer.hpp:214
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:33
pinocchio::visualizers::BaseVisualizer
A base class for defining visualizers for Pinocchio in C++. This provides basic building blocks (a ba...
Definition: base-visualizer.hpp:34


pinocchio
Author(s):
autogenerated on Sat Apr 19 2025 02:41:29