Skip to content

Commit f1b13e5

Browse files
committed
Working transfer of pin models over zmq
1 parent 1b5a739 commit f1b13e5

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

src/candlewick/runtime/main.cpp

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,33 @@
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;
814
namespace 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
}

tests/test_client.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import pinocchio as pin
2+
import example_robot_data as erd
23
import zmq
34

45

@@ -8,7 +9,11 @@
89
sock: zmq.Socket = ctx.socket(zmq.SocketType.PUSH)
910
sock.connect(f"tcp://127.0.0.1:{PORT}")
1011

11-
model = pin.buildSampleModelHumanoidRandom()
12-
geom_model = pin.buildSampleGeometryModelHumanoid(model)
12+
robot: pin.RobotWrapper = erd.load("solo12")
13+
model = robot.model
14+
geom_model = robot.visual_model
1315

14-
sock.send_multipart([model.saveToString().encode(), geom_model.saveToString().encode()])
16+
model_str = model.saveToString()
17+
geom_str = geom_model.saveToString()
18+
sock.send_multipart([model_str.encode(), geom_str.encode()])
19+
print("Sent")

0 commit comments

Comments
 (0)