11#include < zmq.hpp>
22#include < zmq_addon.hpp>
33#include " candlewick/multibody/Multibody.h"
4+ #include " candlewick/multibody/Visualizer.h"
45
56#include < pinocchio/serialization/model.hpp>
67#include < pinocchio/serialization/geometry.hpp>
78
9+ #include < CLI/App.hpp>
10+ #include < CLI/Formatter.hpp>
11+ #include < CLI/Config.hpp>
12+
13+ namespace cdw = candlewick;
814namespace pin = pinocchio;
15+ using cdw::multibody::Visualizer;
16+
17+ int main (int argc, char **argv) {
18+ CLI::App app{" Candlewick visualizer runtime" };
19+ argv = app.ensure_utf8 (argv);
20+
21+ std::vector<Uint32> viz_dims{1920u , 1080u };
22+ app.add_option (" --dims" , viz_dims, " Window dimensions." )
23+ ->capture_default_str ();
24+
25+ CLI11_PARSE (app, argc, argv);
26+
27+ if (viz_dims.size () != 2 ) {
28+ cdw::terminate_with_message (" Expected only two values for argument --dims" );
29+ }
930
10- int main () {
1131 zmq::context_t ctx;
1232 zmq::socket_t sock{ctx, zmq::socket_type::pull};
1333 sock.bind (" tcp://127.0.0.1:12000" );
@@ -19,14 +39,25 @@ int main() {
1939
2040 std::vector<zmq::message_t > recv_models;
2141
22- printf (" Receiving Model and GeometryModel..." );
42+ printf (" Receiving Model and GeometryModel...\n " );
2343
2444 const auto ret = zmq::recv_multipart (sock, std::back_inserter (recv_models));
2545 assert (*ret == 2 );
46+ printf (" Received %zu messages\n " , ret.value ());
2647
2748 model.loadFromString (recv_models[0 ].to_string ());
28- std::cout << model << std::endl;
2949 geom_model.loadFromString (recv_models[1 ].to_string ());
3050
51+ Visualizer::Config config;
52+ config.width = viz_dims[0 ];
53+ config.height = viz_dims[1 ];
54+ Visualizer viz{config, model, geom_model};
55+
56+ Eigen::VectorXd q0 = pin::neutral (model);
57+
58+ while (!viz.shouldExit ()) {
59+ viz.display (q0);
60+ }
61+
3162 return 0 ;
3263}
0 commit comments