In this section, we are going to create a simple package to load the AIML files to memory using ROS nodes. The following is the block diagram of the working AIML ROS package:
Figure 5: Working of the AIML ROS package
Here's the explanation for the nodes shown in the diagram:
- aiml_server: This ROS node loads AIML files from the database and saves them into brain files. It subscribes to a topic called /chatter (std_msgs/String). The string data from the /chatter topic is the input of the AIML interpreter. The response from the AIML interpreter is published through the /response (std_msgs/String) topic.
- aiml_client: This ROS node waits for user input, and once it gets the input, it will publish it to the /chatter topic.
- aiml_tts_client: The AIML server publishes the response to the /response topic. The tts client node will subscribe to this topic and convert it to speech.
- aiml_speech_recognition_client: This node will subscribe to the output from the speech recognition system and publish it to the /chatter topic.
The user can interact with AIML either by text chatting or speech. The speech recognition node will not do speech recognition; instead, it will receive the converted text from a speech recognition system and input it to the AIML server.
To create or install the ros-aiml package, you may need to install some dependency packages.