Skip to content
gitbaum edited this page Jul 21, 2011 · 17 revisions

What is the Wiselib?

The Wiselib is an algorithm library for sensor networks. It contains various algorithm classes (for instance, localization or routing) that can be compiled for several sensor network platforms such as iSense or Contiki, or the sensor network simulator Shawn. It is completely written in C++, and uses templates in the same way as Boost and CGAL. This makes it possible to write generic and platform independent code that is very efficiently compiled for the various platforms.

We provide easy-to-use interfaces to the OS, which simplifies the development process and decreases the need for dealing with low-level functionality of specific hardware platforms. Algorithms can even be run in a simulation environment first (for debugging purposes, for example), and then compiled for real hardware platforms without changing any line of algorithm code.

Algorithms can be directly integrated in your application. For example, when developing an application for iSense that collects sensor data values, a Wiselib routing algorithm can be used to route the data to a sink. Another scenario are pure Wiselib applications: We provide an own application_main that is called by Wiselib code, and you can integrate algorithm implementations there. The advantage is that these applications can be compiled for any supported platform, without changing any line of code (instead, just makefile targets). Similarly to the own Wiselib application, any algorithm can be compiled as an OpenCom component, which allows for dynamically loading an algorithm in your application.

Wiselib Download & Support

  • Attention! Wiselib has been moved from SVN to github - please update!!
  • Anonymous github Access:
    • git://github.com/ibr-alg/wiselib.git
  • Download zipped archive:
  • Mailinglist Subscription:
    • Write an empty mail to [email protected], and confirm as described in the received mail.
  • Virtual Machine (contains compilers for all supported systems - Ubuntu, 6.5GB, ~2GB packed)
  • Anonymous SVN Access (outdated!):
    • https://svn.itm.uni-luebeck.de/wisebed/wiselib/trunk/
    • https://svn.itm.uni-luebeck.de/wisebed/wiselib/tags/2011-07-19-github (tag made directly before moving to github)

Wiselib Papers and Presentations

Wiselib Design

  • Wiselib: A Generic Algorithm Library for Heterogeneous Sensor Networks (EWSN2010) [http://arxiv.org/abs/1101.3067 paper], [http://www.ibr.cs.tu-bs.de/users/tbaum/paper/2010-02-ewsn-wiselib.ppt slides].

Algorithm Implementations in Wiselib

  • Topology control algorithms in WISELIB (ICSE2010) [http://portal.acm.org/citation.cfm?id=1809111.1809118 paper],
  • A Protocol for Self-Synchronized Duty-Cycling in Sensor Networks: Generic Implementation in Wiselib (MSN10) [http://arxiv.org/abs/1010.4385 paper],
  • Distributed Game-Theoretic Vertex Coloring (OPODIS'10) [http://www.springerlink.com/index/4062434442L7360R.pdf paper],
  • Bridging the Gap between Simulated Sensor Nodes and the Real World (REALWSN10) [http://www.springerlink.com/content/v475321590823640/ paper].

Wiselib as Development Framework for Experimentation

  • Distributed algorithm engineering for networks of tiny artifacts (Computer Science Review) [http://www.sciencedirect.com/science/journal/15740137 paper],
  • Distributed Self-organized Societies of Tiny Artefacts [http://www.lulu.com/product/file-download/distributed-self-organized-societies-of-tiny-artefacts/15746771 book].

Wiselib Development

Introduction

  • [wiki:development/wiselib_design Basic Design Components]
  • [wiki:development/cpp_usage C++ Usage: '''Dos and Dont's''' within the Wiselib]

First Steps

  • '''Important:''' [wiki:development/config_files Copy std_config*.h to config*.h]
  • [wiki:development/platforms Supported Platforms]
  • [wiki:development/compiler_setup Compiler Setup]
  • [wiki:development/coding_style Coding Guidelines]
  • [wiki:development/rules_algorithm_development Basic Rules for Algorithm Development]
  • Wiselib Application Development - Examples of how to integrate an algorithm in an application
    • [wiki:development/applications/generic_wiselib_application Generic Wiselib Application] (How to write an application that can be compiled for different platforms)
      • [wiki:development/applications/generic_isense iSense: Prepare Generic Wiselib Application]
      • [wiki:development/applications/generic_shawn Shawn: Prepare Generic Wiselib Application]
      • [wiki:development/applications/generic_contiki Contiki: Prepare Generic Wiselib Application]
      • [wiki:development/applications/generic_tinyos TinyOs: Prepare Generic Wiselib Application]
    • [wiki:development/applications/isense_wiselib_application iSense Wiselib Application] (Direct integration in iSense applications)
    • [wiki:development/applications/shawn_wiselib_application Shawn Wiselib Application] (Direct integration in Shawn processor)

Tutorials

  • [wiki:development/wiselib_school Wiselib School - Slides and Source Code]
  • [wiki:wiselib_programming_hints Programming Hints]

Advanced Topics

  • [wiki:wiselib_callbacks Callbacks]
  • [wiki:wiselib_messages Message Delivery in Heterogeneous Networks]

Wiselib Design

Concepts and Models

Wiselib Design (concepts and models) is documented as Doxygen documentation. Follow the link for details:

  • [http://www.ibr.cs.tu-bs.de/users/tbaum/wiselib/doxygen/testing/html/index.html Wiselib Design] (Doxygen generated Documentation)
  • [wiki:design/backup Backup Wiselib Design] (old Wiki-based documentation)

Message ID Allocation

  • [wiki:design/messages/id_allocation Reserved Message IDs]

Templates for new Wiki pages

* [wiki:design/templates/notation Notation in Descriptions]
* [wiki:design/templates/concept Concept]
* [wiki:design/templates/model Model]

Background Information

  • [wiki:general_cpp General C++ Issues]
  • [wiki:cpp_compiler C++-Compiler for Embedded Systems] (and their restrictions)
  • [wiki:sensor_nodes Sensor Node Hardware]
  • [wiki:sensor_oss Sensor Node OSs] (Information about Contiki, TinyOS, iSense OS, ...)
  • [wiki:delegates Delegates] (concept for callback realization without virtual member functions)

Refactoring

  • [wiki:temporary_refactoring_page Temporary page for facet refactoring documentation]
  • [wiki:wikistart_backup backup Wiki-Start]