= Single-machine "hello world" talker/listener =
A minimal ROS system will have a {{{roscore}}} name service, a single publisher node ({{{talker}}}), and a single subscriber node ({{{listener}}}). For purposes of demonstration, we suggest running each of these in their own terminal:

'''Terminal 1'''
{{{
cd ~/sros
source install/setup.bash
sroscore --keyserver
}}}

'''Terminal 2'''
{{{
cd ~/sros
source install/setup.bash
srosrun rospy_tutorials talker
}}}

'''Terminal 3'''
{{{
cd ~/sros
source install/setup.bash
srosrun rospy_tutorials listener
}}}

'''Commentary'''

You should now see "Hello, World!" messages being sent from Terminal 2 to Terminal 3 using SSL (more specifically, TLS v1.2). All of the negotiations to set up that connection were also done over SSL, and the {{{sroscore}}} processes was generating self-signed keys as necessary. The default storage location for these keys is {{{~/.ros/keys}}}, where each ROS node has its own subdirectory for its "key store."

When you're done, type Ctrl+C in each terminal to stop them. Note that this mode of operation currently uses an unsecured XML-RPC server to bootstrap key generation and distribution. To actually run this demo securely, you need to omit the {{{--keyserver}}} argument from {{{sroscore}}} to leave the keyserver disabled by default:

'''Terminal 1, in secure mode'''
{{{
cd ~/sros
source install/setup.bash
sroscore
}}}