A survey of visual sensor network platforms <s> Operating system and software architecture <s> Wireless sensor networks are composed of large numbers of tiny networked devices that communicate untethered. For large scale networks, it is important to be able to download code into the network dynamically. We present Contiki, a lightweight operating system with support for dynamic loading and replacement of individual programs and services. Contiki is built around an event-driven kernel but provides optional preemptive multithreading that can be applied to individual processes. We show that dynamic loading and unloading is feasible in a resource constrained environment, while keeping the base system lightweight and compact. <s> BIB001 </s> A survey of visual sensor network platforms <s> Operating system and software architecture <s> Sensor network applications tend to exhibit significant high-level commonalities along several major dimensions that have heretofore been underexposed, particularly in the areas of collection and dissemination. We have developed a component library, Sdlib, which presents the fundamental abstractions of collection and dissemination as part of a dataflow system. This allows application developers to rapidly develop applications at the nesC level. This means that Sdlib maintains significant expressivity while operating efficiently. We have built four applications, each faithful to a mature monolithic application, on top of Sdlib to compare its performance to that of original. We find that applications implemented with Sdlib are much simpler to write, just as resource efficient, and perform comparably to monolithic implementations. <s> BIB002 </s> A survey of visual sensor network platforms <s> Operating system and software architecture <s> Wireless networks in combination with image sensors open up a multitude of previously unthinkable sensing applications. Capable tools and testbeds for these wireless image sensor networks can greatly accelerate development of complex, yet efficient algorithms that meet application requirements. In this paper, we introduce WiSNAP, a Matlab-based application development platform intended for wireless image sensor networks. It allows researchers and developers of such networks to investigate, design, and evaluate algorithms and applications using real target hardware. WiSNAP offers standardized and easy-to-use application program interfaces (APIs) to control image sensors and wireless motes, which do not require detailed knowledge of the target hardware. Nonetheless, its open system architecture enables support of virtually any kind of sensor or wireless mote. Application examples are presented to illustrate the usage of WiSNAP as a powerful development tool. <s> BIB003 </s> A survey of visual sensor network platforms <s> Operating system and software architecture <s> In this paper, we propose and demonstrate a novel wireless camera network system, called CITRIC. The core component of this system is a new hardware platform that integrates a camera, a frequency-scalable (up to 624 MHz) CPU, 16MB FLASH, and 64MB RAM onto a single device. The device then connects with a standard sensor network mote to form a camera mote. The design enables in-network processing of images to reduce communication requirements, which has traditionally been high in existing camera networks with centralized processing. We also propose a back-end client/server architecture to provide a user interface to the system and support further centralized processing for higher-level applications. Our camera mote enables a wider variety of distributed pattern recognition applications than traditional platforms because it provides more computing power and tighter integration of physical components while still consuming relatively little power. Furthermore, the mote easily integrates with existing low-bandwidth sensor networks because it can communicate over the IEEE 802.15.4 protocol with other sensor network platforms. We demonstrate our system on three applications: image compression, target tracking, and camera localization. <s> BIB004 </s> A survey of visual sensor network platforms <s> Operating system and software architecture <s> Wireless sensor networks (WSNs) are attracting great interest in a number of application domains concerned with monitoring and control of physical phenomena, as they enable dense and untethered deployments at low cost and with unprecedented flexibility. However, application development is still one of the main hurdles to a wide adoption of WSN technology. In current real-world WSN deployments, programming is typically carried out very close to the operating system, therefore requiring the programmer to focus on low-level system issues. This not only distracts the programmer from the application logic, but also requires a technical background rarely found among application domain experts. The need for appropriate high-level programming abstractions, capable of simplifying the programming chore without sacrificing efficiency, has long been recognized, and several solutions have hitherto been proposed, which differ along many dimensions. In this article, we survey the state of the art in programming approaches for WSNs. We begin by presenting a taxonomy of WSN applications, to identify the fundamental requirements programming platforms must deal with. Then, we introduce a taxonomy of WSN programming approaches that captures the fundamental differences among existing solutions, and constitutes the core contribution of this article. Our presentation style relies on concrete examples and code snippets taken from programming platforms representative of the taxonomy dimensions being discussed. We use the taxonomy to provide an exhaustive classification of existing approaches. Moreover, we also map existing approaches back to the application requirements, therefore providing not only a complete view of the state of the art, but also useful insights for selecting the programming abstraction most appropriate to the application at hand. <s> BIB005
We can classify Operating Systems (OS) utilized in VSN platforms into three categories: (a) general purpose OS; (b) OS specifically designed for sensor networks; and (c) Finite State Machine (FSM) based resource management (no OS). Each category of OS has its benefits and drawbacks. Panoptes, Meerkats, CITRIC, and Vision Mote platforms use Linux operating system. Linux provides the flexibility to alter and modify the part of the system according to the specific needs of the applications. Furthermore, there are many available vision computing algorithms implemented in C/C++ (e.g., OpenCV library, IJG library) and routing protocols available for Linux (e.g., DSR routing protocol). Thus, for ease of programming, interfacing and rapid prototyping utilization of a general purpose OS (e.g., Linux) is highly advantageous.  For example, in Panoptes platform specific functions (JPEG compression routines) are implemented in high-level languages (e.g., C) and natively compiled. And the modularized code pieces are connected via function calls by using an interpreted programming language (i.e., Python). This approach eliminates the need for recompiling all the code. Nevertheless, using a general purpose OS brings extra overhead when compared to an application specific OS (e.g., TinyOS). VSN platforms using a general purpose OS instead of an applicationspecific OS are all equipped with PDA-class processors, thus, the energy dissipation for these platforms are significantly higher than the other platforms. Three of the VSN platforms use application specific operating systems-Cyclops, FireFly Mosaic, and XYZ-ALOHA platforms use TinyOS [49] , Nano-RK [33], and SOS  operating systems, respectively. TinyOS is an event based operating system designed to support the concurrency intensive operations required by sensor network platforms with minimal hardware requirements. TinyOS has a synchronous execution model, where a synchronous task blocks the computational resources unless it is not preempted by an interrupt handler. Vision computing can take extended computation times, hence, in Cyclops there are two processors-one for image processing (on the imaging board) and the other is for networking (on the networking board). Nano-RK is a real-time resource centric operating system, which provides interfaces for globally synchronized task processing. This framework supports synchronous image capturing and transmission scheduling without sacrificing the overall timing constraints. SOS is an operating system for mote-class wireless sensor networks, which follows an event driven design similar to TinyOS. The kernel used in SOS implements messaging, dynamic memory, module loading and unloading, along with other services. Unlike TinyOS, which compiles a static OS image, SOS uses dynamically loaded software modules to create a system supporting dynamic addition, modification, and removal of network services, which supports the installation and modification of programs at runtime. TinyOS is the most popular OS for networked embedded sensor network platforms. However, its use may require extra development time. For example, in Cyclops device drivers are implemented specifically for TinyOS and require extra efforts. SOS on the other hand is not under active development and at its web site it is recommended to use one of the more actively supported alternatives. On the other hand, there are many studies in the literature BIB005 (e.g., Contiki BIB001 ) that aims to design an operating system for sensor nodes having lightweight mechanisms and abstractions that provide a rich enough execution environment while staying within the limitations of the constrained devices. Contiki OS BIB001 enables sensor nodes to communicate over IP (both IPv4 and IPv6) and has been used in a variety of projects which involves scalar sensor nodes. Up to our best knowledge, it has not been ported to any VSN platform yet. MicrelEye and MeshEye platforms does not use an operating system instead resource management and process scheduling are performed through FSM-based approaches. Such an approach have advantages in terms of speed and energy efficiency, however, the user would need to program in a hardware description language, making algorithm implementation and debugging a time-consuming process BIB004 . Vision computing is an established research area; however, utilization of high level vision algorithms requires intensive efforts on currently available VSN platforms. Several architectures are introduced to utilize high-level vision algorithms effectively and efficiently BIB002 BIB003 . WiSNAP (Wireless Image Sensor Network Application Platform) is a Matlab-based application development architecture for VSN platforms. WiSNAP is intended to accelerate algorithm development by providing standardized and easy-to-use APIs to interface various components (e.g., image sensor, wireless radios) of a VSN platform. WiSNAP framework currently includes device libraries for Agilent ADCM-1670 and ADNS-3060 image sensors and ChipCon CC2420 radio. Sensor Data Library (sdlib) BIB002 is a library of well-tested and reusable nesC components that capture the fundamental high-level operations (similar to the well-known communication abstractions in TCP/IP service model). This library allows a convenient toolbox for rapid development of sensor applications at nesC language.