159 if (articulatedObject ==
nullptr)
161 articulatedObject = createArticulatedObject();
163 if (articulatedObject ==
nullptr)
173 const std::optional<armem::robot_state::RobotState> state =
174 articulatedObjectReaderPlugin->get().queryState(
175 articulatedObject->getType() +
"/" + articulatedObject->getName(),
177 p.obj.readProviderName);
181 return state.value();
187 .globalPose = Eigen::Isometry3f::Identity(),
188 .jointMap = articulatedObject->getJointValues(),
189 .proprioception = std::nullopt};
194 articulatedObject->setGlobalPose(state.
globalPose.matrix());
199 const float t =
static_cast<float>((now - start).toSecondsDouble());
202 const float k = (1 + std::sin(t / (M_2_PI))) / 2;
204 auto jointValues = articulatedObject->getJointValues();
206 for (
auto& [name, jointValue] : jointValues)
208 const auto node = articulatedObject->getRobotNode(name);
209 jointValue = node->unscaleJointValue(k, 0, 1);
213 articulatedObject->setJointValues(jointValues);
218 {
ARMARX_INFO <<
"Storing object took " << dur <<
"."; });
220 auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get();
221 articulatedObjectWriter.storeArticulatedObject(articulatedObject, now);