5#ifndef __pinocchio_extra_base_visualizer_hpp__
6#define __pinocchio_extra_base_visualizer_hpp__
8#include "pinocchio/macros.hpp"
9#include "pinocchio/visualizers/config.hpp"
10#include "pinocchio/multibody/data.hpp"
11#include "pinocchio/multibody/geometry.hpp"
13#include <boost/optional.hpp>
20 typedef PINOCCHIO_SCALAR_TYPE_DEFAULT Scalar;
21 PINOCCHIO_COMMON_TYPEDEF(PINOCCHIO_SCALAR_TYPE_DEFAULT, PINOCCHIO_OPTIONS_DEFAULT)
23 typedef Eigen::Ref<const VectorXs> ConstVectorRef;
24 typedef Eigen::Ref<const MatrixXs> ConstMatrixRef;
37 typedef SE3::Matrix4 Matrix4;
87 virtual void display(
const boost::optional<ConstVectorRef> & q = boost::none);
91 void display(
const Eigen::MatrixBase<D> & q)
93 boost::optional<ConstVectorRef>
q_(q);
99 virtual void play(
const std::vector<ConstVectorRef> &
qs, Scalar
dt);
101 void play(
const ConstMatrixRef &
qs, Scalar
dt);
128 this->setCameraPose(
pose.toHomogeneousMatrix());
147 const Model & model()
const
154 return *m_visualModel;
157 const GeometryModel & collisionModel()
const
160 hasCollisionModel(), std::logic_error,
"No collision model in the visualizer.");
161 return *m_collisionModel;
164 bool hasCollisionModel()
const
166 return m_collisionModel !=
nullptr;
179 const Data & data()
const
184 GeometryData & visualData()
186 return *m_visualData;
188 const GeometryData & visualData()
const
190 return *m_visualData;
193 GeometryData & collisionData()
196 hasCollisionModel(), std::logic_error,
"No collision model in the visualizer.");
197 return *m_collisionData;
200 const GeometryData & collisionData()
const
203 hasCollisionModel(), std::logic_error,
"No collision model in the visualizer.");
204 return *m_collisionData;
208 std::reference_wrapper<Model const> m_model;
209 GeometryModel
const * m_visualModel;
210 GeometryModel
const * m_collisionModel;
213 GeometryData * m_visualData;
214 GeometryData * m_collisionData;
221 virtual void displayImpl() = 0;
A base class for defining visualizers for Pinocchio in C++. This provides basic building blocks (a ba...
virtual void clean()
Delete all objects from the scene.
virtual void displayPrecall()
This method is called at the beginning of display().
virtual void initViewer()
Initialize the viewer.
virtual void setCameraTarget(const Eigen::Ref< const Vector3 > &)
Set the active camera target.
virtual void setCameraZoom(Scalar)
Set camera zoom level; what this means depends on the implementation (FOV zoom or moving forwards).
void setCameraPose(const SE3 &pose)
Set the active camera 6D pose.
BaseVisualizer(const Model &model, const GeometryModel &visual_model, const GeometryModel *collision_model=nullptr)
Class constructor which will create internally-managed data objects.
void display(const Eigen::MatrixBase< D > &q)
virtual void rebuildData()
Re-build data objects. Required if the models were modified.
virtual void setCameraPose(const Eigen::Ref< const Matrix4 > &)
Set the active camera 6D pose.
BaseVisualizer(const Model &model, const GeometryModel &visual_model, const GeometryModel *collision_model, Data &data, GeometryData &visual_data, GeometryData *collision_data)
Class constructor for borrowing external data.
virtual void play(const std::vector< ConstVectorRef > &qs, Scalar dt)
Play an entire trajectory, waiting for time dt between each keyframe.
virtual void setCameraPosition(const Eigen::Ref< const Vector3 > &)
Set the active camera position.
virtual bool forceRedraw()
Override this in child class when the scene has to be redrawn. Useful for play().
virtual void enableCameraControl(bool)
Enable/disable controlling the camera from keyboard and mouse.
bool hasExternalData() const
Whether the internal data pointers are borrowed (external), or owned.
virtual void loadViewerModel()=0
Load the Pinocchio model.
virtual void display(const boost::optional< ConstVectorRef > &q=boost::none)
Display configuration q (if an actual value is given) or update the Pinocchio frames.
Main pinocchio namespace.