GSOC2010UANFramework

From Nsnam
Revision as of 15:45, 7 May 2010 by Socket (Talk | contribs) (Deliverables)

Jump to: navigation, search

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) and a power management layer. For the moment, the UAN module can be used to make some sort of performance comparisons of the available MAC protocols, or tests the communication channel. With the proposed extension, researchers will be able to use the framework to develop and evaluate their "applications". An application, is intended as a more complete concept, including each parts of the UAN module integrated with the proposed extensions. Then, the final result, will be a complete simulation stack for underwater network applications.


Approach

The work will be divided into two main parts:

  • the AUV simulator
  • the power management layer


Thus, the project components will be:

  1. AUV simulator
  2. power management layer
  3. Helper and utility classes for 1. and 2.
  4. Test cases


Use Cases

AUV simulator: the user will be able to program the AUV to navigate over a path of waypoints, to control the velocity, profundity, direction and pitch of the AUV, as well as to tell the AUV to emerge or submerge. Power management: the user will be able to control the behaviour of a transducer putting it into a specific state (see later); he will be able to set a specific power profile for a class of transducers; he will be able to get the power consumed by the transducer in each state.


Components Description

  1. AUV simulator
    Implement a model of the real world movement/navigation of AUV. This involves implementing two classes modelling the two major categories of AUVs: electric motor propelled (like REMUS class [5][6]) and "sea gliders" [7].
    The classic AUVs are submarine-like devices, propelled by an electric motor linked with a propeller. Instead, the "sea glider" class exploits small changes in its buoyancy that, in conjunction with wings, can convert vertical motion to horizontal. So, a glider will reach a point into the water by describing a "saw-tooth" movement.
    Modelling the AUV navigation, involves in considering a real-world AUV class and, model its features into the simulator.
    Thus taking into account weight, maximum velocity, directional capabilities, emerging and submerging times.
    Regarding the sea gliders, will be modelled the saw-tooth movement and its times.
    The AUV class is supposed to aggregate a navigation application (not required) and a transducer.
  2. power management layer
    Implement a power management layer for the (Acoustic) transducer. This will basically offers an interface to manage the power consumption of a generic transducer, exposing some methods to put the transducer into a specific state (TX, RX, IDLE, SLEEP, etc.) for a specific amount of time. Internally the class will then store the power consumption relative to the time spent into each state. To compute specifics power consumption, the power management will have to be supplied of a power profile, holding the specific transducer power characteristics.
  3. Helper and utility classes for 1) and 2)
    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.
    An Helper class will be implemented also for the power management layer.
  4. Test cases
    Following the ns-3 development model, test cases will be written as required, to test the working of the AUV simulator, of the power management layer and of the utility classes.


Components Details

AUV simulator

The API for the AUV simulator will looks like:

class UanGenericAuv : public Node
{
public:
  //start the auv movement
  void Move();
  //stop the auv movement
  void Stop();
  //start the surfacing operation
  void Emerge();
  //start the submerging operation
  void Submerge();
  //get the actual pitch of the vehicle
  double getPitch() const;
  //get the actual direction of the vehicle
  double getDirection() const;
  //get the actual profundity of the vehicle
  double getProfundity() const;
  //get the actual velocity of the vehicle
  double getVelocity() const;
  //get the actual position of the vehicle
  Vector getActualPosition() const;
  //set the actual pitch angle of the vehicle
  void setPitch(double m_pitch);
  //set the actual direction of the vehicle
  void setDirection(double m_direction);
  //set the actual profundity of the vehicle
  void setProfundity(double m_profundity);
  //set the actual velocity of the vehicle
  void setVelocity(double m_velocity);
  //set the initial position of the vehicle
  void setInitialPosition(Vector position);
};

This interface will be implemented by the UanClassicAuv and the UanGliderAuv classes. The difference in between the two implementations will be the mobility model. While the first will use a constantVelocity/waypoint model, the second will use an ad-hoc model that simulates the saw-tooth movement (GliderMobilityModel). The relative helper class, will allow the user to instantiate the wanted AUV type, to install an application container, as well as the uan communication stack (mac, transducer, channel).

The API for the glider mobility model will looks like:

class GliderMobilityModel : public MobilityModel
{
public:
  void setPosition(Vector position);
  Vector getCurrentPosition() const;
  void setDirection(double direction);
  double getDirection() const;
  void setGlidingMode(GlidingMode mode);
  GlidingMode getGlidingMode() const;
  void Update();
}

Where the gliding mode will discriminate whether the vehicle will act a whale-like movement (getting to the surface at every dive) or a completely underwater one (not getting to the surface). According to the gliding mode, and to the navigation bounds, the class will determine the number and slope of dives.


Power management layer

The power management layer is supposed to be an interface to trace the consumed power of a generic device. This could be an acoustic transducer as well as a wifi module or whatever the case. This interface will be kept as general as possible, to let it be used also by non-acoustics devices. The layer API could be:

class DevicePowerModel : public Object
{
public:
  //set the device-specific power profile
  void SetPowerProfile (
    double ampHours,
    double volts,
    double rxPower,
    double txPower,
    double idlePower,
    double sleepPower);

  //set the simulator time to be considered as the 0-time for the power consumption calculations
  void SetInitialTime (Time t);
  //get the total power consumed into Transmit state
  double GetTotalTxPower (void);
  //get the total power consumed into Receive state
  double GetTotalRxPower (void);
  //get the total power consumed into Idle state
  double GetTotalIdlePower (void);
  //get the total power consumed into Sleep state
  double GetTotalSleepPower (void);
  //get the total energy consumed
  double GetConsumedEnergy ();

  //consume energy into a specific state for a spcified amount of time, if some power is available
  bool ConsumeTxPower (Time t);
  bool ConsumeRxPower (Time t);
  bool ConsumeIdlePower (Time t);
  bool ConsumeSleepPower (Time t);

  //the total power available from the device batteries
  double batteriesCapacity;
}

Maybe, the states could be encapsulated into an enumeration, and the power profile could be passed as a state-power couples array, to keep the interface even more general.

NOTE: since there is another contribution for an energy model, really close to what I've proposed, maybe this section needs to be reviewed and/or substituted


Deliverables

  1. Two AUV simulator classes.
  2. A power management layer class.
  3. An Helper class for AUV simulator.
  4. An Helper class for power management layer.
  5. Test cases for 1. and 2.
  6. Example scripts for 1.and 2.
  7. Documentation.


Schedule

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

References

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

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

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

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

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

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

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

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


About me

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.

Background

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

Work and Research

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

Personal Interests

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