Commit Graph

1002 Commits

Author SHA1 Message Date
VideoSystemsTech
dee73b2dde
Expose argument of PipelinePlanner's constructor to Python (#462) 2023-05-16 14:32:17 +02:00
Robert Haschke
d59acdb969 Fix allowCollisions(object, enable_collision)
Call ACM::setDefaultEntry to also cover objects that are not yet known to the ACM.
2023-05-16 09:43:00 +02:00
Robert Haschke
45ca1a67a9 TestModifyPlanningScene 2023-05-16 09:42:25 +02:00
Robert Haschke
b318c3cae9 Basic Move test: MoveRelative + MoveTo 2023-05-05 00:21:11 +02:00
Robert Haschke
84cb880a9d Add python binding for ModifyPlanningScene::allowCollisions(std::string, bool) 2023-05-05 00:21:11 +02:00
Robert Haschke
1002d84946 Add python binding for Task::insert 2023-05-04 23:22:49 +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
ede7cb71cc
Improve documentation (#431)
* Improve general description of stage and container types
* Clarify purpose of `CurrentState` stage
* Add troubleshooting section
2023-05-04 17:02:00 +02:00
Robert Haschke
7f10292ab3
JointInterpolationPlanner: pass optional max_effort property along to GripperCommand (#458)
MoveIt passes the effort field of the last trajectory point as the max_effort for a GripperCommand.
Thus we pass the max_effort property to the effort field of the trajectory's last waypoint.
2023-05-04 15:29:53 +02:00
Robert Haschke
b346e7eb78
Task: findChild() and operator[] should directly operate on stages() (#435)
Considering the (fixed) name of the top-level container is meaningless.
2023-05-04 15:23:23 +02:00
Robert Haschke
f07b81fcd0 cleanup 2023-05-04 14:26:34 +02:00
Robert Haschke
4781ed5636 ros1-0.1.3 2023-03-06 16:37:54 +01:00
Robert Haschke
c57a0bcc12 Fixup: Remove moveit/__init__.py during .deb build
Fix install path recognition (6671aedeb7). Debian install process targets:
/tmp/binarydeb/ros-noetic-moveit-task-constructor-core-<version>/debian/ros-noetic-moveit-task-constructor-core/opt/ros/noetic/lib/python3/dist-packages/moveit
2023-03-06 16:31:59 +01:00
Robert Haschke
75e4260e2a
MoveRelative: Allow backwards operation for joint-space delta (#436) 2023-03-06 16:27:09 +01:00
Robert Haschke
61bb2fdc58
ComputeIK: Limit collision checking to JMG (#428)
That's what MoveIt is doing as well.
2023-02-28 13:18:53 +01:00
Robert Haschke
a3cb8c6584 Fix: Fetch pybind11 submodule if not yet present
cmake's execute_process pipes COMMANDs together.
Thus, `git submodule update` received the output of `git submodule init` as input
and didn't do anything.
2023-02-28 11:15:05 +01:00
Robert Haschke
ca1c7c7e24 Fix typo 2023-02-28 11:13:24 +01:00
Robert Haschke
d07aece163 ros1-0.1.2 2023-02-24 00:02:47 +01:00
Robert Haschke
6671aedeb7 Remove moveit/__init__.py during .deb builds 2023-02-23 23:55:38 +01:00
Robert Haschke
4a320f309c
Merge PR #429: MultiPlanner
MultiPlanner
2023-02-23 20:44:28 +01:00
Robert Haschke
ea776e35f6
Fix marker creation: allow zero scale for geometric shapes (#430)
Boxes, spheres, and cylinders might explicitly have a zero size. Don't reset their scaling to (1,1,1)
2023-02-23 20:42:23 +01:00
Robert Haschke
db6d90ab69 CartesianPath: Deprecate redundant property setters 2023-02-17 22:37:49 +01:00
Robert Haschke
6dc70b1d49 PlannerInterface: provide "timeout" property
The MultiPlanner requires to set individual timeouts for its planners.
2023-02-17 18:28:02 +01:00
Robert Haschke
573858e51a PlannerInterface: provide setters for properties 2023-02-17 17:33:06 +01:00
Robert Haschke
052a56a333 Add MultiPlanner solvers
a planner that tries multiple planners in sequence
2023-02-17 17:33:06 +01:00
Robert Haschke
3d3236575d JointInterpolation: fix timeout handling
The timeout parameter was essentially ignored and the check was always true.
2023-02-17 11:41:32 +01:00
Robert Haschke
eae0bdc27f ros1-0.1.1 2023-02-15 23:20:32 +01:00
Robert Haschke
7926f69e97 Provide ComputeIK.ik_frame as full PoseStamped
Released MoveIt doesn't (yet) provide a conversion from string to PoseStamped.
2023-02-15 17:05:25 +01:00
Robert Haschke
885ac49ffb Use MoveIt's roscpp_initialize 2023-02-15 17:05:25 +01:00
Robert Haschke
d95a2fc787 Use MoveIt's libmoveit_python_tools.so
Drop our own version of that lib and thus resolve a deploy conflict.
2023-02-15 14:30:14 +01:00
Robert Haschke
4b5de15e1b Remove unused eigen_conversions includes 2023-02-11 13:47:35 +01:00
Robert Haschke
f2d97e524d Fix odr compiler warning on build farm
https://build.ros.org/job/Ndev_db__moveit_task_constructor__debian_buster_amd64/3
2023-02-11 13:31:50 +01:00
Robert Haschke
2843459b34 Fix buildfarm errors
- Add missing package dependencies
- Add author tags to package.xml
2023-02-03 12:24:48 +01:00
Robert Haschke
49b3bd0d56 ros1-0.1.0 2023-02-02 10:02:45 +01:00
Robert Haschke
93b46ef214 GeneratePose: forward registered properties from received solution 2023-01-28 12:01:45 +01:00
Robert Haschke
d9cff5510f Fix more -Wold-style-cast warnings 2023-01-05 16:24:02 +01:00
Robert Haschke
91d9518d3c Replace namespace robot_model -> moveit::core 2023-01-05 03:14:11 +01:00
JafarAbdi
f055fabbd1 Fix clang-tidy warnings
- Replace old-style casts
- Fix missing initialization
2023-01-04 23:52:38 +01:00
Jochen Sprickerhof
770a8a0b17 Fix call of PropagatingEitherWay::computeGeneric()
computeGeneric is templated and private so it will be undefined in the
shared object and when using the computeForward/Backward functions.
2023-01-04 21:39:33 +01:00
Robert Haschke
f872d58520
Expose ContainerBase::childByIndex via operator[](int) (#413) 2022-12-12 20:44:37 +01:00
Robert Haschke
26c690c3b6 Merge PRs #412 (fix-ci) and #409 (more cost-terms) 2022-12-11 22:38:32 +01:00
Robert Haschke
33e9c5d212 Fix clang-tidy issues 2022-12-11 22:37:10 +01:00
Robert Haschke
ced37a029c Update/Stick pybind11 to version 2.9.1-smart_holder
... to maintain compatibility with Python 3.6 and 2.7
2022-12-11 21:34:53 +01:00
Robert Haschke
7c35f6c580 Update/Stick pybind11 to version 2.9.1-smart_holder
... to maintain compatibility with Python 3.6 and 2.7
2022-12-11 17:42:07 +01:00
Robert Haschke
341f1838b5 Build python bindings with size optimization 2022-12-11 17:39:55 +01:00
Robert Haschke
4886fc3f7b Expose CostTerms to python 2022-12-11 17:39:55 +01:00
Robert Haschke
6de570c7a6 new TrajectoryCostTerm: DistanceToReference 2022-12-09 11:19:41 +01:00
Robert Haschke
a9b4947845 PathLength: allow weighting of different joints 2022-12-09 10:16:19 +01:00
Robert Haschke
de22cba99a Fetch pybind11 submodule if not yet present 2022-12-09 09:05:17 +01:00
Robert Haschke
274c75f68f Fix SimpleGrasp/SimpleUnGrasp wrapper
- Wrap common base class SimpleGraspBase to reduce redundancy
- Use correct defaults for stage name
2022-12-08 09:37:33 +01:00
Robert Haschke
7200bbbfb1 Fix base class for container stages Pick, Place, SimpleGrasp, SimpleUnGrasp 2022-12-08 08:59:41 +01:00
Robert Haschke
2cf4f8f046 Drop breathe (not working) and directly link doxygen docs 2022-11-27 01:19:56 +01:00
Robert Haschke
c9ba6918c8 GHA: Build and deploy documentation 2022-11-27 01:19:56 +01:00
Robert Haschke
954089eae4 Merge PR #99: Python API
... based on pybind11
2022-11-22 21:24:17 +01:00
Robert Haschke
c1df1fbee8 [Container|Task]::add(...) for sequence (python) 2022-11-22 21:22:29 +01:00
Robert Haschke
164ce4eab8 clang-tidy: fix variable/method naming 2022-11-03 18:30:21 +01:00
Robert Haschke
7d5f9fe6e3 Fix clang-tidy warnings 2022-11-02 18:44:38 +01:00
Robert Haschke
f88e25fe74 Merge PR #380: Fix Cartesian interpolation
Correctly consider an offset transform from link to reference frame,
such that rotations w.r.t. the reference frame don't move its origin.
2022-11-01 23:51:53 +01:00
Robert Haschke
0c9524930a CI: stricter warnings 2022-11-01 23:41:17 +01:00
Robert Haschke
d66b2262ed Rename variables in visualizePlan()
- link_pose -> start_pose
- pos_link -> pos_start
2022-10-31 19:53:07 +01:00
Robert Haschke
32d3454c1f Fix getRobotTipForFrame()
When passing the root frame, getRigidlyConnectedParentLinkModel() returns
a nullptr for robot_link, causing a segfault.
Actually, we don't need to use that method at all. We just need to find
the robot_link of an associated body.
2022-10-31 19:53:07 +01:00
Robert Haschke
fd123cc4a7 Fix handling of ik_frame in Cartesian path planning
The ik_frame should move in a straight-line Cartesian path.
However, so far the link frame was following a Cartesian path.
2022-10-31 19:53:07 +01:00
Robert Haschke
ec366b26ee MoveRelative: Correctly compute motion transform
The twist motion performs an angular rotation about the given axis _and_
the origin of ik_frame as well as a linear translation.
Both transforms are expressed w.r.t. the model frame and thus require
left-multiplication to ik_frame's current pose.
2022-10-31 19:53:07 +01:00
Robert Haschke
076957d4dc Simplify MoveRelative 2022-10-31 19:53:07 +01:00
Robert Haschke
402d6a4bfe Improve unittest for move_relative 2022-10-31 19:53:07 +01:00
Robert Haschke
64a8df1fde Merge CI fixes/improvements 2022-10-24 10:21:34 +02:00
Robert Haschke
4c9b16511b Hopefully fix spurious test failure 2022-10-24 10:21:28 +02:00
v4hn
c60cd6c86f Avoid unused-parameter warnings 2022-10-24 10:21:28 +02:00
Robert Haschke
5a30f8a8a7 Suppress unused-function warning 2022-10-24 10:08:26 +02:00
v4hn
2b2689e8d7 Use catkin_INCLUDE_DIRS as system includes
... to suppress warnings outside the code base
2022-10-24 10:07:38 +02:00
Robert Haschke
28fb974adb Remove MoveIt compatibility code 2022-10-23 22:16:58 +02:00
v4hn
6df359ed3b Do not dictate C++ standard
C++14 is default in clang/gcc anyway and latest log4cxx requires C++17.
Qt on Ubuntu 18.04 sets C++11. Hence we use MoveIt's cmake macro to ensure C++14 at least.
2022-10-23 22:15:23 +02:00
Niklas Fiedler
30512bcbb4
Report 1st collision pair for invalid IK solutions (#376) 2022-07-22 13:38:05 +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
Wyatt Rees
60229db010
Add KinematicsQueryOptions property in CartesianPath solver (#370) 2022-06-03 19:39:51 +03:00
Robert Haschke
d2918f130d
Pruning: Relax too strong assertion: PRUNED => !ARMED (#340) 2022-05-08 11:56:17 +02:00
Robert Haschke
9026ac8746
Make TimeParamerization configurable (#339) 2022-05-08 11:54:05 +02:00
Christian Petersmeier
e57d198dd7 Use verbose delimiters for source code instead of line numbers 2022-03-10 13:46:01 +01:00
Robert Haschke
813d9a7de7 Simplify file names, move tutorials into subfolder 2022-03-10 13:33:10 +01:00
Christian Petersmeier
60bc5262f5 PickPlace tutorial, stage extension howto guide 2022-03-10 13:33:10 +01:00
Christian Petersmeier
13128390b6 add cartesian and first steps tutorials 2022-03-10 13:33:10 +01:00
Christian Petersmeier
f082fb772b Add property tutorial, restructure tutorial files 2022-03-10 13:33:10 +01:00
Christian Petersmeier
1f330bed89 Reformat Documentation
- create tutorial, how-to-guide, topic and reference chapters
  - move implementation examples from api documentation into
    how-to-guides
  - create a documentation overview on the first page
2022-03-10 13:33:10 +01:00
Robert Haschke
940a843f05 Rework stages doc 2022-03-10 13:33:06 +01:00
Robert Haschke
096c671887 Pruning: Relax too strong assertion: PRUNED => !ARMED
If two Connect stages are sequenced, both sides can become ARMED.
However, that means that the wave of PRUNED status updates, shouldn't
overwrite a present ARMED state.
Added unit test.
2022-03-04 15:01:19 +01:00
Robert Haschke
8d7225d3b6 Connect: better document suppressing recursive loop 2022-03-04 15:01:19 +01:00
v4hn
6d104e837e polish: FixedState supports collision checking 2022-03-04 14:41:00 +01:00
v4hn
0a3dd3a314 properly set comment markAsFailure without prior comment 2022-03-04 14:39:53 +01:00
Robert Haschke
5310f9063a operator<< for Interface::Direction 2022-03-04 13:13:01 +01:00
Robert Haschke
ee7cec2aab FixedState: ignore_collisions=false
Check collisions for FixedState's scene and report failure if needed.
Optionally, disable the check via the property ignore_collisions=true.
2022-03-03 17:01:34 +01:00
Robert Haschke
6ffc508225 Finetune solvers documentation 2022-03-03 10:50:30 +01:00
Robert Haschke
e77fa83a42 Rework core documentation 2022-03-03 10:50:30 +01:00
Christian Petersmeier
9103af2704 Rework python documentation 2022-03-03 10:50:30 +01:00
Robert Haschke
95f24747b0 Pick+Place: Correctly configure forwarding of "pregrasp" property
... from Grasp to UnGrasp stage
2022-03-03 10:50:30 +01:00
Robert Haschke
d90b566b08 GeneratePlacePose: Remove property "ik_frame" from stage
- Instead, set ik_frame property on solution from passed object (frame).
- Allow subframes to be used as "object" frames
2022-03-03 10:50:30 +01:00
Robert Haschke
ca38d11303 Enable InterfaceState's copy operator 2022-02-02 20:51:58 +01:00
Robert Haschke
4b9e85395d Fix pre-commit: python formatting 2022-01-07 16:20:42 +01:00
Robert Haschke
b28290c5b9 Rework doc for properties.cpp
- Use simple description strings
  Only for multi-line doc strings, use C++11 raw string syntax `R"(...)"`
- Auto-generate signature
- Name arguments via `py::arg()`
2022-01-07 16:20:42 +01:00
Robert Haschke
11686468ad Update rosdoc + sphinx config 2022-01-07 16:20:42 +01:00
Robert Haschke
cfcc7ba112 Improve top-level descriptions 2022-01-07 16:20:42 +01:00
Robert Haschke
603e337c77 fix typo 2022-01-07 16:20:42 +01:00
Robert Haschke
d732bfe3eb Fix demo/scripts/fixed_state.py 2022-01-07 16:20:42 +01:00
cpetersmeier
1b1dadb94a core python docs
- add python docs to core classes
    - rework whats included in the docs and what not
2022-01-07 16:20:42 +01:00
cpetersmeier
923022c13b stages docs and bindings
- pybind bindings for all the examples
    - correctly format docstrings
2022-01-07 16:20:42 +01:00
cpetersmeier
f7c2fadde6 core docs, mwe monitoring generator 2022-01-07 16:20:42 +01:00
cpetersmeier
65bc0a8703 expand core docs, add detailed examples 2022-01-07 16:20:42 +01:00
cpetersmeier
4f53663756 add docstrings and mwe's 2022-01-07 16:20:42 +01:00
cpetersmeier
5207a8b2b5 comply to google format + add docstrings 2022-01-07 16:20:42 +01:00
cpetersmeier
0e7f2d5981 add docstrings, custom signatures 2022-01-07 16:20:42 +01:00
cpetersmeier
d1c947c973 add python docstrings 2022-01-07 16:20:42 +01:00
cpetersmeier
136c5c425e sphinx configuration
- Remove warning, originating from intersphinx configuration.
- Add .rst files for the api documentation.
2022-01-07 16:20:42 +01:00
Robert Haschke
a08face4a0 Fixup: Provide wrapper for moveit::core::MoveItErrorCode 2022-01-07 16:20:04 +01:00
Robert Haschke
86093be94a Merge branch 'master' into wip-python-api 2022-01-07 16:20:00 +01:00
Robert Haschke
b2c990b675 core: export rviz_marker_tools dependency 2022-01-07 14:35:15 +01:00
Robert Haschke
c7b2067b86 Merge PR #309: Fix Pruning 2022-01-05 20:19:51 +01:00
Robert Haschke
5956e70956 Merge PR #311: fix Fallbacks 2022-01-05 19:49:38 +01:00
Robert Haschke
4cc1f567d6 FallbacksPrivateConnect
Implement Fallbacks behavior for children of type Connecting.
All other connect-like children are currently infeasible to handle,
because we cannot forward a single job, i.e. a pair (from, to)
to the next child, but only individual states.
However, passing states, will cause creation of undesired state pairs
as jobs in subsequent children.
2022-01-05 18:16:34 +01:00
Robert Haschke
7a04a9f603 ParallelContainerBasePrivate::propagateStateTo*All*Children
rename method to emphasize that state updates are propagated to all children
2022-01-05 16:45:57 +01:00
Robert Haschke
986d3c8766 FallbacksPrivateCommon: shared between Generator + Propagator 2022-01-05 16:45:57 +01:00
Robert Haschke
b82b70ed64 FallbacksPrivate::nextChild()
... factoring out functionality shared between FallbacksPrivateGenerator
and FallbacksPrivatePropagator to switch to next child in nextJob().
2022-01-05 16:37:46 +01:00
Robert Haschke
7af3d8ebd7 Improve readability 2022-01-05 16:37:46 +01:00
Robert Haschke
b2c116edab reset(new Interface()) -> std::make_shared<Interface>() 2022-01-05 16:37:46 +01:00
Robert Haschke
442d39ad3e Improve comments 2022-01-05 16:37:46 +01:00
Robert Haschke
b2056745a8 Generalize connectStageInsideFallbacks
Let's consider the following simple situation, where generators produce solutions in the given order.

GEN           1 3
Fallbacks     |X
GEN           2 4

When passing state 4 to the Fallbacks' connector, it forms pending pairs with both 1 and 3.
Thus, the container needs to check whether 1-4 or 3-4 was processed when receiving a success or failure,
to correctly forward the failed one to the next child.
2022-01-05 16:37:46 +01:00
Robert Haschke
184fab8e0a GeneratePlacePose: add property 'allow_z_flip' 2022-01-04 15:58:19 +01:00
Robert Haschke
9630f4d789 ComputeIK: Improve markers
- always provide eef markers (also in case of success)
- tint failures in red
- use different names for "ik frame" and "target frame" markers
- reduce code duplication
2022-01-04 15:57:34 +01:00
Robert Haschke
91fe791bdb Add comment 2022-01-04 15:12:06 +01:00
Robert Haschke
72510818c8 Export libmoveit_python_tools.so 2022-01-04 15:11:23 +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
v4hn
84f96ec74c MoveRelative: Interpret direction relative to IKFrame
bugfix
2021-12-20 10:19:52 +01:00
v4hn
191ff253fd add tests for MoveRelative 2021-12-20 10:19:52 +01:00
Robert Haschke
4be448641f Improve debug output
- printChildrenInterfaces(): fix/add usage
- printPendingPairs(): full colorization according to status
2021-11-28 18:28:20 +01:00
Robert Haschke
b4a9e2033d
Stage::reset() should reset total_compute_time_ (#310) 2021-11-25 19:47:00 +03:00
Robert Haschke
e296bd7aed Simplify: job_has_solutions_
Just set a flag when we received a full solution
2021-11-25 07:37:28 +01:00
Robert Haschke
7237e81547 Rework FallbacksPrivate*
Further factorize and simplify FallbacksPrivate classes employing ideas from @v4hn.
The key difference between the variants his how they advance to the next job.
Thus, the only virtual method required is nextJob().
2021-11-25 07:36:32 +01:00
Robert Haschke
070c6e9ab6 Disable failing test FallbacksFixtureConnect.connectStageInsideFallbacks
... as we are now missing the implementation for CONNECT interfaces
2021-11-25 07:35:28 +01:00
Robert Haschke
8dd8022ef9 Factorize implementation of FallbacksPrivate into 3 classes 2021-11-24 21:17:49 +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
Robert Haschke
c822fd3822 Remove logger configuration
Logger config can be more easily handled via ROSCONSOLE_CONFIG_FILE.
2021-11-24 15:08:20 +01:00
Robert Haschke
a0bc0602e8 Enable tests
Adapt test results FallbacksFixturePropagate.computeFirstSuccessfulStagePerSolutionOnly
due to 2e63c154aa:

The order of computations has changed, because we lock the processed state
as soon as it is forwarded to the first fallback child.

In this case, after processing GEN1 und FWD1 once, we have the two states with costs 2, 4 in the queue.
The first one, i.e. with cost 2 is forwarded to the child FWD2, which fails.
In the next cycle, although we have new states in the queue (1, 2, 3, 4), we stick with state "2"
and forward it two FWD3, which adds costs 210, resulting in 212.

With previous code, the Fallback container switched to state "1", forwarded to FWD2.
2021-11-24 15:07:21 +01:00
Robert Haschke
2e63c154aa Reintroduce pending state 2021-11-22 01:39:45 +01:00
Robert Haschke
5c235ab580 debugging helper function 2021-11-22 01:39:45 +01:00
Robert Haschke
dcb6857f36 Simplify computePropagate()
- Drop variable current_external_state_
- Instead encode the info that the external state wasn't yet forwarded to any child via stage = children().cend()
- If all children have exhausted their solutions for this state, it is removed from the pending list
2021-11-22 01:39:45 +01:00
Robert Haschke
c33b1967bc Handle updates on external states 2021-11-22 01:36:34 +01:00
Robert Haschke
e5b20ac11f Fix pruning
Pruning - if acting on the external state - needs to pass the current stage (this).
2021-11-22 01:36:34 +01:00
Robert Haschke
6653c4853a Rename: computeFromExternal -> computePropagate 2021-11-22 01:36:34 +01:00
Robert Haschke
b783173b27 GENERATE: return correct canCompute() result as early as possible
Moving to next child generator only in compute() requires an extra call
to canCompute() to notice the failure of the next generator(s).
2021-11-22 01:35:34 +01:00
Robert Haschke
aef991602f Propagate either STATUS or PRIORITY updates into a container 2021-11-22 00:12:50 +01:00
Robert Haschke
a48b932dce Distinguish STATUS and PRIORITY updates in notify() callbacks
to allow propagating status updates only if the STATUS actually changed.
2021-11-21 15:05:29 +01:00
Robert Haschke
fdd5ff880b templatize: pullInterface(dir) -> pullInterface<dir>()
Also remove unused pushInterface(dir)
2021-11-21 14:15:59 +01:00