25 #include <VirtualRobot/RuntimeEnvironment.h>
37 defs->optional(properties.oldPriorKnowledge.use,
"p.oldPriorKnowledge.use");
38 defs->optional(properties.oldPriorKnowledge.name,
"p.oldPriorKnowledge.name");
50 return "SimulatorToArviz";
59 if (properties.oldPriorKnowledge.use)
68 if (properties.oldPriorKnowledge.use)
70 getProxy(priorKnowledge, properties.oldPriorKnowledge.name);
91 handleRobotLayer(scene.robots, robotLayer);
92 handleObjectLayer(scene.objects, objectLayer);
97 <<
" with filename: " << scene.floorTextureFile;
98 std::string
filename =
"images/Floor20x20.xml";
99 VirtualRobot::RuntimeEnvironment::getDataFileAbsolute(
filename);
103 arviz.
commit({floorLayer, robotLayer, objectLayer});
107 SimulatorToArviz::handleRobotLayer(
const RobotVisuList& robotList,
110 for (
const auto& e : robotList)
112 Eigen::Vector3f position(e.pose->position->x, e.pose->position->y, e.pose->position->z);
114 e.pose->orientation->qx,
115 e.pose->orientation->qy,
116 e.pose->orientation->qz);
117 ARMARX_DEBUG <<
"Drawing robot " << e.name <<
" using file: " << e.robotFile
118 <<
" and joint values " << e.jointValues;
120 .file(e.project, e.robotFile)
122 .joints(e.jointValues)
125 .pose(position, orientation);
127 robotLayer.
add(robot);
132 SimulatorToArviz::handleObjectLayer(
const ObjectVisuList& objectList,
135 for (
const ObjectVisuData&
data : objectList)
137 if (
data.objectPrimitiveData)
139 handleObjectPrimitiveData(
data, objectLayer);
141 else if (not
data.filename.empty())
143 handleObjectFromFile(
data, objectLayer);
145 else if (properties.oldPriorKnowledge.use)
147 handleObjectFromObjectClass(
data, objectLayer);
153 SimulatorToArviz::handleObjectPrimitiveData(
const ObjectVisuData& _object,
156 const PoseBasePtr& objectPose = _object.objectPoses.at(_object.name);
157 Eigen::Vector3f position(
158 objectPose->position->x, objectPose->position->y, objectPose->position->z);
160 objectPose->orientation->qx,
161 objectPose->orientation->qy,
162 objectPose->orientation->qz);
164 switch (_object.objectPrimitiveData->type)
166 case ObjectType::Box:
168 BoxVisuPrimitivePtr boxObject =
169 BoxVisuPrimitivePtr::dynamicCast(_object.objectPrimitiveData);
174 Eigen::Vector3f{boxObject->width, boxObject->height, boxObject->depth})
175 .
color(boxObject->color.r, boxObject->color.g, boxObject->color.b)
180 case ObjectType::Sphere:
182 SphereVisuPrimitivePtr sphereObject =
183 SphereVisuPrimitivePtr::dynamicCast(_object.objectPrimitiveData);
187 .
radius(sphereObject->radius)
188 .
color(sphereObject->color.r, sphereObject->color.g, sphereObject->color.b)
193 case ObjectType::Cylinder:
195 CylinderVisuPrimitivePtr cylinderObject =
196 CylinderVisuPrimitivePtr::dynamicCast(_object.objectPrimitiveData);
199 .
radius(cylinderObject->radius)
200 .
height(cylinderObject->length)
201 .
color(cylinderObject->color.r,
202 cylinderObject->color.g,
203 cylinderObject->color.b)
212 SimulatorToArviz::handleObjectFromFile(
const ObjectVisuData& _object,
215 const PoseBasePtr& objectPose = _object.objectPoses.at(_object.name);
217 Eigen::Vector3f position(
218 objectPose->position->x, objectPose->position->y, objectPose->position->z);
220 objectPose->orientation->qx,
221 objectPose->orientation->qy,
222 objectPose->orientation->qz);
225 .
file(_object.project, _object.filename)
231 SimulatorToArviz::handleObjectFromObjectClass(
const ObjectVisuData& _object,
235 const PoseBasePtr& objectPose = _object.objectPoses.at(_object.name);
237 Eigen::Vector3f position(
238 objectPose->position->x, objectPose->position->y, objectPose->position->z);
240 objectPose->orientation->qx,
241 objectPose->orientation->qy,
242 objectPose->orientation->qz);
243 std::string
filename = getClassFilename(_object.objectClassName);
244 std::string projectname =
"";
252 SimulatorToArviz::getClassFilename(
const std::string& className)
254 auto it = classFilenameCache.find(className);
255 if (it != classFilenameCache.end())
261 std::optional<memoryx::ObjectClassWrapper> objectClass =
262 objectClassSegment.
getClass(className);
268 objectClass->classInMemory
270 std::string
filename = wrapper->getManipulationObjectFileName();
272 classFilenameCache[className] =
filename;