161 if (articulatedObject ==
nullptr)
163 articulatedObject = createArticulatedObject();
165 if (articulatedObject ==
nullptr)
175 const std::optional<armem::robot_state::RobotState> state =
176 articulatedObjectReaderPlugin->get().queryState(
177 articulatedObject->getType() +
"/" + articulatedObject->getName(),
179 p.obj.readProviderName);
183 return state.value();
189 .globalPose = Eigen::Isometry3f::Identity(),
190 .jointMap = articulatedObject->getJointValues(),
191 .proprioception = std::nullopt};
196 articulatedObject->setGlobalPose(state.
globalPose.matrix());
201 const float t =
static_cast<float>((now - start).toSecondsDouble());
204 const float k = (1 + std::sin(t / (M_2_PI))) / 2;
206 auto jointValues = articulatedObject->getJointValues();
208 for (
auto& [name, jointValue] : jointValues)
210 const auto node = articulatedObject->getRobotNode(name);
211 jointValue = node->unscaleJointValue(k, 0, 1);
215 articulatedObject->setJointValues(jointValues);
220 {
ARMARX_INFO <<
"Storing object took " << dur <<
"."; });
222 auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get();
223 articulatedObjectWriter.storeArticulatedObject(articulatedObject, now);