Projects

I have worked on many projects in the past two years of my PhD research. These projects have mainly focused on enabling functionality in pervasive computing systems.

I am currently developing a programming model that can be used to program heterogeneous pervasive systems. The programming model represents an abstract machine that can be implemented on any pervasive system. A pervasive program developer programs using the programming model without worrying about the intricacies of implementations of tasks, services, applications and so on of the various pervasive systems.         

I am applying this programming model to program collections of pervasive systems. These include infrastructure-based and infrastructure-free pervasive systems. I am also developing middleware frameworks for these systems as outlined below. 

I am developing a middleware meta-operating system, called Gaia, for Infrastructure-based Large-Scale Pervasive Systems. The Gaia operating system treats a collection of devices, such as a smart room, as analogous to a computer by providing a well-defined abstraction to the various devices and services in the ensemble. Applications can be designed to that abstraction without any knowledge of the underlying devices or services. We call a physically-bounded space of smart devices and applications managed by Gaia as an Active Space

I am extending the Gaia operating system to manage larger structures such as collections of smart rooms, active buildings and campuses. I am developing a middleware for hierarchical structures, called Super Space, which aggregates multiple active spaces seamlessly. The programming model that I am developing provides an abstraction to program a super space. 

Ref: Jalal Al-Muhtadi, Shiva Chetan, Anand Ranganathan and Roy Campbell, "Super Spaces: A Middleware for Large-Scale Pervasive Computing Environments", Perware '04: IEEE International Workshop on Pervasive Computing and Communications, Orlando, Florida, March 2004.

I am also developing a middleware for ad-hoc pervasive systems. Ad-hoc pervasive systems are collections of systems that are formed by devices without an underlying physical infrastructure. These include collection of devices worn by a user, aggregation of devices of different users and device ensembles that are temporarily formed for a particular session. Ad-hoc pervasive systems offer numerous research challenges such as resource constraints, fault-resilient operations in a fluid environment and so on. I am working on a version of Gaia that can be used for ad-hoc pervasive systems. My programming model provides a programming abstraction to a Mobile-Gaia system. 

Ref: Shiva Chetan, Jalal Al-Muhtadi, Roy Campbell and M.Dennis Mickunas, "Mobile Gaia: A Middleware for Ad-hoc Pervasive Computing", IEEE Consumer Communications & Networking Conference (CCNC 2005), Las Vegas, Jan. 2005.

Shiva Chetan, Jalal Al-Muhtadi, Roy Campbell and M.Dennis Mickunas, "A Middleware for Enabling Personal Ubiquitous Spaces", UbiSys '04: System Support for Ubiquitous Computing Workshop at Sixth Annual Conference on Ubiquitous Computing (UbiComp 2004), Nottingham, England, Sept. 2004.

One of the services in the Gaia operating system is the Location Service. I built a middleware that integrates location information from various sensors with a spatial database to enable location-based services in indoor environments. I developed world models using a spatial database and mapped location of mobile objects onto the world model. This enables programming location notifications, queries and reasoning about object location.  

Ref: Anand Ranganathan, Jalal Al-Muhtadi, Shiva Chetan and Roy Campbell, "MiddleWhere: A Middleware for Location-Awareness in Ubiquitous Computing Applications", Middleware 2004: ACM/IFIP/USENIX 5th International Middleware Conference, Toronto, Canada, Oct. 2004.

Together with my colleague, I introduced a new concept called Application Polymorphism for Pervasive Computing Environments. Application polymorphism is a concept in which an application changes its structure and composition to adapt to different pervasive environments. The application framework in our system is based on the Model-View-Controller framework and decomposes an application into smaller components. We developed techniques to adapt these application components independent of each other thus enabling fine-grained adaptation. Application polymorphism enables semantic adaptation while programming language polymorphism enables syntactic adaptation. 

Ref: Anand Ranganathan, Shiva Chetan and Roy Campbell, "Mobile Polymorphic Applications in Ubiquitous Computing Environments ", Mobiquitous 2004: First International Conference on Mobile and Ubiquitous Systems: Networking and Services, Boston, Aug 2004.

A smart space consists of heterogeneous devices, applications and services. When integration of these entities is not seamless, faults are introduced in the system. In addition, a smart space like any other computing system is prone to failures due to network disconnections, battery drainage in mobile devices and software failures. I designed a fault management system based on context information to handle some faults in a smart space. Context information refers to any information that can be used to characterize the situation of an entity. For example, if a handheld device fails due to battery drainage, the fault management system determines a suitable device, such as a nearby laptop computer, in the system that can act as a surrogate device. It takes numerous parameters such as privileges, current activity and user preferences when choosing the surrogate device.

Ref: Shiva Chetan, Anand Ranganathan and Roy Campbell, " Towards Fault Tolerant Pervasive Computing", Pervasive 2004 Workshop on Sustainable Pervasive Computing, Linz/Vienna, Austria, April 2004.

"User-level Kernel Implementation on Linux/ia-64 Operating System"

I implemented a framework to run a Linux kernel in a virtual machine at the user-level. This kernel provides a sandbox to develop kernel level programs such  as loadable modules and drivers. Normally, when kernel level (Level-0) programs are being developed the system can fail due to bugs in the code. With a user-level kernel, only the user-level kernel fails which can be killed without shutting the system.