# Difference between revisions of "GSOC2010UANFramework"

Extension and integration of the UAN module with AUVs simulator (Seaglider and REMUS), AUV power models, acoustic transducer power model, AUV energy source models, Li-Ion battery model.

## Introduction

The Seaglider AUV

Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world. Infact, the need for underwater wireless communications exists in applications such as remote control in offshore oil industry [3], pollution monitoring in environmental systems, speech transmission between divers, mapping of the ocean floor, mine counter measures [4], seismic monitoring of ocean faults as well as climate changes monitoring. Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on. Thus, the priority to make research work going on, is to realize a complete simulation framework that researchers can use to experiment, make tests and make performance evaluation and comparison.

The REMUS AUV

The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool. Infact, the UAN module, offers accurate modelling of the underwater acoustic channel, a model of the WHOI acoustic modem (one of the widely used acoustic modems)[8] and its communications performance, and some MAC protocols.

This project, will integrate the efforts of UAN module, extending it to make a simulation framework that researchers will be able to use for their aims. The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) alogn with an implementation of AUV batteries. Moreover, it will be implemented, a power model for the WHOI $\mu$modem and, the available MAC protocols, will be modified to use the energy class. For the moment, the UAN module can be used to make some sort of performance comparisons of the available MAC protocols, or tests the communication channel. With the proposed extension, researchers will be able to use the framework to develop and evaluate their "applications". An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions. Then, the final result, will be a complete simulation stack for underwater network applications.

## Approach

The project is divided into two main parts:

• the AUV mobility models
• the energy-related classes

Thus, the project components will be:

1. AUV mobility models
2. classes for AUV batteries and WHOI modem power profile
3. power consumption models for two AUVs
4. Helper for mobility models and complete AUV.
5. Example scripts
6. Test cases

### Use Cases

AUV simulator: the user will be able to program the AUV to navigate over a path of waypoints, to control the velocity, profundity, direction and pitch of the AUV, as well as to tell the AUV to emerge or submerge. Energy classes: the user will be able to use a specific power profile for the WHOI acoustic modem as well as a specific energy model for the AUV. The user will also be able to trace the power consumption of underwater acoustic communications, through physical layer modification.

### Components Description

1. AUV simulator
Implement a model of the real world movement/navigation of AUV. This involves implementing two classes modelling the two major categories of AUVs: electric motor propelled (like REMUS class [5][6]) and "sea gliders" [7].
The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the "sea glider" class exploits small changes in its buoyancy that, in conjunction with wings, can convert vertical motion to horizontal. So, a glider will reach a point into the water by describing a "saw-tooth" movement.
Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.
Thus taking into account maximum speed, directional capabilities, emerging and submerging times.
Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.
The AUV class is supposed to aggregate a navigation application (not required) and a transducer.
2. Implementation of AUV batteries and WHOI modem power profile
This will be done exploiting the newly reviewed energy model. Implement a specific energy model for the AUV batteries (both REMUS and Seaglider). This will be really useful for researchers to keep trace of the AUV operational life.
Implements a WHOI modem specific power profile, to keep trace of its power consumption. This can be used to compare protocols specific power performance. In order to use such power profile, the acoustic transducer physical layer will be modified to use the modem power profile.
3. Helpers for AUV mobility models and complete AUV.
An Helper class for the AUV mobility models, to let the models being installed into a set of nodes. The helper provide also a configurable PositionAllocator to easily manage the nodes positions.
Two Helper classes AUV specific, this helpers let the user easily create a complete AUV node with a waypoint mobility model, an AUV specific energy source, an AUV specific energy model and an acoustic transducer energy model.
4. Test cases
Following the ns-3 development model, have been written test cases to test the mobility models functioning.

## Components Details

### AUV simulator

The class diagram for the AUV Simulator implementation

The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below

class AuvMobilityModel : public ConstantVelocityMobilityModel
{
public:
/**
* Makes the AUV to move along the given direction
*/
void Move (void);
/**
* Makes the AUV to stop
*/
void Stop (void);
/**
* Makes the AUV to emerge at the maximum velocity
* to the given depth
* \param depth the depth to which emerge to, in m (negative)
*/
void Emerge (double depth);
/**
* Makes the AUV to submerge at the maximum velocity
* to the given depth
* \param depth the depth to which submerge to, in m (negative)
*/
void Submerge (double depth);
/**
* \returns the current pitch in degrees
*/
double GetPitch () const;
/**
* \param pitch the pitch to set in degrees
*/
void SetPitch (double pitch);
/**
* \returns the current depth
*/
double GetDepth (void);
/**
* \returns the current direction in degrees
*/
double GetDirection (void) const;
/**
* \param the heading direction in degrees
*/
void SetDirection (double dir);
/**
* \returns the current speed in m/s
*/
double GetSpeed () const;
/**
* \param speed the speed to set in m/s
*/
void SetSpeed (double speed);
/**
* \param velocity the velocity vector to set
*/
void SetVelocity (const Vector &velocity);
/**
* \param cb the callback being called at the end of the emerging process
*/
virtual void SetEmergeCallback (Callback<void, Ptr<MobilityModel> > cb) = 0;
/**
* \param cb the callback being called at the end of the submerging process
*/
virtual void SetSubmergeCallback (Callback<void, Ptr<MobilityModel> > cb) = 0;
};


Mobility Models

The AuvMobilityModel interface is implemented by the RemusMobilityModel and the GliderMobilityModel classes. Both models use a constant velocity movement. The two classes will hold the navigation parameters for the two different AUVs, like maximum gliding angles, maximum operating depth, maximum and minimum speed. The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.

Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.

Has been modified the WaypointMobilityModel to let it use a generic underlying ConstantVelocityModel to validate the waypoints and to keep trace of the node's position. The default model is the classic ConstantVelocityModel but, for example in case of REMUS mobility model, the user can install the AUV mobility model into the waypoint model and then validating the waypoints with it.

Helpers

Have been developed three types of helper:

• AuvMobilityHelper, let the user instantiate and install into a set of nodes, a specific AUV mobility model. It features also a configurable PositionAllocator to help the user handling the position of large set of nodes.
• AuvRemusHelper, install into a set of nodes, a complete set of REMUS AUV capabilities. In details, it install a waypoint model with an underlying REMUS mobility model, a REMUS energy source, a REMUS energy model and a $\mu$modem energy model.
• AuvGliderHelper, install into a set of nodes, a complete set of Seaglider AUV capabilities. In details, it install a waypoint model with an underlying Seaglider mobility model, a Seaglider energy source, a Seaglider energy model and a $\mu$modem energy model.

### Energy-related modifications

AUV energy models

Basing on the Device Energy Model interface, has been implemented a specific energy model for the two AUV classes (REMUS and Seaglider). This classes reproduce the AUV specific power consumption to give users an accurate model. This model can be naturally used to evaluates the AUV operating life, as well as mission-related power consumption, etc. Have been developed two AUV energy models:

• GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]
• RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor

WHOI $\mu$modem energy model

Basing on the Device Energy Model interface, has been implemented a specific energy model for the WHOI $\mu$modem. The class model real-world modem energy consumptions. The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.

The power consumption values implemented into the model are as follows [8]:

Modem State Power Consumption
TX 50 W
RX 158 mW
Idle 158 mW
Sleep 5.8 mW

UAN module energy modifications

The UAN module has been modified in order to utilize the implemented energy classes. Specifically, has been modified the physical layer of the UAN module. Has been implemented an UpdatePowerConsumption method that take the modem's state as parameter. It provide for checking if an energy source is installed into the node and then calls the MicroModemEnergyModel to update the power consumption with the current modem's state. Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.

Li-Ion batteries model

Model's approximation of CGR18650DA discharge curves
Model's approximation of 3B36 discharge curves

A generic Li-Ion battery model has been implemented base on [9][10]. The model can be fitted to any type of Li-Ion battery simply changing the model's parameters The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].

As shown in figure the model approximates very well the Li-Ion cells.

Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12]. Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.

Details on model's parameters used to approximate the discharge curves of the two cells and, a complete procedure for parameters extraction can be found in Li-Ion model fitting

## Deliverables

• Two AUV simulator classes:
• src/mobility/glider-mobility-model.cc
src/mobility/glider-mobility-model.h
• src/mobility/remus-mobility-model.cc
src/mobility/remus-mobility-model.h
• Two AUV energy model classes:
• src/contrib/energy/model/glider-energy-model.cc
src/contrib/energy/model/glider-energy-model.h
• src/contrib/energy/model/remus-energy-model.cc
src/contrib/energy/model/remus-energy-model.h
• An WHOI modem energy model class:
• src/contrib/energy/model/micro-modem-energy-model.cc
src/contrib/energy/model/micro-modem-energy-model.h
• An Helper class for AUV simulator:
• src/helper/auv-mobility-helper.cc
src/helper/auv-mobility-helper.h
• A Li-Ion energy source model:
• src/contrib/energy/model/li-ion-energy-source.cc
src/contrib/energy/model/li-ion-energy-source.h
• Test cases:
• src/mobility/auv-mobility-test.cc
• Example scripts (see below)
• Documentation

## Usage and Examples

Examples of the Framework's usage can be found into the examples folder:

Path Description
examples/mobility/auv-energy-model.cc In this example we show the basic usage of an AUV energy model.
Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.
examples/mobility/auv-mobility.cc In this example we show how to use the AuvMobilityHelper to install an auv mobility model into a (set of) node.
Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.
examples/mobility/waypoint-mobility.cc We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.
We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.
We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.
The AUV's position is printed out every seconds.
examples/uan/li-ion-energy-source.cc In this simple example, we show how to create and drain energy from a LiIonEnergySource.
We make a series of discharge calls to the energy source class with different current drain and duration until all the energy is depleted from the cell.
After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.
examples/uan/uan-energy-auv.cc This is a comprehensive example where all the project's components are used.
We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.
Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.
The AUV sends a generic 17-bytes packet every 10 seconds during the navigation process. The gateway receives the packets and stores the total bytes amount.
At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.

## Schedule

1. 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation
2. 31/05 - 09/06 Implement the electric motor propelled AUV simulator
3. 10/06 - 16/06 Test Cases for electric motor propelled AUV Simulator
4. 17/06 - 26/06 Implement the Sea Gliders AUV simulator
5. 27/06 - 03/07 Test cases for Sea Gliders AUV simulator
6. 04/07 - 11/07 Example scripts for AUVs simulator and Helper class
7. 12/07 Mid Term Evaluation submission, Mid Term Report
8. 13/07 - 19/07 Implement the AUV energy source classes
9. 20/07 - 22/07 Implement the WHOI modem energy model class
10. 23/07 - 26/07 Energy modification of the underwater MAC protocols.
11. 27/07 - 30/07 Test cases for energy related classes
12. 31/07 - 05/08 Example scripts for power management layer
13. 09/08 Suggested 'Pencil Down'
14. 06/08 - 16/08 Documentation and Integration of the project
15. 16/08 Final Evaluation submission

## References

[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800

[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , "Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services," Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008 URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4530218&isnumber=4529902

[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences, URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf

[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html

[5] Hydroinc Products; http://www.hydroidinc.com/products.html

[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856

[7] Eriksen, C.C., T.J. Osse, R.D. Light, T. Wen, T.W. Lehman, P.L. Sabin, J.W. Ballard, and A.M. Chiodi. Seaglider: A Long-Range Autonomous Underwater Vehicle for Oceanographic Research, IEEE Journal of Oceanic Engineering, 26, 4, October 2001. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=972073&userType=inst

[8] L. Freitag, M. Grund, I. Singh, J. Partan, P. Koski, K. Ball, and W. Hole, The whoi micro-modem: an acoustic communications and navigation system for multiple platforms, in In Proc. IEEE OCEANS05 Conf, 2005. URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf

[9] C. M. Shepherd, "Design of Primary and Secondary Cells - Part 3. Battery discharge equation," U.S. Naval Research Laboratory, 1963

[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., "A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles," Ecole de Technologie Superieure, Universite du Quebec, 2007

[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf

[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf

My name is Andrea Sacco I was born in 1985 and I live in Prato, Italy. I am currently finishing the Master of Science in Telecommunications Engineering at University of Florence (Italy), which I started in 2007. My Master thesis work is supervised by Prof. Romano Fantacci and Prof. Tommaso Pecorella, both from the University of Florence, and I've collaborated with Prof. Alvaro Suarez from the University of Las Palmas de Gran Canaria (Spain) during my Erasmus period (from 10/2009 to 3/2010). I have defended my Master Thesis on July 14th achieving a "Summa cum Laude" mark (110 over 110 with honours). I already have a Bachelor of Science in Information Engineering (curriculum Telematics) achieved in Dec. 2007 with a mark of 107 over 110.

Background

I've started using ns-3 in November '09 for a research project with Underwater Wireless Networks related to my master thesis work. I've found and solved a bug into the ns-3 UAN module [1]. I try to be as much active as possible into the ns-3 mailing lists. My research in the field of underwater wireless networks began in September '09 and, during this period I think to have accumulated a good knowledge of the field.

Work and Research

My work and research activities spaces from sensors networks to web applications to passive sensors data. My bachelor thesis project was presented during the ICTTA'08 international conference held in Damascus, Syria from 7 to 11 April 2008, and published on IEEE [2].

Personal Interests

Besides the interests in web evolution, optoelectronics, networking and underwater sensors, I'm interested in surf (my real passion), snowboarding, rugby, and music (singing and playing guitar).

--Socket 18:42, 6 August 2010 (UTC)