hpp-corbaserver 6.0.0
Corba server for Humanoid Path Planner applications
Loading...
Searching...
No Matches
problem.impl.hh
Go to the documentation of this file.
1// Copyright (C) 2009, 2010 by Florent Lamiraux, Thomas Moulard, JRL.
2//
3
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met:
7//
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10//
11// 2. Redistributions in binary form must reproduce the above copyright
12// notice, this list of conditions and the following disclaimer in the
13// documentation and/or other materials provided with the distribution.
14//
15// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26// DAMAGE.
27//
28// This software is provided "as is" without warranty of any kind,
29// either expressed or implied, including but not limited to the
30// implied warranties of fitness for a particular purpose.
31//
32// See the COPYING file for more information.
33
34#ifndef HPP_CORBASERVER_PROBLEM_IMPL_HH
35#define HPP_CORBASERVER_PROBLEM_IMPL_HH
36#include <stdlib.h>
37
38#include <vector>
39
46
47namespace hpp {
48namespace corbaServer {
49namespace impl {
50using CORBA::Any;
51using CORBA::Boolean;
52using CORBA::Long;
53using CORBA::ULong;
54using CORBA::UShort;
55
57class Problem : public virtual POA_hpp::corbaserver::Problem {
58 public:
60
61 void setServer(ServerPlugin* server) { server_ = server; }
62
63 virtual Names_t* getAvailable(const char* what);
64
65 virtual Names_t* getSelected(const char* what);
66
67 virtual void setParameter(const char* name, const Any& value);
68
69 virtual Any* getParameter(const char* name);
70
71 virtual char* getParameterDoc(const char* name);
72
73 virtual bool selectProblem(const char* problemName);
74
75 virtual void resetProblem();
76
77 virtual bool loadPlugin(const char* pluginName);
78
79 virtual void movePathToProblem(ULong pathId, const char* problemName,
80 const Names_t& jointNames);
81
82 virtual void setMaxNumThreads(UShort n);
83
84 virtual UShort getMaxNumThreads();
85
86 virtual void setRandomSeed(const Long seed) { srand((int)seed); }
87
89
91
92 virtual void addGoalConfig(const hpp::floatSeq& dofArray);
93
95
96 virtual void resetGoalConfigs();
97
98 void setGoalConstraints(const Names_t& constraints);
99
102 const char* joint1Name,
103 const char* joint2Name,
104 const Double* p,
105 const hpp::boolSeq& mask);
106
108 const char* joint1Name,
109 const char* joint2Name,
110 const Transform_ p,
111 const hpp::boolSeq& mask);
112
114 const char* joint1Name,
115 const char* joint2Name,
116 const Transform_ frame1,
117 const Transform_ frame2,
118 const hpp::boolSeq& mask);
119
121 const char* joint1Name,
122 const char* joint2Name,
123 const Transform_ frame1,
124 const Transform_ frame2,
125 const hpp::boolSeq& mask);
126
127 virtual void createLockedJoint(const char* lockedJointName,
128 const char* jointName,
129 const hpp::floatSeq& value);
130
132 const char* jointName,
133 const hpp::floatSeq& value,
135
136 virtual void createLockedExtraDof(const char* lockedDofName, ULong index,
137 const hpp::floatSeq& value);
138
139 virtual void createManipulability(const char* name, const char* function);
140
141 void createRelativeComConstraint(const char* constraintName, const char* comn,
142 const char* jointName, const floatSeq& point,
143 const hpp::boolSeq& mask);
144
145 void createComBeetweenFeet(const char* constraintName, const char* comn,
146 const char* jointLName, const char* jointRName,
147 const floatSeq& pointL, const floatSeq& pointR,
148 const char* jointRefName, const floatSeq& pRef,
149 const hpp::boolSeq& mask);
150
152 const char* constraintName, const Names_t& floorJoints,
155
156 virtual void createPositionConstraint(const char* constraintName,
157 const char* joint1Name,
158 const char* joint2Name,
159 const hpp::floatSeq& point1,
160 const hpp::floatSeq& point2,
161 const hpp::boolSeq& mask);
162
164 const hpp::floatSeq& goal,
165 const hpp::floatSeq& weights);
166
168 const char* joint1Name,
169 const char* joint2Name,
170 Double distance);
171
173 const char* joint1Name,
174 const hpp::Names_t& objects,
175 Double distance);
176
177 virtual void createIdentityConstraint(const char* constraintName,
178 const Names_t& inJoints,
179 const hpp::Names_t& outJoints);
180
182 hpp::floatSeq_out output,
183 Double& residualError);
184
185 virtual bool optimize(const hpp::floatSeq& input, hpp::floatSeq_out output,
186 hpp::floatSeq_out residualError);
187
189 hpp::floatSeq_out value,
190 hpp::floatSeqSeq_out jacobian);
191
192 virtual bool generateValidConfig(ULong maxIter, hpp::floatSeq_out output,
193 Double& residualError);
194
195 virtual void addPassiveDofs(const char* constraintName,
196 const hpp::Names_t& dofName);
197
198 virtual void getConstraintDimensions(const char* constraintName,
199 ULong& inputSize,
200 ULong& inputDerivativeSize,
201 ULong& outputSize,
202 ULong& outputDerivativeSize);
203
204 virtual void setConstantRightHandSide(const char* constraintName,
205 CORBA::Boolean constant);
206
207 virtual bool getConstantRightHandSide(const char* constraintName);
208
210
211 virtual void setRightHandSide(const hpp::floatSeq& rhs);
212
214
215 virtual void setRightHandSideByName(const char* constraintName,
216 const hpp::floatSeq& rhs);
217
219 const hpp::floatSeq& config);
220
221 virtual void resetConstraints();
222 virtual void resetConstraintMap();
223 virtual void addNumericalConstraints(const char* constraintName,
225 const hpp::intSeq& priorities);
227
230
231 virtual char* displayConstraints();
232
233 virtual void filterCollisionPairs();
234 virtual Double getErrorThreshold();
235 virtual void setErrorThreshold(Double threshold);
236 virtual void setDefaultLineSearchType(const char* type);
237 virtual ULong getMaxIterProjection();
238 virtual void setMaxIterProjection(ULong iterations);
239 virtual ULong getMaxIterPathPlanning();
241 virtual void setTimeOutPathPlanning(double timeOut);
242 virtual double getTimeOutPathPlanning();
243
244 virtual void addPathOptimizer(const char* pathOptimizerType);
245
246 virtual void clearPathOptimizers();
247
248 virtual void addConfigValidation(const char* configValidationType);
249
251
252 virtual void selectPathValidation(const char* pathValidationType,
253 Double tolerance);
254
255 virtual void selectPathProjector(const char* pathProjectorType,
256 Double tolerance);
257
258 virtual void selectPathPlanner(const char* pathPlannerType);
259
260 virtual void selectDistance(const char* distanceType);
261
262 virtual void selectSteeringMethod(const char* steeringMethodType);
263
265
267 virtual bool executeOneStep();
268 virtual void finishSolveStepByStep();
269
270 virtual hpp::intSeq* solve();
271
274 CORBA::Boolean validate, ULong& pathId,
275 CORBA::String_out report);
276
277 virtual bool reversePath(ULong pathId, ULong& reversedPathId);
278
280
282 const hpp::floatSeq& config2, ULong pathId,
283 bool bothEdges);
284
285 virtual void appendDirectPath(ULong pathId, const hpp::floatSeq& config,
286 Boolean validate);
287
288 virtual void concatenatePath(ULong startId, ULong endId);
289
290 virtual void extractPath(ULong pathId, Double start, Double end);
291
292 virtual void erasePath(ULong pathId);
293
294 virtual bool projectPath(ULong pathId);
295
296 virtual void interruptPathPlanning();
297
298 virtual Long numberPaths();
299
301
302 virtual Double pathLength(ULong pathId);
303
305
307 Double atDistance);
308
311 virtual Long numberEdges();
312 virtual void edge(ULong edgeId, hpp::floatSeq_out q1, hpp::floatSeq_out q2);
313 virtual Long connectedComponentOfEdge(ULong edgeId);
314 virtual hpp::floatSeq* node(ULong nodeId);
315 virtual Long connectedComponentOfNode(ULong nodeId);
316 virtual Long numberNodes();
319
321 const Long connectedComponentId,
322 hpp::core::value_type& distance);
323
324 virtual void clearRoadmap();
325 virtual void resetRoadmap();
326 virtual void saveRoadmap(const char* filename);
327 virtual void loadRoadmap(const char* filename);
328
329 virtual void savePath(hpp::core_idl::Path_ptr path, const char* filename);
330 virtual hpp::core_idl::Path_ptr loadPath(const char* filename);
331
332 virtual void scCreateScalarMultiply(const char* outName, Double scalar,
333 const char* inName);
334
335 hpp::core_idl::Distance_ptr getDistance();
336
337 void setDistance(hpp::core_idl::Distance_ptr distance);
338
339 hpp::core_idl::Path_ptr getPath(ULong pathId);
340
341 ULong addPath(hpp::core_idl::PathVector_ptr _path);
342
343 hpp::core_idl::SteeringMethod_ptr getSteeringMethod();
344
345 hpp::core_idl::PathValidation_ptr getPathValidation();
346
347 hpp::core_idl::PathPlanner_ptr getPathPlanner();
348
349 hpp::core_idl::Problem_ptr getProblem();
350
351 hpp::constraints_idl::Implicit_ptr getConstraint(const char* name);
352
353 void setRobot(hpp::pinocchio_idl::Device_ptr robot);
354
355 pinocchio_idl::CollisionObject_ptr getObstacle(const char* name);
356
357 core_idl::Problem_ptr createProblem(pinocchio_idl::Device_ptr robot);
358
359 core_idl::Roadmap_ptr createRoadmap(core_idl::Distance_ptr distance,
360 pinocchio_idl::Device_ptr robot);
361 core_idl::Roadmap_ptr readRoadmap(const char* filename,
362 pinocchio_idl::Device_ptr robot);
363 void writeRoadmap(const char* filename, core_idl::Roadmap_ptr roadmap,
364 pinocchio_idl::Device_ptr robot);
365 core_idl::PathPlanner_ptr createPathPlanner(const char* type,
366 core_idl::Problem_ptr _problem,
367 core_idl::Roadmap_ptr roadmap);
368 core_idl::PathOptimizer_ptr createPathOptimizer(
369 const char* type, core_idl::Problem_ptr _problem);
370
371 core_idl::PathProjector_ptr createPathProjector(const char* type,
372 core_idl::Problem_ptr robot,
374 core_idl::PathValidation_ptr createPathValidation(
375 const char* type, pinocchio_idl::Device_ptr robot, value_type parameter);
376 core_idl::ConfigValidation_ptr createConfigValidation(
377 const char* type, pinocchio_idl::Device_ptr robot) override;
378 core_idl::ConfigurationShooter_ptr createConfigurationShooter(
379 const char* type, core_idl::Problem_ptr _problem);
380 core_idl::Distance_ptr createDistance(const char* type,
381 core_idl::Problem_ptr _problem);
382 core_idl::SteeringMethod_ptr createSteeringMethod(
383 const char* type, core_idl::Problem_ptr _problem);
384
385 core_idl::Constraint_ptr createConstraintSet(pinocchio_idl::Device_ptr robot,
386 const char* name);
387 core_idl::Constraint_ptr createConfigProjector(
388 pinocchio_idl::Device_ptr robot, const char* name, Double threshold,
389 ULong iterations);
390
391 private:
393 core::ProblemSolverPtr_t problemSolver();
395 ServerPlugin* server_;
396};
397} // end of namespace impl.
398} // end of namespace corbaServer.
399} // end of namespace hpp.
400
401#endif
Definition common-idl.hh:78
Definition common-idl.hh:768
Definition common-idl.hh:689
Definition server-plugin.hh:50
Implement CORBA interface `‘Problem’'.
Definition problem.impl.hh:57
virtual void clearConfigValidations()
virtual ULong getMaxIterPathPlanning()
virtual void setInitialConfig(const hpp::floatSeq &dofArray)
virtual hpp::floatSeqSeq * getGoalConfigs()
virtual void setParameter(const char *name, const Any &value)
virtual Any * getParameter(const char *name)
core_idl::PathPlanner_ptr createPathPlanner(const char *type, core_idl::Problem_ptr _problem, core_idl::Roadmap_ptr roadmap)
core_idl::ConfigurationShooter_ptr createConfigurationShooter(const char *type, core_idl::Problem_ptr _problem)
virtual hpp::floatSeq * configAtParam(ULong pathId, Double atDistance)
virtual void createConfigurationConstraint(const char *constraintName, const hpp::floatSeq &goal, const hpp::floatSeq &weights)
virtual floatSeq * getRightHandSide()
pinocchio_idl::CollisionObject_ptr getObstacle(const char *name)
virtual void concatenatePath(ULong startId, ULong endId)
virtual void setConstantRightHandSide(const char *constraintName, CORBA::Boolean constant)
virtual void edge(ULong edgeId, hpp::floatSeq_out q1, hpp::floatSeq_out q2)
virtual bool directPath(const hpp::floatSeq &startConfig, const hpp::floatSeq &endConfig, CORBA::Boolean validate, ULong &pathId, CORBA::String_out report)
virtual bool projectPath(ULong pathId)
hpp::constraints_idl::Implicit_ptr getConstraint(const char *name)
virtual void addNumericalConstraints(const char *constraintName, const hpp::Names_t &constraintNames, const hpp::intSeq &priorities)
virtual void createPositionConstraint(const char *constraintName, const char *joint1Name, const char *joint2Name, const hpp::floatSeq &point1, const hpp::floatSeq &point2, const hpp::boolSeq &mask)
virtual void extractPath(ULong pathId, Double start, Double end)
core_idl::PathValidation_ptr createPathValidation(const char *type, pinocchio_idl::Device_ptr robot, value_type parameter)
virtual void createLockedExtraDof(const char *lockedDofName, ULong index, const hpp::floatSeq &value)
virtual void setTimeOutPathPlanning(double timeOut)
virtual void setRightHandSideByName(const char *constraintName, const hpp::floatSeq &rhs)
virtual ULong getMaxIterProjection()
virtual char * displayConstraints()
core_idl::SteeringMethod_ptr createSteeringMethod(const char *type, core_idl::Problem_ptr _problem)
virtual bool selectProblem(const char *problemName)
virtual void getConstraintDimensions(const char *constraintName, ULong &inputSize, ULong &inputDerivativeSize, ULong &outputSize, ULong &outputDerivativeSize)
virtual void selectPathPlanner(const char *pathPlannerType)
virtual void createManipulability(const char *name, const char *function)
core_idl::Constraint_ptr createConstraintSet(pinocchio_idl::Device_ptr robot, const char *name)
virtual void addPathOptimizer(const char *pathOptimizerType)
core_idl::Roadmap_ptr createRoadmap(core_idl::Distance_ptr distance, pinocchio_idl::Device_ptr robot)
virtual void addEdgeToRoadmap(const hpp::floatSeq &config1, const hpp::floatSeq &config2, ULong pathId, bool bothEdges)
core_idl::PathOptimizer_ptr createPathOptimizer(const char *type, core_idl::Problem_ptr _problem)
virtual void setMaxIterProjection(ULong iterations)
virtual hpp::floatSeqSeq * nodes()
virtual void selectPathProjector(const char *pathProjectorType, Double tolerance)
virtual void createDistanceBetweenJointConstraint(const char *constraintName, const char *joint1Name, const char *joint2Name, Double distance)
virtual void setRightHandSide(const hpp::floatSeq &rhs)
hpp::core_idl::Path_ptr getPath(ULong pathId)
hpp::core_idl::SteeringMethod_ptr getSteeringMethod()
ULong addPath(hpp::core_idl::PathVector_ptr _path)
virtual double getTimeOutPathPlanning()
virtual void setErrorThreshold(Double threshold)
virtual void addLockedJointConstraints(const char *configProjName, const hpp::Names_t &lockedJointNames)
virtual void createTransformationConstraint(const char *constraintName, const char *joint1Name, const char *joint2Name, const Transform_ p, const hpp::boolSeq &mask)
virtual void createConvexShapeContactConstraint(const char *constraintName, const Names_t &floorJoints, const Names_t &objectJoints, const hpp::floatSeqSeq &points, const hpp::intSeqSeq &objTriangles, const hpp::intSeqSeq &floorTriangles)
virtual hpp::floatSeq * getNearestConfig(const hpp::floatSeq &config, const Long connectedComponentId, hpp::core::value_type &distance)
virtual void savePath(hpp::core_idl::Path_ptr path, const char *filename)
void setGoalConstraints(const Names_t &constraints)
virtual Long connectedComponentOfEdge(ULong edgeId)
hpp::core_idl::Problem_ptr getProblem()
hpp::core_idl::PathPlanner_ptr getPathPlanner()
virtual Double getErrorThreshold()
virtual void loadRoadmap(const char *filename)
virtual UShort getMaxNumThreads()
virtual void createOrientationConstraint(const char *constraintName, const char *joint1Name, const char *joint2Name, const Double *p, const hpp::boolSeq &mask)
virtual void setMaxIterPathPlanning(ULong iterations)
virtual Names_t * getSelected(const char *what)
void createComBeetweenFeet(const char *constraintName, const char *comn, const char *jointLName, const char *jointRName, const floatSeq &pointL, const floatSeq &pointR, const char *jointRefName, const floatSeq &pRef, const hpp::boolSeq &mask)
virtual void addConfigValidation(const char *configValidationType)
hpp::core_idl::Distance_ptr getDistance()
virtual void setNumericalConstraintsLastPriorityOptional(const bool optional)
hpp::core_idl::PathValidation_ptr getPathValidation()
virtual void selectDistance(const char *distanceType)
virtual void createDistanceBetweenJointAndObjects(const char *constraintName, const char *joint1Name, const hpp::Names_t &objects, Double distance)
void setServer(ServerPlugin *server)
Definition problem.impl.hh:61
virtual hpp::intSeq * solve()
virtual void finishSolveStepByStep()
virtual void selectConfigurationShooter(const char *configurationShooterType)
core_idl::PathProjector_ptr createPathProjector(const char *type, core_idl::Problem_ptr robot, value_type parameter)
virtual void createTransformationR3xSO3Constraint(const char *constraintName, const char *joint1Name, const char *joint2Name, const Transform_ frame1, const Transform_ frame2, const hpp::boolSeq &mask)
virtual bool optimize(const hpp::floatSeq &input, hpp::floatSeq_out output, hpp::floatSeq_out residualError)
virtual hpp::floatSeqSeq * getWaypoints(ULong inPathId, floatSeq_out times)
virtual Long connectedComponentOfNode(ULong nodeId)
core_idl::ConfigValidation_ptr createConfigValidation(const char *type, pinocchio_idl::Device_ptr robot) override
void writeRoadmap(const char *filename, core_idl::Roadmap_ptr roadmap, pinocchio_idl::Device_ptr robot)
virtual void setRandomSeed(const Long seed)
Definition problem.impl.hh:86
virtual void addConfigToRoadmap(const hpp::floatSeq &config)
virtual void createTransformationConstraint2(const char *constraintName, const char *joint1Name, const char *joint2Name, const Transform_ frame1, const Transform_ frame2, const hpp::boolSeq &mask)
virtual void addPassiveDofs(const char *constraintName, const hpp::Names_t &dofName)
virtual bool applyConstraints(const hpp::floatSeq &input, hpp::floatSeq_out output, Double &residualError)
virtual hpp::floatSeq * getInitialConfig()
virtual void setDefaultLineSearchType(const char *type)
virtual void selectPathValidation(const char *pathValidationType, Double tolerance)
virtual hpp::floatSeq * node(ULong nodeId)
virtual hpp::core_idl::Path_ptr loadPath(const char *filename)
virtual void appendDirectPath(ULong pathId, const hpp::floatSeq &config, Boolean validate)
core_idl::Distance_ptr createDistance(const char *type, core_idl::Problem_ptr _problem)
virtual Double pathLength(ULong pathId)
virtual void createLockedJoint(const char *lockedJointName, const char *jointName, const hpp::floatSeq &value)
virtual bool reversePath(ULong pathId, ULong &reversedPathId)
void createRelativeComConstraint(const char *constraintName, const char *comn, const char *jointName, const floatSeq &point, const hpp::boolSeq &mask)
virtual void addGoalConfig(const hpp::floatSeq &dofArray)
virtual void createLockedJointWithComp(const char *lockedJointName, const char *jointName, const hpp::floatSeq &value, const hpp::ComparisonTypes_t &comp)
core_idl::Constraint_ptr createConfigProjector(pinocchio_idl::Device_ptr robot, const char *name, Double threshold, ULong iterations)
virtual void interruptPathPlanning()
virtual void createIdentityConstraint(const char *constraintName, const Names_t &inJoints, const hpp::Names_t &outJoints)
core_idl::Problem_ptr createProblem(pinocchio_idl::Device_ptr robot)
virtual bool getConstantRightHandSide(const char *constraintName)
virtual hpp::intSeq * optimizePath(ULong pathId)
virtual Names_t * getAvailable(const char *what)
virtual hpp::floatSeqSeq * nodesConnectedComponent(ULong connectedComponentId)
virtual void setRightHandSideFromConfig(const hpp::floatSeq &config)
virtual void movePathToProblem(ULong pathId, const char *problemName, const Names_t &jointNames)
core_idl::Roadmap_ptr readRoadmap(const char *filename, pinocchio_idl::Device_ptr robot)
virtual void setRightHandSideFromConfigByName(const char *constraintName, const hpp::floatSeq &config)
virtual bool prepareSolveStepByStep()
virtual void erasePath(ULong pathId)
virtual char * getParameterDoc(const char *name)
void setRobot(hpp::pinocchio_idl::Device_ptr robot)
virtual bool loadPlugin(const char *pluginName)
virtual void computeValueAndJacobian(const hpp::floatSeq &config, hpp::floatSeq_out value, hpp::floatSeqSeq_out jacobian)
virtual void saveRoadmap(const char *filename)
virtual bool generateValidConfig(ULong maxIter, hpp::floatSeq_out output, Double &residualError)
virtual void scCreateScalarMultiply(const char *outName, Double scalar, const char *inName)
virtual Long numberConnectedComponents()
virtual hpp::floatSeq * derivativeAtParam(ULong pathId, ULong order, Double atDistance)
virtual void setMaxNumThreads(UShort n)
virtual void selectSteeringMethod(const char *steeringMethodType)
void setDistance(hpp::core_idl::Distance_ptr distance)
ReturnType::Object_var makeServantDownCast(Server *server, const typename ServantBaseType::Storage &t)
Definition servant-base.hh:407
pinocchio::value_type value_type
Definition fwd.hh:104
Implement CORBA interface `‘Obstacle’'.
Definition client.hh:46
sequence< boolean > boolSeq
Definition common.idl:30
sequence< double > floatSeq
Robot configuration is defined by a sequence of dof value.
Definition common.idl:34
double Transform_[7]
Element of SE(3) represented by a vector and a unit quaternion.
Definition common.idl:38
sequence< intSeq > intSeqSeq
Definition common.idl:32
sequence< floatSeq > floatSeqSeq
Definition common.idl:35
sequence< string > Names_t
Sequence of names.
Definition common.idl:23
sequence< ComparisonType > ComparisonTypes_t
Definition common.idl:50
sequence< long > intSeq
Definition common.idl:31