-
 

app_manager repository

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2022-10-13
Dev Status UNMAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
app_manager 1.3.0

README

app_manager Build Status

A package for making launch file an application

Installation

Run sudo apt-get install ros-$ROS_DISTRO-app-manager

Usage

The app_manager node loads information of available application from .installed files. .installed file is a yaml file that defines installed applications in a package like below:

# package_root/apps/app.installed
apps:
- app: pkg_name/app_name1
  display: sample app
- app: pkg_name/app_name2
  display: another sample app

Once .installed file is defined, you have to notify the location of the files to app_manager by either of two ways:

  1. Give the locations as arguments

One way to notify the location is to add --applist argument with rosrun.

rosrun app_manager app_manager --applist `rospack find package_root`/apps

This is useful for testing one small .installed file or a demonstration.

  1. Register as export attributes

Another way to notify the location is to define them in <export> tag in package.xml.

<!-- package_root/package.xml -->
<package>
  ...
  <run_depend>app_manager</run_depend>
  ...
  <export>
    <app_manager app_dir="${prefix}/apps"/>
  </export>
</package>

And launch app_manager without any argument:

rosrun app_manager app_manager

app_manager node automatically searches all .installed files and register as available applications.

Applications can be filtered by platform defined in each .app file. If you set the parameter /robot/type to pr2, then apps for platform pr2 will be available.

rosparam set /robot/type pr2

APIs

All topics/services are advertised under the namespace specified by the parameter /robot/name.

Publishing Topics

  • app_list: List available/running applications
  • application/app_status: Current status of app manager

Services

  • list_apps: List available/running applications
  • start_app: Start an available application
  • stop_app: Stop a runniing application
  • reload_app_list: Reload installed applications from *.installed) file.

Examples

Start default roscore

$ roscore


and start another roscore for app_manager from another Terminal

$ roscore -p 11312

Start app_manager

$ rosrun app_manager app_manager --applist `rospack find app_manager`/test/applist1 _interface_master:=http://localhost:11312

Make sure that it founds the apps

[INFO] [1575604033.724035]: 1 apps found in /home/user/catkin_ws/src/app_manager/test/applist1/apps1.installed

Use service calls to list and start apps.

$ rosservice call robot/list_apps
running_apps: []
available_apps:
  -
    name: "app_manager/appA"
    display_name: "Android Joystick"
    icon:
      format: ''
      data: []
    client_apps: []

$ rosservice call /robot/start_app "name: 'app_manager/appA'
args:
- key: 'foo'
  value: 'bar'"

started: True
error_code: 0
message: "app [app_manager/appA] started"
namespace: "/robot/application"

Plugins

You can define app_manager plugins as below in app file such as test.app.

# app definitions
display: Test app
platform: all
launch: test_app_manager/test_app.xml
interface: test_app_manager/test_app.interface
# plugin definitions
plugins:
  - name: mail_notifier_plugin  # name to identify this plugin
    type: app_notifier/mail_notifier_plugin  # plugin type
    launch_args:  # arguments for plugin launch file
      foo: hello
    launch_arg_yaml: /etc/mail_notifier_launch_arg.yaml  # argument yaml file for plugin launch file
    # in this case, these arguments will be passed.
    # {"hoge": 100, "fuga": 30, "bar": 10} will be passed to start plugin
    # {"hoge": 50, "fuga": 30} will be passed to stop plugin
    plugin_args:  # arguments for plugin function
      hoge: 10
      fuga: 30
    start_plugin_args:  # arguments for start plugin function
      hoge: 100  # arguments for start plugin function arguments (it overwrites plugin_args hoge: 10 -> 100)
      bar: 10
    stop_plugin_args:  # arguments for stop plugin function
      hoge: 50  # arguments for stop plugin function arguments (it overwrites plugin_args hoge: 10 -> 50)
    plugin_arg_yaml: /etc/mail_notifier_plugin_arg.yaml  # argument yaml file for plugin function arguments
  - name: rosbag_recorder_plugin  # another plugin
    type app_recorder/rosbag_recorder_plugin
    launch_args:
      rosbag_path: /tmp
      rosbag_title: test.bag
      compress: true
      rosbag_topic_names:
        - /rosout
        - /tf
        - /tf_static
plugin_order: # plugin running orders. if you don't set field, plugin will be run in order in plugins field
  start_plugin_order:  # start plugin running order
    - rosbag_recorder_plugin  # 1st plugin name
    - mail_notifier_plugin  #2nd plugin name
  stop_plugin_order:  # start plugin running order
    - rosbag_recorder_plugin
    - mail_notifier_plugin

Sample plugin repository is knorth55/app_manager_utils.

For more detailed information, please read #25.

Maintainer

Yuki Furuta «furushchev@jsk.imi.i.u-tokyo.ac.jp»

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2022-10-13
Dev Status UNMAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
app_manager 1.3.0

README

app_manager Build Status

A package for making launch file an application

Installation

Run sudo apt-get install ros-$ROS_DISTRO-app-manager

Usage

The app_manager node loads information of available application from .installed files. .installed file is a yaml file that defines installed applications in a package like below:

# package_root/apps/app.installed
apps:
- app: pkg_name/app_name1
  display: sample app
- app: pkg_name/app_name2
  display: another sample app

Once .installed file is defined, you have to notify the location of the files to app_manager by either of two ways:

  1. Give the locations as arguments

One way to notify the location is to add --applist argument with rosrun.

rosrun app_manager app_manager --applist `rospack find package_root`/apps

This is useful for testing one small .installed file or a demonstration.

  1. Register as export attributes

Another way to notify the location is to define them in <export> tag in package.xml.

<!-- package_root/package.xml -->
<package>
  ...
  <run_depend>app_manager</run_depend>
  ...
  <export>
    <app_manager app_dir="${prefix}/apps"/>
  </export>
</package>

And launch app_manager without any argument:

rosrun app_manager app_manager

app_manager node automatically searches all .installed files and register as available applications.

Applications can be filtered by platform defined in each .app file. If you set the parameter /robot/type to pr2, then apps for platform pr2 will be available.

rosparam set /robot/type pr2

APIs

All topics/services are advertised under the namespace specified by the parameter /robot/name.

Publishing Topics

  • app_list: List available/running applications
  • application/app_status: Current status of app manager

Services

  • list_apps: List available/running applications
  • start_app: Start an available application
  • stop_app: Stop a runniing application
  • reload_app_list: Reload installed applications from *.installed) file.

Examples

Start default roscore

$ roscore


and start another roscore for app_manager from another Terminal

$ roscore -p 11312

Start app_manager

$ rosrun app_manager app_manager --applist `rospack find app_manager`/test/applist1 _interface_master:=http://localhost:11312

Make sure that it founds the apps

[INFO] [1575604033.724035]: 1 apps found in /home/user/catkin_ws/src/app_manager/test/applist1/apps1.installed

Use service calls to list and start apps.

$ rosservice call robot/list_apps
running_apps: []
available_apps:
  -
    name: "app_manager/appA"
    display_name: "Android Joystick"
    icon:
      format: ''
      data: []
    client_apps: []

$ rosservice call /robot/start_app "name: 'app_manager/appA'
args:
- key: 'foo'
  value: 'bar'"

started: True
error_code: 0
message: "app [app_manager/appA] started"
namespace: "/robot/application"

Plugins

You can define app_manager plugins as below in app file such as test.app.

# app definitions
display: Test app
platform: all
launch: test_app_manager/test_app.xml
interface: test_app_manager/test_app.interface
# plugin definitions
plugins:
  - name: mail_notifier_plugin  # name to identify this plugin
    type: app_notifier/mail_notifier_plugin  # plugin type
    launch_args:  # arguments for plugin launch file
      foo: hello
    launch_arg_yaml: /etc/mail_notifier_launch_arg.yaml  # argument yaml file for plugin launch file
    # in this case, these arguments will be passed.
    # {"hoge": 100, "fuga": 30, "bar": 10} will be passed to start plugin
    # {"hoge": 50, "fuga": 30} will be passed to stop plugin
    plugin_args:  # arguments for plugin function
      hoge: 10
      fuga: 30
    start_plugin_args:  # arguments for start plugin function
      hoge: 100  # arguments for start plugin function arguments (it overwrites plugin_args hoge: 10 -> 100)
      bar: 10
    stop_plugin_args:  # arguments for stop plugin function
      hoge: 50  # arguments for stop plugin function arguments (it overwrites plugin_args hoge: 10 -> 50)
    plugin_arg_yaml: /etc/mail_notifier_plugin_arg.yaml  # argument yaml file for plugin function arguments
  - name: rosbag_recorder_plugin  # another plugin
    type app_recorder/rosbag_recorder_plugin
    launch_args:
      rosbag_path: /tmp
      rosbag_title: test.bag
      compress: true
      rosbag_topic_names:
        - /rosout
        - /tf
        - /tf_static
plugin_order: # plugin running orders. if you don't set field, plugin will be run in order in plugins field
  start_plugin_order:  # start plugin running order
    - rosbag_recorder_plugin  # 1st plugin name
    - mail_notifier_plugin  #2nd plugin name
  stop_plugin_order:  # start plugin running order
    - rosbag_recorder_plugin
    - mail_notifier_plugin

Sample plugin repository is knorth55/app_manager_utils.

For more detailed information, please read #25.

Maintainer

Yuki Furuta «furushchev@jsk.imi.i.u-tokyo.ac.jp»

CONTRIBUTING

No CONTRIBUTING.md found.