30#include <Ice/ObjectAdapter.h>
38#include <RobotComponents/interface/components/MotionPlanning/Tasks/MotionPlanningTask.h>
61 virtual public MotionPlanningTaskBase,
91 MotionPlanningTaskBasePrx&
98 const Ice::Current& = Ice::emptyCurrent)
override;
111 throw std::logic_error{
"Task already registered as: category: " +
112 selfProxy->ice_getIdentity().category +
113 ", name: " + selfProxy->ice_getIdentity().name};
115 selfProxy = MotionPlanningTaskBasePrx::uncheckedCast(adapter->add(
this, ident));
119 getTaskName(
const Ice::Current& = Ice::emptyCurrent)
const override
127 taskStatusCallbacks.emplace_back(cb);
162 MotionPlanningTaskBasePrx selfProxy;
163 std::atomic<TaskStatus::Status> taskStatus{TaskStatus::eNew};
164 std::deque<std::function<void(TaskStatus::Status)>> taskStatusCallbacks;
168 virtual public MotionPlanningTaskWithDefaultMembersBase,
180 const VectorXf& goalCfg,
181 const CSpaceBasePtr& cspace,
183 Ice::Long maximalPlanningTimeInSeconds,
184 const std::string& taskName) :
185 MotionPlanningTaskBase(taskName),
186 MotionPlanningTaskWithDefaultMembersBase(taskName,
191 maximalPlanningTimeInSeconds)
199 getStart(
const Ice::Current& = Ice::emptyCurrent)
const override
208 getGoal(
const Ice::Current& = Ice::emptyCurrent)
const override
217 getCSpace(
const Ice::Current& = Ice::emptyCurrent)
const override
226 getDcdStep(
const Ice::Current& = Ice::emptyCurrent)
const override
237 return maximalPlanningTimeInSeconds;
246 virtual public PostprocessingMotionPlanningTaskBase
250 const std::string& taskName) :
251 MotionPlanningTaskBase(taskName),
252 PostprocessingMotionPlanningTaskBase(taskName, previousStep)
258 getCSpace(
const Ice::Current& = Ice::emptyCurrent)
const override
261 return previousStep->getCSpace();
269 auto prev = MotionPlanningTaskPtr::dynamicCast(previousStep);
272 Ice::Identity subIdent;
274 ident.category + ident.name,
"PreviousStep_" + previousStep->ice_id());
275 prev->registerAtIceAdapter(adapter, subIdent);
282 MotionPlanningTaskPtr::dynamicCast(previousStep)->postEnqueueing();
static std::string generateSubObjectName(const std::string &superObjectName, const std::string &subObjectName)
Generates a unique name for a sub object from a general name and unique name.
VectorXf getStart(const Ice::Current &=Ice::emptyCurrent) const override
Ice::Long getMaximalPlanningTimeInSeconds(const Ice::Current &=Ice::emptyCurrent) const override
VectorXf getGoal(const Ice::Current &=Ice::emptyCurrent) const override
MotionPlanningTaskWithDefaultMembers(const VectorXf &startCfg, const VectorXf &goalCfg, const CSpaceBasePtr &cspace, Ice::Float dcdStep, Ice::Long maximalPlanningTimeInSeconds, const std::string &taskName)
ctor
float getDcdStep(const Ice::Current &=Ice::emptyCurrent) const override
MotionPlanningTaskWithDefaultMembers()=default
CSpaceBasePtr getCSpace(const Ice::Current &=Ice::emptyCurrent) const override
void addTaskStatusCallback(std::function< void(TaskStatus::Status)> cb)
bool setTaskStatus(TaskStatus::Status newTaskStatus, const Ice::Current &=Ice::emptyCurrent) override
virtual void registerAtIceAdapter(Ice::ObjectAdapterPtr &adapter, const Ice::Identity ident)
~MotionPlanningTask() override=default
Ice::Long getRunningTime(const Ice::Current &) const override
friend class MotionPlanningServer
MotionPlanningTaskBasePrx & getProxy()
virtual void onPlanningDone()
virtual void onRefiningDone()
std::string getTaskName(const Ice::Current &=Ice::emptyCurrent) const override
TaskStatus::Status getTaskStatus(const Ice::Current &=Ice::emptyCurrent) const override
Ice::Long getPlanningTime(const Ice::Current &) const override
virtual void postEnqueueing()
Called by the planning server after the task was enqueued.
Ice::Long refiningTime
The refining time in microseconds.
MotionPlanningTask()=default
Ice::Long getRefiningTime(const Ice::Current &) const override
Ice::Long planningTime
The planning time in microseconds.
void postEnqueueing() override
Called by the planning server after the task was enqueued.
PostprocessingMotionPlanningTask()=default
CSpaceBasePtr getCSpace(const Ice::Current &=Ice::emptyCurrent) const override
PostprocessingMotionPlanningTask(const MotionPlanningTaskBasePtr &previousStep, const std::string &taskName)
void registerAtIceAdapter(Ice::ObjectAdapterPtr &adapter, const Ice::Identity ident) override
The RemoteHandle class wrapps a ClientSideRemoteHandleControlBlock and can be used just as a Ice prox...
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
::IceInternal::Handle<::Ice::ObjectAdapter > ObjectAdapterPtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< PostprocessingMotionPlanningTask > PostprocessingMotionPlanningTaskPtr
IceInternal::Handle< MotionPlanningTask > MotionPlanningTaskPtr
IceInternal::Handle< MotionPlanningTaskWithDefaultMembers > MotionPlanningTaskWithDefaultMembersPtr
RemoteHandle< MotionPlanningTaskControlInterfacePrx > PostprocessingMotionPlanningTaskHandle
RemoteHandle< MotionPlanningTaskControlInterfacePrx > MotionPlanningTaskHandle