Commit Graph

84 Commits

Author SHA1 Message Date
Captain Yoshi
fdc06c3b91
Reduce stop time due to preempt (#598)
The preempt_request_ flag was only checked at the top-level task container before each compute iteration.
As a single sweep might take a while, we should check the flag before computing each stage.
2024-07-19 15:46:12 +02:00
Captain Yoshi
cd28bdcd1f
Fix early planning preemption (#597)
Calling preempt() before plan() is able to reset the preempt_requested_ flag causes the preemption request to get lost. To avoid this issue, we allow a) manual resetting of the request and b) reset the request before leaving plan().
2024-07-17 14:56:01 +02:00
Robert Haschke
fbc05e4496
Add property to enable/disable pruning at runtime (#590) 2024-07-06 16:51:14 +02:00
Robert Haschke
647f3ec413 Limit time to wait for execute_task_solution action server 2023-09-18 10:35:23 +02:00
Robert Haschke
397fc070ea Fix SolutionBase::fillMessage(): also write start_scene
This method was only doing half of the job, namely adding subsolutions
to the message fields. However, the start_scene was not yet written.
This was handled manually in some but not all callers.
To avoid this inconsistency, the new method toMsg() takes care of both
actions now, while the old fillMessage() method was renamed to appendTo().
2023-05-19 08:43:14 +02:00
Robert Haschke
d1a6916206
Stage::explainFailure() (#445)
... to facilitate spotting the stage causing a task to fail
2023-05-04 17:07:11 +02:00
Robert Haschke
4c9b16511b Hopefully fix spurious test failure 2022-10-24 10:21:28 +02:00
Jafar
e923fbc0c6
Fix Task's move constructor (#371)
* Add unit test
* Fix TaskPrivate's move assignment operator
* Slightly simplify code

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2022-06-14 22:13:19 +02:00
Robert Haschke
c7b2067b86 Merge PR #309: Fix Pruning 2022-01-05 20:19:51 +01:00
Jafar Abdi
7dbe0b87e1
Return MoveItErrorCode from task::plan (#319)
... to know whether the plan failed due to timeout, preemption, or actual planning failure
2022-01-02 15:32:37 +01:00
Robert Haschke
e67b3252fc static TaskPrivate::swap() -> ContainerBasePrivate::operator=()
- Enable moving/swapping of other container impls (e.g. Fallbacks)
- Clarify (via move semantics) that content of source impl will be lost
- Get rid of friend declarations
2021-11-24 21:17:49 +01:00
Michael Görner
36d9d3e8c0
Rework PipelinePlanner creation (#249)
- Moved Task::createPlanner into PipelinePlanner::create
- Handle mutiple planner pipeline configs as introduced in https://github.com/ros-planning/moveit/pull/2127
2021-03-29 12:00:28 +02:00
Robert Haschke
a6fa45214f Remove return value from Container::insert
adapted Container::add

Logical consequence of removing the ROS_ERROR output in `setParent`
2021-02-24 12:22:38 +01:00
Robert Haschke
ae843a784e Merge PR #214 (fix various issues) and #215 (rework rviz introspection) 2020-10-24 04:45:53 +02:00
Robert Haschke
b91d87c6eb IntroSpection: indicateReset() on disable 2020-10-24 04:43:30 +02:00
Robert Haschke
b071a059f9 Rename TaskPrivate::id -> TaskPrivate::ns
TaskPrivate's id_ actually served as a namespace parameter.
2020-10-24 04:43:30 +02:00
Robert Haschke
cb0f20cad7 Improve task unittests 2020-10-24 03:22:46 +02:00
Jafar Abdi
be270cb574
Task: Add ability to set timeout (#213)
Task::setTimeout will allow setting an overall timeout.
2020-10-24 03:22:05 +02:00
Michael Görner
ee6c50ad31
Apply clang-format-10 (#199) 2020-08-20 11:56:53 +02:00
v4hn
6bebe3f3ed do not mix pimpl() and impl for no reason 2020-08-11 20:43:34 +02:00
v4hn
7ba73306ca introspection *can* be disabled
Otherwise a new task will always setup the publisher,
even if introspection is disabled afterwards.

It is a good idea to keep introspection on, but there should be a way to initialize the C++ classes without ROS communication.
2020-07-22 12:57:34 +02:00
v4hn
0aff5d56dd replace remaining typedefs by using declaration
I have no idea why these were not picked up by clang-tidy.
2020-07-22 12:57:34 +02:00
Robert Haschke
ee7ebb3b96
SolutionMsg: always fill start_scene (#175)
So far, the start_scene field of a SolutionMsg was only filled by  Introspection::fillSolution(),
but not yet by Task::execute().

Addendum(v4hn): The previous approach was actually reasonable too (although the scene should have been marked as `is_diff`) for solutions sent for execution, but keeping the full start_scene around can facilitate debugging from recorded data.
2020-06-18 11:07:05 +02:00
v4hn
15707673ed clang-tidy: performance-*
I NOLINTed the noexcept move constructor for Task for now because
the constructor *can* indeed throw exceptions.
2020-06-11 11:03:50 +02:00
v4hn
8faba159f9 clang-tidy: llvm-namespace-comment 2020-06-11 11:03:50 +02:00
v4hn
b762079478 clang-tidy: readability-named-parameters 2020-06-11 11:03:50 +02:00
v4hn
36166348bc clang-tidy: use using over typedef
$ run-clang-tidy.py -header-filter='.*' -checks='modernize-use-using' -fix

add .clang-tidy file
2020-06-11 11:03:50 +02:00
v4hn
ebf7b751d2 do not reset on plan
users can reset explicitly as needed.
Reset sends ROS messages and prevents { plan(1); plan(1) } style usage.
2020-06-11 11:03:50 +02:00
v4hn
b9839a3f22 check for valid robot model
Also, no need to reset() unless the model is different and not the first.
2020-06-11 11:03:50 +02:00
Robert Haschke
499fcfb04b cleanup / renaming
* Rename pruneInterface() -> resolveInterface()
* Rename accepted (interface) -> expected
* Improve exception strings
2020-04-10 20:11:51 +02:00
Robert Haschke
e56c772ecb Combine pruneInterface() + validateConnectivity()
Validate interfaces during resolution. No need to separately validate interfaces.
Thus, validateConnectivity() is removed from Task::init().
Functions are kept (but simplified) for unit testing.
2020-04-10 19:59:27 +02:00
v4hn
cc86dd8a74 rename Task::erase -> eraseTaskCallback
`erase` is too general for a container class,
when it's not actually about erasing children or the container itself.
2020-04-01 15:05:20 +02:00
v4hn
c046ec605d streamline add/insert interfaces for Task/Container
`add` falls back to `insert` for both structures,
but `add` throws exceptions and does not provide a return value.

`insert` provides standard STL container access.
2020-04-01 15:05:20 +02:00
v4hn
df8a783239 enforce one-parent policy in StagePrivate
So new containers cannot get this wrong by accident.
2020-04-01 15:05:20 +02:00
v4hn
8f56d4ae79 avoid copy from const id reference
This mustn't compile as users got confused about it:
```
Task t;
t.id() = "foobar";
```
2020-03-05 12:08:59 +01:00
Markus Vieth
534d520a04
Add return value to Task::execute (#136) 2020-02-20 11:31:51 +01:00
Robert Haschke
463486257b Merge #120: Add computation timing 2020-02-06 16:18:49 +01:00
Jafar Abdi
aa11b66824 use runCompute() 2020-02-06 16:17:55 +01:00
Robert Haschke
ba815cff34 Task: don't publish solutions by default
Having multiple solutions, automatic publishing of intermediate solutions is confusing.
One never knows, which one is the final one. If desired, the user should setup a hook for this.
2020-01-11 09:00:34 +01:00
Henning Kayser
c1f6ca8e84 Expose SolutionCallback API in Task (#121) 2020-01-11 08:33:57 +01:00
Michael Görner
f7b259259e Introduce clang-format (#102)
* fix catkin_lint issues
* introduce clang-format config and apply it
2019-07-18 11:04:35 +02:00
Robert Haschke
95455c2a26 fix Task::operator=(Task&&)
To move a task instance to another one, it's not sufficient to swap all task members,
but we also need to adapt all back pointers, i.e. me_ and parent_ pointers of children,
to point to the (swapped) task instances.
2019-06-04 14:20:47 +02:00
Robert Haschke
11fb15fd0c fix clang-tidy warnings
- virtual functions used in constructor / destructor
- captured variable in lambda expression not used
- unhandled enums in switch
2019-05-03 01:53:17 +02:00
Robert Haschke
905b6a3b0c move validateConnectivity() from ContainerBase to StagePrivate
... to allow specific stage types (PropagatingEitherWay) implementing their own validation
No need for a public interface.
2019-03-11 13:54:54 +01:00
Robert Haschke
71099c68d4 Task: fix RobotModelPtr leak
On Task::clear() also need to reset introspection's cache.
2019-02-09 01:00:29 +01:00
Robert Haschke
b9a86eb5be use task id as default name of top-level stage 2018-11-08 12:55:45 +01:00
v4hn
a05a76fd8c fixup! add properties for conditional debug output
in MoveIt planner.

These can be quite helpful.
I agree, we really don't need them enabled by default.
2018-10-22 16:59:24 +02:00
Robert Haschke
ba88c59201
Merge pull request #54 from ros-planning/pr-capability
ExecuteTaskSolution capability
2018-10-20 23:25:48 +02:00
Robert Haschke
e894d8bce2 fix caching of PlanningPipeline ptrs
Need to reset cache if corresponding RobotModel was destroyed.
To this end, we cannot simply use the RobotModel's name.
2018-10-20 21:50:05 +02:00
Robert Haschke
f548b7edcc PipelinePlanner: disable publishing of plan request + computed path 2018-10-20 12:21:18 +02:00