Commit Graph

515 Commits

Author SHA1 Message Date
Robert Haschke
fdec258b2c ROSMsgConverter -> RosMsgConverter 2018-10-18 10:00:45 +02:00
Robert Haschke
1b267768fa cleanup type conversion 2018-10-18 10:00:45 +02:00
Robert Haschke
3786ce5a15 protect fromPython / toPython 2018-10-17 02:00:14 +02:00
Robert Haschke
5d78b10366 fix compiler warnings 2018-10-17 02:00:14 +02:00
v4hn
1a4f6c0e57 keep RobotModelLoader around
Otherwise the robot_model_ does not remain valid
2018-10-17 01:55:28 +02:00
Robert Haschke
a745f55ab7 fix compiler warnings in release mode 2018-10-17 01:55:28 +02:00
Robert Haschke
5bae196b21 fixes for Bionic
boost::python 1.65 is more picky about exactly returning the placeholder type in __init__ functions.
2018-10-17 01:18:39 +02:00
Robert Haschke
c9e735ded3 fix API to match MoveTo / MoveRelative stages 2018-10-17 01:18:39 +02:00
Robert Haschke
fbbb39592b allow PoseStamped as property 2018-10-17 01:18:39 +02:00
Martin Meier
47232dd92b pass verbose InitStageException from C++ to python
reverts df43ba1d68bb5c628a8e8f13729e7cdda872f1f9
2018-10-17 01:18:39 +02:00
Robert Haschke
effa437a53 Solution.toMsg() 2018-10-17 01:18:39 +02:00
Robert Haschke
14bd867df8 expose MonitoringGenerator's setMonitoringStage() 2018-10-17 01:18:39 +02:00
Robert Haschke
ef1bbaa439 Task::init(): verbose exception output 2018-10-17 01:18:39 +02:00
Robert Haschke
ea4b1e0c21 Properties: exposeTo(), configureInitFrom() 2018-10-17 01:18:39 +02:00
Robert Haschke
c80755348c moved python includes to global include folder too
catkin package expects all includes to be in one global location
2018-10-17 01:18:39 +02:00
Robert Haschke
b36d91cc02 import .core by default 2018-10-17 01:18:39 +02:00
janEbert
3c77fd1325 add reference test for properties 2018-10-17 01:18:36 +02:00
Robert Haschke
4ac0b6e2c4 merge fixes 2018-10-16 23:22:10 +02:00
Robert Haschke
1787a66d37 fix compiler warnings 2018-10-16 23:14:58 +02:00
Robert Haschke
f1764d0de4 fix tests 2018-10-16 23:14:58 +02:00
Robert Haschke
940543a063 fixup! allow preemption of Task::plan() 2018-10-16 23:14:58 +02:00
Robert Haschke
b5bc97b3eb Task::execute() 2018-09-25 22:17:42 +02:00
Robert Haschke
7bd9bcf972 allow preemption of Task::plan() 2018-09-25 22:16:45 +02:00
Robert Haschke
e5e291d86f FixCollisions stage 2018-09-25 22:16:45 +02:00
Robert Haschke
a7b74673ce PlannerInterface for joint-space interpolation 2018-09-25 22:16:45 +02:00
Robert Haschke
4860462076 ComputeIK: forward child solution's comment 2018-09-25 16:25:22 +02:00
Robert Haschke
c70db65578 fixup! MoveTo: store goal as any type 2018-09-25 16:25:13 +02:00
Robert Haschke
ca9d50e7d8 fix compiler warnings 2018-09-25 13:30:53 +02:00
Robert Haschke
f2573e9bfd fix include order
Local headers should be preferred over those from underlay.
Consequently use target_include_directories() to properly define include order.
2018-09-25 13:30:53 +02:00
Robert Haschke
4cebd95468 Merge branch master into boost-python 2018-06-03 13:20:02 +02:00
Robert Haschke
d3fdee9095 expose solutions, publish + execute 2018-06-03 13:03:41 +02:00
Robert Haschke
c0a16971f4 remove redundant exposure of smart pointers 2018-06-03 13:03:41 +02:00
Robert Haschke
5e2bff59fc cleanup Property access 2018-06-03 13:03:41 +02:00
Robert Haschke
d5c7bfb07e cleanup 2018-06-03 13:03:41 +02:00
janEbert
e264bddc3e PropertyMap iterator, PropertyMap.update(dict) 2018-06-03 13:03:41 +02:00
janEbert
2345b6c9a6 unit tests for all stages 2018-06-03 13:03:41 +02:00
janEbert
f15cbd7141 overload constructors 2018-06-03 13:03:41 +02:00
janEbert
93c62e833d container wrappers 2018-06-03 13:03:41 +02:00
Robert Haschke
09b9698e7b add ROS unittest 2018-06-03 13:03:41 +02:00
Robert Haschke
56546f190f roscpp_init: provide init_options AnonymousName, NoRosout 2018-06-03 13:03:41 +02:00
janEbert
1f85b00e14 more wrappers, unittest, fixes 2018-06-03 13:03:41 +02:00
Robert Haschke
de9fa8405d register ROS msg types with boost::python's type converters 2018-06-03 13:03:41 +02:00
Robert Haschke
f4ffccdc1f handle std::unique_ptr<Stage>
Class holder needs to be a smart pointer, e.g. std::auto_ptr.
This can be released(), such that ownership can be passed.
Further, derived types need to be declared as implicitly_convertible to base type.
2018-06-03 13:03:41 +02:00
Robert Haschke
47a2a28698 cleanup, unittest for properties 2018-06-03 13:03:41 +02:00
Robert Haschke
ee13295c92 separate .core and .stages modules 2018-06-03 13:03:41 +02:00
Robert Haschke
e615b7c9da local names for python wrapper libs 2018-06-03 13:03:41 +02:00
Robert Haschke
f7ddd43d53 cleanup folder structure 2018-06-03 13:03:41 +02:00
Robert Haschke
135c9c2148 solvers + stages 2018-06-03 13:03:41 +02:00
Robert Haschke
3ef0bd426b Properties 2018-06-03 13:03:41 +02:00
janEbert
226b0b03b4 basic boost::python wrappers 2018-06-03 13:03:41 +02:00
Robert Haschke
ff2474f262 pa10 doesn't need move_group 2018-06-03 12:36:12 +02:00
Robert Haschke
932ab5eba3 cast demos as integration unit tests
- moved demos from demo to test folder
- run them as unittest, checking range of solutions
2018-06-03 12:36:01 +02:00
Robert Haschke
3215880b98 Merge branches 'move-to', 'simple-grasp' and 'properties' into master
These branches only work together:
- MoveTo / MoveRelative: common handling of "goal" property
- properties: required changes to allow for multiple inheritance
- generalize SimpleGrasp / GenerateGraspPose
2018-06-03 11:38:50 +02:00
Robert Haschke
2e46082521 remove Container::exposePropertiesOfChild() 2018-06-03 11:36:50 +02:00
Robert Haschke
157caac385 generalize SimpleGrasp / GenerateGraspPose
- move "pregrasp", "grasp" property from SimpleGrasp to GenerateGraspPose
- Container::exposePropertiesOfChild: decouple exposure from inheritance
2018-06-03 11:36:50 +02:00
Robert Haschke
544f574166 MoveRelative: store goal as any type 2018-06-03 09:22:06 +02:00
Robert Haschke
00260d62b5 MoveTo: store goal as any type 2018-06-03 09:22:06 +02:00
Robert Haschke
941dee7fc1 exposeTo: const method 2018-06-03 09:22:06 +02:00
Robert Haschke
abc4c5de50 PropertyMap: allow any type 2018-06-03 09:18:37 +02:00
Robert Haschke
a8431ce661 Container::exposePropertiesOfChild: allow skipping of undefined props 2018-06-03 06:46:12 +02:00
Robert Haschke
0dab499533 Stage: generally allow forwarding of interface properties 2018-06-03 06:46:12 +02:00
Robert Haschke
92296e020f SimpleGrasp(GraspGenerator)
allow any GraspGenerator stage that provides "pregrasp" and "grasp"
postures as well as a target_pose for grasping.
2018-06-03 06:46:12 +02:00
Robert Haschke
beffe27987 improve property debugging 2018-06-03 06:42:11 +02:00
Robert Haschke
cbb2cd69f7 property inheritance: both from PARENT and INTERFACE
- source_id -> source_flags: bits indicating configured paths
- initializers, e.g. fromName(), should throw
- ignore undeclared errors during inheritance
- on undefined error, reset the value to None
- override value only if previously set by lower-priority source
  MANUAL > CURRENT > PARENT > INTERFACE
2018-06-03 06:36:15 +02:00
Robert Haschke
abea2ee82b reuse boost::any's type_index type 2018-06-02 17:46:37 +02:00
Robert Haschke
2e9932cfbc fix: don't report config issues as successful (but empty) solutions 2018-06-02 17:46:28 +02:00
v4hn
381210f43d compatibility with boost 1.54
This is required for ROS indigo on ubuntu 14.04
2018-06-01 15:02:11 +02:00
Michael Görner
5739bf39d9 use correct frame in pick (#52) 2018-06-01 14:55:23 +02:00
v4hn
0091c76208 compute ik: ignore collisions skips early eef check 2018-06-01 11:34:07 +02:00
v4hn
4026661bfe Rewrite and relax approx comparisons
This is more readable.

Adjusting the threshold to 1e-4 is required to allow for tolerances
in potential sampling planner steps in between.
2018-06-01 11:32:29 +02:00
v4hn
bd1edcbde7 add max_solutions param to plan()
For big problems you just don't want *all* solutions
2018-06-01 11:13:44 +02:00
Robert Haschke
ac1ccba883 minor formatting changes (#51) 2018-05-31 18:01:30 +02:00
Robert Haschke
b35aba6e19 validate merged trajectories 2018-05-30 21:23:34 +02:00
Robert Haschke
941e9df737 declare properties "timeout", "marker_ns" for all stages 2018-05-30 21:21:14 +02:00
Robert Haschke
c2dd28abae rework storing of solutions
- solutions_, failures_ as SolutionBaseConstPtrs in StagePrivate
- replace processSolutions() / processFailures() by direct const-access to storage containers
- generic sendForward(), sendBackward(), spawn(), connect() methods in StagePrivate
- reuse StagePrivate's sendForward(), sendBackward(), spawn() in containers

- store created InterfaceStates in StagePrivate::states_
- Interface: ordered<InterfaceState*> (only store pointers)
  allows for common handling of states of valid and failure solutions

- remove additional state+solution storages
- containers: internal->external state mapping as InterfaceState* -> InterfaceState*
2018-05-30 21:02:50 +02:00
v4hn
ae6b86c7d7 remove void line
?
2018-05-30 21:02:19 +02:00
Robert Haschke
5878e8ab6b correctly reset FixedState 2018-05-30 21:02:03 +02:00
Robert Haschke
52fdf30433 simplify compute() API
- remove bool return value
- always create a solution trajectory, also in case of failures
- success/failure determined from solution.isFailure()

minor adjustments during cherry-pick
2018-05-30 21:01:34 +02:00
Robert Haschke
eb50aaed0e SolutionBase: rename 'name' to 'comment' 2018-05-30 20:25:42 +02:00
Robert Haschke
84dec07565 MoveTo/MoveRelative: generic IK target frame
...instead of simple link name
2018-05-30 20:25:07 +02:00
v4hn
495c80350b Merge branches 'joint_pose', 'move-relative-joints', 'basic-merger' and 'compute-ik' 2018-05-30 19:35:58 +02:00
v4hn
015b1466f4 MoveRel: handle unknown links with hard failure 2018-05-30 19:09:57 +02:00
v4hn
56c9128d99 MoveTo: cleaner strict handling of invalid properties 2018-05-30 18:53:39 +02:00
v4hn
b8e6e5e2fa MoveTo: reduce scope of try-catch 2018-05-30 18:44:26 +02:00
v4hn
bbd274da96 MoveTo: simplify getJointStateGoal 2018-05-30 18:42:31 +02:00
Robert Haschke
b7b7a916df basic merger functionality 2018-05-18 17:44:55 +02:00
Robert Haschke
5e8117720e ignore failures for further processing 2018-05-18 17:44:43 +02:00
Robert Haschke
abb68da083 forward properties 2018-05-18 17:44:43 +02:00
Robert Haschke
ce10d96c5c ComputeIK: report collision pairs 2018-05-18 17:44:43 +02:00
Robert Haschke
41e64ed7e1 remove std::map serialization 2018-05-18 17:44:30 +02:00
Robert Haschke
40ca35085a cleanup 2018-05-18 17:44:30 +02:00
llach
9a7aa4dad7 Pick: added setter for relative joint lift motion 2018-05-18 17:44:30 +02:00
llach
d0c8f7f819 MoveRelative: added relative joint space goals to 2018-05-18 17:44:30 +02:00
llach
0779c255df added stream serialization for std::map<std::string, T> 2018-05-18 17:44:30 +02:00
Robert Haschke
9e19f2187b moved implementations of property setters to header 2018-05-18 17:44:17 +02:00
Robert Haschke
17e487be06 cleanup
- indentation: space -> tabs
- only consider joints of JMG
2018-05-18 17:44:17 +02:00
llach
2be3ee611b adapted MoveTo api change. joint_pose -> named_joint_pose 2018-05-18 17:44:17 +02:00
llach
55470062c9 MoveTo: converting named joint poses to robot state msg in init; property names refactoring 2018-05-18 17:44:17 +02:00
llach
97c2312d67 MoveTo: can now take RobotState msg as goal 2018-05-18 17:44:17 +02:00
Robert Haschke
19fa7349d3 Task: only accept containers 2018-05-18 17:42:34 +02:00
Robert Haschke
e3ca832497 Property: silently return empty string when serialization is not supported 2018-05-18 17:42:34 +02:00
Robert Haschke
2106c51c9d Property: provide a fallback serialize() implementation
... in case operator<< is not defined for type T
2018-04-28 22:13:52 +02:00
Robert Haschke
ae3b9126bd get rid off empty JointState errors 2018-04-27 12:07:27 +02:00
Robert Haschke
ecf8029f75 add timing to merged trajectories 2018-04-27 12:06:59 +02:00
Robert Haschke
872e3cc004 unittest for Priority comparisons 2018-04-27 12:04:55 +02:00
Robert Haschke
8fb47e99e8 update ordering on any change of priority 2018-04-27 12:04:55 +02:00
Robert Haschke
67b6dcb49b move implementation into cpp file 2018-04-27 12:04:55 +02:00
v4hn
bbb64f2f8c inf cost states always go last
Also update sorted interface when state becomes inf or get's new cost.
2018-04-27 12:04:55 +02:00
Robert Haschke
728c1b40e2 Merge branches 'travis', 'fixes', 'visualization' and 'todos' 2018-04-15 12:01:19 +02:00
Robert Haschke
b8a4653f31 relax equality condition for joint values for inactive groups 2018-04-15 11:55:45 +02:00
Robert Haschke
5c525f8729 consider v4hn's comment 2018-04-15 11:55:45 +02:00
Robert Haschke
433db67cf9 only attempt to merge if there is something to merge 2018-04-15 11:55:45 +02:00
Robert Haschke
90b0b006eb more todo 2018-04-15 11:26:00 +02:00
Robert Haschke
6d6f185870 feedback 2018-04-15 11:26:00 +02:00
v4hn
ade42456b8 list of random todos 2018-04-15 11:26:00 +02:00
Robert Haschke
51e1dda6ec minor improvements: variable names, comments 2018-04-10 01:52:40 +02:00
Robert Haschke
564f3b0514 fix MoveRelative
Ignore success of planner_->plan() when min_distance is specified (and >= 0).
In this case, compute the achieved distance myself.
2018-04-10 01:52:40 +02:00
Robert Haschke
525ac10bbf std::string -> const std::string& 2018-04-10 01:52:40 +02:00
Robert Haschke
f2c0c7bf90 rename enableCollision -> allowCollision 2018-04-10 01:52:40 +02:00
Robert Haschke
fee7352961 renamed demo: plan_pick_trixi -> plan_pick_pr2 2018-04-10 01:52:40 +02:00
Robert Haschke
a044b719ac removed old stages: Move, Gripper, CartesianPositionMotion 2018-04-10 01:52:40 +02:00
Robert Haschke
b22217deab fix trajectory merging: initialize from well-defined RobotState 2018-04-10 01:52:40 +02:00
Robert Haschke
c553275276 SolutionSequence::fillMessage: ignore sub solutions with same creator as parent 2018-04-10 01:52:40 +02:00
Robert Haschke
556d9e1a5e Merge branches 'robot-model', 'task-move-constructor' and 'const-robot-trajectory' 2018-04-09 21:11:19 +02:00
Robert Haschke
2b79f15244 SubTrajectory: promise to not modify encapsulated RobotTrajectory 2018-04-09 21:10:18 +02:00
Robert Haschke
7463621f56 move assignment operator 2018-04-09 21:10:08 +02:00
Robert Haschke
7ebc4b2c7e Task: move constructor 2018-04-09 21:10:08 +02:00
Robert Haschke
35b35cc17e enable introspection only if ROS was initialized 2018-04-09 21:09:49 +02:00
Robert Haschke
bd60e6f65d Task::setRobotModel() / Task::loadRobotModel() 2018-04-09 21:09:49 +02:00
Robert Haschke
70065c98e7 Merge branches 'master' 'generate-pose' and 'connect' 2018-04-09 21:08:45 +02:00
Robert Haschke
21242ea976 publish failures 2018-04-09 21:08:17 +02:00
Robert Haschke
047a3f7db4 report duplicate joints, accept fixed joints as duplicates 2018-04-09 21:08:17 +02:00
Robert Haschke
55e3aae30a merge trajectories 2018-04-09 21:08:17 +02:00
Robert Haschke
03092e7e45 utility functions to merge multiple RobotTrajectories 2018-04-08 02:36:55 +02:00
Robert Haschke
2c08d9080d Pick, Place as specializations of PickPlaceBase 2018-04-08 02:36:55 +02:00
Robert Haschke
ce5d7c63f0 SimpleGrasp, SimpleUnGrasp as specializations of SimpleGraspBase 2018-04-08 02:36:55 +02:00
Robert Haschke
97d2eb5c6a Pick: remove Connect 2018-04-08 02:36:55 +02:00
Robert Haschke
85e88eabd1 Connecting::compatible() to check compatibility of states 2018-04-08 02:36:55 +02:00
Robert Haschke
eee53a0d80 MoveTo: use moving frame markers 2018-04-05 22:54:51 +02:00
v4hn
1424b51f79 expose typed setters in Cartesian solver 2018-04-05 22:53:24 +02:00
Robert Haschke
77442c0eed Connect: allow multiple groups to be processed in series 2018-04-05 13:51:50 +02:00
Robert Haschke
8811045f89 setCreator() once in StagePrivate::newSolution() 2018-04-05 13:51:50 +02:00
Robert Haschke
9ceecd235f SerialSolution -> SolutionSequence 2018-04-05 13:51:50 +02:00
Robert Haschke
4d77390d77 validate existence of object frame in init() 2018-04-05 13:50:09 +02:00
Robert Haschke
9e1c3059e1 derive GenerateGraspPose from GeneratePose 2018-04-05 13:50:09 +02:00
Robert Haschke
3640928a76 postpone pose transformation 2018-04-05 13:50:09 +02:00
Robert Haschke
603696f294 add missing reset() 2018-04-05 13:50:09 +02:00
v4hn
76c6ba14fa add a simple GeneratePose stage
ComputeIK is a wrapper, so we can't just give it a pose to compute.
2018-04-05 13:50:09 +02:00
llach
a82a48bb70 fix PropertyMap::exposeTo: use other_name as new name for property (#40) 2018-04-05 13:47:23 +02:00
llach
124979e2a8 MoveRelative: adapt msgs to fit class name (#39) 2018-04-05 13:46:13 +02:00
Robert Haschke
205beea503
Merge pull request #28 from ros-planning/pr-path-constraints
implement path constraints
2018-03-26 09:54:02 +02:00
Robert Haschke
2ca68e6645 actually implement path constraints for CartesianPath planner
... validating constraints
2018-03-26 09:50:17 +02:00
v4hn
d7d80c3499 implement path constraints for Move* 2018-03-26 09:50:17 +02:00
v4hn
80ae01dcca expose timeout property as typed setter 2018-03-26 09:50:17 +02:00
v4hn
8af44cefc3 add path constraints to planner API
and use it in the Connect class.

The cartesian planner ignores the constraints for now.
2018-03-26 09:50:17 +02:00
Robert Haschke
f0dc02e2c3 ContainerBasePrivate::position() -> childByIndex() 2018-03-26 00:24:25 +02:00
Robert Haschke
84f5c481be ContainerBasePrivate::position(): generically handle shifting 2018-03-26 00:24:25 +02:00
Robert Haschke
ff0ee407ff remove tool_to_grasp_tf from SimpleGrasp 2018-03-25 06:07:53 +02:00
Robert Haschke
54e4d8eed7 remove tool_to_grasp_tf from GenerateGraspPose 2018-03-25 06:07:53 +02:00
Robert Haschke
12e134ad09 added disclaimer 2018-03-25 06:07:53 +02:00
Robert Haschke
893cb25b5b fix isTargetPoseColliding
- must not use new sandbox_scene (we want to display the place eef)
- jmg not needed anymore
2018-03-25 06:07:53 +02:00
Robert Haschke
c98f10478e frame marker at ik frame 2018-03-25 06:07:53 +02:00
Robert Haschke
5b6a02d105 rename reference frame -> ik frame 2018-03-25 06:07:53 +02:00
Robert Haschke
f497112513 consider reference_frame 2018-03-25 06:04:09 +02:00
Robert Haschke
7531b8ad54 allow arbitrary reference frame for target_pose and ik frame 2018-03-25 06:04:09 +02:00
Robert Haschke
4fcac84d76 remove tests that do not test anything 2018-03-25 06:04:09 +02:00
Robert Haschke
9e5e098339 unittests
- provide simple hard-coded robot model
- test ComputeIK::init()
2018-03-25 06:04:09 +02:00
Robert Haschke
f4adaa949a validate available properties during init() 2018-03-25 06:04:09 +02:00
Robert Haschke
5a55a5949b Merge branches 'bug-fixes', 'gui' and 'pick-stage' 2018-03-24 07:32:20 +01:00
Robert Haschke
a4fed6a18a MoveTo Cartesian: create marker frame at current and goal pose 2018-03-24 06:16:10 +01:00
Robert Haschke
cb38a87a73 CartesianPath: return a partial trajectory in case of failure 2018-03-24 06:16:10 +01:00
Robert Haschke
81d88911a9 cosmetic fixes 2018-03-23 17:18:56 +01:00
Robert Haschke
2331c9aef2 pick: expose IK link frame as eef_frame 2018-03-23 17:18:56 +01:00
Robert Haschke
1c61fb3b85 expose solvers 2018-03-23 17:18:56 +01:00
llach
ea6cc4b6bf moved "attach object" from "pick" to "grasp" stage 2018-03-23 17:18:56 +01:00
Robert Haschke
ceaf896bf8 position scene node w.r.t. fixed frame 2018-03-23 11:22:23 +01:00
Robert Haschke
c2590636b1 fixup! SerialContainer: don't consider failures for solutions 2018-03-23 11:22:23 +01:00
Robert Haschke
862ac37cd6 fix ContainerBasePrivate::copyState(): don't copy (again) on update 2018-03-23 11:22:23 +01:00
Robert Haschke
b3af170663 reset num_failures_ 2018-03-23 11:22:23 +01:00
Robert Haschke
6b912c3531 MoveTo Cartesian Point: bug fix 2018-03-23 11:22:23 +01:00
Robert Haschke
6d859840c3 fix interface detection for nested SerialContainers 2018-03-23 09:18:21 +01:00
Robert Haschke
159beeb044 fix SerialContainer::canCompute() 2018-03-23 09:18:21 +01:00
Robert Haschke
bff6cc569c pick: reusable stage for picking up an object 2018-02-25 23:14:52 +01:00
Robert Haschke
d731e943f1 Merge branch 'parallel-container' 2018-02-25 23:12:35 +01:00
Robert Haschke
9545f92678 GenerateGraspPose::reset() 2018-02-25 23:11:55 +01:00
Robert Haschke
12582f6bbc SerialContainer: don't consider failures for solutions 2018-02-25 20:01:43 +01:00
Robert Haschke
99adfaf454 fix ParallelContainers' init() 2018-02-25 13:22:26 +01:00
Robert Haschke
dcf23f6147 relax ParallelContainer's validateConnectivity() 2018-02-25 13:22:26 +01:00
Robert Haschke
bcacda8507 implement ParallelContainer's pruneInterface() 2018-02-25 13:22:26 +01:00
eirtech
0dc4f5c53e ParallelContainer's requiredInterface() 2018-02-25 13:22:26 +01:00
eirtech
3e4aa19246 ParallelContainer: unittests 2018-02-25 13:22:14 +01:00
Robert Haschke
a2fd5fb7b8 more constexpr InterfaceFlags 2018-02-25 11:59:51 +01:00
Robert Haschke
a24039846a Merge branches 'analyze-property-errors' and 'fixes' 2018-02-24 13:45:51 +01:00
Robert Haschke
94bb50ddc1 fixup! PropertyMap: different exception types 2018-02-24 13:42:18 +01:00
v4hn
30de5e1a8c add catch-rethrow for property initialization
The property doesn't know its own name, so we add it here
2018-02-24 13:42:18 +01:00
v4hn
78b86bb65f add convenience overloads for setting properties 2018-02-24 13:42:18 +01:00
Robert Haschke
e9d1742337 ContainerBase::exposePropertiesOfChild 2018-02-24 13:42:18 +01:00
Robert Haschke
8152614d33 properties: init from source if current value is not defined
- reset(): reset current value to empty, not default
- value(): return current value, or - if not defined - the default
- initialize from source if current value is undefined,
  don't care about default value
2018-02-24 13:42:18 +01:00
Robert Haschke
0c8c298450 declare by std::type_index (instead of std::type_info) 2018-02-24 13:42:18 +01:00
Robert Haschke
6444229877 Stage::reportPropertyError 2018-02-24 13:42:18 +01:00
Robert Haschke
da9cdb5cf6 PropertyMap: different exception types
undeclared
undefined
type_error
2018-02-24 13:42:18 +01:00
v4hn
7caed29cb1 elaborate runtime_error in InterfaceState 2018-02-24 13:42:12 +01:00
v4hn
9709fd687d ComputeIK: update state to avoid dirty transforms 2018-02-24 13:42:12 +01:00
v4hn
69d3d8bd37 InitStageException::what(): distinguish stage/stages 2018-02-24 13:42:12 +01:00
Robert Haschke
cc8bcd3fdc become agnostic to urdfdom's shared_ptr types 2018-02-24 13:42:12 +01:00
Robert Haschke
07e99461fc conditionally normalize angular 2018-02-24 13:42:12 +01:00
Robert Haschke
cf54024379 fix derivation of propagation direction from connect stage 2018-02-24 13:42:12 +01:00
Robert Haschke
aee2525382 fix ModifyPlanningScene: pass stage properties to callback 2018-02-24 13:42:12 +01:00
Robert Haschke
b767e359e9 GenerateGraspPose: require pregrasp pose 2018-02-24 13:42:12 +01:00
Robert Haschke
6a3456f961 unittest ContainerBasePrivate::position() 2018-02-24 13:42:12 +01:00
Robert Haschke
9cd6efe46f Stage::init(PlanningScene) -> Stage::init(RobotModel) 2018-02-24 13:37:50 +01:00
v4hn
2a2d406368 remove restriction to watch only generators 2018-02-24 13:37:50 +01:00
Robert Haschke
d035089c10 MonitoringGenerator 2018-02-24 13:37:50 +01:00
Robert Haschke
8624224d6b FixedState generator 2018-02-24 13:37:41 +01:00
llach
e1281130ac CurrentState: fetch scene via get_planning_scene service 2018-02-24 13:37:41 +01:00
v4hn
4f2b38f02d add missing headers 2018-02-21 14:56:51 +01:00
Robert Haschke
cf76352d2d Merge branches 'fix-containers' and 'fix-priority-updates' 2018-02-20 08:07:48 +01:00
Robert Haschke
ba75f7c835 fixed remaining unittest 2018-02-20 08:06:23 +01:00
Robert Haschke
e368fd9948 avoid accidental overwrite of InterfaceState 2018-02-19 09:05:56 +01:00
Robert Haschke
373d7f204f update priorities of all interface states along a (partial) solution path
if a parallel container is involved somewhere in the middle, it will
again access these states, e.g. planning alternative solutions
2018-02-19 09:05:56 +01:00
Robert Haschke
1eacea6b35 reset InterfaceState::owner_ if state is removed from Interface 2018-02-19 09:05:56 +01:00
Robert Haschke
35f1540369 recursive interface auto-detection
trigger auto-detection from top (task) level:
only there we now for sure the accepted interface
2018-02-19 01:05:56 +01:00
Robert Haschke
f45a4e3e2c improve validation
- postpone pruning / interface auto-detection to top task-level
  only the task state knows for sure, that it requires its wrapped child to push to both ends
- perform connectivity validation only after pruning
  only then, we the interfaces are completely determined
2018-02-19 01:05:56 +01:00
Robert Haschke
a523333ef6 basic auto-detection of interfaces for propagating stages
works if propagation direction can be derived from a generator or
connecting stage within the sequence

start-to-end propagation through whole serial container still fails
2018-02-18 21:23:12 +01:00
Robert Haschke
1a0b9b36ee fix connection creation
Establishing the interface connections, we face a chicken-egg-problem:
To establish a connection, a predecessors/successors pull interface is
assigned to the current's stage push interface.
However, propagating stages (in auto-detection mode) can only create
their pull interfaces if the corresponding, opposite-side push interface
is present already (because that's the mechanism to determine the supported
propagation directions).

Hence, we need to resolve this by performing two sweeps:
- initialization, assuming both propagation directions should be supported,
  thus generating both pull interfaces, i.e. providing the egg
- stripping down the interfaces to the actual context
  This context is provided by two stages pushing from both ends
  into a (potentially long) sequence of propagating stages (tbd).

Contributions of this PR:
- PropagatingEitherWay: explicitly distinguish AUTO from BOTHWAYS interface
  AUTO: auto-derive interface from provided push interfaces
  BOTHWAYS: explicitly require both directions
- SerialContainer: (better, but not yet perfect) validation of connectivity
- ParallelContainer: determine interface from what children offer
2018-02-18 21:23:12 +01:00
Robert Haschke
ec2b06292e extended unittest for serial connection validation 2018-02-18 14:03:57 +01:00
Robert Haschke
a4feb705d0 cleanup operator<<(ostream, *)
- basic implementation for StagePrivate
- implementation for Stage calls this
- implementation for ContainerBase recursively calls this
- implementation for Task added
2018-02-18 13:58:09 +01:00
Robert Haschke
1f4264c8c8 PropagatingEitherWayPrivate: count failures in both directions 2018-02-16 16:01:05 +01:00
Robert Haschke
2ea463fff4 replace std::cout with ros console 2018-02-16 16:01:05 +01:00
Robert Haschke
acffd39091 SerialContainer: fix priority propagation
- traverse all (also partial) solution paths
- and update priority at both ends
- remove pending state pairs if cost increased to infinity
2018-02-16 16:01:05 +01:00
Robert Haschke
469c6ccede MoveRelative: fix marker arrow 2018-02-16 11:37:57 +01:00
Robert Haschke
dd0d004052 cleanup ComputeIK
- correctly check collision for target pose before doing IK
- visualize failed collision check / failed IK
2018-02-16 09:55:34 +01:00
Robert Haschke
deb09b7dfd GenerateGraspPose: marker cleanup
- remove arrow marker (approach direction isn't hard-coded anymore)
- consider all rigidly attached parent links for display
- add grasp frame
2018-02-14 17:50:02 +01:00
Robert Haschke
a8cf2dc844 GenerateGraspPose: correctly check for existence of link frames 2018-02-13 19:29:12 +01:00
Robert Haschke
7e66c24822 marker tools: allow vector of LinkModel* 2018-02-13 19:29:12 +01:00
Robert Haschke
b1fac6eed0 MoveRelative: allow zero min_distance 2018-02-13 19:29:12 +01:00
Robert Haschke
0b8bf2b8b7 example: twist motion 2018-02-13 00:01:01 +01:00
Robert Haschke
ca3bce4669 local planning scene 2018-02-12 23:58:49 +01:00
Robert Haschke
da9711a85c example using new features 2018-02-12 23:56:10 +01:00
Robert Haschke
d053e037eb cmake cleanup: group source files 2018-02-12 23:55:34 +01:00
Robert Haschke
4be373592a Merge branches 'cleanup', 'wip-modular-planning', 'wip-containers', 'wip-gui' and 'wip-modify-ps' 2018-02-12 23:54:51 +01:00
Robert Haschke
724f0c3014 modular planning
Separate planning approaches (using MoveIt pipeline or computeCartesianPath) from stages.
This allows to reuse planning in various stages without code duplication.

Reworked stages:
Move -> Connect
Gripper + CartesianPositionMotion -> MoveTo
CartesianPositionMotion -> MoveRelative
2018-02-12 23:43:47 +01:00
Robert Haschke
0d338a7f5f visualize collisions 2018-02-12 23:40:33 +01:00
Robert Haschke
f35a6bc05d FixCollisionObjects stage 2018-02-12 23:40:33 +01:00
Robert Haschke
f006f0f3d6 reduce code bloat using SFINAE template selection 2018-02-12 23:40:33 +01:00
Robert Haschke
381edf2d22 ModifyPlanningScene stage
- attach / detach objects to robot
- enable / disable collision pairs
- works in either direction (FORWARD +  BACKWARD)
2018-02-12 23:40:33 +01:00
Robert Haschke
449ccf55c6 merge WrapperBase + Wrapper into WrapperBase
Wrapper is not restricted to generator-type stage anymore.
2018-02-12 23:39:46 +01:00
Robert Haschke
032a4e23c1 derive WrapperBase from ParallelContainerBase 2018-02-12 23:39:46 +01:00
Robert Haschke
1ab2d596fb ContainerBasePrivate::liftSolution() 2018-02-12 23:39:46 +01:00
Robert Haschke
919be24d16 implement ParallelContainerBase 2018-02-12 23:39:46 +01:00