INET Framework for OMNeT++/OMNEST
inet::MoBANLocal Class Reference

This is the local mobility module of MoBAN. More...

#include <MoBANLocal.h>

Inheritance diagram for inet::MoBANLocal:
inet::LineSegmentsMobilityBase inet::MovingMobilityBase inet::MobilityBase inet::IMobility

Public Member Functions

 MoBANLocal ()
 
virtual Coord getCurrentPosition () override
 Returns the current position at the current simulation time. More...
 
virtual Coord getCurrentSpeed () override
 Returns the current speed at the current simulation time. More...
 
void setCoordinator (MoBANCoordinator *coordinator)
 
void setMoBANParameters (Coord referencePoint, double radius, double speed)
 
virtual double getMaxSpeed () const override
 Returns the maximum possible speed at any future time. More...
 
- Public Member Functions inherited from inet::LineSegmentsMobilityBase
 LineSegmentsMobilityBase ()
 
- Public Member Functions inherited from inet::MovingMobilityBase
virtual EulerAngles getCurrentAngularPosition () override
 Returns the current angular position at the current simulation time. More...
 
- Public Member Functions inherited from inet::MobilityBase
virtual EulerAngles getCurrentAngularSpeed () override
 Returns the current angular speed at the current simulation time. More...
 
virtual Coord getConstraintAreaMax () const override
 Returns the current angular acceleration at the current simulation time. More...
 
virtual Coord getConstraintAreaMin () const override
 
- Public Member Functions inherited from inet::IMobility
virtual ~IMobility ()
 

Protected Member Functions

virtual int numInitStages () const override
 Returns the required number of initialize stages. More...
 
virtual void initialize (int) override
 Initializes mobility model parameters. More...
 
virtual void setInitialPosition () override
 Initializes the position from the display string or from module parameters. More...
 
virtual void setTargetPosition () override
 Should be redefined in subclasses. More...
 
virtual void updateVisualRepresentation () override
 Moves the visual representation module's icon to the new position on the screen. More...
 
virtual void computeMaxSpeed ()
 
- Protected Member Functions inherited from inet::LineSegmentsMobilityBase
virtual void initializePosition () override
 Initializes mobility position. More...
 
virtual void move () override
 Moves according to the mobility model to the current simulation time. More...
 
- Protected Member Functions inherited from inet::MovingMobilityBase
 MovingMobilityBase ()
 
virtual ~MovingMobilityBase ()
 
virtual void handleSelfMessage (cMessage *message) override
 Called upon arrival of a self messages, subclasses must override. More...
 
void scheduleUpdate ()
 Schedules the move timer that will update the mobility state. More...
 
void moveAndUpdate ()
 Moves and notifies listeners. More...
 
- Protected Member Functions inherited from inet::MobilityBase
 MobilityBase ()
 
virtual void checkPosition ()
 Checks whether the position is valid or not. More...
 
virtual void initializeOrientation ()
 Initializes the orientation from module parameters. More...
 
virtual void handleMessage (cMessage *msg) override
 This modules should only receive self-messages. More...
 
virtual void emitMobilityStateChangedSignal ()
 Emits a signal with the updated mobility state. More...
 
virtual Coord getRandomPosition ()
 Returns a new random position satisfying the constraint area. More...
 
virtual cModule * findVisualRepresentation ()
 Returns the module that represents the object moved by this mobility module. More...
 
virtual bool isOutside ()
 Returns true if the mobility is outside of the constraint area. More...
 
virtual void reflectIfOutside (Coord &targetPosition, Coord &speed, double &angle)
 Utility function to reflect the node if it goes outside the constraint area. More...
 
virtual void wrapIfOutside (Coord &targetPosition)
 Utility function to wrap the node to the opposite edge (torus) if it goes outside the constraint area. More...
 
virtual void placeRandomlyIfOutside (Coord &targetPosition)
 Utility function to place the node randomly if it goes outside the constraint area. More...
 
virtual void raiseErrorIfOutside ()
 Utility function to raise an error if the node gets outside the constraint area. More...
 
virtual void handleIfOutside (BorderPolicy policy, Coord &targetPosition, Coord &speed, double &angle)
 Invokes one of reflectIfOutside(), wrapIfOutside() and placeRandomlyIfOutside(), depending on the given border policy. More...
 

Protected Attributes

MoBANCoordinatorcoordinator
 The coordinator of the WBAN. More...
 
Coord referencePosition
 Reference position of the node in the current posture. More...
 
double radius
 The radius of local mobility of the node in the current posture. More...
 
double speed
 The speed of local mobility of the node in the current posture. More...
 
double maxSpeed
 The possible maximum speed at any future time. More...
 
- Protected Attributes inherited from inet::LineSegmentsMobilityBase
Coord targetPosition
 End position of current linear movement. More...
 
- Protected Attributes inherited from inet::MovingMobilityBase
cMessage * moveTimer
 The message used for mobility state changes. More...
 
simtime_t updateInterval
 The simulation time interval used to regularly signal mobility state changes. More...
 
bool stationary
 A mobility model may decide to become stationary at any time. More...
 
Coord lastSpeed
 The last speed that was reported at lastUpdate. More...
 
simtime_t lastUpdate
 The simulation time when the mobility state was last updated. More...
 
simtime_t nextChange
 The next simulation time when the mobility module needs to update its internal state. More...
 
- Protected Attributes inherited from inet::MobilityBase
cModule * visualRepresentation
 Pointer to visual representation module, to speed up repeated access. More...
 
const CanvasProjectioncanvasProjection
 The 2D projection used on the canvas. More...
 
Coord constraintAreaMin
 3 dimensional position and size of the constraint area (in meters). More...
 
Coord constraintAreaMax
 
Coord lastPosition
 The last position that was reported. More...
 
EulerAngles lastOrientation
 The last position that was reported. More...
 

Additional Inherited Members

- Public Types inherited from inet::MobilityBase
enum  BorderPolicy { REFLECT, WRAP, PLACERANDOMLY, RAISEERROR }
 Selects how a mobility module should behave if it reaches the edge of the constraint area. More...
 
- Static Public Attributes inherited from inet::IMobility
static simsignal_t mobilityStateChangedSignal = cComponent::registerSignal("mobilityStateChanged")
 A signal used to publish mobility state changes. More...
 

Detailed Description

This is the local mobility module of MoBAN.

It should be instantiated in each node that belongs to a WBAN. The NED parameter "coordinatorIndex" determines to which WBAN (MoBANCoordinator) it belongs. The current implementation uses the Random Walk Mobility Model (RWMM) for individual (local) movement within a sphere around the node, with given speed and sphere radius of the current posture. The reference point of the node in the current posture, the sphere radius, and the speed is given by the corresponding coordinator. RWMM determines the location of the node at any time relative to the given reference point.

Author
Majid Nabi

Constructor & Destructor Documentation

inet::MoBANLocal::MoBANLocal ( )
50 {
51  coordinator = nullptr;
53  radius = 0;
54  speed = 0;
55  maxSpeed = 0;
56 }
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
Coord referencePosition
Reference position of the node in the current posture.
Definition: MoBANLocal.h:70
double speed
The speed of local mobility of the node in the current posture.
Definition: MoBANLocal.h:76
double maxSpeed
The possible maximum speed at any future time.
Definition: MoBANLocal.h:79
double radius
The radius of local mobility of the node in the current posture.
Definition: MoBANLocal.h:73
static const Coord ZERO
Definition: Coord.h:41

Member Function Documentation

void inet::MoBANLocal::computeMaxSpeed ( )
protectedvirtual

Referenced by initialize().

115 {
117 }
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
double maxSpeed
The possible maximum speed at any future time.
Definition: MoBANLocal.h:79
virtual double getMaxSpeed() const override
Returns the maximum possible speed at any future time.
Definition: MoBANCoordinator.h:218
Coord inet::MoBANLocal::getCurrentPosition ( )
overridevirtual

Returns the current position at the current simulation time.

Reimplemented from inet::MovingMobilityBase.

131 {
133 }
virtual Coord getCurrentPosition() override
Returns the current position at the current simulation time.
Definition: MovingMobilityBase.cc:100
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
Coord inet::MoBANLocal::getCurrentSpeed ( )
overridevirtual

Returns the current speed at the current simulation time.

Reimplemented from inet::MovingMobilityBase.

136 {
138 }
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
virtual Coord getCurrentSpeed() override
Returns the current speed at the current simulation time.
Definition: MovingMobilityBase.cc:106
virtual double inet::MoBANLocal::getMaxSpeed ( ) const
inlineoverridevirtual

Returns the maximum possible speed at any future time.

Reimplemented from inet::MobilityBase.

104 { return maxSpeed; }
double maxSpeed
The possible maximum speed at any future time.
Definition: MoBANLocal.h:79
void inet::MoBANLocal::initialize ( int  stage)
overrideprotectedvirtual

Initializes mobility model parameters.

Reimplemented from inet::MovingMobilityBase.

59 {
61 
62  EV_TRACE << "initializing MoBANLocal stage " << stage << endl;
63  if (stage == INITSTAGE_LOCAL) {
64  WATCH_PTR(coordinator);
65  WATCH(referencePosition);
66  WATCH(radius);
67  WATCH(speed);
68  }
69  else if (stage == INITSTAGE_PHYSICAL_ENVIRONMENT_2)
70  {
73  }
74 }
virtual void initialize(int stage) override
Initializes mobility model parameters.
Definition: MovingMobilityBase.cc:42
Additional physical environment initializations that depend on the previous stage.
Definition: InitStages.h:47
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
Coord referencePosition
Reference position of the node in the current posture.
Definition: MoBANLocal.h:70
virtual void updateVisualRepresentation() override
Moves the visual representation module&#39;s icon to the new position on the screen.
Definition: MoBANLocal.cc:105
double speed
The speed of local mobility of the node in the current posture.
Definition: MoBANLocal.h:76
Local initializations.
Definition: InitStages.h:35
double radius
The radius of local mobility of the node in the current posture.
Definition: MoBANLocal.h:73
virtual void computeMaxSpeed()
Definition: MoBANLocal.cc:114
virtual int inet::MoBANLocal::numInitStages ( ) const
inlineoverrideprotectedvirtual

Returns the required number of initialize stages.

Reimplemented from inet::MobilityBase.

82 { return NUM_INIT_STAGES; }
The number of initialization stages.
Definition: InitStages.h:116
void inet::MoBANLocal::setCoordinator ( MoBANCoordinator coordinator)
inline

Referenced by inet::MoBANCoordinator::collectLocalModules().

100 { this->coordinator = coordinator; }
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
void inet::MoBANLocal::setInitialPosition ( )
overrideprotectedvirtual

Initializes the position from the display string or from module parameters.

Reimplemented from inet::MobilityBase.

77 {
79 }
Coord referencePosition
Reference position of the node in the current posture.
Definition: MoBANLocal.h:70
Coord lastPosition
The last position that was reported.
Definition: MobilityBase.h:78
void inet::MoBANLocal::setMoBANParameters ( Coord  referencePoint,
double  radius,
double  speed 
)

Referenced by inet::MoBANCoordinator::publishToNodes().

120 {
121  Enter_Method_Silent();
122  this->referencePosition = referencePoint;
123  this->radius = radius;
124  this->speed = speed;
126  lastSpeed = (targetPosition - lastPosition) / (nextChange - simTime()).dbl();
127  scheduleUpdate();
128 }
Coord referencePosition
Reference position of the node in the current posture.
Definition: MoBANLocal.h:70
Coord lastPosition
The last position that was reported.
Definition: MobilityBase.h:78
simtime_t nextChange
The next simulation time when the mobility module needs to update its internal state.
Definition: MovingMobilityBase.h:60
Coord targetPosition
End position of current linear movement.
Definition: LineSegmentsMobilityBase.h:41
double speed
The speed of local mobility of the node in the current posture.
Definition: MoBANLocal.h:76
double radius
The radius of local mobility of the node in the current posture.
Definition: MoBANLocal.h:73
virtual void setTargetPosition() override
Should be redefined in subclasses.
Definition: MoBANLocal.cc:81
void scheduleUpdate()
Schedules the move timer that will update the mobility state.
Definition: MovingMobilityBase.cc:82
Coord lastSpeed
The last speed that was reported at lastUpdate.
Definition: MovingMobilityBase.h:52
void inet::MoBANLocal::setTargetPosition ( )
overrideprotectedvirtual

Should be redefined in subclasses.

This method gets called when targetPosition and nextChange has been reached, and its task is to set a new targetPosition and nextChange. At the end of the movement sequence, it should set nextChange to -1.

Implements inet::LineSegmentsMobilityBase.

Referenced by setMoBANParameters().

82 {
83  if (speed != 0) {
84  // find a uniformly random position within a sphere around the reference point
85  double x = uniform(-radius, radius);
86  double y = uniform(-radius, radius);
87  double z = uniform(-radius, radius);
88  while (x * x + y * y + z * z > radius * radius) {
89  x = uniform(-radius, radius);
90  y = uniform(-radius, radius);
91  z = uniform(-radius, radius);
92  }
93 
94  targetPosition = referencePosition + Coord(x, y, z);
95  Coord positionDelta = targetPosition - lastPosition;
96  double distance = positionDelta.length();
97  nextChange = simTime() + distance / speed;
98  }
99  else {
101  nextChange = -1;
102  }
103 }
double length() const
Returns the length of this Coords position vector.
Definition: Coord.h:229
Coord referencePosition
Reference position of the node in the current posture.
Definition: MoBANLocal.h:70
Coord lastPosition
The last position that was reported.
Definition: MobilityBase.h:78
simtime_t nextChange
The next simulation time when the mobility module needs to update its internal state.
Definition: MovingMobilityBase.h:60
Coord targetPosition
End position of current linear movement.
Definition: LineSegmentsMobilityBase.h:41
double speed
The speed of local mobility of the node in the current posture.
Definition: MoBANLocal.h:76
double radius
The radius of local mobility of the node in the current posture.
Definition: MoBANLocal.h:73
void inet::MoBANLocal::updateVisualRepresentation ( )
overrideprotectedvirtual

Moves the visual representation module's icon to the new position on the screen.

Reimplemented from inet::MobilityBase.

Referenced by initialize().

106 {
107  if (hasGUI() && visualRepresentation) {
108  Coord coordinatorPosition = coordinator->getCurrentPosition();
109  visualRepresentation->getDisplayString().setTagArg("p", 0, lastPosition.x + coordinatorPosition.x);
110  visualRepresentation->getDisplayString().setTagArg("p", 1, lastPosition.y + coordinatorPosition.y);
111  }
112 }
virtual Coord getCurrentPosition() override
Returns the current position at the current simulation time.
Definition: MovingMobilityBase.cc:100
cModule * visualRepresentation
Pointer to visual representation module, to speed up repeated access.
Definition: MobilityBase.h:69
MoBANCoordinator * coordinator
The coordinator of the WBAN.
Definition: MoBANLocal.h:67
Coord lastPosition
The last position that was reported.
Definition: MobilityBase.h:78
double y
Definition: Coord.h:50
double x
Definition: Coord.h:49

Member Data Documentation

MoBANCoordinator* inet::MoBANLocal::coordinator
protected
double inet::MoBANLocal::maxSpeed
protected

The possible maximum speed at any future time.

Referenced by computeMaxSpeed(), and MoBANLocal().

double inet::MoBANLocal::radius
protected

The radius of local mobility of the node in the current posture.

Referenced by initialize(), MoBANLocal(), setMoBANParameters(), and setTargetPosition().

Coord inet::MoBANLocal::referencePosition
protected

Reference position of the node in the current posture.

Referenced by initialize(), MoBANLocal(), setInitialPosition(), setMoBANParameters(), and setTargetPosition().

double inet::MoBANLocal::speed
protected

The speed of local mobility of the node in the current posture.

Referenced by initialize(), MoBANLocal(), setMoBANParameters(), and setTargetPosition().


The documentation for this class was generated from the following files: