<> [[http://fkie.github.io/multimaster_fkie/node_manager.html|Node Manager Manual on GitHub]] [[http://www.ros.org/wiki/multimaster_fkie?action=AttachFile&do=get&target=nm_cheatsheet.pdf|cheatsheet (with thanks to Lorenz Halt!)]] == Overview == This package offers a graphical user interface (GUI) to manage ROS nodes, topics, services, parameters, and launch files in a ROS network. Combined with other tools of the [[http://www.ros.org/wiki/multimaster_fkie|multimaster_fkie stack]] it is possible to operate a network with multiple masters. {{attachment:node_manager_overview.png}} {{{{#!wiki version none <> == Usage == === ROS Network === The `ROS Network` docking widget shows all discovered ROS masters. In order to detect other ROS masters, a special node ([[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]]) must be run. Otherwise, only the local ROS master will be shown. {{attachment:ros_network_g.png}} You can initiate the discovery process with the `Start` button on the `ROS Network` widget. The discovery node can also be started on a remote host. Click on the `Start` button and enter the hostname or IP address in the dialog below. {{attachment:dialog_start_discovery.png}} Additionally, you can enter a network number (0..99) to create your own multi robot network. Thus you avoid the redundant synchronization to non-participant robots. The `roscore` will be run automatically via SSH if it is not currently available. (!) If no multicast communication is available use the run dialog in host description panel to run `master_discovery` and sets the `static hosts` parameter to the list of availabele hosts separated by comma. This also increases the network load! The `Refresh` button lets you query the current state of the ROS masters from all running [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] nodes. The icons {{attachment:stock_connect.png}} and {{attachment:stock_disconnect.png}} show whether a connection to the host exists. The color of the {{attachment:stock_connect.png}} icon indicates the connection quality as determined by the [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node. The {{attachment:icon_sync.png}} next to each host name indicates whether the parameter servers will be synchronized by the [[http://www.ros.org/wiki/master_sync_fkie|master_sync]] node. You can toggle ROS master synchronization by click on this icon. A synchronisation dialog with additional options is available by {{attachment:button_sync.png}} button on the `host description panel`. /!\ The multimaster capabilities are disabled, if the local `ROS_MASTER_URI` is referenced to a remote host. === Host description panel === The host description panel displays the name and the time of the last update for the currently selected host. If the node manager finds a PNG image in `node_manager_fkie/images` with the same name as the host, it is used as icon. The icon can be also changed by double click on it or by setting the ROS parameter `/robot_icon` to an image file. {{attachment:host_descr_panel.png}} The host description panel contains additional buttons to update the state of the host or run ROS tools: || {{attachment:button_username.png}} || for remote hosts the usename can be changed. This box is only visible for remote hosts. || || {{attachment:button_refresh.png}} || requests the current state of the ROS master. || || {{attachment:button_run.png}} || opens a dialog to run a ROS node without a configuration. This node is launched in a dedicated terminal session using the `screen` tool, so you can monitor its output if necessary. || || {{attachment:button_logconsole.png}} || runs the `rqt_console` which is connected to the ROS master on the selected host.|| || {{attachment:button_graph.png}} || runs the `rqt_graph` which is connected to the ROS master on the selected host.|| || {{attachment:button_sync.png}} || enables or disables the ROS Master synchronization on the selected host using synchronisation dialog with additional options. For full list of synchronization options see [[http://www.ros.org/wiki/master_sync_fkie|master_sync]]. {{attachment:dialog_sync.png}} || || {{attachment:button_usesimtime.png}} || This symbol is only visible, if `/use_sim_time` parameter is set to `True`. || <> === ROS Nodes view and control === The `Nodes` tab lists all nodes which are either running or available for launch in the current configuration. Running nodes have a green icon {{attachment:state_run.png}}. They are monitored using their process ID, which is updated by the local [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node. You have to run a `master_discovery` node on each host to ensure that information about all nodes is available in the network. If a node is registered with the master but has no associated process ID, the node is considered crashed and marked with {{attachment:crystal_clear_warning.png}}. Note that only local nodes are pinged. Nodes which are running not at the same host with ROS Master are marked by {{attachment:state_unknown.png}}. Crashes of these nodes cannot be detected. {{attachment:nodes_view_g.png}} As of now, the only reliable way to detect running nodes is by their registered topics and services. Thus, if a node has neither, it will never be shown as running. In order to launch nodes, a configuration must be loaded. You can open [[http://www.ros.org/wiki/roslaunch/XML|roslaunch]] files. Nodes which are backed by a local configuration in this manner are marked with {{attachment:crystal_clear_launch_file.png}}. If a node with the same name is listed in multiple launch files, you have choose one configuration when you launch the node. Alternatively, you can use the [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg]] node to serve `launch` files to the local network. Nodes which are available through this mechanism are marked with {{attachment:default_cfg.png}}. Different configurations are symbolized by {{attachment:crystal_clear_launch_file_def_cfg.png}} icon. '''Nodes control buttons:''' || {{attachment:deleket_deviantart_play.png}} || Launches the selected nodes unless they are already running. Crashed {{attachment:crystal_clear_warning.png}} nodes are restarted. A popup menu lets you start the node on another host or force the node restart. || || {{attachment:deleket_deviantart_stop.png}} || Terminates the selected nodes using the `shutdown` method of the [[http://www.ros.org/wiki/ROS/Slave_API|Slave API]]. If you keep the button depressed, a popup menu lets you send a `SIGKILL` signal to the node process or force the master to unregister the services and topics. The latter is useful if the node died without a proper shutdown. || || {{attachment:crystal_clear_show_io.png}} || Shows a console with terminal session of the selected node. If you keep the button depressed, a popup menu lets you kill the `screen` program that provides the terminal session, most likely killing the node in the process. || || {{attachment:crystal_clear_show_log.png}} || Shows the log files of the selected nodes. Usually there are two files for each node. One is the ROS log file and the other one contains the output of the terminal session. The log files are not overwritten if the node is stopped and restarted. || || {{attachment:crystal_clear_show_delete_log.png}} || Deletes the log files. || || {{attachment:crystal_clear_dyncfg.png}} || Runs the [[http://ros.org/wiki/dynamic_reconfigure|dynamic reconfigure GUI]] for a node. || || {{attachment:default_cfg_edit.png}} || Edit values on the ROS Parameter Server of selected node. The dialog fields store a history of the entered data. To delete a stored entry, setect this entry and then press '''Shift+Delete'''. Additional, values of the parameter dialog can be stored or loaded from a file in YAML format. {{attachment:dialog_param.png}} || || {{attachment:crystal_clear_edit_launch.png}} || Opens the [[#launch editor|Launch File Editor]]. || || {{attachment:save.png}} || Save multiple loaded launch files to one. There is no sanity check! || || {{attachment:crystal_clear_button_close.png}} || Unloads the configuration file(s). || === ROS Topics view === The `Topics` tab shows all in ROS master registered subscriber and publisher. The count of these is shown in `Publisher` and `Subscriber` columns. The type of the ROS topic is also displayed. To get more information to the topic you can wait for a tooltip or use [[#description dock|Description Dock]]. {{attachment:topics_view.png}} You can search for a topic respectively his type using the filter row at the top. '''Topic control buttons:''' || {{attachment:crystal_clear_show_io.png}} || Subscribes the topic and shows his output in a dialog {{attachment:topic_output_g.png}} || || {{attachment:crystal_clear_show_io_hz.png}} || Subscribes the topic and shows only Hz of received messages || || {{attachment:deleket_deviantart_play.png}} || Start publishing a message to selected topic. (Only available on local ROS Master. Use [[http://www.ros.org/wiki/master_sync_fkie|master_sync]] to publish to remote topics!) || || {{attachment:deleket_deviantart_stop.png}} || Stops own publishing to selected topic. || === ROS Services view === The `Services` tab shows all in ROS master registered services. The type of the ROS service is also displayed. To get more information to the service you can wait for a tooltip or use [[#description dock|Description Dock]]. {{attachment:services_view.png}} You can search for a service respectively his type using the filter row at the top. '''Service control buttons:''' || {{attachment:deleket_deviantart_play.png}} || Call the selected service. If the service require request input, a generated input dialog will be shown. The result of the service call is shown as a dialog: {{attachment:service_responce.png}} || === ROS Parameter view === The `Parameter` tab shows all in ROS parameter server registered parameter. The value of the ROS parameter is also displayed. The parameter are not automatically requested or updated. Use `get parameter` button to load the parameter from ROS parameter server. {{attachment:parameter_view.png}} You can search for a parameter respectively his value using the filter row at the top. '''Parameter control buttons:''' || {{attachment:crystal_clear_action_db_update.png}} || Loads parameter from [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || || {{attachment:crystal_clear_action_db_add.png}} || Adds a parameter to the [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || || {{attachment:crystal_clear_action_db_remove.png}} || Deletes parameter from [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || <> === Launch Dock === The `Launch Dock` can be used to find and load or edit the launch files. The `root` contains the paths defined by `ROS_PACKAGE_PATH` environment variable. In addition, all subfolders are skipped, do not contain the `*.launch` files. On load, the launch file itself and all included files are added to [[http://www.pyside.org/docs/pyside/PySide/QtCore/QFileSystemWatcher.html|QFileSystemWatcher]]. If one of this files will be changed, you will prompt to reload the launch file. In the root also will be shown a history of last five loaded launch files. When needed, the selected history files can be removed by pressing the `Delete` button. {{attachment:launch_dock_g.png}} '''Launch control buttons:''' || {{attachment:deleket_deviantart_refresh.png}} || Refresh the current path. || || {{attachment:crystal_clear_edit_launch.png}} || Opens the launch file in a [[#launch editor|Launch Editor]]. || || {{attachment:crystal_clear_launch_file_new.png}} || Creates a new launch file. || || {{attachment:crystal_clear_launch_file_transfer.png}} || Copies the selected file to a remote hosts. Optionally, the included files are copied, too. || || {{attachment:crystal_clear_launch_file_32.png}} || Loads the launch file and show the content on the selected host. || || {{attachment:default_cfg_32.png}} || Loads the file as [[#default_cfg|Default configuration]] on a selected host. /!\ If the selected host is a remote host, then the content of remote launch file will be load. || || {{attachment:crystal_clear_folder.png}} || Loads a launch file selected by open dialog. || <> === Launch Editor === `Launch Editor` is a simple text editor with [[http://www.ros.org/wiki/roslaunch/XML|roslaunch XML]] syntax highlighting. {{attachment:launch_editor.png}} In addition, the included files are open in a new tab by '''Ctrl+(left mouse click)'''. If the file does not exists, it will be created. Of course, only if it is desired. You can also search in included file using the find dialog: {{attachment:launch_editor_find.png}} '''Double click''' on the file in the find dialog opens the file. <> === Description Dock === The `Description Dock` shows additional informations about selected nodes, topics or services. {{attachment:description_dock.png}} {{attachment:description_dock_velodyne.png}} <> === Capabilities and additional description === Since the `Node Manager` tries to improve the overview and control of available ROS nodes on a roboter we added some parameter to allow grouping nodes to capabilities. The `capability_group` parameter adds a node to a specified group: {{{ }}} It is possible to add a node to multiple groups using a prefix for `capability_group`, e.g.: {{{ }}} The description of a capability group is stored in a global `capabilities` parameter. This parameter is defined as [[http://www.ros.org/wiki/roslaunch/XML/rosparam|rosparam]] and contains the list with all groups and their description. To describe a group adds a list with `group name`, `group type`, `image` and `description`. `image` is a relative path to `node_manager_fkie` package. The `description` can be coded as [[http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html|reStructeredText]] and contains also image references relative to `node_manager_fkie` package path. Since after loading the XML the new line separators are removed, you must enter `\n` to insert a new line. {{{ [ ["Management", "core", "images/crystal_clear_app_network2.png", "The ``management`` group provides nodes needed to detect and synchronize other robots in the ROS network. These are:\n\n- Node Manager\n- Master Discovery\n- Master Synchronization" ] ] }}} The capability group do not change the `namespace` of the included ROS nodes. {{attachment:capability_nodes.png}} Further parameter `robots` describes in same manner the roboter. The list must contains `host name`, `robot type`, `displayed name`, `image` and `description`: {{{ [ ["tiderko", "Workstation", "tiderko", "images/veryicon_devcom_workstation.png", "Workstation\n\n|ws|\n\n.. |ws| image:: images/veryicon_devcom_workstation.png\n" ] ] }}} This description will also shown in [[#description dock|Description Dock]] and tooltip. <> === Default Configuration === The default configuration of a robot is represented by [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg node]]. This node loads a launch file and offers services to run contained nodes. It also offers the additional capabilities description extraceted from the launch file. If a new host is discovered or the ROS Master state is changed, the `Node Manager` searches for node, which offers default configuration by parsing the service names for `list_nodes`. The nodes provided by `default_cfg` are added to the [[#nodes view|Nodes View]] with {{attachment:default_cfg.png}} icon in the `Cfgs` column. This nodes can be launched without loading a configuration. Furthermore based on detected capabilities the [[#Capability View| Capability View]] will be created. /!\ The nodes with remote machine tag are ignored. <> === Capability View === The `Capability View` shows tabularly the detected robots and their capabilities. The view is created based on the running default configurations of corresponding robots. Each available capability provides buttons to start or stop these. {{attachment:capability_view.png}} Click on the header to show the description in [[#description dock|Description Dock]]. == Getting started == Although the node is written in Python we need to run `rosmake` to generate message and service types: {{{ rosmake master_discovery_fkie default_cfg_fkie }}} Run the node: {{{ rosrun node_manager_fkie nm }}} == Interface == The services of [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery_fkie]] and [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg_fkie]] are detected automatically by whose names. {{{ #!clearsilver CS/NodeAPI sub { 0.name = changes 0.type = master_discovery_fkie/MasterState 0.desc = Subscribes to this topic to get the changes in the ROS network. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. 1.name = linkstats 1.type = master_discovery_fkie/LinkStatesStamped 1.desc = Subscribes this topic to get the link quality informations to other ROS master. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. } }}} == Key Bindings == || '''Ctrl'''+'''R''' || Opens a dialog to launch a [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node on entered host. || || || || || '''Ctrl'''+'''E''', '''F4''' || Opens an `XML Editor` for selected launch file. || || '''Ctrl'''+'''L''' || Loads the selected launch file into selected host. || || '''Ctrl'''+'''O''' || Runs on selected host [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg node]] with selected launch file as parameter. || || '''Ctrl'''+'''S''' || Runs a synchronization dialog. || || || || || '''Alt'''+'''N''' || Opens a dialog to run a ROS node without a configuration. This node will be launched in a `SCREEN`. || || '''Alt'''+'''K''' || Runs the `rxconsole` connected to the ROS master of selected host. || || '''Alt'''+'''G''' || Runs the `rxgraph` connected to the ROS master of selected host. || || || || || '''Alt'''+'''R''' || Runs selected nodes. Ignores already running nodes. || || '''Alt'''+'''S''' || Stops selected nodes. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` or `default_cfg` are ignored. || || '''Ctrl'''+'''Backspace''' || Sends a `SIGKILL` to selected nodes. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` and `default_cfg` are ignored. || || '''Ctrl'''+'''Delete''' || Unregister selected nodes (their topics and services) from ROS master. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` and `default_cfg` are ignored. || || '''Shift'''+'''Backspace''' || Sends a `SIGKILL` to assigned `SCREEN` of selected nodes. || || '''Shift'''+'''S''' || Shows all available `SCREEN's` which contains the ROS nodes launched by node manager. || || '''Ctrl'''+'''F4''' || Closes the loaded configurations. || || || || || '''Alt'''+'''E''' || Expands all groups in `Nodes` tab. || || '''Alt'''+'''C''' || Collapses all groups in `Nodes` tab. || || '''Alt'''+'''{1..5}''' || Selects all nodes of the {first...fifth} host in `Nodes` tab excepting the manage nodes. || || || || || '''Delete''' || [Launch-Dock] Removes the selected history file from view in the root. || || '''Ctrl'''+'''X''' || Copies the alternative values to clipboard. On Node view this is PID. On Topic and Service view it is the type. On Parameter view it is the parameter value. || || '''Ctrl'''+'''7''' || Comment/Uncomment selected lines in Launch Editor|| }}}} {{{{#!wiki version old <> == Overview == This package offers a graphical user interface (GUI) to manage ROS nodes, topics, services, parameters, and launch files in a ROS network. Combined with other tools of the [[http://www.ros.org/wiki/multimaster_fkie|multimaster_fkie stack]] it is possible to operate a network with multiple masters. {{attachment:node_manager.png}} == Usage == === ROS Network === The `ROS Network` docking widget shows all discovered ROS masters. In order to detect other ROS masters, a special node ([[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]]) must be run. Otherwise, only the local ROS master will be shown. {{attachment:ros_network.png}} You can initiate the discovery process with the `Start` button on the `ROS Network` widget. The discovery node can also be started on a remote host. Click on the `Start` button and enter the hostname or IP address. Additionally, you can enter a network number (0..99) separeted by `:` to create your own multi robot network. Thus you avoid the redundant synchronization to non-participant robots. The `roscore` will be run automatically via SSH if it is not currently available. The `Refresh` button lets you query the current state of the ROS masters from all running [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] nodes. The icons {{attachment:stock_connect.png}} and {{attachment:stock_disconnect.png}} show whether a connection to the host exists. The color of the {{attachment:stock_connect.png}} icon indicates the connection quality as determined by the [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node. The checkbox next to each host name indicates whether the parameter servers will be synchronized by the [[http://www.ros.org/wiki/master_sync_fkie|master_sync]] node. You can toggle ROS master synchronization with the {{attachment:sync_button.png}} button on the `host description panel`. /!\ The multimaster capabilities are disabled, if the local `ROS_MASTER_URI` is referenced to a remote host. === Host description panel === The host description panel displays the name and the time of the last update for the currently selected host. If the node manager finds a PNG image in `node_manager_fkie/images` with the same name as the host, it is used as icon. {{attachment:host_descr_panel.png}} The host description panel contains additional buttons to update the state of the host or run ROS tools: || {{attachment:refresh_button.png}} || requests the current state of the ROS master. || || {{attachment:run_button.png}} || opens a dialog to run a ROS node without a configuration. This node is launched in a dedicated terminal session using the `screen` tool, so you can monitor its output if necessary. || || {{attachment:rxconsole_button.png}} || runs the `rxconsole` which is connected to the ROS master on the selected host.|| || {{attachment:rxgraph_button.png}} || runs the `rxgraph` which is connected to the ROS master on the selected host.|| || {{attachment:sync_button.png}} || enables or disables the ROS Master synchronization on the selected host. In addition, a synchronization interface can be selected via the menu.|| <> === ROS Nodes view and control === The `Nodes` tab lists all nodes which are either running or available for launch in the current configuration. Running nodes have a green icon {{attachment:state_run.png}}. They are monitored using their process ID, which is updated by the local [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node. You have to run a `master_discovery` node on each host to ensure that information about all nodes is available in the network. If a node is registered with the master but has no associated process ID, the node is considered crashed and marked with {{attachment:crystal_clear_warning.png}}. Note that without a `master_discovery` node on the same host, crashes cannot be detected and nodes will remain listed as running. {{attachment:nodes_view.png}} As of now, the only reliable way to detect running nodes is by their registered topics and services. Thus, if a node has neither, it will never be shown as running (see `/empty_world_server` in the screenshot as example). In order to launch nodes, a configuration must be loaded. You can open [[http://www.ros.org/wiki/roslaunch/XML|roslaunch]] files. Nodes which are backed by a local configuration in this manner are marked with {{attachment:crystal_clear_launch_file.png}}. If a node with the same name is listed in multiple launch files, you have choose one configuration when you launch the node. Alternatively, you can use the [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg]] node to serve `launch` files to the local network. Nodes which are available through this mechanism are marked with {{attachment:default_cfg.png}}. Different configurations are symbolized by {{attachment:crystal_clear_launch_file_def_cfg.png}} icon. '''Nodes control buttons:''' || {{attachment:deleket_deviantart_play.png}} || Launches the selected nodes unless they are already running. Crashed {{attachment:crystal_clear_warning.png}} nodes are restarted. A popup menu lets you start the node on another host or force the node restart. || || {{attachment:deleket_deviantart_stop.png}} || Terminates the selected nodes using the `shutdown` method of the [[http://www.ros.org/wiki/ROS/Slave_API|Slave API]]. If you keep the button depressed, a popup menu lets you send a `SIGKILL` signal to the node process or force the master to unregister the services and topics. The latter is useful if the node died without a proper shutdown. || || {{attachment:crystal_clear_show_io.png}} || Shows a console with terminal session of the selected node. If you keep the button depressed, a popup menu lets you kill the `screen` program that provides the terminal session, most likely killing the node in the process. || || {{attachment:crystal_clear_show_log.png}} || Shows the log files of the selected nodes. Usually there are two files for each node. One is the ROS log file and the other one contains the output of the terminal session. The log files are not overwritten if the node is stopped and restarted. || || {{attachment:crystal_clear_show_delete_log.png}} || Deletes the log files. || || {{attachment:crystal_clear_dyncfg.png}} || Runs the [[http://ros.org/wiki/dynamic_reconfigure|dynamic reconfigure GUI]] for a node. || || {{attachment:default_cfg_edit.png}} || Edit values on the ROS Parameter Server of selected node. The dialog fields store a history of the entered data. To delete a stored entry, setect this entry and then press '''Shift+Delete'''. {{attachment:parameter_dialog.png}} || || {{attachment:crystal_clear_edit_launch.png}} || Opens the [[#launch editor|Launch File Editor]]. || || {{attachment:crystal_clear_button_close.png}} || Unloads the configuration file(s). || === ROS Topics view === The `Topics` tab shows all in ROS master registered subscriber and publisher. The count of these is shown in `Publisher` and `Subscriber` columns. The type of the ROS topic is also displayed. To get more information to the topic you can wait for a tooltip or use [[#description dock|Description Dock]]. {{attachment:topics_view.png}} You can search for a topic respectively his type using the filter row at the top. '''Topic control buttons:''' || {{attachment:crystal_clear_show_io.png}} || Subscribes the topic and shows his output in a dialog {{attachment:topic_output.png}} || || {{attachment:crystal_clear_show_io_hz.png}} || Subscribes the topic and shows only Hz of received messages || || {{attachment:deleket_deviantart_play.png}} || Start publishing a message to selected topic. (Only available on local ROS Master. Use [[http://www.ros.org/wiki/master_sync_fkie|master_sync]] to publish to remote topics!) || || {{attachment:deleket_deviantart_stop.png}} || Stops own publishing to selected topic. || === ROS Services view === The `Services` tab shows all in ROS master registered services. The type of the ROS service is also displayed. To get more information to the service you can wait for a tooltip or use [[#description dock|Description Dock]]. {{attachment:services_view.png}} You can search for a service respectively his type using the filter row at the top. '''Service control buttons:''' || {{attachment:deleket_deviantart_play.png}} || Call the selected service. If the service require request input, a generated input dialog will be shown. The result of the service call is shown as a dialog: {{attachment:service_responce.png}} || === ROS Parameter view === The `Parameter` tab shows all in ROS parameter server registered parameter. The value of the ROS parameter is also displayed. The parameter are not automatically requested or updated. Use `get parameter` button to load the parameter from ROS parameter server. {{attachment:parameter_view.png}} You can search for a parameter respectively his value using the filter row at the top. '''Parameter control buttons:''' || {{attachment:crystal_clear_action_db_update.png}} || Loads parameter from [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || || {{attachment:crystal_clear_action_db_add.png}} || Adds a parameter to the [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || || {{attachment:crystal_clear_action_db_remove.png}} || Deletes parameter from [[http://www.ros.org/wiki/ROS/Parameter Server API|ROS Parameter Server]]. || <> === Launch Dock === The `Launch Dock` can be used to find and load or edit the launch files. The `root` contains the paths defined by `ROS_PACKAGE_PATH` environment variable. In addition, all subfolders are skipped, do not contain the `*.launch` files. On load, the launch file itself and all included files are added to [[http://www.pyside.org/docs/pyside/PySide/QtCore/QFileSystemWatcher.html|QFileSystemWatcher]]. If one of this files will be changed, you will prompt to reload the launch file. {{attachment:launch_dock.png}} '''Launch control buttons:''' || {{attachment:deleket_deviantart_refresh.png}} || Refresh the current path. || || {{attachment:crystal_clear_edit_launch.png}} || Opens the launch file in a [[#launch editor|Launch Editor]]. || || {{attachment:crystal_clear_launch_file_32.png}} || Loads the launch file and show the content on the selected host. || || {{attachment:default_cfg_32.png}} || Loads the file as [[#default_cfg|Default configuration]] on a selected host. /!\ If the selected host is a remote host, then the content of remote launch file will be load. || <> === Launch Editor === `Launch Editor` is a simple text editor with [[http://www.ros.org/wiki/roslaunch/XML|roslaunch XML]] syntax highlighting. {{attachment:launch_editor.png}} In addition, the included files are open in a new tab by '''Ctrl+(left mouse click)'''. If the file does not exists, it will be created. Of course, only if it is desired. You can also search in included file using the find dialog: {{attachment:launch_editor_find.png}} '''Double click''' on the file in the find dialog opens the file. <> === Description Dock === The `Description Dock` shows additional informations about selected nodes, topics or services. {{attachment:description_dock.png}} {{attachment:description_dock_velodyne.png}} <> === Capabilities and additional description === Since the `Node Manager` tries to improve the overview and control of available ROS nodes on a roboter we added some parameter to allow grouping nodes to capabilities. The `capability_group` parameter adds a node to a specified group: {{{ }}} It is possible to add a node to multiple groups using a prefix for `capability_group`, e.g.: {{{ }}} The description of a capability group is stored in a global `capabilities` parameter. This parameter is defined as [[http://www.ros.org/wiki/roslaunch/XML/rosparam|rosparam]] and contains the list with all groups and their description. To describe a group adds a list with `group name`, `group type`, `image` and `description`. `image` is a relative path to `node_manager_fkie` package. The `description` can be coded as [[http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html|reStructeredText]] and contains also image references relative to `node_manager_fkie` package path. Since after loading the XML the new line separators are removed, you must enter `\n` to insert a new line. {{{ [ ["Management", "core", "images/crystal_clear_app_network2.png", "The ``management`` group provides nodes needed to detect and synchronize other robots in the ROS network. These are:\n\n- Node Manager\n- Master Discovery\n- Master Synchronization" ] ] }}} The capability group do not change the `namespace` of the included ROS nodes. {{attachment:capability_nodes.png}} Further parameter `robots` describes in same manner the roboter. The list must contains `host name`, `robot type`, `displayed name`, `image` and `description`: {{{ [ ["tiderko", "Workstation", "tiderko", "images/veryicon_devcom_workstation.png", "Workstation\n\n|ws|\n\n.. |ws| image:: images/veryicon_devcom_workstation.png\n" ] ] }}} This description will also shown in [[#description dock|Description Dock]] and tooltip. <> === Default Configuration === The default configuration of a robot is represented by [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg node]]. This node loads a launch file and offers services to run contained nodes. It also offers the additional capabilities description extraceted from the launch file. If a new host is discovered or the ROS Master state is changed, the `Node Manager` searches for node, which offers default configuration by parsing the service names for `list_nodes`. The nodes provided by `default_cfg` are added to the [[#nodes view|Nodes View]] with {{attachment:default_cfg.png}} icon in the `Cfgs` column. This nodes can be launched without loading a configuration. Furthermore based on detected capabilities the [[#Capability View| Capability View]] will be created. /!\ The nodes with remote machine tag are ignored. <> === Capability View === The `Capability View` shows tabularly the detected robots and their capabilities. The view is created based on the running default configurations of corresponding robots. Each available capability provides buttons to start or stop these. {{attachment:capability_view.png}} Click on the header to show the description in [[#description dock|Description Dock]]. == Getting started == Although the node is written in Python we need to run `rosmake` to generate message and service types: {{{ rosmake master_discovery_fkie default_cfg_fkie }}} Run the node: {{{ rosrun node_manager_fkie nm }}} == Interface == The services of [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery_fkie]] and [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg_fkie]] are detected automatically by whose names. {{{ #!clearsilver CS/NodeAPI sub { 0.name = changes 0.type = master_discovery_fkie/MasterState 0.desc = Subscribs to this topic to get the changes in the ROS network. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. 1.name = linkstats 1.type = master_discovery_fkie/LinkStatesStamped 1.desc = Subscribes this topic to get the link quality informations to other ROS master. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. } }}} == Key Bindings == || '''F2''' || Renames a selected launch file. || || '''Ctrl'''+'''R''' || Opens a dialog to launch a [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery]] node on entered host. || || || || || '''Ctrl'''+'''E''' || Opens an `XML Editor` for selected launch file. || || '''Ctrl'''+'''L''' || Loads the selected launch file into selected host. || || '''Ctrl'''+'''O''' || Runs on selected host [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg node]] with selected launch file as parameter. || || '''Ctrl'''+'''S''' || Runs a synchronization dialog. || || || || || '''Alt'''+'''N''' || Opens a dialog to run a ROS node without a configuration. This node will be launched in a `SCREEN`. || || '''Alt'''+'''K''' || Runs the `rxconsole` connected to the ROS master of selected host. || || '''Alt'''+'''G''' || Runs the `rxgraph` connected to the ROS master of selected host. || || || || || '''Alt'''+'''R''' || Runs selected nodes. Ignores already running nodes. || || '''Alt'''+'''S''' || Stops selected nodes. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` or `default_cfg` are ignored. || || '''Ctrl'''+'''Backspace''' || Sends a `SIGKILL` to selected nodes. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` and `default_cfg` are ignored. || || '''Ctrl'''+'''Delete''' || Unregister selected nodes (their topics and services) from ROS master. If more then one node is selected, nodes ending with `rosout`, `node_manager`, `master_discovery`, `master_sync` and `default_cfg` are ignored. || || '''Shift'''+'''Backspace''' || Sends a `SIGKILL` to assigned `SCREEN` of selected nodes. || || '''Shift'''+'''S''' || Shows all available `SCREEN's` which contains the ROS nodes launched by node manager. || || '''Ctrl'''+'''F4''' || Closes the loaded configurations. || || || || || '''Alt'''+'''E''' || Expands all groups in `Nodes` tab. || || '''Alt'''+'''C''' || Collapses all groups in `Nodes` tab. || || '''Alt'''+'''{1..5}''' || Selects all nodes of the {first...fifth} host in `Nodes` tab excepting the manage nodes. || }}}} == Getting started == Although the node is written in Python we need to run `catkin_make` to generate message and service types: {{{ catkin_make }}} Run the node: {{{ rosrun node_manager_fkie node_manager }}} or {{{ node_manager }}} == Interface == The services of [[http://www.ros.org/wiki/master_discovery_fkie|master_discovery_fkie]] and [[http://www.ros.org/wiki/default_cfg_fkie|default_cfg_fkie]] are detected automatically by whose names. {{{ #!clearsilver CS/NodeAPI sub { 0.name = changes 0.type = master_discovery_fkie/MasterState 0.desc = Subscribs to this topic to get the changes in the ROS network. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. 1.name = linkstats 1.type = master_discovery_fkie/LinkStatesStamped 1.desc = Subscribes this topic to get the link quality informations to other ROS master. /!\ The name of the topic will be detect automatically by type. All found fopics are subscribed. } }}} == Troubleshooting == 1. Error while launch a node on remote host: ''bash: rosrun: command not found'' To run a node on remote host, an SSH connection will be established without setting any enviroment variables. Try to comment out in .bashrc: {{{ #[ -z "$PS1" ] && return }}} 2. The `Node Manager` crashes on load a launch file with error: ''QSpiAccessible::accessibleEvent not handled: "8008"'' This "bug" seems to be resolved by removing the ''qt-at-spi'' package. 3. You don't see the correct output of your nodes. Try to change your default terminal: {{{ sudo update-alternatives --config x-terminal-emulator''' }}} ## AUTOGENERATED DON'T DELETE ## CategoryPackage