3 #include <SimoxUtility/algorithm/string.h>
4 #include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
5 #include <SimoxUtility/shapes/OrientedBox.h>
6 #include <VirtualRobot/Robot.h>
7 #include <VirtualRobot/RobotConfig.h>
21 os <<
"'" <<
id.dataset <<
"/" <<
id.className;
22 if (!
id.instanceName.empty())
24 os <<
"/" <<
id.instanceName;
40 return {ice.dataset, ice.className, ice.instanceName};
46 ice.dataset =
id.dataset();
47 ice.className =
id.className();
48 ice.instanceName =
id.instanceName();
65 std::back_inserter(ids),
69 std::vector<armarx::ObjectID>
72 std::vector<ObjectID> ids;
83 std::back_inserter(ice),
87 armarx::data::ObjectIDSeq
90 data::ObjectIDSeq ice;
98 {objpose::ObjectType::AnyObject,
"AnyObject"},
99 {objpose::ObjectType::KnownObject,
"KnownObject"},
100 {objpose::ObjectType::UnknownObject,
"UnknownObject"}};
106 ice.center =
new Vector3(aabb.center());
107 ice.extents =
new Vector3(aabb.extents());
119 Eigen::Vector3f corner = pos - ori * extents / 2;
122 corner, ori.col(0) * extents(0), ori.col(1) * extents(1), ori.col(2) * extents(2));
124 catch (
const armarx::LocalException&)
147 simox::OrientedBoxf oobb;
155 box.position =
new Vector3(oobb.center());
156 box.orientation =
new Quaternion(oobb.rotation().eval());
157 box.extents =
new Vector3(oobb.dimensions());
182 if (
static_cast<Eigen::Index
>(ice.covariance6x6.size()) != cov.
covariance.size())
186 <<
"Float sequence representing 6x6 covariance matrix must have "
187 << cov.
covariance.size() <<
" values, but has " << ice.covariance6x6.size()
189 <<
"[" << simox::alg::join(simox::alg::multi_to_string(ice.covariance6x6),
", ")
200 std::optional<PoseManifoldGaussian>& cov)
213 std::optional<objpose::PoseManifoldGaussian>
216 std::optional<objpose::PoseManifoldGaussian> cov;
226 ice.covariance6x6.resize(cov.
covariance.size());
234 const std::optional<PoseManifoldGaussian>& cov)
238 ice =
new data::PoseManifoldGaussian;
239 toIce(*ice, cov.value());
247 objpose::data::PoseManifoldGaussianPtr
250 data::PoseManifoldGaussianPtr ice;