INET Framework for OMNeT++/OMNEST
inet::LinearRotatingMobilityBase Class Referenceabstract

#include <LinearRotatingMobilityBase.h>

Inheritance diagram for inet::LinearRotatingMobilityBase:
inet::RotatingMobilityBase inet::MobilityBase inet::IMobility

Public Member Functions

 LinearRotatingMobilityBase ()
 
- Public Member Functions inherited from inet::RotatingMobilityBase
virtual EulerAngles getCurrentAngularPosition () override
 Returns the current angular position at the current simulation time. More...
 
virtual EulerAngles getCurrentAngularSpeed () override
 Returns the current angular speed at the current simulation time. More...
 
- Public Member Functions inherited from inet::MobilityBase
virtual double getMaxSpeed () const override
 Returns the maximum possible speed at any future 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 ()
 
virtual Coord getCurrentPosition ()=0
 Returns the current position at the current simulation time. More...
 
virtual Coord getCurrentSpeed ()=0
 Returns the current speed at the current simulation time. More...
 

Protected Member Functions

virtual void initializeOrientation () override
 Initializes the orientation from module parameters. More...
 
virtual EulerAngles slerp (EulerAngles from, EulerAngles to, double delta)
 
virtual void rotate () override
 Moves according to the mobility model to the current simulation time. More...
 
virtual void setTargetOrientation ()=0
 Should be redefined in subclasses. More...
 
- Protected Member Functions inherited from inet::RotatingMobilityBase
 RotatingMobilityBase ()
 
virtual ~RotatingMobilityBase ()
 
virtual void initialize (int stage) override
 Initializes mobility model parameters. More...
 
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 rotateAndUpdate ()
 Moves and notifies listeners. More...
 
- Protected Member Functions inherited from inet::MobilityBase
 MobilityBase ()
 
virtual int numInitStages () const override
 Returns the required number of initialize stages. More...
 
virtual void initializePosition ()
 Initializes mobility position. More...
 
virtual void setInitialPosition ()
 Initializes the position from the display string or from module parameters. More...
 
virtual void checkPosition ()
 Checks whether the position is valid or not. More...
 
virtual void handleMessage (cMessage *msg) override
 This modules should only receive self-messages. More...
 
virtual void updateVisualRepresentation ()
 Moves the visual representation module's icon to the new position on the screen. 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

EulerAngles targetOrientation
 End position of current linear movement. More...
 
- Protected Attributes inherited from inet::RotatingMobilityBase
cMessage * rotateTimer
 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...
 
EulerAngles lastAngularSpeed
 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...
 

Constructor & Destructor Documentation

inet::LinearRotatingMobilityBase::LinearRotatingMobilityBase ( )
21 {
23 }
EulerAngles targetOrientation
End position of current linear movement.
Definition: LinearRotatingMobilityBase.h:27
static const EulerAngles ZERO
Definition: EulerAngles.h:12

Member Function Documentation

void inet::LinearRotatingMobilityBase::initializeOrientation ( )
overrideprotectedvirtual

Initializes the orientation from module parameters.

Reimplemented from inet::RotatingMobilityBase.

26 {
28  if (!stationary) {
30  EV_INFO << "current target orientation = " << targetOrientation << ", next change = " << nextChange << endl;
31  }
32  lastUpdate = simTime();
34 }
bool stationary
A mobility model may decide to become stationary at any time.
Definition: RotatingMobilityBase.h:37
EulerAngles targetOrientation
End position of current linear movement.
Definition: LinearRotatingMobilityBase.h:27
simtime_t nextChange
The next simulation time when the mobility module needs to update its internal state.
Definition: RotatingMobilityBase.h:48
simtime_t lastUpdate
The simulation time when the mobility state was last updated.
Definition: RotatingMobilityBase.h:43
virtual void setTargetOrientation()=0
Should be redefined in subclasses.
void scheduleUpdate()
Schedules the move timer that will update the mobility state.
Definition: RotatingMobilityBase.cc:69
virtual void initializeOrientation()
Initializes the orientation from module parameters.
Definition: MobilityBase.cc:140
void inet::LinearRotatingMobilityBase::rotate ( )
overrideprotectedvirtual

Moves according to the mobility model to the current simulation time.

Subclasses must override and update lastPosition, lastSpeed, lastUpdate, nextChange and other state according to the mobility model.

Implements inet::RotatingMobilityBase.

37 {
38  simtime_t now = simTime();
39  if (now == nextChange) {
41  EV_INFO << "reached current target orientation = " << lastOrientation << endl;
43  EV_INFO << "new target orientation = " << targetOrientation << ", next change = " << nextChange << endl;
44  }
45  else if (now > lastUpdate) {
46  ASSERT(nextChange == -1 || now < nextChange);
47  double delta = (simTime() - lastUpdate).dbl() / (nextChange - lastUpdate).dbl();
49  }
50 }
EulerAngles targetOrientation
End position of current linear movement.
Definition: LinearRotatingMobilityBase.h:27
simtime_t nextChange
The next simulation time when the mobility module needs to update its internal state.
Definition: RotatingMobilityBase.h:48
simtime_t lastUpdate
The simulation time when the mobility state was last updated.
Definition: RotatingMobilityBase.h:43
virtual void setTargetOrientation()=0
Should be redefined in subclasses.
EulerAngles lastOrientation
The last position that was reported.
Definition: MobilityBase.h:81
virtual EulerAngles slerp(EulerAngles from, EulerAngles to, double delta)
Definition: LinearRotatingMobilityBase.cc:52
virtual void inet::LinearRotatingMobilityBase::setTargetOrientation ( )
protectedpure virtual

Should be redefined in subclasses.

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

Referenced by initializeOrientation(), and rotate().

EulerAngles inet::LinearRotatingMobilityBase::slerp ( EulerAngles  from,
EulerAngles  to,
double  delta 
)
protectedvirtual

Referenced by rotate().

53 {
54  return from + (to - from) * delta;
55 }

Member Data Documentation

EulerAngles inet::LinearRotatingMobilityBase::targetOrientation
protected

End position of current linear movement.

Referenced by initializeOrientation(), LinearRotatingMobilityBase(), and rotate().


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