app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.2.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-03-03
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
  • Yuki Furuta

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 app_manager/appA
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>

CHANGELOG

Changelog for package app_manager

1.2.0 (2021-03-03)

  • Merge pull request #29 from knorth55/add-stopped
  • Merge pull request #28 from knorth55/add-timeout
  • Merge pull request #30 from knorth55/add-all-availables add available_apps in all platform apps
  • add available_apps in all platform apps
  • add stopped context in app_manager plugin
  • add timeout field in app file
  • add enable_app_replacement param in app_manager (#26) This allows for both behaviors (replace currently running app or error out) and let\'s users choose without changing code...
  • add noetic test and also checks python 2/3 compatibility (#24)

    • add noetic test and also checks python 2/3 compatibility
    • fix to support both python 2/3

    * use rospy.log** instead of print Co-authored-by: Shingo Kitagawa <shingogo@hotmail.co.jp>

  • Add app manager plugin (#25) Enable aspect-oriented modelling, e.g.

    • send a mail when someone starts an app
    • auto-record rosbags during app run

    - auto-upload files on app-close ... - start plugin launch in app_manager - start and stop plugin function - pass app in plugin functions - add exit_code in stop_plugin_attr - stop plugin functions when shutdown is called - launch when plugin - load plugin launch when it exists - use ctx instead of exit_code - pass exit_code to ctx - add plugins in AppDefinition - add _current_plugins and _plugin_context - pass launch arguments - add plugin_args for app plugins - overwrite roslaunch.config.load_config_default for kinetic - add __stop_current for shutdown and __stop_current - support \"module: null\" syntax for app definition - add app_manager plugin base class - refactor scripts/app_manager - add start_plugin_args and stop_plugin_args - add start_plugin_arg_yaml and stop_plugin_arg_yaml - add launch_arg_yaml - add plugin_order to set plugin order - update readme to add plugin doc - update readme to add app definitions

  • fix readme (#23)

  • add exit_code log in app_manager (#22) add exit_code log in app_manager During successful execution, dead_list should always end up empty.

  • add all platform for all robots (#17) add an additional keyword to explicitly support \'all\' platforms

  • use rospack to search for app_manager app_dir (#19)

    • use rospack to search for app_manager app_dir
    • remove unused imports
    • use both --applist and plugin app_dir
  • Merge pull request #20 from knorth55/fix-print-python3 use rospy.logerr to escape print error in python3

  • use rospy.logerr to escape print error in python3

  • Contributors: Kei Okada, Michael G

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • test/resources/example-min.launch
  • launch/app_manager.launch
      • master [default: true] — launch master if enabled
      • master_address [default: localhost] — address for app_manager master
      • master_port [default: 11313] — port for app_manager master
      • use_applist [default: false] — load apps from applist argument
      • applist [default: ] — app dirs (space separated)
      • respawn [default: false] — respawn app_manager
      • app_manager_args [default: --applist $(arg applist)]
      • app_manager_args [default: ]

Plugins

No plugins found.

Recent questions tagged app_manager at answers.ros.org

app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.2.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-03-03
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
  • Yuki Furuta

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 app_manager/appA
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>

CHANGELOG

Changelog for package app_manager

1.2.0 (2021-03-03)

  • Merge pull request #29 from knorth55/add-stopped
  • Merge pull request #28 from knorth55/add-timeout
  • Merge pull request #30 from knorth55/add-all-availables add available_apps in all platform apps
  • add available_apps in all platform apps
  • add stopped context in app_manager plugin
  • add timeout field in app file
  • add enable_app_replacement param in app_manager (#26) This allows for both behaviors (replace currently running app or error out) and let\'s users choose without changing code...
  • add noetic test and also checks python 2/3 compatibility (#24)

    • add noetic test and also checks python 2/3 compatibility
    • fix to support both python 2/3

    * use rospy.log** instead of print Co-authored-by: Shingo Kitagawa <shingogo@hotmail.co.jp>

  • Add app manager plugin (#25) Enable aspect-oriented modelling, e.g.

    • send a mail when someone starts an app
    • auto-record rosbags during app run

    - auto-upload files on app-close ... - start plugin launch in app_manager - start and stop plugin function - pass app in plugin functions - add exit_code in stop_plugin_attr - stop plugin functions when shutdown is called - launch when plugin - load plugin launch when it exists - use ctx instead of exit_code - pass exit_code to ctx - add plugins in AppDefinition - add _current_plugins and _plugin_context - pass launch arguments - add plugin_args for app plugins - overwrite roslaunch.config.load_config_default for kinetic - add __stop_current for shutdown and __stop_current - support \"module: null\" syntax for app definition - add app_manager plugin base class - refactor scripts/app_manager - add start_plugin_args and stop_plugin_args - add start_plugin_arg_yaml and stop_plugin_arg_yaml - add launch_arg_yaml - add plugin_order to set plugin order - update readme to add plugin doc - update readme to add app definitions

  • fix readme (#23)

  • add exit_code log in app_manager (#22) add exit_code log in app_manager During successful execution, dead_list should always end up empty.

  • add all platform for all robots (#17) add an additional keyword to explicitly support \'all\' platforms

  • use rospack to search for app_manager app_dir (#19)

    • use rospack to search for app_manager app_dir
    • remove unused imports
    • use both --applist and plugin app_dir
  • Merge pull request #20 from knorth55/fix-print-python3 use rospy.logerr to escape print error in python3

  • use rospy.logerr to escape print error in python3

  • Contributors: Kei Okada, Michael G

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • test/resources/example-min.launch
  • launch/app_manager.launch
      • master [default: true] — launch master if enabled
      • master_address [default: localhost] — address for app_manager master
      • master_port [default: 11313] — port for app_manager master
      • use_applist [default: false] — load apps from applist argument
      • applist [default: ] — app dirs (space separated)
      • respawn [default: false] — respawn app_manager
      • app_manager_args [default: --applist $(arg applist)]
      • app_manager_args [default: ]

Plugins

No plugins found.

Recent questions tagged app_manager at answers.ros.org

app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.2.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-03-03
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
  • Yuki Furuta

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 app_manager/appA
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>

CHANGELOG

Changelog for package app_manager

1.2.0 (2021-03-03)

  • Merge pull request #29 from knorth55/add-stopped
  • Merge pull request #28 from knorth55/add-timeout
  • Merge pull request #30 from knorth55/add-all-availables add available_apps in all platform apps
  • add available_apps in all platform apps
  • add stopped context in app_manager plugin
  • add timeout field in app file
  • add enable_app_replacement param in app_manager (#26) This allows for both behaviors (replace currently running app or error out) and let\'s users choose without changing code...
  • add noetic test and also checks python 2/3 compatibility (#24)

    • add noetic test and also checks python 2/3 compatibility
    • fix to support both python 2/3

    * use rospy.log** instead of print Co-authored-by: Shingo Kitagawa <shingogo@hotmail.co.jp>

  • Add app manager plugin (#25) Enable aspect-oriented modelling, e.g.

    • send a mail when someone starts an app
    • auto-record rosbags during app run

    - auto-upload files on app-close ... - start plugin launch in app_manager - start and stop plugin function - pass app in plugin functions - add exit_code in stop_plugin_attr - stop plugin functions when shutdown is called - launch when plugin - load plugin launch when it exists - use ctx instead of exit_code - pass exit_code to ctx - add plugins in AppDefinition - add _current_plugins and _plugin_context - pass launch arguments - add plugin_args for app plugins - overwrite roslaunch.config.load_config_default for kinetic - add __stop_current for shutdown and __stop_current - support \"module: null\" syntax for app definition - add app_manager plugin base class - refactor scripts/app_manager - add start_plugin_args and stop_plugin_args - add start_plugin_arg_yaml and stop_plugin_arg_yaml - add launch_arg_yaml - add plugin_order to set plugin order - update readme to add plugin doc - update readme to add app definitions

  • fix readme (#23)

  • add exit_code log in app_manager (#22) add exit_code log in app_manager During successful execution, dead_list should always end up empty.

  • add all platform for all robots (#17) add an additional keyword to explicitly support \'all\' platforms

  • use rospack to search for app_manager app_dir (#19)

    • use rospack to search for app_manager app_dir
    • remove unused imports
    • use both --applist and plugin app_dir
  • Merge pull request #20 from knorth55/fix-print-python3 use rospy.logerr to escape print error in python3

  • use rospy.logerr to escape print error in python3

  • Contributors: Kei Okada, Michael G

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • test/resources/example-min.launch
  • launch/app_manager.launch
      • master [default: true] — launch master if enabled
      • master_address [default: localhost] — address for app_manager master
      • master_port [default: 11313] — port for app_manager master
      • use_applist [default: false] — load apps from applist argument
      • applist [default: ] — app dirs (space separated)
      • respawn [default: false] — respawn app_manager
      • app_manager_args [default: --applist $(arg applist)]
      • app_manager_args [default: ]

Plugins

No plugins found.

Recent questions tagged app_manager at answers.ros.org

app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.2.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-03-03
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
  • Yuki Furuta

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 app_manager/appA
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>

CHANGELOG

Changelog for package app_manager

1.2.0 (2021-03-03)

  • Merge pull request #29 from knorth55/add-stopped
  • Merge pull request #28 from knorth55/add-timeout
  • Merge pull request #30 from knorth55/add-all-availables add available_apps in all platform apps
  • add available_apps in all platform apps
  • add stopped context in app_manager plugin
  • add timeout field in app file
  • add enable_app_replacement param in app_manager (#26) This allows for both behaviors (replace currently running app or error out) and let\'s users choose without changing code...
  • add noetic test and also checks python 2/3 compatibility (#24)

    • add noetic test and also checks python 2/3 compatibility
    • fix to support both python 2/3

    * use rospy.log** instead of print Co-authored-by: Shingo Kitagawa <shingogo@hotmail.co.jp>

  • Add app manager plugin (#25) Enable aspect-oriented modelling, e.g.

    • send a mail when someone starts an app
    • auto-record rosbags during app run

    - auto-upload files on app-close ... - start plugin launch in app_manager - start and stop plugin function - pass app in plugin functions - add exit_code in stop_plugin_attr - stop plugin functions when shutdown is called - launch when plugin - load plugin launch when it exists - use ctx instead of exit_code - pass exit_code to ctx - add plugins in AppDefinition - add _current_plugins and _plugin_context - pass launch arguments - add plugin_args for app plugins - overwrite roslaunch.config.load_config_default for kinetic - add __stop_current for shutdown and __stop_current - support \"module: null\" syntax for app definition - add app_manager plugin base class - refactor scripts/app_manager - add start_plugin_args and stop_plugin_args - add start_plugin_arg_yaml and stop_plugin_arg_yaml - add launch_arg_yaml - add plugin_order to set plugin order - update readme to add plugin doc - update readme to add app definitions

  • fix readme (#23)

  • add exit_code log in app_manager (#22) add exit_code log in app_manager During successful execution, dead_list should always end up empty.

  • add all platform for all robots (#17) add an additional keyword to explicitly support \'all\' platforms

  • use rospack to search for app_manager app_dir (#19)

    • use rospack to search for app_manager app_dir
    • remove unused imports
    • use both --applist and plugin app_dir
  • Merge pull request #20 from knorth55/fix-print-python3 use rospy.logerr to escape print error in python3

  • use rospy.logerr to escape print error in python3

  • Contributors: Kei Okada, Michael G

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • test/resources/example-min.launch
  • launch/app_manager.launch
      • master [default: true] — launch master if enabled
      • master_address [default: localhost] — address for app_manager master
      • master_port [default: 11313] — port for app_manager master
      • use_applist [default: false] — load apps from applist argument
      • applist [default: ] — app dirs (space separated)
      • respawn [default: false] — respawn app_manager
      • app_manager_args [default: --applist $(arg applist)]
      • app_manager_args [default: ]

Plugins

No plugins found.

Recent questions tagged app_manager at answers.ros.org

app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.0.4
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version hydro-devel
Last Updated 2018-02-14
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
README
No README found. No README in repository either.
CHANGELOG

Changelog for package app_manager

1.0.3 (2015-02-06)

1.0.2 (2014-10-14)

  • changelogs
  • Fixed installs on app_manager
  • Contributors: TheDash
  • Fixed installs on app_manager
  • Contributors: TheDash

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Recent questions tagged app_manager at answers.ros.org

app_manager package from app_manager repo

app_manager

Package Summary

Tags No category tags.
Version 1.0.4
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/pr2/app_manager.git
VCS Type git
VCS Version hydro-devel
Last Updated 2018-02-14
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)

Package Description

app_manager

Additional Links

Maintainers

  • ROS Orphaned Package Maintainers

Authors

  • Jeremy Leibs
  • Ken Conley
README
No README found. No README in repository either.
CHANGELOG

Changelog for package app_manager

1.0.3 (2015-02-06)

1.0.2 (2014-10-14)

  • changelogs
  • Fixed installs on app_manager
  • Contributors: TheDash
  • Fixed installs on app_manager
  • Contributors: TheDash

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Recent questions tagged app_manager at answers.ros.org