使用 C++ 在 drake 可视化工具中可视化一条线
Visualizing a line in drake visualizer with C++
这个问题与 Is there a way of visualising a line in drake visualizer 有关,我曾在其中询问如何在 drake 可视化工具中可视化一条线(大约 3 年前,它在 v0.10.0 上运行良好)。我正在尝试使用新的 API 实现相同的效果,并且想知道是否有任何 example/documentation 可以指导我如何将一行发布到可视化工具上。我以前用于发布一行的方法如下所示:
void publishLine(const std::vector<std::vector<double>>& pts,
const std::vector<std::string>& path, lcm::DrakeLcm& lcm,
std::vector<double> color) {
long long int now = getUnixTime() * 1000 * 1000;
nlohmann::json j = {{"timestamp", now},
{
"setgeometry",
{{{"path", path},
{"geometry",
{
{"type", "line"},
{"points", pts},
{"color", color},
{"radius", 0.1},
}}}},
},
{"settransform", nlohmann::json({})},
{"delete", nlohmann::json({})}};
auto msg = robotlocomotion::viewer2_comms_t();
msg.utime = now;
msg.format = "treeviewer_json";
msg.format_version_major = 1;
msg.format_version_minor = 0;
msg.data.clear();
for (auto& c : j.dump()) msg.data.push_back(c);
msg.num_bytes = j.dump().size();
// Use channel 0 for remote viewer communications.
lcm.get_lcm_instance()->publish("DIRECTOR_TREE_VIEWER_REQUEST_<0>", &msg);
}
您可以使用 Meshcat::SetLine
或 Meshcat::SetLineSegments
https://drake.mit.edu/doxygen_cxx/classdrake_1_1geometry_1_1_meshcat.html#aa5b082d79e267c040cbd066a11cdcb54
需要注意的是,许多 browsers/webGL 实现不支持 ThreeJS 中的 linewidth
属性。对于粗线,请考虑使用 SetObject
.
添加圆柱体
这个问题与 Is there a way of visualising a line in drake visualizer 有关,我曾在其中询问如何在 drake 可视化工具中可视化一条线(大约 3 年前,它在 v0.10.0 上运行良好)。我正在尝试使用新的 API 实现相同的效果,并且想知道是否有任何 example/documentation 可以指导我如何将一行发布到可视化工具上。我以前用于发布一行的方法如下所示:
void publishLine(const std::vector<std::vector<double>>& pts,
const std::vector<std::string>& path, lcm::DrakeLcm& lcm,
std::vector<double> color) {
long long int now = getUnixTime() * 1000 * 1000;
nlohmann::json j = {{"timestamp", now},
{
"setgeometry",
{{{"path", path},
{"geometry",
{
{"type", "line"},
{"points", pts},
{"color", color},
{"radius", 0.1},
}}}},
},
{"settransform", nlohmann::json({})},
{"delete", nlohmann::json({})}};
auto msg = robotlocomotion::viewer2_comms_t();
msg.utime = now;
msg.format = "treeviewer_json";
msg.format_version_major = 1;
msg.format_version_minor = 0;
msg.data.clear();
for (auto& c : j.dump()) msg.data.push_back(c);
msg.num_bytes = j.dump().size();
// Use channel 0 for remote viewer communications.
lcm.get_lcm_instance()->publish("DIRECTOR_TREE_VIEWER_REQUEST_<0>", &msg);
}
您可以使用 Meshcat::SetLine
或 Meshcat::SetLineSegments
https://drake.mit.edu/doxygen_cxx/classdrake_1_1geometry_1_1_meshcat.html#aa5b082d79e267c040cbd066a11cdcb54
需要注意的是,许多 browsers/webGL 实现不支持 ThreeJS 中的 linewidth
属性。对于粗线,请考虑使用 SetObject
.