Commit Graph

107 Commits

Author SHA1 Message Date
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
Robert Haschke
a3a8f1a9d2 improved directional (forward/backward) access to interfaces
- TraverseDirection -> Interface::Direction
- StagePrivate: pullInterface(), pushInterface()
- trajectories<dir>(SolutionBase) -> SolutionBase::trajectories<dir>()
2018-02-12 23:39:46 +01:00
Robert Haschke
73f509c3ba simplify usage of ContainerBasePrivate::copyState() 2018-02-12 23:39:46 +01:00
Robert Haschke
eaaaf07214 exploit default argument for Interface constructor 2018-02-12 23:39:46 +01:00
Robert Haschke
cf71d2f0d2 unify use of buffer interfaces in containers
All containers need to buffer their children's sendBackward/sendForward states.
2018-02-12 23:39:46 +01:00
Robert Haschke
9bdfcc8c23 expose Task::initScene()
... to allow use of local scene
2018-02-12 23:37:19 +01:00
Robert Haschke
e9d0a05f75 default arg in header 2018-02-12 23:37:19 +01:00
Robert Haschke
3a4dc6755b Merge branches 'fix-remote-task-model', 'wip-cost-ordering' and 'wip-properties' 2018-02-12 23:35:01 +01:00
Robert Haschke
fe2c4f312e serialize stage properties 2018-02-12 22:45:15 +01:00