Featured White Papers
- PCI DSS therapy for the smaller retailer (McAfee)
- Oct. 14th: Simplified IT with Software-as-a-Service (SaaS) (ZDNet)
- The rise of Web commuting (Citrix Online)
Software architecture for a Virtual Environment for Nano Scale Assembly
Journal of Research of the National Institute of Standards and Technology, March-April, 2004 by Yong-Gu Lee, Kevin W. Lyons, Shaw C. Feng
A Virtual Environment (VE) uses multiple computer-generated media to let a user experience situations that are temporally and spatially prohibiting. The information flow between the user and the VE is bidirectional and the user can influence the environment. The software development of a VE requires orchestrating multiple peripherals and computers in a synchronized way in real time. Although a multitude of useful software components for VEs exists, many of these are packaged within a complex framework and can not be used separately. In this paper, an architecture is presented which is designed to let multiple frameworks work together while being shielded from the application program. This architecture, which is called the Virtual Environment for Nano Scale Assembly (VENSA), has been constructed for interfacing with an optical tweezers instrument for nanotechnology development. However, this approach can be generalized for most virtual environments. Through the use of VENSA, the programmer can rely on existing solutions and concentrate more on the application software design.
Key words: nanoscale assembly; software architecture; software reuse; VENSA; virtual reality.
**********
1. Introduction
The two basic functions of a Virtual Environment (VE) development toolkit are managing different display devices (such as head-mounted displays, stereoscopic projection displays and haptic displays) and handling input devices (such as motion trackers, dials and buttons). In these toolkits, input and output devices are usually generalized by their similarities. For example, a magnetic position tracker and an optical position tracker have a common function, which can be generalized to a single class of position tracking devices. This allows the application programmer to write code using the generalized positional device without knowledge on which tracking device will be used [1]. Also, by defining the interfaces to these devices and always accessing the devices through these interfaces, the developed program becomes hardware independent. By constructing a development environment that can simulate this interface, one can develop and test programs on a host computer, and then run them on the actual device upon completion [2]. In addition to the above, VE toolkits provide many computer graphics and distributed computing techniques [3]. The latter is becoming more important for the following reason.
Designing and implementing the software for VE is becoming increasingly difficult as problem complexity grows and the expectation for presence realism increases. Fast computer processors are needed to achieve user requirements. This is typically achieved through proprietary parallel machines (high-end workstations) or through computer clusters (i.e., coordinated set of computers) interconnected by Fast Ethernet operating at 100 Mbit/s or Gigabit Ethernet operating at 1000 Mbit/s. Computer clusters are essential when the controllers to the peripherals can not all reside in a single computer. For example, some peripherals are based on a specific operating system or use a new interface standard, thus requiring another application specific computer to support it. Furthermore, computer clusters can be a good choice because they allow for incremental enhancement to the VE. New devices along with a new computer can be added without interfering with an existing computer cluster. With the rapid development of new input and output devices, it is becoming more certain that no one computer can meet the demands of future VE systems.
To achieve an immersive visual experience, one needs to provide from two to twelve visual displays. Two displays are needed for head-mounted displays and twelve displays are needed for six-walled screens such as CAVE (2) (CAVE Automatic Virtual Environment) [4]. The graphics cards that generate these displays can reside in one proprietary computer or can be distributed within a computer cluster, and interconnected by a special network. Yet cluster programming introduces new issues such as synchronized management of distributed data and processes [5]. Furthermore the data from various input devices need to be propagated to other devices and systems and video retraces for the different video outputs must be synchronized [6].
Although VE programming is difficult, fortunately there are many software components, commercially available or in the public domain, that greatly reduce the development efforts. Some of the commercial toolkits are CAVELib [7] (www.vrco.com), WorldToolKit [8] (www.sense8.com) and DIVISION Reality [9] (www.ptc.com). Some of the public domain toolkits are VR Juggler [1], GNU/MAVERIK [3], MR Toolkit [10] and DIVERSE [11]. The first three support distributed programming (3), with the first two offering companion toolkits. All of the toolkits provide fairly comprehensive functionality from low level device handling to sophisticated distributed process and data management.
Comprehensive VE toolkits are essential for rapid program development. Yet if a user wants to use only parts of several VE toolkits, implementing the VE becomes very difficult. This difficulty arises because most toolkits are frameworks that constrain the application programming to follow predefined rules. This makes it difficult to use a part without the whole.