30#include <MemoryX/interface/core/EntityBase.h>
31#include <MemoryX/interface/memorytypes/MemoryEntities.h>
32#include <MemoryX/interface/memorytypes/MemorySegments.h>
40 virtual public PersistentObjectInstanceSegmentBase
47 PersistentObjectInstanceSegmentBase()
53 const ::Ice::Current& = Ice::emptyCurrent)
const override
60 const ::Ice::Current& = Ice::emptyCurrent)
const override
67 const ::Ice::Current&
c = Ice::emptyCurrent)
const override
69 ObjectInstanceList result;
71 classList.push_back(className);
77 const ::Ice::Current& = Ice::emptyCurrent)
const override
79 ObjectInstanceList result;
82 for (EntityBaseList::const_iterator it = entityList.begin(); it != entityList.end();
85 const ObjectInstanceBasePtr instance = ObjectInstanceBasePtr::dynamicCast(*it);
89 result.push_back(instance);
98 const ::memoryx::MotionModelInterfacePtr& newMotionModel,
99 const ::Ice::Current& = Ice::emptyCurrent)
override
101 throw armarx::LocalException()
102 <<
"This function does not work on the persistent instance segment since the "
103 "motion model is only temporary!";
108 MotionModelInterfacePtr oldMotionModel =
object->getMotionModel();
112 armarx::LinkedPoseBasePtr oldPose = oldMotionModel->getPoseAtLastLocalisation();
116 newMotionModel->setPoseAtLastLocalisation(oldPose, NULL, NULL);
121 <<
"Object has an old motion model, but that motion model has no pose.";
127 <<
"Object didn't have a motion model before, this may cause problems";
130 object->setMotionModel(AbstractMotionModelPtr::dynamicCast(newMotionModel));
135 const armarx::LinkedPoseBasePtr& objectPose,
136 const ::Ice::Current& = Ice::emptyCurrent)
override
142 armarx::Vector3Ptr::dynamicCast(objectPose->position)->toEigen(),
145 object->setPosition(position);
147 armarx::QuaternionPtr::dynamicCast(objectPose->orientation)->toEigen(),
150 object->setOrientation(orientation);
156 object->getMotionModel()->setPoseAtLastLocalisation(objectPose, NULL, NULL);
161 const armarx::FramedPoseBasePtr& objectPose,
162 const Ice::Current&)
override
168 armarx::Vector3Ptr::dynamicCast(objectPose->position)->toEigen(),
171 object->setPosition(position);
172 object->setPositionUncertainty(
175 armarx::QuaternionPtr::dynamicCast(objectPose->orientation)->toEigen(),
178 object->setOrientation(orientation);
181 if (object->getMotionModel())
184 <<
" has a motion model - You should not call "
185 "setObjectPoseWithoutMotionModel() when a motion model is set. "
186 "Use set setObjectPose() instead!";
192 const std::string& className,
193 const armarx::LinkedPoseBasePtr& objectPose,
194 const ::memoryx::MotionModelInterfacePtr& motionModel,
195 const ::Ice::Current& = Ice::emptyCurrent)
override
199 armarx::Vector3Ptr::dynamicCast(objectPose->position)->toEigen(),
202 object->setPosition(position);
204 armarx::QuaternionPtr::dynamicCast(objectPose->orientation)->toEigen(),
207 object->setOrientation(orientation);
209 objectPose->position->x, objectPose->position->y, objectPose->position->z};
210 FloatVector variances = {10, 10, 10};
213 object->setPositionUncertainty(uncertainty);
214 object->addClass(className, 1.0);
215 object->setExistenceCertainty(1.0);
217 motionModel->setPoseAtLastLocalisation(objectPose, NULL, NULL);
218 object->setMotionModel(AbstractMotionModelPtr::dynamicCast(motionModel));
#define ARMARXCOMPONENT_IMPORT_EXPORT
The FramedOrientation class.
The FramedPosition class.
The MultivariateNormalDistribution class.
static MultivariateNormalDistributionPtr CreateDefaultDistribution(float variance=10000)
Create a distribution with uncertainty of variance in all directions (default: variance = 10000,...
PersistentEntitySegment(CollectionInterfacePrx entityCollection, Ice::CommunicatorPtr ic, bool useMongoIds=true)
std::string addEntity(const EntityBasePtr &entity, const ::Ice::Current &c=Ice::emptyCurrent) override
addEntity add new entity and return the newly generated entity ID
EntityBasePtr getEntityById(const ::std::string &entityId, const ::Ice::Current &=Ice::emptyCurrent) const override
EntityBaseList getEntitiesByAttrValueList(const ::std::string &attrName, const NameList &attrValueList, const ::Ice::Current &=Ice::emptyCurrent) const override
EntityBasePtr getEntityByName(const ::std::string &name, const ::Ice::Current &=Ice::emptyCurrent) const override
void setObjectPose(const std::string &entityId, const armarx::LinkedPoseBasePtr &objectPose, const ::Ice::Current &=Ice::emptyCurrent) override
ObjectInstanceList getObjectInstancesByClass(const ::std::string &className, const ::Ice::Current &c=Ice::emptyCurrent) const override
ObjectInstanceBasePtr getObjectInstanceById(const ::std::string &id, const ::Ice::Current &=Ice::emptyCurrent) const override
void setObjectPoseWithoutMotionModel(const std::string &entityId, const armarx::FramedPoseBasePtr &objectPose, const Ice::Current &) override
ObjectInstanceBasePtr getObjectInstanceByName(const ::std::string &name, const ::Ice::Current &=Ice::emptyCurrent) const override
ObjectInstanceList getObjectInstancesByClassList(const NameList &classList, const ::Ice::Current &=Ice::emptyCurrent) const override
PersistentObjectInstanceSegment(CollectionInterfacePrx entityCollection, Ice::CommunicatorPtr ic, bool useMongoIds=true)
void setNewMotionModel(const ::std::string &entityId, const ::memoryx::MotionModelInterfacePtr &newMotionModel, const ::Ice::Current &=Ice::emptyCurrent) override
std::string addObjectInstance(const std::string &instanceName, const std::string &className, const armarx::LinkedPoseBasePtr &objectPose, const ::memoryx::MotionModelInterfacePtr &motionModel, const ::Ice::Current &=Ice::emptyCurrent) override
#define ARMARX_ERROR_S
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_WARNING_S
The logging level for unexpected behaviour, but not a serious problem.
::IceInternal::Handle<::Ice::Communicator > CommunicatorPtr
IceInternal::Handle< FramedPosition > FramedPositionPtr
IceInternal::Handle< FramedOrientation > FramedOrientationPtr
IceInternal::Handle< PersistentObjectInstanceSegment > PersistentObjectInstanceSegmentPtr
IceInternal::Handle< ObjectInstance > ObjectInstancePtr
IceInternal::Handle< MultivariateNormalDistribution > MultivariateNormalDistributionPtr