ROS2_pubsub/src/pubsub/pubsub/Readme.md

2.7 KiB

Readme /pubsub

This directory represents a ROS package due to its internal structure and files. The files inside pubsub/pubsub/ are the Python scripts written by the package developer and can be called using the command line ros2 run pubsub <entry_point_name>. The <entry_point_name> has to be defined in setup.py.

Files

This section describes the content and purpose of the files inside this directory.
ros2 run callable files:

  • topic_talker.py : Example for creating a MinimumPublisher and sending topics
  • topic_listener.py : Example for creating a MinimumSubscriber and receiving topics
  • service_host.py : Example for creataing a MinimumServiceProvider and hosting a service
  • service_client.py : Example for creating a MinimumServiceClient and calling a service
  • statemachine_host_example.py : Example application of State Machine (SM) hosting a service to call for a change of state
  • statemachine_client_example.py : Example application of a service client calling for the change of SM state

Library files:

  • *pubsub\_library* ; *pubsub\_library\_v2*
  • pubsub_library_v3 : Library containing
    • MinimalPublisher class
    • MinimalSubscriber class
    • MinimalServiceProvider class
    • MinimalServiceClient class

How to use

In the following the various classes named above are referred to as Minimal<X> with <X> standing for topic publisher/subscriber or service host/client.

You can use the Minimal<X> classes in three ways:

  • Create Minimal<X> in your script (eg. topic_listener.py): Here data is echanged between the script environment and the class environment.
    Upsides: You can implement as many instances of Minimal<X> as you like
    Downsides: Code get's complicated and confusing
  • Implement Minimal<X> inside your device class the same way as implementing in your main script (<-- ToDo !!!)
    Upsides: You can implement as man instances of Minimal<X> as you like; You can wrap these instances inside you device class
    Downsides: ToDo
  • Build device class upon Minimal<X> by using this structure
class Child_Class(Parent_Class):

For example:

class StateMachineCMDServiceProvider(MinimalServiceProvider):

(Example: statemachine_host_example.py: device class is built upon MinimalServiceProvider class.)
Upsides: Minimal<X> is automatically instantiated when creating an instance of your device class though __init()__
Downsides: You can only implement one instance of Minimal<X>, eg. one device class can only implement one publisher, in this case you want to implement Minimal<X> inside device class (see above)