ROS Service interface¶
Introduction¶
This is a tutorial for the ROS service that can be used to query an MLN. We will describe the implemantation of the server together with the ROS messages that are associated with this project. We will also present an example client program that can be used as a template.
Server methods¶
-
scripts.mln_server.
handle_mln_query
(req) Handles the query from the client. It expects req to have two fields, req.query and an optional req.config. req.query should be of type MLNQuery while req.config should be of type MLNConfig.
It returns a list of AtomProbPair objects. Each element of the list is an atom with it’s corresponding degree of truth.
-
scripts.mln_server.
mln_interface_server
() Keeps an infinite loop while waiting for clients to ask for the service.
-
scripts.mln_server.Storage.
getInstance
() Storage is a singleton class that keeps track of an MLNInfer object together with the settings for the inference proceedure.
Example client¶
-
scripts.mln_mln.
mln_interface_client
(query, config=None) This is an example of the client quering the service. The important thing to note is that you have the option to set the configuration parameters only once and use the the same settings in further calls.
Messages¶
- MLNQuery.msg
This ROS message contains the following fields:
- queries - This message is an ecoding of the queries that will
sent to the service.
- MLNResponse.msg
This ROS message contains the follwing fields:
- results - This is what is returned by the service. results
is a list of AtomProbPair objects. Each atom is associated with a probability value.
- MLNConfig.msg
This is a message that is used to initialize the configuration parameters for quering the service. You have an option to pass this argument only once and reuse the same configurations over and over. It contains the following fields:
mlnFiles - a *.mln file that describes the MLN
db - the evidence database
method - the inference method to be used
engine - the inference engine to be used
output_filename - the name of the output filename
saveResults - this field should be set to true if you wish to save the results
logic - specifies the logic to be used for inference
grammar - specifies the grammar to be used
- AtomProbPair.msg
This message is a pair of an Atom and a Probabality. It contains the following fields:
atom - string describing the atom
prob - a probability value for the atom’s degree of truth
Services¶
- MLNInterface.srv
This is the main service. It contains two fields:
MLNQuery - This is the query string
- MLNConfig - This specifies which engine, inference method
etc is going to be used for inference. This should be set at least once.