Closed 01binary closed 4 months ago
Thanks for helping in improving MoveIt and open source robotics!
I don't know whether the ros_control tutorials explain that idea. Probably they do.
I checked ROS Control 1 documentation - it's just one page and links to presentation & paper. The presentation mentions "resources" but does not say that resources are joints. No specific mention of controllers claiming joints. Also checked ROS Control 2 documentation - it's smoother but still has large gaps.
I recommend leaving this in, otherwise I will have to copy-and-paste it into 100 different answers on Robotics Stack Exchange - it's a lot easier to link to relevant documentation.
Other than that, things looking good. Last remaining issue is we need to use an example project that has ROS Control configuration, and Panda does not. I see you replaced all the examples with Panda config.
The MSA-generated project must have the following to be a valid example here:
Panda only has RViz configuration to launch with fake controllers.
Would you like me to setup panda_moveit_config
with ROS controls in a separate PR, get that merged, and then come back here?
Would you like me to setup
panda_moveit_config
with ROS controls in a separate PR, get that merged, and then come back here?
No, please don't do that. If you want to augment a robot config with such a config, consider using the Panda robot or Fanuc robot in moveit_resources
.
Before merging this, I need to work through the code example sections. I didn't find time for this yet.
Sorry, I didn't realize I was not being clear. By "setup panda with moveit config" I meant augmenting panda_moveit_config by re-running the wizard to make sure all the files normally generated by MSA exist, are filled out, and work.
I think I understood you correctly. And I suggest not to update the standard panda_moveit_config
which is very special and deviates in many regards from the MSA-generated files. However, the panda_moveit_config
in moveit_resources
is much closer to the MSA defaults. Hence, you should use that version.
My first few attempts to re-gen panda_moveit_config in moveit_resources (using panda_description) failed.
Apparently MSA does not add filename
attribute to <plugin name="gazebo_ros_control>
element in URDF generated for simulation. I haven't seen this error before because my robot URDF already had the <gazebo><plugin>
section in it, so MSA didn't have to add one. After I added the attribute Gazebo finally spawned the model, but then crashed after unpausing physics.
Continuing to troubleshoot. If this takes too long I'm fine with giving up on this aspect, and getting it patched up later in another PR. No reason to over-extend and keep PRs open for a long time when there's always another PR.
If you are looking to test the code, see third_draft branch in trajectory_controller_example repo. If you clone that into a ROS1 workspace and install packages with rosdep
I feel like it should build on the first attempt with no issues.
Regarding the issues you observed with Gazebo:
joint_state_controller
, fixed via https://github.com/ros-controls/ros_controllers/pull/630I think we found a happy middle here: the topic starts with a survey of controller managers and their settings (split by type), then goes into integrating controllers (again split by type)
Congrats on getting your first MoveIt pull request merged and improving open source robotics!
Thanks for the merge! Sorry the PR had to bounce as both of us were busy at different times.
@simonschmeisser we can setup Zoom if you like, to make it a bit more interactive.
First question I have, is the current documentation after this pull request better than the previous version?
it is not clear to me when I would use which controller manager
The "Low-Level Controllers" topic follows the following macro-structure:
Here's a high-level summary, let me know if this makes sense.
Currently my robot is not moving and I have no idea why. Is there a way to make ros_control acknowledge that it received a trajectory? Print the content? This kind of thing
rostopic list
you should get a topic called /your_controller_name/follow_joint_trajectory/goal
, this receives goals from MoveItrostopic echo <topicname>
to watch itCompleted trajectory execution with status
(followed by status) or Controller 'name' successfully finished
ROS_
in joint_trajectory_controller_impl.h
(ROS Controllers GitHub repo) to get an idea of what messages to look forjoint_trajectory_controller_impl.h
, the goalCB
method. This is the method that gets called when the /follow_joint_trajectory/goal
topic I mentioned earlier gets a goal from MoveIt.
Description
There is a lot of confusion around different controller managers supported by MoveIt and their configuration settings, integrating controllers with MoveIt by linking them with existing controller handle allocator plugins, and writing controller handles and allocators. Issues reported on GitHub, posts on Robotics Stack Exchange, ROS Answers, Google Groups attest that this part of documentation is both critical to integrating new robots with MoveIt and lacks sufficient depth and clarity.
This pull request addresses issues created in MoveIt 1 repository:
Questions for reviewers:
ros_controllers.yaml
is blank for unknown reason, and there is nogazebo_demo.launch
file in its moveit config package. Both features are needed for examples in this article.planning_with_approximated_constraint_manifolds_tutorial.rst
so I assume it's fine.Checklist