Add demo package for tutorial - #104
Conversation
74c17b7 to
ccf47ce
Compare
b0531f5 to
4d485fe
Compare
|
I am working on addressing all the feedback. I have currently added the children frames and adjusted some parameters but I still need to rename and set better default parameter values |
1a92c85 to
6ae5f7f
Compare
| const std::string object = "object"; | ||
|
|
||
| // Reset ROS introspection before constructing the new object | ||
| // TODO(henningkayser): verify this is a bug, fix if possible |
There was a problem hiding this comment.
This is a known problem and we hit it before.
A patch is very welcome, if you have a good idea on how to improve this without too much overhead.
There was a problem hiding this comment.
I'm not aware of this problem. What is the problem, i.e. what happens, if introspection is not reset?
There was a problem hiding this comment.
We talked about this before @rhaschke .
If you reset a shared-pointer to a task with a new Task you create in the same line,
the new Task (and its introspection) are set up before the destructor of the old one was called.
This becomes a problem because only one ROS service can be active with the same name in the same node and the new one just does not get set up.
There was a problem hiding this comment.
Thanks for this clarification. One option to solve the issue in MTC is to use a global cache of those ROS services (and reuse existing ones).
File an issue: #106.
There was a problem hiding this comment.
Yes, but then we add static state to the Task and I believe we have avoided it thus far.
Not counting your planner cache which I still plan to remove again.
An alternative would be lazy (or just late) initialization for the ROS interfaces.
There was a problem hiding this comment.
I don't consider a cache as static state. Formally, of course, every cache is.
Late initialization will be brittle on timing. Lazy might work, but requires much more work.
Currently, the existence of the introspection pointer also indicates that introspection is desired...
rhaschke
left a comment
There was a problem hiding this comment.
The demo looks good. Thanks a lot for your effort.
However, I suggest to move this code into moveit_tutorials. Why do you want to separate the example code from the rest of the tutorial?
This would also allow to use sub frames, because moveit_tutorials might depend on MoveIt master.
| const std::string object = "object"; | ||
|
|
||
| // Reset ROS introspection before constructing the new object | ||
| // TODO(henningkayser): verify this is a bug, fix if possible |
There was a problem hiding this comment.
I'm not aware of this problem. What is the problem, i.e. what happens, if introspection is not reset?
If we move it there, we also create a dependency from the tutorials to MTC. I would just keep it in this repository for now, as proposed by @simonGoldstein |
This dependency is natural to me: If we do have an MTC tutorial there, there should be a dependency to MTC. We proceed in the same fashion for all other tutorials: If there are changes in MoveIt, we need a separate PR to adapt the tutorials correspondingly. |
Yes and No. Still, having the actual tutorial (the text description, not the source package) in the main |
I don't get what you are suggesting. Which tutorial and repo you are referring to? MTC or MoveIt? |
|
I tried to disambiguate my previous comment. |
Co-Authored-By: Henning Kayser <henningkayser@picknik.ai>
* Simplify parameters using rosparam_shortcuts * Remove example with picknik_ur5_moveit_config * Remove "hacky" object poses * Remove unused parameters
af2ab6a to
ac294d5
Compare
|
@v4hn, @rhaschke I just cleaned this up (parameters + remove picknik UR5 example), rebased onto master and ran clang-format. Can we make a decision if we merge this here or not? ;) My opinion is that full demos like this should go inside the package and not inside the tutorial, because they're readily available for a quick runtime test. BTW, I'm already working on fixing-up the tutorial. |
CI fails though.
In my opinion the package (and thus the code dependency) can stay in this repository. |
91cd3fc to
d9626a7
Compare
The remaining errors occur because of changes in the current MoveIt master branch. |
|
Unfortunately, I was not able to push my cleanup changes here. For this reason, I file them at PickNikRobotics#3. @henningkayser, please have a look and merge them. With those changes, I finally approve. |
- fix dependencies - moveit_visual_tools is not actually used - panda_moveit_config is required in a recent version - use more specific lib/binary names
|
@rhaschke I merged your changes |
Co-Authored-By: Henning Kayser <henningkayser@picknik.ai> Co-Authored-By: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
| <depend>moveit_ros_planning_interface</depend> | ||
| <depend>moveit_core</depend> | ||
| <depend>rosparam_shortcuts</depend> | ||
| <exec_depend version_gte="0.7.4">panda_moveit_config</exec_depend> |
There was a problem hiding this comment.
Is this version actually available anywhere or is this a typo?
There was a problem hiding this comment.
No, it's not a typo. But the next release of the package is still pending.
The MTC tutorial requires the latest melodic-devel branch, particularly moveit/panda_moveit_config#34. So, if you want to try the tutorial, just use the latest source branch.
Moveit Task constructor needs a tutorial. This adds the package moveit_task_constructor_demo which contains a short pick and place example. The goal is to add a new tutorial to the tutorials. This should be added to the moveit_task_constructor repo to keep it consistent with other demos like moveit_grasps.