Class BaseVisualizer

Class Documentation

class BaseVisualizer

A base class for defining visualizers for Pinocchio in C++. This provides basic building blocks (a base constructor, data members, getters for the models).

The base API assumes that the visualizer is not the owner of the underlying Pinocchio multibody, visual or collision models. Their lifetimes should be managed by the application context itself.

Remark

C++ port of the BaseVisualizer abstract class in Pinocchio’s Python bindings.

Public Types

typedef SE3::Matrix4 Matrix4

Public Functions

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.

Remark

This constructor throws if a collision_model is provided with no collision_data. If the reverse happens, then the collision GeometryData is simply ignored.

Parameters:
  • model – Reference to Pinocchio Model class.

  • visual_model – Reference to visual GeometryModel.

  • collision_model – Pointer to collision model. Pass nullptr if no collision model is to be provided.

  • data – Reference to Data object. The visualizer will store an internal reference as a pointer.

  • visual_data – Reference to visual (VISUAL) GeometryData object. The visualizer will store an internal reference as a pointer.

  • collision_data – Pointer to collision (COLLISION) GeometryData object. The visualizer will store this pointer internally as a reference.

BaseVisualizer(const Model &model, const GeometryModel &visual_model, const GeometryModel *collision_model = nullptr)

Class constructor which will create internally-managed data objects.

Parameters:
  • model – Reference to Pinocchio Model class.

  • visual_model – Reference to visual GeometryModel.

  • collision_model – Pointer to collision model. Pass nullptr if no collision model is to be provided.

virtual ~BaseVisualizer()
inline virtual void initViewer()

Initialize the viewer.

virtual void loadViewerModel() = 0

Load the Pinocchio model.

virtual void rebuildData()

Re-build data objects. Required if the models were modified.

virtual void display(const boost::optional<ConstVectorRef> &q = boost::none)

Display configuration q (if an actual value is given) or update the Pinocchio frames.

template<typename D>
inline void display(const Eigen::MatrixBase<D> &q)

Display configuration q (if an actual value is given) or update the Pinocchio frames.

virtual void play(const std::vector<ConstVectorRef> &qs, Scalar dt)

Play an entire trajectory, waiting for time dt between each keyframe.

void play(const ConstMatrixRef &qs, Scalar dt)
inline virtual bool forceRedraw()

Override this in child class when the scene has to be redrawn. Useful for play().

inline virtual void setCameraTarget(const Eigen::Ref<const Vector3>&)

Set the active camera target.

inline virtual void setCameraPosition(const Eigen::Ref<const Vector3>&)

Set the active camera position.

inline virtual void setCameraPose(const Eigen::Ref<const Matrix4>&)

Set the active camera 6D pose.

inline void setCameraPose(const SE3 &pose)

Set the active camera 6D pose.

inline virtual void setCameraZoom(Scalar)

Set camera zoom level; what this means depends on the implementation (FOV zoom or moving forwards).

inline virtual void enableCameraControl(bool)

Enable/disable controlling the camera from keyboard and mouse.

inline virtual void clean()

Delete all objects from the scene.

inline const Model &model() const
inline const GeometryModel &visualModel() const
inline const GeometryModel &collisionModel() const
inline bool hasCollisionModel() const
inline bool hasExternalData() const

Whether the internal data pointers are borrowed (external), or owned.

inline Data &data()
inline const Data &data() const
inline GeometryData &visualData()
inline const GeometryData &visualData() const
inline GeometryData &collisionData()
inline const GeometryData &collisionData() const

Protected Functions

inline virtual void displayPrecall()

This method is called at the beginning of display().

virtual void displayImpl() = 0
void destroyData()

Protected Attributes

std::reference_wrapper<Model const> m_model
GeometryModel const *m_visualModel
GeometryModel const *m_collisionModel
Data *m_data
GeometryData *m_visualData
GeometryData *m_collisionData
bool m_ownedData