Commit Graph

1055 Commits

Author SHA1 Message Date
Robert Haschke
29d12196da Reenable python bindings 2024-07-13 02:08:30 +02:00
Robert Haschke
98000f37ff Merge branch 'master' into ros2 2024-07-13 02:07:53 +02:00
Robert Haschke
8d2baf2739 Cleanup unit tests
... and allow them to run via both, cmdline and pytest
2024-07-13 01:59:22 +02:00
Robert Haschke
6d376fb8b9 Connect: Relax validity check of reached end state 2024-07-12 06:31:33 +02:00
Robert Haschke
0fed09d431 Unify Python demo scripts 2024-07-12 06:31:33 +02:00
Robert Haschke
93ef98ad67 Switch shebang to python3 2024-07-11 15:44:28 +02:00
Robert Haschke
4debc37904 Silence gcc's overloaded-virtual warnings 2024-07-11 09:50:35 +02:00
Robert Haschke
d4db4cb707 Fix flaky IK in asan unit test: increase timeout 2024-07-09 15:33:47 +02:00
Robert Haschke
26d146874a Fix failing unittests: remove static executor 2024-07-09 13:25:57 +02:00
Robert Haschke
fbc05e4496
Add property to enable/disable pruning at runtime (#590) 2024-07-06 16:51:14 +02:00
Robert Haschke
907014cd57 Disable pruning by default 2024-07-04 12:05:31 +02:00
Robert Haschke
93a3964138 test_pruning.cpp: Add new test 2024-07-04 11:57:31 +02:00
Robert Haschke
48bde8daab test_pruning.cpp: Extend test to ParallelContainer 2024-07-04 11:57:31 +02:00
Robert Haschke
42a08d6444 PassThrough: cleanup unused headers 2024-07-04 11:57:31 +02:00
Robert Haschke
a84479cc58 Avoid segfault if TimeParameterization is not set 2024-07-03 09:32:30 +02:00
Robert Haschke
b1336dc210 CartesianPath: allow ik_frame definition
... if start and end are given as joint-space poses
2024-06-29 18:02:05 +02:00
Robert Haschke
177e19de1f Generalize utils::getRobotTipForFrame()
... to return error_msg instead of calling markAsFailure() on a solution
2024-06-29 17:55:45 +02:00
Robert Haschke
8fa66a6d2c Update pybind11 to version 2.12.0
Currently used branch was not interoperable with a standard version of pybind11.
2024-05-29 15:43:46 +02:00
Robert Haschke
edf2605a1d TEMP: Workaround for unittests failing during shutdown
Using quick_exit instead of return/exit avoids calling all cleanup functions,
which fail due to a bug in rmw_fastrtps_cpp.
2024-05-29 14:04:07 +02:00
Robert Haschke
bb047c894c Cleanup unit tests
- Unify move_to.launch.py and test_task_model.launch.py
- Rename them to test.launch.py as they are independent of the executable
- Move Node creation to the fixture constructor
- Replace Task::setRobotModel(loadModel()) with Task::loadRobotModel()
2024-05-29 14:04:07 +02:00
VideoSystemsTech
ad5c878f19
ComputeIK: Allow additional constraints for filtering solutions (#464)
Add "constraint" property.

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2024-05-28 16:54:10 +02:00
Jafar Uruç
a9ddbe1998
Update authors and maintainers (#425) 2024-05-28 07:26:10 +02:00
VideoSystemsTech
227d475282 Expose MultiPlanner to Python (#474)
Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2024-05-27 19:17:45 +02:00
Captain Yoshi
3b4ea48c18
Add unittest cartesianCollisionMinMaxDistance (#538)
... to illustrate that MoveRelative's min-max constraint fails with PipelinePlanners (e.g. Pilz) returning a partially invalid trajectory: MTC does not truncate the trajectory to its valid part and thus fails, even if the valid part fits the given min-max range. This logic is only supported for the CartesianPath planner for now.

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2024-05-27 16:16:57 +02:00
Robert Haschke
f79c6c537e
Connect: Relax validity check of reached end state (#542)
Looks like Rolling's MoveIt uses a more relaxed goal constraint threshold than Humble.
For this reason, all end states reached by Connect solutions of pick+place demo are rejected.
This commit relaxes the max_distance threshold of Connect accordingly.
2024-05-26 20:45:23 +02:00
Robert Haschke
92efc14043 Rename ros-planning org 2024-05-25 21:30:30 +02:00
Robert Haschke
076903a738 Drop requirement on py_binding_tools
python bindings are not yet supported
2024-05-25 20:01:51 +02:00
Robert Haschke
7666f73e04
Simplify formatting code with https://github.com/fmtlib (#499)
* Simplify formatting code with https://github.com/fmtlib
* Update to clang-format-12
2024-05-25 19:12:42 +02:00
Robert Haschke
5d2857be6b Merge branches 'simplify-node-creation' and 'master' into ros2 2024-05-24 14:39:38 +02:00
Captain Yoshi
a0c00646c2
Add NoOp stage (#534)
This stage can be used to add arbitrary user-defined properties w/o modifying the PlanningScene state or adding a trajectory.

Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2024-05-24 14:34:27 +02:00
Robert Haschke
54e653ebdb Fix failing assertion
The cost of a newly created Priority does not need to be finite.
An example occurs in the Pick+Place demo: the CurrentState solution
is filtered by an applicibility test, which may set the cost to infinity
while lifting the solution to the wrapper stage.
In this case, new InterfaceStates are created from the infinite cost solution.
Consequently, the state should be marked as PRUNED.
2024-05-24 12:02:20 +02:00
Robert Haschke
9c05305eff ModifyPlanningScene: check state for collisions 2024-05-24 10:49:14 +02:00
Robert Haschke
a8896e4e5d Improve TypeError exceptions
- use pybind11 API instead of Python C API
- provide more informative error messages
2024-05-23 14:08:49 +02:00
Robert Haschke
9fd2f1f858 Drop Melodic support
- py_binding_tools is released into Noetic only
- drop Python2 support
- drop TYPED_TEST_CASE
2024-05-23 14:08:49 +02:00
Robert Haschke
405755595a Switch to package py_binding_tools 2024-05-23 14:08:49 +02:00
Captain Yoshi
ad19ea5479
Add ability to move CollisionObjects (#567) 2024-05-12 11:03:47 +02:00
Robert Haschke
046309d60a Simplify rclcpp::Node creation
Directly pass node name and namespace instead of using options.
2024-05-08 10:19:28 +02:00
Sebastian Castro
819e560ed4
Improve description of max_distance property of Connect stage (#564) 2024-05-05 19:30:36 +02:00
Daniel García López
560aa0a476
Add Generator::spawn(from, to, trajectory) variant (#546) 2024-03-20 15:32:15 +01:00
Sebastian Jahr
5ae22da8db fixup! Add planner_id to SubTrajectory info (#490) 2024-03-19 14:51:35 +01:00
Robert Haschke
739375298a Merge branch master into ros2 2024-03-09 13:34:36 +01:00
Robert Haschke
55c4b52b13 Cosmetic fixes 2024-03-09 11:11:01 +01:00
Robert Haschke
5a8925df11 Revert "Disable MPS tests, failing due to #432"
This reverts commit 5382338933.
2024-03-08 17:16:19 +01:00
Robert Haschke
4aac679257 Fix generation of Solution msg: consider backward operation
Need to generate full planning scene message if planning progressed backwards:
The scene_diff field describes PlanningScene changes of the end scene relative to the start scene,
while during planning it might be inversed.
2024-03-08 17:16:19 +01:00
Abishalini
e09fecd71f Propagate errors from planners to solution comment (#525) 2024-03-08 11:13:10 +01:00
Abishalini Sivaraman
5dd170b849 Add planner info to comments (#523) 2024-03-07 21:19:27 +01:00
Sebastian Jahr
f661c18e69 Fix MTC unittests for new pipeline refactoring (#515) 2024-03-07 20:53:45 +01:00
Mario Prats
11c3126052 Update to the more recent JumpThreshold API (#506) 2024-03-07 20:35:03 +01:00
Michael Wiznitzer
0827a0d260 JointInterpolationPlanner: Check joint bounds (#505) 2024-03-07 20:33:43 +01:00
Robert Haschke
d0a904c313 Add property trajectory_execution_info (#355, #502)
... to pass a list of controller names to PlanExecution

---------

Co-authored-by: Luca Lach <llach@techfak.uni-bielefeld.de>
2024-03-07 20:01:03 +01:00
Robert Haschke
a75d50e0ed Clear JointStates in scene diff (#504)
Joints are handled in trajectories.
Scene diffs should not modify joints during execution.
Fixes #353.
2024-03-07 12:23:07 +01:00
Sebastian Jahr
b0f388a88f Set a non-infinite default timeout in CurrentState stage (#491)
Co-authored-by: Mario Prats <mario.prats@picknik.ai>
2024-03-07 12:23:07 +01:00
Henning Kayser
111d9ba207
Add GenerateRandomPose stage (#166)
Implements a generic pose randomizer

Co-authored-by: JafarAbdi <cafer.abdi@gmail.com>
Co-authored-by: Sebastian Jahr <sebastian.jahr@picknik.ai>
Co-authored-by: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
2024-03-06 22:32:13 +01:00
Sebastian Jahr
1e058598c7 Add planner_id to SubTrajectory info (#490) 2024-03-06 18:11:57 +01:00
Sebastian Jahr
ed70497d33 Remove display_motion_plans and publish_planning_requests properties (#489) 2024-03-06 15:59:39 +01:00
Sebastian Jahr
0e02fcae77 Enable parallel planning with PipelinePlanner (#450)
* Refactor pipeline planner

Make code readable

Re-order plan functions

Make usable with parallel planning

Enable configuring multiple pipelines

Add callbacks

Cleanup and documentation

Add API to set parallel planning callbacks and deprecate functions

Pass pipeline map by reference

Small clang-tidy fix

Update core/src/solvers/pipeline_planner.cpp

Co-authored-by: Sebastian Castro <4603398+sea-bass@users.noreply.github.com>

Update core/src/solvers/pipeline_planner.cpp

Format

Refactor to avoid calling .at(0) twice

Use no default stopping criteria

Update fallbacks_move demo

* Cleanup + address deprecation warnings

* Enabling optionally using a property defined pipeline planner map

* Address review

* Disable humble CI for ros2 branch

* Add pipeline planner unittests + some checks

* Add short comment
2024-03-06 15:59:09 +01:00
Captain Yoshi
911bc67c4d
GenerateGraspPose: Expose rotation_axis as property (#535) 2024-03-06 11:02:44 +01:00
Captain Yoshi
5720b83dce
Connect: ensure end-state matches goal state (#532) 2024-02-25 16:58:56 +01:00
Michael Görner
7638e5ff8b
Merge pull request #495 from ubi-agni/debug-#485
[WIP] Debug/Fix #485
2024-02-16 12:27:36 +01:00
Robert Haschke
275c15422d Adaptions for https://github.com/ros-planning/moveit/pull/3534
make_box() is a public method now
2024-02-15 22:20:34 +01:00
Robert Haschke
e163f57f9c Cleanup debug output 2024-02-15 21:42:18 +01:00
Robert Haschke
9dfd6bd2eb Fix duplicate solutions
When adding pending state pairs for a new incoming state to Connect,
we have to re-enable opposite states from ARMED state.
This changes the order of states in the interface.
If we do this while iterating over the states, we might add pairs multiple times,
because iteration continues with same state at an earlier position.
2024-02-15 21:42:18 +01:00
Robert Haschke
bf2714b42d printPendingPairs(os) -> os<<pendingPairsPrinter() 2023-10-25 22:21:36 +02:00
Robert Haschke
13264ba21d Fix leaking of failures into enumerated solutions 2023-10-25 22:21:36 +02:00
Robert Haschke
7b965863e3 Add more debugging output
- Add Stage::introspection() accessor
- Introspection: debug-log solution registration
- RemoteSolutionModel: show internal solution id as tooltip in 1st column
2023-10-25 22:19:49 +02:00
Robert Haschke
08b102d5b0 Unit tests for #485 2023-10-20 09:23:32 +02:00
Robert Haschke
605a1e5419 DelayingWrapper stage to delay solution shipping in unit tests 2023-10-20 09:23:32 +02:00
Robert Haschke
0fd989cb27 Simplify tests 2023-10-13 00:25:39 +02:00
Michael Görner
dcde89d4d5
Skip Fallbacks::replaceImpl() when already correctly initialized (#494)
Do not reinitialize a Fallbacks' pimpl if it already serves the desired interface.
2023-10-11 14:45:24 +02:00
Michael Görner
ab4bb40dfd
Fix demos (#493)
* improve demo rviz config
  - orbit view centered at workspace instead of 2d orbit
  - REALTIME trajectory display
* FixedState: setter for ignore_collisions property
* Fix clearance_cost demo
  - verify default state
  - use model frame over virtual "world" which is not known in fresh PlanningScene
  - ignore initial collisions with the IK seed
* improve documentation in Fallbacks demo
2023-10-11 14:30:54 +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
349e3c6c6c Merge branch master into ros2 2023-05-26 16:38:15 +02:00
Robert Haschke
c605a0059a Replace namespace robot_[model|state] with moveit::core 2023-05-26 01:18:17 +02:00
Robert Haschke
6f7282423d MPS: fixup processCollisionObject
- Declare CollisionObject argument as constant:
  Internally the argument is temporarily modified, but for a caller it is effectively const.
- Correctly restore the old operation mode
- Fixup check in unit test
2023-05-26 01:15:50 +02:00
Robert Haschke
3ec69fb59d
Merge PR #460: improvements to ModifyPlanningScene stage 2023-05-25 22:29:31 +02:00
Robert Haschke
5382338933 Disable MPS tests, failing due to #432 2023-05-25 21:52:07 +02:00
Robert Haschke
78da3e46e6
Gracefully handle NULL robot_trajectory (#469) 2023-05-25 17:49:23 +02:00
JafarAbdi
45ff3ea437 Improve cmake
- Modernize
- Add include folder for INSTALL_INTERFACE
2023-05-25 17:05:45 +02:00
Robert Haschke
76d293863b
introspection: remove any invalid ROS-name chars from hostname (#465) 2023-05-19 08:48:28 +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
bd400de184 Fix add/remove object in backward operation
- addObject() will actually remove the object from scene
- removeObject() is not supported (we would need to know which object to add)
2023-05-19 08:43:12 +02:00
Robert Haschke
1daef934ee Add python binding for ModifyPlanningScene::removeObject 2023-05-19 08:43:12 +02:00
Robert Haschke
6a01550e8d ComputeIK: update RobotState before calling setFromIK()
This became necessary due to https://github.com/ros-planning/moveit/issues/3388.
2023-05-17 21:01:57 +02:00
Michael Görner
4d2a5714fa
Use pluginlib consistently (#463) 2023-05-17 19:55:18 +02:00
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
Mario Prats
a0befc5b75
Remove redundant semicolon to silent compiler warning (#448) 2023-03-22 15:15:13 +01: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