<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Socket</id>
	<title>Nsnam - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Socket"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Socket"/>
	<updated>2026-04-07T06:58:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=5112</id>
		<title>HOWTO configure Eclipse with ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=5112"/>
		<updated>2011-01-26T09:06:12Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configure Mercurial ==&lt;br /&gt;
&lt;br /&gt;
* First download eclipse IDE for C++ developers from http://www.eclipse.org&lt;br /&gt;
* Install eclipse into you operating system&lt;br /&gt;
* Install mercurial eclipse plugin:&lt;br /&gt;
** Go to help-&amp;gt;software update&lt;br /&gt;
** Click on available software&lt;br /&gt;
** Click on add a site&lt;br /&gt;
** Add http://www.vectrace.com/eclipse-update/ taken from http://www.vectrace.com/mercurialeclipse/ then click on mercurialeclipse and check the box and click on install&lt;br /&gt;
* We suppose that you already have mercurial installed on your machine&lt;br /&gt;
* start eclipse, it will create a workspace directory NB:It is advised to use a different directory for the code say ~/src&lt;br /&gt;
* clone the mercurial reppository: go to ~/src and execute hg clone http://code.nsnam.org/ns-3-dev ns-3-dev&lt;br /&gt;
* create a new empty C++ project with your preferred name and the path is ~/src/ns-3-dev on &lt;br /&gt;
* click right on the project and go to team-&amp;gt;share project&lt;br /&gt;
* click on next and click on use local hg and finish&lt;br /&gt;
&lt;br /&gt;
You should have now your project configured with eclipse and be able to pull, update, view history, etc in eclipse. The next steps will allow you to configure, compile and run the code from eclipse.&lt;br /&gt;
&lt;br /&gt;
== Configure Waf Builder ==&lt;br /&gt;
[[File:Builder-settings.png|200px|thumb|right|Builder Settings Screenshot]]&lt;br /&gt;
[[File:Builder-behaviour.png|200px|thumb|right|Builder Behaviour Screenshot]]&lt;br /&gt;
* Click right on the project and click on properties&lt;br /&gt;
* Click on C/C++ build and configure the builder&lt;br /&gt;
* Uncheck the box Use default build command&lt;br /&gt;
* Uncheck the box Generate makefile automatically&lt;br /&gt;
* Write ${workspace_loc:ns-3-dev}/waf in the build command&lt;br /&gt;
* Make sure your build directory is the build directory in ns-3-dev (${workspace_loc:ns-3-dev}/build)&lt;br /&gt;
* Click on the behaviour tab&lt;br /&gt;
* Remove the `all` option in front of the build checkbox and write `build`&lt;br /&gt;
* Now when you click on build you will be able to build the project using waf&lt;br /&gt;
&lt;br /&gt;
== Configure Debugger ==&lt;br /&gt;
&lt;br /&gt;
[[File:Debug-main.png|200px|thumb|right|Debugger main tab]]&lt;br /&gt;
[[File:Debug-env.png|200px|thumb|right|Debugger environment tab]]&lt;br /&gt;
&lt;br /&gt;
Suppose you want to debug a test application called &amp;quot;test&amp;quot; under the scratch folder. Here are the steps:&lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Debug Configurations&amp;quot; option under the &amp;quot;Run&amp;quot; menu&lt;br /&gt;
* Create a new configuration and choose a name for it&lt;br /&gt;
* Click on the &amp;quot;Browse&amp;quot; button under the &amp;quot;Project&amp;quot; section and select the project&lt;br /&gt;
* Click on the &amp;quot;Search Project&amp;quot; button under the &amp;quot;C/C++ Application&amp;quot; section and type the name of the application (test in our case)&lt;br /&gt;
* Go into the &amp;quot;Environment&amp;quot; tab and click on &amp;quot;New&amp;quot; to create a new variable&lt;br /&gt;
* Type under the Name field &amp;quot;LD_LIBRARY_PATH&amp;quot;&lt;br /&gt;
* Type under the Value field &amp;quot;${workspace_loc:ns-3-dev}/build/debug&amp;quot;&lt;br /&gt;
* Be sure the &amp;quot;Append environment to native environment&amp;quot; is selected&lt;br /&gt;
* Click on Apply and on Debug if you want to immediately debug the application&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 09:06, 26 January 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:AuvSimulatorClassDiag.png&amp;diff=4996</id>
		<title>File:AuvSimulatorClassDiag.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:AuvSimulatorClassDiag.png&amp;diff=4996"/>
		<updated>2010-10-25T10:24:28Z</updated>

		<summary type="html">&lt;p&gt;Socket: uploaded a new version of &amp;quot;File:AuvSimulatorClassDiag.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4969</id>
		<title>Li-Ion model fitting</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4969"/>
		<updated>2010-10-07T09:55:01Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Typ-discharge.png|right|thumb|alt=A typical discharge curve|A typical discharge curve]]&lt;br /&gt;
A typical discharge curve, with the nominal and exponential zones highlighted, is shown in figure.&lt;br /&gt;
&lt;br /&gt;
To fit the Li-Ion energy model [http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139] to a specific type of cell, it is necessary to extract several parameters out from the datasheet.&lt;br /&gt;
&lt;br /&gt;
In this page we'll give two examples to help the user in the fitting process.&lt;br /&gt;
&lt;br /&gt;
During the fitting process it is better to first fit the model to a &amp;quot;reference&amp;quot; discharge current in the datasheet and then, slightly modify the model's parameters to fit it to the other discharge curves.&lt;br /&gt;
&lt;br /&gt;
== Parameters extraction &amp;amp; results ==&lt;br /&gt;
&lt;br /&gt;
Into the LiIonEnergyModel class, there are several parameters that characterizes the model's behaviour. We'll take the Panasonic CGR18650DA cell datasheet [http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf] as reference.&lt;br /&gt;
The reference discharge current is 2330 mA.&lt;br /&gt;
&lt;br /&gt;
[[File:Panasonic-liion-notes.png|right|thumb|alt=Model's parameters highlights|Model's parameters highlights]]&lt;br /&gt;
[[File:CGR18650DA.png|right|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
We give a description for each of those parameters and highlight them on the datasheet:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, is the fully charged cell's voltage (a)&lt;br /&gt;
* NominalCellVoltage, is the nominal voltage of the cell, 3.6 V&lt;br /&gt;
* ExpCellVoltage, is the voltage at the end of the exponential zone, 3.6 V (b)&lt;br /&gt;
* RatedCapacity, is the nominal capacity of the cell, 2.45 Ah&lt;br /&gt;
* NomCapacity, is the capacity at the end of the nominal zone, 1.1 Ah (c)&lt;br /&gt;
* ExpCapacity, is the capacity at the end of the exponential zone, 1.2 Ah (b)&lt;br /&gt;
* InternalResistance, is the internal resistance of cell, usually not found in datasheet this value must be extracted from the discharge curves, it affects the behaviour of the cell at different discharge currents, 0.083 Ohms&lt;br /&gt;
* TypCurrent, is the discharge current used as reference, 2.33 Ah&lt;br /&gt;
&lt;br /&gt;
With these values, the approximation of different discharge curves is shown in figure.&lt;br /&gt;
&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
For completeness we report also the values used to fit the model to the Eclectrochem 3B36 cell [http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf]:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, 3.45 V&lt;br /&gt;
* NominalCellVoltage, 3.3 V&lt;br /&gt;
* ExpCellVoltage, 3.55 V&lt;br /&gt;
* RatedCapacity, 30.0 Ah&lt;br /&gt;
* NomCapacity, 27.0 Ah&lt;br /&gt;
* ExpCapacity, 15.0 Ah&lt;br /&gt;
* InternalResistance, 0.145 Ohms&lt;br /&gt;
* TypCurrent, 1.0 Ah&lt;br /&gt;
&lt;br /&gt;
The results are shown in figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The firsts times you put the values into the model, you can find disappointing results. Keep in mind that this is a model and you may have to manually fit the results.&lt;br /&gt;
&lt;br /&gt;
One of the key values are the exponential zone's ones. With changing these values, you can modify the slope of the discharge curve and its smoothness.&lt;br /&gt;
Another key value is the internal resistance that will makes move the discharge curves at different current drains.&lt;br /&gt;
&lt;br /&gt;
For a quick feedback of the parameters change it is recommend to use an Excel worksheet.&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=User:Socket&amp;diff=4946</id>
		<title>User:Socket</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=User:Socket&amp;diff=4946"/>
		<updated>2010-09-14T08:53:20Z</updated>

		<summary type="html">&lt;p&gt;Socket: Created page with '== About me ==  right My name is Andrea Sacco I was born in 1985 and I live in Prato, Italy. I have finished the Master of Science in Telecommunications Engin…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About me ==&lt;br /&gt;
&lt;br /&gt;
[[File:Andrea.jpg|right]]&lt;br /&gt;
My name is Andrea Sacco I was born in 1985 and I live in Prato, Italy. I have finished the Master of Science in Telecommunications Engineering at University of Florence (Italy), on July 14th achieving a &amp;quot;Summa cum Laude&amp;quot; mark (110 over 110 with honours), with a Master Thesis titled &amp;quot;Multimedia Distributed Surveillance for Underwater Sensor Networks applied to critical monitoring&amp;quot;.&lt;br /&gt;
My Master thesis work has been 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 already have a Bachelor of Science in Information Engineering (curriculum Telematics) achieved in Dec. 2007 with a mark of 107 over 110.&lt;br /&gt;
I've a personal website at [http://sockethq.altervista.org http://sockethq.altervista.org] where you can find my thesis works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 08:53, 14 September 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Andrea.jpg&amp;diff=4945</id>
		<title>File:Andrea.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Andrea.jpg&amp;diff=4945"/>
		<updated>2010-09-14T08:52:30Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4944</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4944"/>
		<updated>2010-09-14T08:51:25Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
In fact, 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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
In fact, 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) along with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented based on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 08:51, 14 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4830</id>
		<title>HOWTO configure Eclipse with ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4830"/>
		<updated>2010-08-30T14:26:52Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Configure Debugger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configure Mercurial ==&lt;br /&gt;
&lt;br /&gt;
* First download eclipse IDE for C++ developers from http://www.eclipse.org&lt;br /&gt;
* Install eclipse into you operating system&lt;br /&gt;
* Install mercurial eclipse plugin:&lt;br /&gt;
** Go to help-&amp;gt;software update&lt;br /&gt;
** Click on available software&lt;br /&gt;
** Click on add a site&lt;br /&gt;
** Add http://www.vectrace.com/eclipse-update/ taken from http://www.vectrace.com/mercurialeclipse/ then click on mercurialeclipse and check the box and click on install&lt;br /&gt;
* We suppose that you already have mercurial installed on your machine&lt;br /&gt;
* start eclipse, it will create a workspace directory NB:It is advised to use a different directory for the code say ~/src&lt;br /&gt;
* clone the mercurial reppository: go to ~/src and execute hg clone http://code.nsnam.org/ns-3-dev ns3dev&lt;br /&gt;
* create a new empty C++ project with your preferred name and the path is ~/src/ns3devt on &lt;br /&gt;
* click right on the project and go to team-&amp;gt;share project&lt;br /&gt;
* click on next and click on use local hg and finish&lt;br /&gt;
&lt;br /&gt;
You should have now your project configured with eclipse and be able to pull, update, view history, etc in eclipse. The next steps will allow you to configure, compile and run the code from eclipse.&lt;br /&gt;
&lt;br /&gt;
== Configure Waf Builder ==&lt;br /&gt;
[[File:Builder-settings.png|200px|thumb|right|Builder Settings Screenshot]]&lt;br /&gt;
[[File:Builder-behaviour.png|200px|thumb|right|Builder Behaviour Screenshot]]&lt;br /&gt;
* Click right on the project and click on properties&lt;br /&gt;
* Click on C/C++ build and configure the builder&lt;br /&gt;
* Uncheck the box Use default build command&lt;br /&gt;
* Uncheck the box Generate makefile automatically&lt;br /&gt;
* Write ${workspace_loc:ns3dev}/waf in the build command&lt;br /&gt;
* Make sure your build directory is the build directory in ns3dev (${workspace_loc:ns3dev}/build)&lt;br /&gt;
* Click on the behaviour tab&lt;br /&gt;
* Remove the `all` option in front of the build checkbox and write `build`&lt;br /&gt;
* Now when you click on build you will be able to build the project using waf&lt;br /&gt;
&lt;br /&gt;
== Configure Debugger ==&lt;br /&gt;
&lt;br /&gt;
[[File:Debug-main.png|200px|thumb|right|Debugger main tab]]&lt;br /&gt;
[[File:Debug-env.png|200px|thumb|right|Debugger environment tab]]&lt;br /&gt;
&lt;br /&gt;
Suppose you want to debug a test application called &amp;quot;test&amp;quot; under the scratch folder. Here are the steps:&lt;br /&gt;
&lt;br /&gt;
* Click on the &amp;quot;Debug Configurations&amp;quot; option under the &amp;quot;Run&amp;quot; menu&lt;br /&gt;
* Create a new configuration and choose a name for it&lt;br /&gt;
* Click on the &amp;quot;Browse&amp;quot; button under the &amp;quot;Project&amp;quot; section and select the project&lt;br /&gt;
* Click on the &amp;quot;Search Project&amp;quot; button under the &amp;quot;C/C++ Application&amp;quot; section and type the name of the application (test in our case)&lt;br /&gt;
* Go into the &amp;quot;Environment&amp;quot; tab and click on &amp;quot;New&amp;quot; to create a new variable&lt;br /&gt;
* Type under the Name field &amp;quot;LD_LIBRARY_PATH&amp;quot;&lt;br /&gt;
* Type under the Value field &amp;quot;${workspace_loc:ns3dev}/build/debug&amp;quot;&lt;br /&gt;
* Be sure the &amp;quot;Append environment to native environment&amp;quot; is selected&lt;br /&gt;
* Click on Apply and on Debug if you want to immediately debug the application&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4829</id>
		<title>HOWTO configure Eclipse with ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4829"/>
		<updated>2010-08-30T14:12:34Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Configure Waf Builder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configure Mercurial ==&lt;br /&gt;
&lt;br /&gt;
* First download eclipse IDE for C++ developers from http://www.eclipse.org&lt;br /&gt;
* Install eclipse into you operating system&lt;br /&gt;
* Install mercurial eclipse plugin:&lt;br /&gt;
** Go to help-&amp;gt;software update&lt;br /&gt;
** Click on available software&lt;br /&gt;
** Click on add a site&lt;br /&gt;
** Add http://www.vectrace.com/eclipse-update/ taken from http://www.vectrace.com/mercurialeclipse/ then click on mercurialeclipse and check the box and click on install&lt;br /&gt;
* We suppose that you already have mercurial installed on your machine&lt;br /&gt;
* start eclipse, it will create a workspace directory NB:It is advised to use a different directory for the code say ~/src&lt;br /&gt;
* clone the mercurial reppository: go to ~/src and execute hg clone http://code.nsnam.org/ns-3-dev ns3dev&lt;br /&gt;
* create a new empty C++ project with your preferred name and the path is ~/src/ns3devt on &lt;br /&gt;
* click right on the project and go to team-&amp;gt;share project&lt;br /&gt;
* click on next and click on use local hg and finish&lt;br /&gt;
&lt;br /&gt;
You should have now your project configured with eclipse and be able to pull, update, view history, etc in eclipse. The next steps will allow you to configure, compile and run the code from eclipse.&lt;br /&gt;
&lt;br /&gt;
== Configure Waf Builder ==&lt;br /&gt;
[[File:Builder-settings.png|200px|thumb|right|Builder Settings Screenshot]]&lt;br /&gt;
[[File:Builder-behaviour.png|200px|thumb|right|Builder Behaviour Screenshot]]&lt;br /&gt;
* Click right on the project and click on properties&lt;br /&gt;
* Click on C/C++ build and configure the builder&lt;br /&gt;
* Uncheck the box Use default build command&lt;br /&gt;
* Uncheck the box Generate makefile automatically&lt;br /&gt;
* Write ${workspace_loc:ns3dev}/waf in the build command&lt;br /&gt;
* Make sure your build directory is the build directory in ns3dev (${workspace_loc:ns3dev}/build)&lt;br /&gt;
* Click on the behaviour tab&lt;br /&gt;
* Remove the `all` option in front of the build checkbox and write `build`&lt;br /&gt;
* Now when you click on build you will be able to build the project using waf&lt;br /&gt;
&lt;br /&gt;
== Configure Debugger ==&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
[[File:Debug-main.png|200px|thumb|left|Debugger main tab]]&lt;br /&gt;
[[File:Debug-env.png|200px|thumb|left|Debugger environment tab]]&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4781</id>
		<title>Li-Ion model fitting</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4781"/>
		<updated>2010-08-09T09:51:20Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Typ-discharge.png|right|thumb|alt=A typical discharge curve|A typical discharge curve]]&lt;br /&gt;
A typical discharge curve, with the nominal and exponential zones highlighted, is shown in figure.&lt;br /&gt;
&lt;br /&gt;
To fit the Li-Ion energy model [http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139] to a specific type of cell, it is necessary to extract several parameters out from the datasheet.&lt;br /&gt;
&lt;br /&gt;
In this page we'll give two examples to help the user in the fitting process.&lt;br /&gt;
&lt;br /&gt;
During the fitting process it is better to first fit the model to a &amp;quot;reference&amp;quot; discharge current in the datasheet and then, slightly modify the model's parameters to fit it to the other discharge curves.&lt;br /&gt;
&lt;br /&gt;
== Parameters extraction &amp;amp; results ==&lt;br /&gt;
&lt;br /&gt;
Into the LiIonEnergyModel class, there are several parameters that characterizes the model's behaviour. We'll take the Panasonic CGR18650DA cell datasheet [http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf] as reference.&lt;br /&gt;
The reference discharge current is 2330 mA.&lt;br /&gt;
&lt;br /&gt;
[[File:Panasonic-liion-notes.png|right|thumb|alt=Model's parameters highlights|Model's parameters highlights]]&lt;br /&gt;
[[File:CGR18650DA.png|right|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
We give a description for each of those parameters and highlight them on the datasheet:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, is the fully charged cell's voltage (a)&lt;br /&gt;
* NominalCellVoltage, is the nominal voltage of the cell, 3.6 V&lt;br /&gt;
* ExpCellVoltage, is the voltage at the end of the exponential zone, 3.6 V (b)&lt;br /&gt;
* RatedCapacity, is the nominal capacity of the cell, 2.45 Ah&lt;br /&gt;
* NomCapacity, is the capacity at the end of the nominal zone, 1.1 Ah (c)&lt;br /&gt;
* ExpCapacity, is the capacity at the end of the exponential zone, 1.2 Ah (b)&lt;br /&gt;
* InternalResistance, is the internal resistance of cell, usually not found in datasheet this value must be extracted from the discharge curves, it affects the behaviour of the cell at different discharge currents, 0.083 Ohms&lt;br /&gt;
* TypCurrent, is the discharge current used as reference, 2.33 Ah&lt;br /&gt;
&lt;br /&gt;
With these values, the approximation of different discharge curves is shown in figure.&lt;br /&gt;
&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
For completeness we report also the values used to fit the model to the Eclectrochem 3B36 cell [http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf]:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, 3.45 V&lt;br /&gt;
* NominalCellVoltage, 3.3 V&lt;br /&gt;
* ExpCellVoltage, 3.55 V&lt;br /&gt;
* RatedCapacity, 30.0 Ah&lt;br /&gt;
* NomCapacity, 27.0 Ah&lt;br /&gt;
* ExpCapacity, 15.0 Ah&lt;br /&gt;
* InternalResistance, 0.145 Ohms&lt;br /&gt;
* TypCurrent, 1.0 Ah&lt;br /&gt;
&lt;br /&gt;
The results are shown in figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The firsts times you put the values into the model, you can find disappointing results. Keep in mind that this is a model and you may have to manually fit the results.&lt;br /&gt;
&lt;br /&gt;
One of the key values are the exponential zone's ones. Changing these you can modify the slope of the discharge curve and its smoothness.&lt;br /&gt;
Another key value is the internal resistance that will make moves the discharge curves at different current drains.&lt;br /&gt;
&lt;br /&gt;
For a quick feedback of the parameters change it is recommend to use an Excel worksheet.&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4766</id>
		<title>Li-Ion model fitting</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4766"/>
		<updated>2010-08-08T19:46:53Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Typ-discharge.png|right|thumb|alt=A typical discharge curve|A typical discharge curve]]&lt;br /&gt;
A typical discharge curve, with the nominal and exponential zones highlighted, is shown in figure.&lt;br /&gt;
&lt;br /&gt;
To fit the Li-Ion energy model [http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139] to a specific type of cell, it is necessary to extract several parameters out from the datasheet.&lt;br /&gt;
&lt;br /&gt;
In this page we'll give two examples to help the user in the fitting process.&lt;br /&gt;
&lt;br /&gt;
During the fitting process it is better to first fit the model to a &amp;quot;reference&amp;quot; discharge current in the datasheet and then, slightly modify the model's parameters to fit it to the other discharge curves.&lt;br /&gt;
&lt;br /&gt;
== Parameters extraction &amp;amp; results ==&lt;br /&gt;
&lt;br /&gt;
Into the LiIonEnergyModel class, there are several parameters that characterizes the model's behaviour. We'll take the Panasonic CGR18650DA cell datasheet [http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf] as reference.&lt;br /&gt;
The reference discharge current is 2330 mA.&lt;br /&gt;
&lt;br /&gt;
[[File:Panasonic-liion-notes.png|right|thumb|alt=Model's parameters highlights|Model's parameters highlights]]&lt;br /&gt;
[[File:CGR18650DA.png|right|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
We give a description for each of those parameters and highlight them on the datasheet:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, is the fully charged cell's voltage (a)&lt;br /&gt;
* NominalCellVoltage, is the nominal voltage of the cell, 3.6 V&lt;br /&gt;
* ExpCellVoltage, is the voltage at the end of the exponential zone, 3.6 V (b)&lt;br /&gt;
* RatedCapacity, is the nominal capacity of the cell, 2.45 Ah&lt;br /&gt;
* NomCapacity, is the capacity at the end of the nominal zone, 1.1 Ah (c)&lt;br /&gt;
* ExpCapacity, is the capacity at the end of the exponential zone, 1.2 Ah (b)&lt;br /&gt;
* InternalResistance, is the internal resistance of cell, usually not found in datasheet this value must be extracted from the discharge curves, it affects the behaviour of the cell at different discharge currents, 0.083 Ohms&lt;br /&gt;
* TypCurrent, is the discharge current used as reference, 2.33 Ah&lt;br /&gt;
&lt;br /&gt;
With these values, the approximation of different discharge curves is shown in figure.&lt;br /&gt;
&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
For completeness we report also the values used to fit the model to the Eclectrochem 3B36 cell [http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf]:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, 3.45 V&lt;br /&gt;
* NominalCellVoltage, 3.3 V&lt;br /&gt;
* ExpCellVoltage, 3.55 V&lt;br /&gt;
* RatedCapacity, 30.0 Ah&lt;br /&gt;
* NomCapacity, 27.0 Ah&lt;br /&gt;
* ExpCapacity, 15.0 Ah&lt;br /&gt;
* InternalResistance, 0.145 Ohms&lt;br /&gt;
* TypCurrent, 1.0 Ah&lt;br /&gt;
&lt;br /&gt;
The results are shown in figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The firsts times you put the values into the model, you can find disappointing results. Keep in mind that this is a model and you may have to manually fit the results.&lt;br /&gt;
&lt;br /&gt;
One of the key values are the exponential zone's ones. Changing these you can modify the slope of the discharge curve and its smoothness.&lt;br /&gt;
Another key value is the internal resistance that will make moves the discharge curves at different currents drain.&lt;br /&gt;
&lt;br /&gt;
For a quick feedback of the parameters change it is recommend to use an Excel worksheet.&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4765</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4765"/>
		<updated>2010-08-08T14:57:22Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
In fact, 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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
In fact, 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) along with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented based on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
My name is Andrea Sacco I was born in 1985 and I live in Prato, Italy. I have finished the Master of Science in Telecommunications Engineering at University of Florence (Italy), on July 14th achieving a &amp;quot;Summa cum Laude&amp;quot; mark (110 over 110 with honours), with a Master Thesis titled &amp;quot;Multimedia Distributed Surveillance for Underwater Sensor Networks applied to critical monitoring&amp;quot;.&lt;br /&gt;
My Master thesis work has been 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 already have a Bachelor of Science in Information Engineering (curriculum Telematics) achieved in Dec. 2007 with a mark of 107 over 110.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 14:36, 8 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4764</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4764"/>
		<updated>2010-08-08T14:36:01Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) alogn with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented based on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 14:36, 8 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4763</id>
		<title>Li-Ion model fitting</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Li-Ion_model_fitting&amp;diff=4763"/>
		<updated>2010-08-08T14:09:43Z</updated>

		<summary type="html">&lt;p&gt;Socket: Created page with 'A typical discharge curve A typical discharge curve, with the nominal and exponential zones highlighted, is s…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Typ-discharge.png|right|thumb|alt=A typical discharge curve|A typical discharge curve]]&lt;br /&gt;
A typical discharge curve, with the nominal and exponential zones highlighted, is shown in figure.&lt;br /&gt;
&lt;br /&gt;
To fit the Li-Ion energy model [http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139] to a specific type of cell, it is necessary to extract several parameters out from the datasheet.&lt;br /&gt;
&lt;br /&gt;
In this page we'll give two examples to help the user in the fitting process.&lt;br /&gt;
&lt;br /&gt;
During the fitting process it is better to first fit the model to a &amp;quot;reference&amp;quot; discharge current in the datasheet and then, slightly modify the model's parameters to fit it to the other discharge curves.&lt;br /&gt;
&lt;br /&gt;
== Parameters extraction &amp;amp; results ==&lt;br /&gt;
&lt;br /&gt;
Into the LiIonEnergyModel class, there are several parameters that characterizes the model's behaviour. We'll take the Panasonic CGR18650DA cell datasheet [http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf] as reference.&lt;br /&gt;
The reference discharge current is 2330 mA.&lt;br /&gt;
&lt;br /&gt;
[[File:Panasonic-liion-notes.png|right|thumb|alt=Model's parameters highlights|Model's parameters highlights]]&lt;br /&gt;
[[File:CGR18650DA.png|right|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
We give a description for each of those parameters and highlight them on the datasheet:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, is the fully charged cell's voltage (a)&lt;br /&gt;
* NominalCellVoltage, is the nominal voltage of the cell, 3.6 V&lt;br /&gt;
* ExpCellVoltage, is the voltage at the end of the exponential zone, 3.6 V (b)&lt;br /&gt;
* RatedCapacity, is the nominal capacity of the cell, 2.45 Ah&lt;br /&gt;
* NomCapacity, is the capacity at the end of the nominal zone, 1.1 Ah (c)&lt;br /&gt;
* ExpCapacity, is the capacity at the end of the exponential zone, 1.2 Ah (b)&lt;br /&gt;
* InternalResistance, is the internal resistance of cell, usually not found in datasheet this value must be extracted from the discharge curves, it affects the behaviour of the cell at different discharge currents, 0.083 Ohms&lt;br /&gt;
* TypCurrent, is the discharge current used as reference, 2.33 Ah&lt;br /&gt;
&lt;br /&gt;
With these values, the approximation of different discharge curves is shown in figure.&lt;br /&gt;
&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
For completeness we report also the values used to fit the model to the Eclectrochem 3B36 cell [http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf]:&lt;br /&gt;
&lt;br /&gt;
* IntialCellVoltage, 3.45 V&lt;br /&gt;
* NominalCellVoltage, 3.3 V&lt;br /&gt;
* ExpCellVoltage, 3.55 V&lt;br /&gt;
* RatedCapacity, 30.0 Ah&lt;br /&gt;
* NomCapacity, 27.0 Ah&lt;br /&gt;
* ExpCapacity, 15.0 Ah&lt;br /&gt;
* InternalResistance, 0.145 Ohms&lt;br /&gt;
* TypCurrent, 1.0 Ah&lt;br /&gt;
&lt;br /&gt;
The results are shown in figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The firsts times you put the values into the model, you can find disappointing results. Keep in mind that this is a model and you may have to manually fit the results.&lt;br /&gt;
&lt;br /&gt;
One of the key values are the exponential zone's ones. Changing these you can modify the slope of the discharge curve and its smoothness.&lt;br /&gt;
Another key value is the internal resistance that will make moves the discharge curves at different currents drain.&lt;br /&gt;
&lt;br /&gt;
For a quick feddback of the parameters change we recommend to use an Excel worksheet.&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:3B36.png&amp;diff=4762</id>
		<title>File:3B36.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:3B36.png&amp;diff=4762"/>
		<updated>2010-08-08T14:02:56Z</updated>

		<summary type="html">&lt;p&gt;Socket: uploaded a new version of &amp;quot;File:3B36.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Li-Ion model's approximation of Electrochem Lithium / Sulfuryl Chloride 3B36 cell&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Panasonic-liion-notes.png&amp;diff=4761</id>
		<title>File:Panasonic-liion-notes.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Panasonic-liion-notes.png&amp;diff=4761"/>
		<updated>2010-08-08T13:58:09Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Typ-discharge.png&amp;diff=4760</id>
		<title>File:Typ-discharge.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Typ-discharge.png&amp;diff=4760"/>
		<updated>2010-08-08T10:57:43Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4759</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4759"/>
		<updated>2010-08-08T10:44:16Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) alogn with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented based on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4544139&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4758</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4758"/>
		<updated>2010-08-08T10:28:32Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related modifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) alogn with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented based on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4753</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4753"/>
		<updated>2010-08-07T14:24:23Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:Seaglider.jpg|200px|thumb|right|The Seaglider AUV]]&lt;br /&gt;
&lt;br /&gt;
Underwater Acoustics Networks is a research field that, in the last year, is gathering attention from researchers all over the world.&lt;br /&gt;
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.&lt;br /&gt;
Unfortunately, making on-field measurements is very expensive and there are no commonly accepted standard to base on.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:Remus.jpg|200px|thumb|left|The REMUS AUV]]&lt;br /&gt;
&lt;br /&gt;
The NS-3 UAN module is a first step in this direction, trying to offer a reliable and realistic tool.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The extension will consists of an Autonomous Underwater Vehicle (AUV) simulator (navigation and movement) alogn with an implementation of AUV batteries.&lt;br /&gt;
Moreover, it will be implemented, a power model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|energy class]].&lt;br /&gt;
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.&lt;br /&gt;
With the proposed extension, researchers will be able to use the framework to develop and evaluate their &amp;quot;applications&amp;quot;.&lt;br /&gt;
An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions.&lt;br /&gt;
Then, the final result, will be a complete simulation stack for underwater network applications.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Remus.jpg&amp;diff=4752</id>
		<title>File:Remus.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Remus.jpg&amp;diff=4752"/>
		<updated>2010-08-07T14:22:12Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Seaglider.jpg&amp;diff=4751</id>
		<title>File:Seaglider.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Seaglider.jpg&amp;diff=4751"/>
		<updated>2010-08-07T14:17:03Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4749</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4749"/>
		<updated>2010-08-07T09:44:50Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Usage and Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4746</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4746"/>
		<updated>2010-08-07T08:56:57Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
[12] Electrochem 3B36 Datasheet, http://www.electrochem.com.cn/products/Primary/HighRate/CSC/3B36.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4744</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4744"/>
		<updated>2010-08-06T18:42:44Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Socket|Socket]] 18:42, 6 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4743</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4743"/>
		<updated>2010-08-06T18:41:29Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related modifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|left|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
[[File:3B36.png|right|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 17:01, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4742</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4742"/>
		<updated>2010-08-06T18:03:58Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related modifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:3B36.png|left|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 17:01, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4741</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4741"/>
		<updated>2010-08-06T17:59:11Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related modifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
[[File:CGR18650DA.png|thumb|alt=Model's approximation of CGR18650DA curves|Model's approximation of CGR18650DA discharge curves]]&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
Regarding Seagliders, the batteries used into the AUV are Electrochem 3B36 Lithium / Sulfuryl Chloride cells [12].&lt;br /&gt;
Also with this cell type, the model seems to approximates the different discharge curves pretty well, as shown in the figure.&lt;br /&gt;
[[File:3B36.png|thumb|alt=Model's approximation of 3B36 curves|Model's approximation of 3B36 discharge curves]]&lt;br /&gt;
&lt;br /&gt;
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]]&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 17:01, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:3B36.png&amp;diff=4740</id>
		<title>File:3B36.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:3B36.png&amp;diff=4740"/>
		<updated>2010-08-06T17:51:57Z</updated>

		<summary type="html">&lt;p&gt;Socket: Li-Ion model's approximation of Electrochem Lithium / Sulfuryl Chloride 3B36 cell&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Li-Ion model's approximation of Electrochem Lithium / Sulfuryl Chloride 3B36 cell&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:CGR18650DA.png&amp;diff=4739</id>
		<title>File:CGR18650DA.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:CGR18650DA.png&amp;diff=4739"/>
		<updated>2010-08-06T17:38:01Z</updated>

		<summary type="html">&lt;p&gt;Socket: Li-ion model approximation for Panasonic CGR18650DA cell.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Li-ion model approximation for Panasonic CGR18650DA cell.&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4738</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4738"/>
		<updated>2010-08-05T17:01:48Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 17:01, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4737</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4737"/>
		<updated>2010-08-05T16:59:49Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Deliverables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* Two AUV simulator classes:&lt;br /&gt;
** src/mobility/glider-mobility-model.cc&lt;br /&gt;
*: src/mobility/glider-mobility-model.h&lt;br /&gt;
** src/mobility/remus-mobility-model.cc&lt;br /&gt;
*: src/mobility/remus-mobility-model.h&lt;br /&gt;
* Two AUV energy model classes:&lt;br /&gt;
** src/contrib/energy/model/glider-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/glider-energy-model.h&lt;br /&gt;
** src/contrib/energy/model/remus-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/remus-energy-model.h&lt;br /&gt;
* An WHOI modem energy model class:&lt;br /&gt;
** src/contrib/energy/model/micro-modem-energy-model.cc&lt;br /&gt;
*: src/contrib/energy/model/micro-modem-energy-model.h&lt;br /&gt;
* An Helper class for AUV simulator:&lt;br /&gt;
** src/helper/auv-mobility-helper.cc &lt;br /&gt;
*: src/helper/auv-mobility-helper.h&lt;br /&gt;
* A Li-Ion energy source model:&lt;br /&gt;
** src/contrib/energy/model/li-ion-energy-source.cc&lt;br /&gt;
*: src/contrib/energy/model/li-ion-energy-source.h&lt;br /&gt;
* Test cases:&lt;br /&gt;
** src/mobility/auv-mobility-test.cc&lt;br /&gt;
* Example scripts (see below)&lt;br /&gt;
* Documentation&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 16:43, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4736</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4736"/>
		<updated>2010-08-05T16:44:06Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Usage and Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;270&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 16:43, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4735</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4735"/>
		<updated>2010-08-05T16:43:04Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; style=&amp;quot;background: silver&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;260&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Socket|Socket]] 16:43, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4734</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4734"/>
		<updated>2010-08-05T16:35:40Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Usage and Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework's usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;left&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;260&amp;quot; style=&amp;quot;background: silver&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background: silver&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/auv-energy-model.cc || In this example we show the basic usage of an AUV energy model.&amp;lt;br/&amp;gt;Specifically, we show how to create a generic node, adding to it a basic energy source and consuming energy from the energy source.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&amp;lt;br/&amp;gt;Moreover, the AUV's position is tracked and plotted into a Gnuplot graph.&lt;br /&gt;
|-&lt;br /&gt;
| examples/mobility/waypoint-mobility.cc || We show how to use the WaypointMobilityModel with a non-standard ConstantVelocityMobilityModel.&amp;lt;br/&amp;gt;We first create a waypoint model with an underlying RemusMobilityModel setting the mobility trace with two waypoints.&amp;lt;br/&amp;gt;We then create a waypoint model with an underlying GliderMobilityModel setting the waypoints separately with the AddWaypoint method.&amp;lt;br/&amp;gt;The AUV's position is printed out every seconds. &lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/li-ion-energy-source.cc || In this simple example, we show how to create and drain energy from a LiIonEnergySource.&amp;lt;br/&amp;gt;We make a series of discharge calls to the energy source class with different current drain and duration until all the energy in depleted from the cell.&amp;lt;br/&amp;gt;After every discharge call we print out the actual cell voltage to verify that it follows the discharge curve of the CGR18650DA datasheet.&lt;br /&gt;
|-&lt;br /&gt;
| examples/uan/uan-energy-auv.cc || This is a comprehensive example where all the project's components are used.&amp;lt;br/&amp;gt;We setup two nodes, one fixed surface gateway equipped with an acoustic modem and a moving Seaglider AUV with an acoustic modem too.&amp;lt;br/&amp;gt;Using the waypoint mobility model with an underlying GliderMobilityModel, we make the glider descend to -1000 meters and then emerge to the water surface.&amp;lt;br/&amp;gt;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.&amp;lt;br/&amp;gt;At the end of the simulation are shown the energy consumptions of the two nodes and the networking stats.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4733</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4733"/>
		<updated>2010-08-05T16:16:18Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Usage and Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework0s usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;280&amp;quot; | Path&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 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. &lt;br /&gt;
|-&lt;br /&gt;
| 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 in 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.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4732</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4732"/>
		<updated>2010-08-05T15:48:41Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Usage and Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of the Framework0s usage can be found into the examples folder:&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4730</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4730"/>
		<updated>2010-08-05T15:46:50Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related modifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4729</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4729"/>
		<updated>2010-08-05T15:46:05Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
[9] C. M. Shepherd, &amp;quot;Design of Primary and Secondary Cells - Part 3. Battery discharge equation,&amp;quot; U.S. Naval Research Laboratory, 1963 &lt;br /&gt;
&lt;br /&gt;
[10] Tremblay, O.; Dessaint, L.-A.; Dekkiche, A.-I., &amp;quot;A Generic Battery Model for the Dynamic Simulation of Hybrid Electric Vehicles,&amp;quot; Ecole de Technologie Superieure, Universite du Quebec, 2007&lt;br /&gt;
&lt;br /&gt;
[11] Panasonic CGR18650DA Datasheet, http://www.panasonic.com/industrial/includes/pdf/Panasonic_LiIon_CGR18650DA.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4728</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4728"/>
		<updated>2010-08-05T15:42:42Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Energy-related classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related modifications ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' AUV energy models '''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|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.&lt;br /&gt;
Have been developed two AUV energy models:&lt;br /&gt;
&lt;br /&gt;
* GliderEnergyModel, computes the power consumption of the vehicle based on the current buoyancy value and vertical speed [7]&lt;br /&gt;
* RemusEnergyModel, computes the power consumption of the vehicle based on the current speed, as it is propelled by a brush-less electric motor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, has been implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class model real-world modem energy consumptions.&lt;br /&gt;
The class follows pretty closely the RadioEnergyModel class as the transducer behaviour is pretty close to the one of a wifi radio.&lt;br /&gt;
&lt;br /&gt;
The power consumption values implemented into the model are as follows [8]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;150&amp;quot; | Modem State&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Power Consumption&lt;br /&gt;
|-&lt;br /&gt;
| TX || 50 W&lt;br /&gt;
|-&lt;br /&gt;
| RX || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Idle || 158 mW&lt;br /&gt;
|-&lt;br /&gt;
| Sleep || 5.8 mW&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' UAN module energy modifications '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
Moreover, have been placed, inside the layer's code, calls to this method when the modem changes its state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Li-Ion batteries model '''&lt;br /&gt;
&lt;br /&gt;
A generic Li-Ion battery model has been implemented base on [9][10].&lt;br /&gt;
The model can be fitted to any type of Li-Ion battery simply changing the model's parameters&lt;br /&gt;
The default values are fitted for the Panasonic CGR18650DA Li-Ion Battery [11].&lt;br /&gt;
&lt;br /&gt;
As shown in figure.. the model approximates very well the Li-Ion cells.&lt;br /&gt;
&lt;br /&gt;
In the next future will be described the parameters extraction procedure to fit the model to a specific type of cell.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4726</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4726"/>
		<updated>2010-08-05T15:04:08Z</updated>

		<summary type="html">&lt;p&gt;Socket: Auv simulator update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
* Project's codereview: http://codereview.appspot.com/1743057&lt;br /&gt;
* Project's mercurial repo: http://code.nsnam.org/andrea/ns-3-dev-uan-framework&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The project is divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV mobility models&lt;br /&gt;
* the energy-related classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV mobility models&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# power consumption models for two AUVs&lt;br /&gt;
# Helper for mobility models and complete AUV.&lt;br /&gt;
# Example scripts&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components Description ===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account maximum speed, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the characteristic saw-tooth movement.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: 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.&lt;br /&gt;
# Helpers for AUV mobility models and complete AUV.&lt;br /&gt;
#: 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. &lt;br /&gt;
#: 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.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, have been written test cases to test the mobility models functioning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUV simulator ===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The AUV simulator API has been derived from the ConstantVelocityMobilityModel. It is shown below&lt;br /&gt;
&lt;br /&gt;
 class AuvMobilityModel : public ConstantVelocityMobilityModel &lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move along the given direction&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Mobility Models '''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
The Glider model holds also some extra parameters like maximum buoyancy values, and maximum and minimum glide slopes.&lt;br /&gt;
&lt;br /&gt;
Both classes, RemusMobilityModel and GliderMobilityModel, handle also the AUV power consumption, utilizing the relative power models.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Helpers '''&lt;br /&gt;
&lt;br /&gt;
Have been developed three types of helper:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
* 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Energy-related classes ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AUV energy source'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Energy_Source|Energy Source]] interface, it will be implemented a specific energy source for the two AUV classes (REMUS and Seaglider). This classes will reproduce the behaviour of the AUV batteries 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, it will be implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class will model real-world modem energy consuptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MAC energy modifications'''&lt;br /&gt;
&lt;br /&gt;
The connection point between the energy source and the energy model, will be the MAC layer. This layer, is the one responsible of using the two classes. Thus, the available underwater MAC protocols, will be modified to use the energy model class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4712</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4712"/>
		<updated>2010-08-03T07:52:34Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Deliverables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The work will be divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV simulator&lt;br /&gt;
* the energy classes implementation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Cases===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 the available MAC protocols.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Components Description===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account weight, maximum velocity, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the saw-tooth movement and its times.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: Implements a WHOI modem specific power profile, to keep trace of its power consumption. This can be used to compare the protocol specific power performance. In order to managing to use such power profile, the available MAC protocols will be modified i order to use the modem power profile.&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
#: An Helper class will be implemented for the AUV simulator to allow users don't mind about the back office operations. Some utility classes will be implemented to let users set the navigation route more easily, improving usability.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, test cases will be written as required, to test the working of the AUV simulator, of the energy-related classes and of the utility classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AUV simulator===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The API for the AUV simulator will looks like:&lt;br /&gt;
&lt;br /&gt;
 class UanAuvMobilityModel : public MobilityModel&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move forward&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    ** \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
This interface will be implemented by the UanRemusMobilityModel and the UanGliderMobilityModel classes. Both model will use a constant velocity movement. The two classes will hold the navigation parameteres for the two different AUVs, like maximum gliding angles, maximum operating depth, maximum and minimum velocity. The relative helper class, will allow the user to instantiate the intended AUV type, to install an application container, as well as the uan communication stack (mac, transducer, channel).&lt;br /&gt;
&lt;br /&gt;
Along with these two mobility models, it will be developed two Mobility Traces Generators, one for the Remus and one for the SeaGlider.&lt;br /&gt;
The Seaglider's one, will implements the characteristic whale-like movement of the AUV, according to the documentation [7].&lt;br /&gt;
&lt;br /&gt;
===Energy-related classes===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AUV energy source'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Energy_Source|Energy Source]] interface, it will be implemented a specific energy source for the two AUV classes (REMUS and Seaglider). This classes will reproduce the behaviour of the AUV batteries 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, it will be implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class will model real-world modem energy consuptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MAC energy modifications'''&lt;br /&gt;
&lt;br /&gt;
The connection point between the energy source and the energy model, will be the MAC layer. This layer, is the one responsible of using the two classes. Thus, the available underwater MAC protocols, will be modified to use the energy model class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy model classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4654</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4654"/>
		<updated>2010-07-25T13:45:33Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* About me */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The work will be divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV simulator&lt;br /&gt;
* the energy classes implementation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Cases===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 the available MAC protocols.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Components Description===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account weight, maximum velocity, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the saw-tooth movement and its times.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: Implements a WHOI modem specific power profile, to keep trace of its power consumption. This can be used to compare the protocol specific power performance. In order to managing to use such power profile, the available MAC protocols will be modified i order to use the modem power profile.&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
#: An Helper class will be implemented for the AUV simulator to allow users don't mind about the back office operations. Some utility classes will be implemented to let users set the navigation route more easily, improving usability.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, test cases will be written as required, to test the working of the AUV simulator, of the energy-related classes and of the utility classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AUV simulator===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The API for the AUV simulator will looks like:&lt;br /&gt;
&lt;br /&gt;
 class UanAuvMobilityModel : public MobilityModel&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move forward&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    ** \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
This interface will be implemented by the UanRemusMobilityModel and the UanGliderMobilityModel classes. Both model will use a constant velocity movement. The two classes will hold the navigation parameteres for the two different AUVs, like maximum gliding angles, maximum operating depth, maximum and minimum velocity. The relative helper class, will allow the user to instantiate the intended AUV type, to install an application container, as well as the uan communication stack (mac, transducer, channel).&lt;br /&gt;
&lt;br /&gt;
Along with these two mobility models, it will be developed two Mobility Traces Generators, one for the Remus and one for the SeaGlider.&lt;br /&gt;
The Seaglider's one, will implements the characteristic whale-like movement of the AUV, according to the documentation [7].&lt;br /&gt;
&lt;br /&gt;
===Energy-related classes===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AUV energy source'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Energy_Source|Energy Source]] interface, it will be implemented a specific energy source for the two AUV classes (REMUS and Seaglider). This classes will reproduce the behaviour of the AUV batteries 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, it will be implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class will model real-world modem energy consuptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MAC energy modifications'''&lt;br /&gt;
&lt;br /&gt;
The connection point between the energy source and the energy model, will be the MAC layer. This layer, is the one responsible of using the two classes. Thus, the available underwater MAC protocols, will be modified to use the energy model class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy source classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Summa cum Laude&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework/MidTermReport&amp;diff=4560</id>
		<title>GSOC2010UANFramework/MidTermReport</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework/MidTermReport&amp;diff=4560"/>
		<updated>2010-07-06T09:59:20Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The work approach, has been described in the [[GSOC2010UANFramework|wiki page]].&lt;br /&gt;
&lt;br /&gt;
The steps I've followed during this period are resumed below.&lt;br /&gt;
&lt;br /&gt;
=== Achieved goals ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have initially identified the key aspects of the implementation, we have defined the overall architecture of the module extension and, we have made some UML diagrams to fix the implementation concepts.&lt;br /&gt;
We've defined an abstract interface for AUVs called UanAuvMobilityModel and two concrete subclasses implementing it, UanGliderMobilityModel and UanRemusMobilityModel.&lt;br /&gt;
&lt;br /&gt;
Next, I've started looking at the implementation details for the two AUV classes.&lt;br /&gt;
I've gathered as much information as possible on the AUVs, looking at the available datasheets, looking into literature, emailing the producers, etc.&lt;br /&gt;
&lt;br /&gt;
Regarding the Seaglider, I've been able to gather a lot of useful information, about physical construction, about navigation, about propulsion and energy systems (thanks to Fritz Stahr and Charles Eriksen at UW). Unfortunately one of the papers [1] had some inaccuracies into the models and images. This has made me loose some time, trying to figure out the problem..&lt;br /&gt;
&lt;br /&gt;
Regarding the REMUS AUV instead, I've been able to obtain very few information. I've emailed Capt. Ernest Petzrick at Hydroid Inc. (Sales Engineer) looking for information about batteries, etc. but he said me that the only publicly available information are those on the site. I think this is due to the use of REMUS AUVs by U.S. NAVY..&lt;br /&gt;
&lt;br /&gt;
Anyway, with the available information I've started implementing the REMUS mobility class (UanRemusMobilityModel).&lt;br /&gt;
It basically uses a constant velocity model to describe the AUV movement, and introduces the constraints related to the REMUS, like maximum operational depth, maximum pitch angle, maximum and minimum velocity.&lt;br /&gt;
It has been implemented also a real-world navigation behaviour, stopping the vehicle when it reaches the water surface or the maximum depth.&lt;br /&gt;
&lt;br /&gt;
Moreover, an emerging / submerging command has been implemented, that makes the vehicle emerge or submerge to a given depth as fast as possible and, when it reaches its target, it calls a callback, previously set by the user.&lt;br /&gt;
&lt;br /&gt;
I've also implemented a UNIT test case for the mobility class to test its functioning.&lt;br /&gt;
&lt;br /&gt;
Next, I've started implementing the Seaglider mobility model. It is quite close to the Remus model except for the buoyancy control.&lt;br /&gt;
In fact, the Seaglider, doesn't have a electric propeller but instead it controls its velocity with a change in its buoyancy.&lt;br /&gt;
Due to this behaviour, I've implemented the model for the buoyancy control exposed in [1].&lt;br /&gt;
So, when the user set a specific speed and pitch angle, the class computes the buoyancy needed to maintain the given velocity. It also computes the needed power to maintain the given buoyancy value.&lt;br /&gt;
The class holds also the Seaglider's related constraints like max depth, maximum and minimum glide angles, max horizontal and vertical speed as well as maximum buoyancy value.&lt;br /&gt;
&lt;br /&gt;
Finally I have implemented UNIT test for the seaglider mobility model.&lt;br /&gt;
I've added the tests for both the remus and seaglider AUVs to a test suite called &amp;quot;auv-mobility&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For the end of the week I'm planning to release the helpers and example scripts for the two mobility classes, as from the project's schedule.&lt;br /&gt;
The code produced until now, has been posted to the ns-3 mercurial repository [2] and into a codereview project [3].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remaining tasks ===&lt;br /&gt;
&lt;br /&gt;
I have now to implement all the energy related part of the project, thus two evergy source classes for the AUVs, an energy model for the umodem, modify the existing mac protocols to use the energy model, test cases and, of course, documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] Eriksen et al. - Seaglider: A Long-Range Autonomous Underwater Vehicle for Oceanographic Research&lt;br /&gt;
&lt;br /&gt;
[2] http://code.nsnam.org/andrea/ns-3-dev-uan-framework/&lt;br /&gt;
&lt;br /&gt;
[3] http://codereview.appspot.com/1618042/show&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4559</id>
		<title>GSOC2010UANFramework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework&amp;diff=4559"/>
		<updated>2010-07-06T09:57:22Z</updated>

		<summary type="html">&lt;p&gt;Socket: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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 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 &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem and, the available MAC protocols, will be modified to use the [[NS-3_energy_model|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 &amp;quot;applications&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
The work will be divided into two main parts:&lt;br /&gt;
&lt;br /&gt;
* the AUV simulator&lt;br /&gt;
* the energy classes implementation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the project components will be:&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
# classes for AUV batteries and WHOI modem power profile&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
# Test cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Cases===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 the available MAC protocols.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Components Description===&lt;br /&gt;
&lt;br /&gt;
# AUV simulator&lt;br /&gt;
#: 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 &amp;quot;sea gliders&amp;quot; [7].&lt;br /&gt;
#: The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the &amp;quot;sea glider&amp;quot; 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 &amp;quot;saw-tooth&amp;quot; movement.&lt;br /&gt;
#: Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.&lt;br /&gt;
#: Thus taking into account weight, maximum velocity, directional capabilities, emerging and submerging times.&lt;br /&gt;
#: Regarding the sea gliders, will be modelled the saw-tooth movement and its times.&lt;br /&gt;
#: The AUV class is supposed to aggregate a navigation application (not required) and a transducer.&lt;br /&gt;
# Implementation of AUV batteries and WHOI modem power profile&lt;br /&gt;
#: This will be done exploiting the newly reviewed [[NS-3_energy_model|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.&lt;br /&gt;
#: Implements a WHOI modem specific power profile, to keep trace of its power consumption. This can be used to compare the protocol specific power performance. In order to managing to use such power profile, the available MAC protocols will be modified i order to use the modem power profile.&lt;br /&gt;
# Helper and utility classes for 1.&lt;br /&gt;
#: An Helper class will be implemented for the AUV simulator to allow users don't mind about the back office operations. Some utility classes will be implemented to let users set the navigation route more easily, improving usability.&lt;br /&gt;
# Test cases&lt;br /&gt;
#: Following the ns-3 development model, test cases will be written as required, to test the working of the AUV simulator, of the energy-related classes and of the utility classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components Details ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AUV simulator===&lt;br /&gt;
&lt;br /&gt;
[[File:AuvSimulatorClassDiag.png|thumb|The class diagram for the AUV Simulator implementation]]&lt;br /&gt;
&lt;br /&gt;
The API for the AUV simulator will looks like:&lt;br /&gt;
&lt;br /&gt;
 class UanAuvMobilityModel : public MobilityModel&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to move forward&lt;br /&gt;
    */&lt;br /&gt;
   void Move (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to stop&lt;br /&gt;
    */&lt;br /&gt;
   void Stop (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to emerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which emerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Emerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * Makes the AUV to submerge at the maximum velocity&lt;br /&gt;
    * to the given depth&lt;br /&gt;
    * \param depth the depth to which submerge to, in m (negative)&lt;br /&gt;
    */&lt;br /&gt;
   void Submerge (double depth);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current pitch in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetPitch () const;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * \param pitch the pitch to set in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetPitch (double pitch);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current depth&lt;br /&gt;
    */&lt;br /&gt;
   double GetDepth (void);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   double GetDirection (void) const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param the heading direction in degrees&lt;br /&gt;
    */&lt;br /&gt;
   void SetDirection (double dir);&lt;br /&gt;
   /**&lt;br /&gt;
    * \returns the current speed in m/s&lt;br /&gt;
    */&lt;br /&gt;
   double GetSpeed () const;&lt;br /&gt;
   /**&lt;br /&gt;
    * \param speed the speed to set in m/s&lt;br /&gt;
    */&lt;br /&gt;
   void SetSpeed (double speed);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param velocity the velocity vector to set&lt;br /&gt;
    */&lt;br /&gt;
   void SetVelocity (const Vector &amp;amp;velocity);&lt;br /&gt;
   /**&lt;br /&gt;
    * \param cb the callback being called at the end of the emerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetEmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    ** \param cb the callback being called at the end of the submerging process&lt;br /&gt;
    */&lt;br /&gt;
   virtual void SetSubmergeCallback (Callback&amp;lt;void, Ptr&amp;lt;MobilityModel&amp;gt; &amp;gt; cb) = 0;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
This interface will be implemented by the UanRemusMobilityModel and the UanGliderMobilityModel classes. Both model will use a constant velocity movement. The two classes will hold the navigation parameteres for the two different AUVs, like maximum gliding angles, maximum operating depth, maximum and minimum velocity. The relative helper class, will allow the user to instantiate the intended AUV type, to install an application container, as well as the uan communication stack (mac, transducer, channel).&lt;br /&gt;
&lt;br /&gt;
Along with these two mobility models, it will be developed two Mobility Traces Generators, one for the Remus and one for the SeaGlider.&lt;br /&gt;
The Seaglider's one, will implements the characteristic whale-like movement of the AUV, according to the documentation [7].&lt;br /&gt;
&lt;br /&gt;
===Energy-related classes===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AUV energy source'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Energy_Source|Energy Source]] interface, it will be implemented a specific energy source for the two AUV classes (REMUS and Seaglider). This classes will reproduce the behaviour of the AUV batteries 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem energy model'''&lt;br /&gt;
&lt;br /&gt;
Basing on the [[NS-3_energy_model#Device_Energy_Model|Device Energy Model]] interface, it will be implemented a specific energy model for the WHOI &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;modem. The class will model real-world modem energy consuptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MAC energy modifications'''&lt;br /&gt;
&lt;br /&gt;
The connection point between the energy source and the energy model, will be the MAC layer. This layer, is the one responsible of using the two classes. Thus, the available underwater MAC protocols, will be modified to use the energy model class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
# Two AUV simulator classes.&lt;br /&gt;
# Two AUV energy source classes.&lt;br /&gt;
# An WHOI modem energy model class.&lt;br /&gt;
# An Helper class for AUV simulator.&lt;br /&gt;
# Test cases for 1. and 2.&lt;br /&gt;
# Example scripts for 1.and 2.&lt;br /&gt;
# Documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Examples ==&lt;br /&gt;
&lt;br /&gt;
Work in progress. The examples will be added as soon as possible. Stay tuned!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
# 24/05 - 30/05: Design the overall architecture, make UML diagrams, identify the key aspects and problems of the implementation&lt;br /&gt;
# 31/05 - 09/06        Implement the electric motor propelled AUV simulator&lt;br /&gt;
# 10/06 - 16/06        Test Cases for electric motor propelled AUV Simulator&lt;br /&gt;
# 17/06 - 26/06        Implement the Sea Gliders AUV simulator&lt;br /&gt;
# 27/06 - 03/07        Test cases for Sea Gliders AUV simulator&lt;br /&gt;
# 04/07 - 11/07        Example scripts for AUVs simulator and Helper class&lt;br /&gt;
# 12/07                Mid Term Evaluation submission, [[GSOC2010UANFramework/MidTermReport|Mid Term Report]]&lt;br /&gt;
# 13/07 - 19/07        Implement the AUV energy source classes&lt;br /&gt;
# 20/07 - 22/07        Implement the WHOI modem energy model class&lt;br /&gt;
# 23/07 - 26/07        Energy modification of the underwater MAC protocols.&lt;br /&gt;
# 27/07 - 30/07        Test cases for energy related classes&lt;br /&gt;
# 31/07 - 05/08        Example scripts for power management layer&lt;br /&gt;
# 09/08                Suggested 'Pencil Down'&lt;br /&gt;
# 06/08 - 16/08        Documentation and Integration of the project&lt;br /&gt;
# 16/08                Final Evaluation submission&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[1] NS-3 Bug 800, http://www.nsnam.org/bugzilla/show_bug.cgi?id=800&lt;br /&gt;
&lt;br /&gt;
[2] Mazzetti, P.; Nativi, S.; Sacco, A.; Bigagli, L.; , &amp;quot;Integration of REST style and AJAX technologies to build Web applications; an example of framework for Location-Based-Services,&amp;quot; Information and Communication Technologies: From Theory to Applications, 2008. ICTTA 2008. 3rd International Conference on , vol., no., pp.1-6, 7-11 April 2008&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=4530218&amp;amp;isnumber=4529902&lt;br /&gt;
&lt;br /&gt;
[3] BINGHAM, D.; DRAKE, T.; HILL, A.; LOTT, R.; The Application of Autonomous Underwater Vehicle (AUV) Technology in the Oil Industry – Vision and Experiences,&lt;br /&gt;
URL: http://www.fig.net/pub/fig_2002/Ts4-4/TS4_4_bingham_etal.pdf&lt;br /&gt;
&lt;br /&gt;
[4] AUVfest2008: Underwater mines; http://oceanexplorer.noaa.gov/explorations/08auvfest/background/mines/mines.html&lt;br /&gt;
&lt;br /&gt;
[5] Hydroinc Products; http://www.hydroidinc.com/products.html&lt;br /&gt;
&lt;br /&gt;
[6] WHOI, Autonomous Underwater Vehicle, REMUS; http://www.whoi.edu/page.do?pid=29856&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=972073&amp;amp;userType=inst&lt;br /&gt;
&lt;br /&gt;
[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.&lt;br /&gt;
URL: http://ieeexplore.ieee.org/iel5/10918/34367/01639901.pdf&lt;br /&gt;
&lt;br /&gt;
== About me ==&lt;br /&gt;
&lt;br /&gt;
My name is Andrea Sacco I was born 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 am going to defend my Master Thesis on mid-July. I already have a Bachelor of Science in Information Engineering (curriculum Telematics) achieved in Dec. 2007 with a rank of 107 over 110.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Background'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Work and Research'''&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Personal Interests'''&lt;br /&gt;
&lt;br /&gt;
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).&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework/MidTermReport&amp;diff=4557</id>
		<title>GSOC2010UANFramework/MidTermReport</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2010UANFramework/MidTermReport&amp;diff=4557"/>
		<updated>2010-07-06T09:52:34Z</updated>

		<summary type="html">&lt;p&gt;Socket: Mid Term Report&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The work approach, has been described in the wiki page [1].&lt;br /&gt;
&lt;br /&gt;
The steps I've followed during this period are resumed below.&lt;br /&gt;
&lt;br /&gt;
=== Achieved goals ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have initially identified the key aspects of the implementation, we have defined the overall architecture of the module extension and, we have made some UML diagrams to fix the implementation concepts.&lt;br /&gt;
We've defined an abstract interface for AUVs called UanAuvMobilityModel and two concrete subclasses implementing it, UanGliderMobilityModel and UanRemusMobilityModel.&lt;br /&gt;
&lt;br /&gt;
Next, I've started looking at the implementation details for the two AUV classes.&lt;br /&gt;
I've gathered as much information as possible on the AUVs, looking at the available datasheets, looking into literature, emailing the producers, etc.&lt;br /&gt;
&lt;br /&gt;
Regarding the Seaglider, I've been able to gather a lot of useful information, about physical construction, about navigation, about propulsion and energy systems (thanks to Fritz Stahr and Charles Eriksen at UW). Unfortunately one of the papers [2] had some inaccuracies into the models and images. This has made me loose some time, trying to figure out the problem..&lt;br /&gt;
&lt;br /&gt;
Regarding the REMUS AUV instead, I've been able to obtain very few information. I've emailed Capt. Ernest Petzrick at Hydroid Inc. (Sales Engineer) looking for information about batteries, etc. but he said me that the only publicly available information are those on the site. I think this is due to the use of REMUS AUVs by U.S. NAVY..&lt;br /&gt;
&lt;br /&gt;
Anyway, with the available information I've started implementing the REMUS mobility class (UanRemusMobilityModel).&lt;br /&gt;
It basically uses a constant velocity model to describe the AUV movement, and introduces the constraints related to the REMUS, like maximum operational depth, maximum pitch angle, maximum and minimum velocity.&lt;br /&gt;
It has been implemented also a real-world navigation behaviour, stopping the vehicle when it reaches the water surface or the maximum depth.&lt;br /&gt;
&lt;br /&gt;
Moreover, an emerging / submerging command has been implemented, that makes the vehicle emerge or submerge to a given depth as fast as possible and, when it reaches its target, it calls a callback, previously set by the user.&lt;br /&gt;
&lt;br /&gt;
I've also implemented a UNIT test case for the mobility class to test its functioning.&lt;br /&gt;
&lt;br /&gt;
Next, I've started implementing the Seaglider mobility model. It is quite close to the Remus model except for the buoyancy control.&lt;br /&gt;
In fact, the Seaglider, doesn't have a electric propeller but instead it controls its velocity with a change in its buoyancy.&lt;br /&gt;
Due to this behaviour, I've implemented the model for the buoyancy control exposed in [2].&lt;br /&gt;
So, when the user set a specific speed and pitch angle, the class computes the buoyancy needed to maintain the given velocity. It also computes the needed power to maintain the given buoyancy value.&lt;br /&gt;
The class holds also the Seaglider's related constraints like max depth, maximum and minimum glide angles, max horizontal and vertical speed as well as maximum buoyancy value.&lt;br /&gt;
&lt;br /&gt;
Finally I have implemented UNIT test for the seaglider mobility model.&lt;br /&gt;
I've added the tests for both the remus and seaglider AUVs to a test suite called &amp;quot;auv-mobility&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For the end of the week I'm planning to release the helpers and example scripts for the two mobility classes, as from the project's schedule.&lt;br /&gt;
The code produced until now, has been posted to the ns-3 mercurial repository [3] and into a codereview project [4].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remaining tasks ===&lt;br /&gt;
&lt;br /&gt;
I have now to implement all the energy related part of the project, thus two evergy source classes for the AUVs, an energy model for the umodem, modify the existing mac protocols to use the energy model, test cases and, of course, documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] http://www.nsnam.org/wiki/index.php/GSOC2010UANFramework&lt;br /&gt;
&lt;br /&gt;
[2] Eriksen et al. - Seaglider: A Long-Range Autonomous Underwater Vehicle for Oceanographic Research&lt;br /&gt;
&lt;br /&gt;
[3] http://code.nsnam.org/andrea/ns-3-dev-uan-framework/&lt;br /&gt;
&lt;br /&gt;
[4] http://codereview.appspot.com/1618042/show&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4553</id>
		<title>HOWTO configure Eclipse with ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=HOWTO_configure_Eclipse_with_ns-3&amp;diff=4553"/>
		<updated>2010-07-01T09:58:32Z</updated>

		<summary type="html">&lt;p&gt;Socket: waf builder configuration update, screenshot added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configure Mercurial ==&lt;br /&gt;
&lt;br /&gt;
* First download eclipse IDE for C++ developers from http://www.eclipse.org&lt;br /&gt;
* Install eclipse into you operating system&lt;br /&gt;
* Install mercurial eclipse plugin:&lt;br /&gt;
** Go to help-&amp;gt;software update&lt;br /&gt;
** Click on available software&lt;br /&gt;
** Click on add a site&lt;br /&gt;
** Add http://www.vectrace.com/eclipse-update/ taken from http://www.vectrace.com/mercurialeclipse/ then click on mercurialeclipse and check the box and click on install&lt;br /&gt;
* We suppose that you already have mercurial installed on your machine&lt;br /&gt;
* start eclipse, it will create a workspace directory NB:It is advised to use a different directory for the code say ~/src&lt;br /&gt;
* clone the mercurial reppository: go to ~/src and execute hg clone http://code.nsnam.org/ns-3-dev ns3dev&lt;br /&gt;
* create a new empty C++ project with your preferred name and the path is ~/src/ns3devt on &lt;br /&gt;
* click right on the project and go to team-&amp;gt;share project&lt;br /&gt;
* click on next and click on use local hg and finish&lt;br /&gt;
&lt;br /&gt;
You should have now your project configured with eclipse and be able to pull, update, view history, etc in eclipse. The next steps will allow you to configure, compile and run the code from eclipse.&lt;br /&gt;
&lt;br /&gt;
== Configure Waf Builder ==&lt;br /&gt;
[[File:Builder-settings.png|200px|thumb|right|Builder Settings Screenshot]]&lt;br /&gt;
[[File:Builder-behaviour.png|200px|thumb|right|Builder Behaviour Screenshot]]&lt;br /&gt;
* Click right on the project and click on properties&lt;br /&gt;
* Click on C/C++ build and configure the builder&lt;br /&gt;
* Uncheck the box Use default build command&lt;br /&gt;
* Uncheck the box Generate makefile automatically&lt;br /&gt;
* Write ${workspace_loc:/ns3dev}/waf in the build command&lt;br /&gt;
* Make sure your build directory is the build directory in ns3dev (${workspace_loc:/ns3dev/build})&lt;br /&gt;
* Click on the behaviour tab&lt;br /&gt;
* Remove the `all` option in front of the build checkbox and write `build`&lt;br /&gt;
* Now when you click on build you will be able to build the project using waf&lt;br /&gt;
&lt;br /&gt;
== Configure Debugger ==&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
[[File:Debug-main.png|200px|thumb|left|Debugger main tab]]&lt;br /&gt;
[[File:Debug-env.png|200px|thumb|left|Debugger environment tab]]&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Debug-env.png&amp;diff=4552</id>
		<title>File:Debug-env.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Debug-env.png&amp;diff=4552"/>
		<updated>2010-07-01T09:54:52Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Debug-main.png&amp;diff=4551</id>
		<title>File:Debug-main.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Debug-main.png&amp;diff=4551"/>
		<updated>2010-07-01T09:54:33Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Builder-behaviour.png&amp;diff=4550</id>
		<title>File:Builder-behaviour.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Builder-behaviour.png&amp;diff=4550"/>
		<updated>2010-07-01T09:40:40Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Builder-settings.png&amp;diff=4549</id>
		<title>File:Builder-settings.png</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Builder-settings.png&amp;diff=4549"/>
		<updated>2010-07-01T09:39:43Z</updated>

		<summary type="html">&lt;p&gt;Socket: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Socket</name></author>
	</entry>
</feed>