How the Olympus system works ? This is a summary after I read a bit of the code of Olympus.
1. How system started?
Open your SystemRun.bat, it will call this line:
START “” /DConfigurations\%RunTimeConfig% “%OLYMPUS_ROOT%\Agents\Pythia\dist\process_monitor.exe” %RunTimeStartList%.config
About the startlist.config file and Pythia’s process_monitor.exe (MITRE in old project) , you need to read this page:
Pythia is windows process manager that control many process start and stop. Written by pl and build as process_monitor.exe, it will read in the startlist.config file to control each process of system.
2. How each module started?
Pythia started many process and they communicate each other, each process has its ability as module in system, like ASR, TTS. They work together to make whole system work.
TTYRecongnitionServer is the module to interface with terminal in audio and keyboard input way. Pythia in fact will start this file : ttyserver_start.config to start this process. It will in fact run this cmd as one process:
$OLYMPUS_ROOT\bin\release\TTYRecognitionServer.exe --start - is to let Pythia start it --input_line - is to let Pythia open a input box for it on the GUI.
3. What is the HUB?
So how each process feature doing and how these processes communicate with each other is very important now. Each process will be called a server, so there is a HUB to link all the servers together:
5. So how hub and server exchange data?
There is pgm file defined all servers info, name port, and rules etc, hub just read this file and then will link all servers to exchange data.
Rules in programs (like main) tell Galaxy what the Hub should do when it gets a certain message
Now you have basic structure of the whole system.
5. So how task is organized as dialog system (ravenclaw) ?
ravenclaw use tree to define the task relations, like example here:
Sub node under a task is a sub task, to finish a task you need to go through from left to right to do each task. And they define a set of macro in C and developer need to use these set of macro to define this task tree:
example like this: