INET Framework for OMNeT++/OMNEST
|
Base class for mobility models where movement consists of a sequence of linear movements of constant speed. More...
#include <LineSegmentsMobilityBase.h>
Public Member Functions | |
LineSegmentsMobilityBase () | |
Public Member Functions inherited from inet::MovingMobilityBase | |
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... | |
virtual EulerAngles | getCurrentAngularPosition () override |
Returns the current angular position 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 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 void | initializePosition () override |
Initializes mobility position. More... | |
virtual void | move () override |
Moves according to the mobility model to the current simulation time. More... | |
virtual void | setTargetPosition ()=0 |
Should be redefined in subclasses. More... | |
Protected Member Functions inherited from inet::MovingMobilityBase | |
MovingMobilityBase () | |
virtual | ~MovingMobilityBase () |
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 | moveAndUpdate () |
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 | 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 | initializeOrientation () |
Initializes the orientation from module parameters. 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 | |
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 CanvasProjection * | canvasProjection |
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... | |
Base class for mobility models where movement consists of a sequence of linear movements of constant speed.
Subclasses must redefine setTargetPosition() which is supposed to set a new targetPosition and nextChange once the previous target is reached.
inet::LineSegmentsMobilityBase::LineSegmentsMobilityBase | ( | ) |
|
overrideprotectedvirtual |
Initializes mobility position.
Reimplemented from inet::MovingMobilityBase.
|
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::MovingMobilityBase.
Reimplemented in inet::Ns2MotionMobility, inet::TurtleMobility, inet::MassMobility, inet::BonnMotionMobility, inet::ANSimMobility, inet::ChiangMobility, inet::GaussMarkovMobility, and inet::RandomWPMobility.
Referenced by inet::RandomWPMobility::move(), inet::GaussMarkovMobility::move(), inet::ChiangMobility::move(), inet::ANSimMobility::move(), inet::BonnMotionMobility::move(), inet::TurtleMobility::move(), and inet::Ns2MotionMobility::move().
|
protectedpure virtual |
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.
Implemented in inet::MoBANCoordinator, inet::MoBANLocal, inet::Ns2MotionMobility, inet::MassMobility, inet::TurtleMobility, inet::GaussMarkovMobility, inet::BonnMotionMobility, inet::TractorMobility, inet::ANSimMobility, inet::ChiangMobility, inet::ConstSpeedMobility, and inet::RandomWPMobility.
Referenced by initializePosition(), and move().
|
protected |
End position of current linear movement.
Referenced by inet::TurtleMobility::executeStatement(), inet::ANSimMobility::extractDataFrom(), initializePosition(), LineSegmentsMobilityBase(), move(), inet::MassMobility::move(), inet::TurtleMobility::move(), inet::TurtleMobility::resumeScript(), inet::ANSimMobility::setInitialPosition(), inet::TurtleMobility::setInitialPosition(), inet::MoBANLocal::setMoBANParameters(), inet::RandomWPMobility::setTargetPosition(), inet::ConstSpeedMobility::setTargetPosition(), inet::ChiangMobility::setTargetPosition(), inet::ANSimMobility::setTargetPosition(), inet::BonnMotionMobility::setTargetPosition(), inet::TractorMobility::setTargetPosition(), inet::GaussMarkovMobility::setTargetPosition(), inet::MassMobility::setTargetPosition(), inet::Ns2MotionMobility::setTargetPosition(), inet::MoBANLocal::setTargetPosition(), and inet::MoBANCoordinator::setTargetPosition().