Using Avrora for Sensor Network Research

One of the main goals of developing Avrora is to enable sensor network research by providing an accurate and scalable simulator for the actual hardware platform on which sensor programs run. Avrora has a nearly complete implementation of the mica2 hardware platform, including a nearly complete ATMega128L implementation, and an implementation of the CC1000 AM radio.

The architecture of Avrora allows multiple Simulator objects to be instantiated and run. Avrora can then simulate an entire network of nodes by periodically synchronizing the simulator instances to preserve the timing interactions between them. Nodes can send and receive bytes over the CC1000 radio.


Single node Simulation - Blink

You can simulate your sensor network program in isolation on one node or as part of a network. Simulating a single node can allow you to test crucial parts of your program before you run it in a network simulation. You can debug, test, profile, and analyze the program in isolation. You can simulate a sensor network program for the mica2 platform by simply specifying the -platform=mica2 option on the command line.

An example of running the Blink program:


Multiple-node Simulation

Avrora is also capable of running a complete sensor network simulation with full timing accuracy, allowing programs to communicate via the radio using the software stack provided in TinyOS. It does this with a complete simulation of the CC1000 AM radio. Let's go through an example of running a multiple-node simulation.


Step 1 - Compile the TinyOS programs

Suppose we want to run the CntToRfm and the RfmToLeds TinyOS programs in simulation and measure the sleeping behavior. First we compile the programs to an ELF file for the mica2 hardware platform, and then run avr-objdump on each to produce a file readable by Avrora. For more information, see the page on objdump.

% make mica2
    compiling CntToRfm to a mica2 binary
ncc -o build/mica2/main.exe -Os -board=micasb -target=mica2 -I%T/lib/Counters 
-Wall -Wshadow -DDEF_TOS_AM_GROUP=0x7d -Wnesc-all -finline-limit=100000 
-fnesc-cfile=build/mica2/app.c  CntToRfm.nc -lm 
    compiled CntToRfm to build/mica2/main.exe
            9224 bytes in ROM
             384 bytes in RAM
avr-objcopy --output-target=srec build/mica2/main.exe build/mica2/main.srec
% avr-objdump -zhD build/mica2/main.exe > CntToRfm.od


Step 2 - Test Simulation

Now, having done that for both applications, we are ready to run. Let's try running two nodes for 10 simulated seconds, with one node running CntToRfm and the other running RfmToLeds.

Notice that in order to select a multi-node simulation, we will need to specify the simulation option with the value sensor-network. This tells Avrora to the simulation type is a sensor network, rather than the default, single node simulation.


Step 3 - Attach Monitors to Simulation

Now that we can run the nodes in simulation, let's attach a monitor to analyze the network behavior. Luckily, there is already a built-in monitor in Avrora to do this! We can simply add the -monitors=packet option to enable this monitor, which displays the packets sent by each node.


Profiling Multiple-node Simulations

As we saw in the example, profiling of multiple-node simulations is as easy as it is for single node simulation. All the flexibility that is afforded by the monitor organization is preserved in multiple node simulations. Therefore, building new monitors and using the default monitors work in exactly the same way, by specifying the -monitors option. Most of the monitors that work for single node simulation, such as profiling execution or memory accesses, work equally well for multiple-node simulation. This allows you to use Avrora to profile your applications across the entire sensor network--a feature not available in any other simulator. For more information on building your own monitors see the page on monitoring.


More Command Line Options

Help for each option in this action is available simply by running Avrora with the -help sensor-network parameter, and is also available in the online help.