Package: inet.mobility.single
LinearMobility
simple moduleThis is a linear mobility model with speed and angle parameters. Angle only changes when the mobile node hits a wall: then it reflects off the wall at the same angle.
<b>Author:</b> Emin Ilker Cetinbas
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| MovingMobilityBase | simple module |
Abstract base module for mobility models. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| displayStringTextFormat | string | "p: %p\nv: %v" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| subjectModule | string | "^" |
The module path that determines the subject module, the motion of which this mobility model describes. The default value is the parent module |
| coordinateSystemModule | string | "" |
The module path of the geographic coordinate system module |
| updateDisplayString | bool | true |
Enables continuous update of the subject module's position by modifying its display string |
| constraintAreaMinX | double | -inf m |
The minimum x position of the constraint area. It is unconstrained by default (negative infinity) |
| constraintAreaMinY | double | -inf m |
The minimum y position of the constraint area. It is unconstrained by default (negative infinity) |
| constraintAreaMinZ | double | -inf m |
The minimum z position of the constraint area. It is unconstrained by default (negative infinity) |
| constraintAreaMaxX | double | inf m |
The maximum x position of the constraint area. It is unconstrained by default (positive infinity) |
| constraintAreaMaxY | double | inf m |
The maximum y position of the constraint area. It is unconstrained by default (positive infinity) |
| constraintAreaMaxZ | double | inf m |
The maximum z position of the constraint area. It is unconstrained by default (positive infinity) |
| updateInterval | double | 0.1s |
The simulation time interval used to regularly signal mobility state changes and update the display |
| faceForward | bool | true | |
| initialX | double | uniform(this.constraintAreaMinX, this.constraintAreaMaxX) | |
| initialY | double | uniform(this.constraintAreaMinY, this.constraintAreaMaxY) | |
| initialZ | double | nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ)) | |
| initFromDisplayString | bool | true |
Enables one-time initialization from the subject module's display string |
| speed | double | 0mps |
Speed of the host |
| initialMovementHeading | double | uniform(0deg, 360deg) | |
| initialMovementElevation | double | 0deg |
Properties
| Name | Value | Description |
|---|---|---|
| class | LinearMobility | |
| display | i=block/cogwheel |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| mobilityStateChanged | inet::MobilityBase |
It works in inet, but not in the extended module in another namespace |
Source code
// // This is a linear mobility model with speed and angle parameters. // Angle only changes when the mobile node hits a wall: then it reflects // off the wall at the same angle. // // @author Emin Ilker Cetinbas // simple LinearMobility extends MovingMobilityBase { parameters: double initialX @unit(m) = default(uniform(this.constraintAreaMinX, this.constraintAreaMaxX)); double initialY @unit(m) = default(uniform(this.constraintAreaMinY, this.constraintAreaMaxY)); double initialZ @unit(m) = default(nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ))); bool initFromDisplayString = default(true); // Enables one-time initialization from the subject module's display string double speed @unit(mps) = default(0mps); // Speed of the host double initialMovementHeading @unit(deg) = default(uniform(0deg, 360deg)); double initialMovementElevation @unit(deg) = default(0deg); @class(LinearMobility); }File: src/inet/mobility/single/LinearMobility.ned