## page was renamed from rocon_app_manager/Tutorials/hydro/Create a Robot Rapp ## page was renamed from rocon_app_manager/Tutorials/hydro/Create a Rapp ## page was renamed from rocon_app_platform/Tutorials/hydro/Create a Rapp ## For instruction on writing tutorials ## http://www.ros.org/wiki/WritingTutorials #################################### ##FILL ME IN #################################### ## for a custom note with links: ## note = ## for the canned note of "This tutorial assumes that you have completed the previous tutorials:" just add the links ## note.0= [[rocon_app_manager/Tutorials/hydro/Pairing with Androids|Pairing with Androids]] ## descriptive title for the tutorial ## title = Create a Robot App ## multi-line description to be displayed in search ## description = How to create and install a robot application (rapp) for pairing or concert modes. ## the next tutorial description (optional) ## next = ## links to next tutorial (optional) ## next.0.link=[[rocon_app_manager/Tutorials/hydro/Create an Android App|Create an Android App]] ## next.1.link= ## what level user is this tutorial for ## level= IntermediateCategory ## keywords = rapp #################################### <<IncludeCSTemplate(TutorialCSHeaderTemplate)>> ||<#FFFF00> These specifications are likely to evolve and mutate over the course of hydro. || == What is a Rapp? == A rapp is a robot (or rocon) application. This is the entity that is installed and executed by the robot application manager. Typically a rapp is simply a ros launcher with a rapp specification (metadata, icon, public interface). No code, just dependencies on code packages. == Breakdown == A simple example is the [[https://github.com/robotics-in-concert/rocon_app_platform/tree/hydro-devel/rocon_apps/apps/talker|talker app]]. A quick browse through the files should give you something of an inkling on what is going on. A more detailed breakdown of the three files: '''Launch''' {{{ <launch> <node name="talker" pkg="rospy_tutorials" type="talker" output="screen"/> </launch> }}} This is what the robot app manager launches when requested to start your app. There are no special buttons and whistles beyond the usual capabilities of a [[roslaunch]] file. '''Interface''' {{{ publishers: - chatter subscribers: [] services: [] }}} This is the parts of your software that will be exposed to remote systems for either pairing or concert (multimaster) modes. At the moment it is a yaml list of publishers, services, action_clients and action_servers. '''Rapp''' {{{ display: Talker description: Default ros style talker tutorial platform: linux.ros.* launch: rocon_apps/talker.launch interface: rocon_apps/talker.interface icon: rocon_apps/rocon_bubble.png pairing_clients: - type: android manager: api-level: 10 intent-action: com.github.ros_java.android_apps.listener.Listener }}} This file stores all the meta-data for the application. Each of the fields should be self-evident. Note that the values for the `interface` and `icon` keys are [[Resource Names|resource names]]. The pairing clients information is not necessary if you are not planning to run your rapp in pairing mode with an android application (e.g. [[https://github.com/robotics-in-concert/rocon_app_platform/tree/hydro-devel/rocon_apps/apps/chirp|chirp]]). == Create == A rapp can be a standalone ros package, or you can collect a group of rapps together inside a single package (e.g. [[https://github.com/robotics-in-concert/rocon_app_platform/tree/hydro-devel/rocon_apps|rocon apps]]). In either case, simply follow the steps below to create your own rapp: * Create a folder for your rapp * Copy the interface, rapp and launch file from the [[https://github.com/robotics-in-concert/rocon_app_platform/tree/hydro-devel/rocon_apps/apps/talker|talker rapp]]. * Modify the contents of these to suit your application. == Install == You now need to inform the robot app manager about your rapp. Later we plan to utilise repositories with meta-information about the rapps, but for now they are simply locally installed on the robot. The robot app manager accepts yaml based lists of rapps referenced by [[Resource Names|resource names]] and have the `.rapps` extension. e.g. {{{ apps: - rocon_apps/chirp - rocon_apps/talker - rocon_apps/listener }}} These can be anywhere on the system, but usually a good convention is to put a rapp list at the root of your package's rapp collection (e.g. [[https://github.com/robotics-in-concert/rocon_app_platform/blob/hydro-devel/rocon_apps/apps/rocon.rapps|rocon.rapps]]. Once you have a rapp list, you can inform the robot app manager of the list by passing it as an arg to the robot app manager launcher (to either of the [[https://github.com/robotics-in-concert/rocon_app_platform/blob/hydro-devel/rocon_app_manager/launch/standalone.launch|standalone]] or [[https://github.com/robotics-in-concert/rocon_app_platform/blob/hydro-devel/rocon_app_manager/launch/paired_private.launch|paired]] launchers) For example, a simple roslauncher which customises the standalone launcher: {{{ <launch> <arg name="rapp_lists" default="rocon_apps/rocon.rapps;my_apps/my_apps.rapps"/> <include file="$(find rocon_app_manager)/launch/standalone.launch"> <arg name="rapp_lists" value="$(arg rapp_lists)" /> </include> </launch> }}} ## AUTOGENERATED DO NOT DELETE ## TutorialCategory ## FILL IN THE STACK TUTORIAL CATEGORY HERE