4#ifndef __pinocchio_python_extra_extras_hpp__ 5#define __pinocchio_python_extra_extras_hpp__ 7#include "pinocchio/visualizers/base-visualizer.hpp" 8#include "pinocchio/bindings/python/fwd.hpp" 10#include <eigenpy/optional.hpp> 11#include <eigenpy/std-vector.hpp> 17 namespace bp = boost::python;
19 template<
class Visualizer>
20 struct VisualizerPythonVisitor : bp::def_visitor<VisualizerPythonVisitor<Visualizer>>
22 typedef ::pinocchio::visualizers::BaseVisualizer Base;
24 std::is_base_of<Base, Visualizer>::value,
25 "Visualizer class must be derived from pinocchio::visualizers::BaseVisualizer.");
27 static void setCameraPose_proxy(Visualizer & vis,
const Base::Matrix4 & pose)
29 vis.setCameraPose(pose);
32 static void setCameraPose_proxy2(Visualizer & vis,
const SE3 & pose)
34 vis.setCameraPose(pose);
37 static void play_proxy(
38 Visualizer & vis,
const std::vector<visualizers::VectorXs> & qs, context::Scalar dt)
40 std::vector<visualizers::ConstVectorRef> qs_;
41 qs_.reserve(qs.size());
42 for (
size_t i = 0; i < qs.size(); i++)
44 qs_.emplace_back(qs[i]);
50 play_proxy2(Visualizer & vis,
const visualizers::ConstMatrixRef & qs, context::Scalar dt)
55 template<
class... PyArgs>
56 void visit(bp::class_<PyArgs...> & cl)
const 58 using ::pinocchio::visualizers::ConstVectorRef;
59 eigenpy::OptionalConverter<ConstVectorRef, boost::optional>::registration();
62#define DEF_PROP_PROXY(name) \ 66 +[](Visualizer & v) -> auto & { return v.name(); }, bp::return_internal_reference<>())) 68 cl.def(
"initViewer", &Visualizer::initViewer)
69 .def(
"loadViewerModel", &Visualizer::loadViewerModel)
70 .def(
"rebuildData", &Visualizer::rebuildData)
72 "display", +[](Visualizer & v,
const ConstVectorRef & q) { v.display(q); },
73 (bp::arg(
"self"), bp::arg(
"q") = boost::none))
74 .def(
"play", play_proxy, (bp::arg(
"self"),
"qs",
"dt"))
75 .def(
"play", play_proxy2, (bp::arg(
"self"),
"qs",
"dt"))
76 .def(
"setCameraTarget", &Visualizer::setCameraTarget, (bp::arg(
"self"),
"target"))
77 .def(
"setCameraPosition", &Visualizer::setCameraPosition, (bp::arg(
"self"),
"position"))
78 .def(
"setCameraPose", setCameraPose_proxy, (bp::arg(
"self"),
"pose"))
79 .def(
"setCameraPose", setCameraPose_proxy2, (bp::arg(
"self"),
"pose"))
80 .def(
"setCameraZoom", &Visualizer::setCameraZoom, (bp::arg(
"self"),
"value"))
81 .def(
"clean", &Visualizer::clean, bp::arg(
"self"))
82 .def(
"hasExternalData", &Visualizer::hasExternalData)
83 .DEF_PROP_PROXY(model)
84 .DEF_PROP_PROXY(visualModel)
85 .DEF_PROP_PROXY(collisionModel)
87 .DEF_PROP_PROXY(visualData)
88 .DEF_PROP_PROXY(collisionData);
Main pinocchio namespace.