-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add app manager plugin #25
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not read through the code, but some feedback on the idea described in the description.
class RosbagRecorderPlugin(object):
Does it make sense to provide a base class (with unimplemented interface functions)?
Is there a default python plugin that does "nothing" if nothing is specified in the config?
From what I can see the new python layer is independent from the rest of the plugin, as the launch file defines the "actual" plugin. How about renaming your python wrappers from module
to loader
or context
and keeping the names independent from specific plugins as long as they do not do specific things that can only ever be relevant for one plugin?
@v4hn thank you for your comment.
in my repository, I made the base class.
I'm not sure about your comment, but you are thinking about a plugin whose python layer does not do anything, right? - name: app_recorder/rosbag_recorder_plugin # plugin name
launch: app_recorder/rosbag_recorder.launch # plugin launch name
module: app_manager_plugin.app_manager_base.AppManagerPlugin |
is it better to provide it in this repo?
I didn't look at it, but it seems reasonable to me to define an abstract interface?
It's python though, and I don't know about best practices in the ROS python community for things like that...
but maybe it is better to support `null (or None)` for skip running the python layer.
Yes! Wouldn't you otherwise break old configurations for no reason?
|
OK, i will
this plugin PR (I mean current proposal) does not break old configurations. |
@v4hn
I made
If we add reference to this repo, where can I add the url link? |
I update this PR to add some new features:
|
@v4hn |
@knorth55 I reviewed this multiple times and then you suddenly added a bunch of additional features that (optionally) complicate the configuration even more... That was not a good move w.r.t. reviewer commitment. :-)
This seems very much superfluous to me. If a plugin really needs arbitrary yaml input (instead of well-defined parameters) they can always add another parameter to their launch file to ask for a yaml file. Aside from that I approve once more. Please get @k-okada to do a second review to get this merged.
Muhahaha, as if I'd ever... |
Please add a documentation of this plugin feature to the |
Sorry for that. Now I changed this PR from draft to open.
I'm sorry again for this change. Anyway, thank you for reviewing this again!
😆 |
Thanks, I will add it. |
Sounds reasonable, though it adds more complexity. 👍 |
@v4hn sorry for the lateness, but i update this PR to add readme documentation. |
@v4hn thank you for reviewing many times and merging this PR! |
Adding app manager plugin
Note
this plugin depends onroslaunch>=1.13.6
ros/ros_comm#1115UPDATE: I overwrite required function for kinetic users in cb23aae
Description
Now, I'm planning to add plugins for app_manager.
This is because I want to use app information and result before and after the app.
This PR is draft and proposal for app_manager plugins, and I made app_manager plugin examples in https://github.com/knorth55/app_manager_utils.
I made these plugins below for apps.
How to make new plugin
Add launch
First, we can set launch file for plugin as normal launch as belows.
Add plugin module
Then, we need to set plugin function as follows.
Add plugin yaml
Next, we need to add plugin config yaml file as follows.
In
package.xml
, we need to set yaml file path then as follows.How to enable plugin in an app
In order to enable plugins, we need to write plugins in app file (i.e.
test_app.app
) as follows.