MultiCam SoftwareLinks
Software DesignThe system consists of modules which use messages to communicate. Typically, each module has its own process and the communication takes place over TCP. If module A wants to send a message to module B, the module A has to create a proxy corresponding to module B. The proxy resides in module A and passes messages to module B. These graphs show the classes for modules, proxies and messages, but not necessarily the current state:
Besides TCP, the modules can communicate also via shared memory -- if they are on the same computer. While the TCP is used for command/response type of communication, the shared memory is used to store responses in ring buffers where they can be accessed by other modules. The main modules are camerad, orangutan, tamarin and lemur. Orangutan runs on the central computer and sends commands to camerad(s) to capture images. Camerad captures images, then it sends them back to orangutan and/or stores them in shared memory for tamarin and/or saves them to disk. Tamarin can do some local image processing, if requested. Lemur displays the responses stored by orangutan to shared memory.
Exception to the message-based communication are parameters kept in the shared memory on the central computer. In contrast to the message ring-buffers, these parameters can be overwritten by any process (e.g. by the graphical user interface vrGUI).
Petr Doubek, doub@cmp.felk.cvut.cz |