NS3网络模拟器-移动模型
一、移动模型
1. 坐标系
目前,ns-3 支持笛卡尔、地心笛卡尔和 地理坐标系,定义为:
(1)笛卡尔坐标:它们使用坐标集 (x,y,z) 表示 3D 空间中的点。 这是 ns-3 中的默认坐标系,最适合大小在几公里左右的模拟场景。
- topocentric coordinates:特定参考的笛卡尔坐标 点,例如 lat-lon,因为给出了原点。 此坐标系可用于与 Geocentric/Geographic 坐标相互转换。
- 地心笛卡尔坐标:笛卡尔坐标系,其中 原点固定在地球的质心中。实施遵循 38811 第 6.3 节中的描述。
(2)地理坐标:它们通过假设来表示 3D 空间中的点 位于地球表面或轨道上。位置是唯一的 由三个值描述:纬度、经度和海拔高度。后一个参考是地球表面。
目前,地心笛卡尔坐标由 仅限GeocentricConstantPositionMobilityModel。 此类实现 Get/SetPosition 方法,这些方法利用 GeographicPosition 类来提供与笛卡尔坐标之间的转换。 此外,用户还可以通过地理坐标设置节点的位置 通过 Get/SetGeographicPosition 方法。
2. 坐标
坐标的基类位置通常被描述为坐标,而不是向量,可以重用相同的数据结构来 表示位置 (x,y,z) 和速度 (大小和方向 从当前位置)。ns-3 对两者都使用 Vector 类。ns3::Vector还有一些额外的相关结构用于支持 移动模型。
- Rectangle矩形
- Box箱
- Waypoint航点
3. NS3支持的移动模型
在 ns-3 中,为可移动节点设计的网络模型都是基千坐标机制的, 在仿真中移动模型会集成到可移动的节点中,可以使用 GetObject()函数从已绑定移动模型的节点中提取移动模型。 ns-3 提供的大量不同的移动模型供不同用户使用,它们都是继承自 ns3::Mobility Model 类。
- ConstantPosition (常量位置)
- ConstantVelocity (恒定速度)
- ConstantAcceleration(常量加速度)
- GaussMarkov高斯马尔可夫
- Hierarchical层次
- RandomDirection2D (随机方向2D)
- 随机行走2D
- 随机航点
- SteadyStateRandomWaypoint (稳定状态随机航点)
- Waypoint航点
- GeocentricConstantPosition(地球中心常数位置)
二、位置模型
移动节点初始位置的分布是由类 PositionAllocator 负责, 每个节点的初始位置在仿真进行前就由该类指定完毕, 在仿真进行中不会再使用到该类或者在特定的移动模型中用千选择下一位置。
位置分配器通常仅在开始时使用,用于布置节点 初始位置。但是,某些移动性模型(例如 RandomWaypoint)将 使用 Position allocationator (位置分配器) 选择新的航点。
- ListPositionAllocator分配器: 用户根据自身要求 自定义节点的初始位置列表
- GridPositionAllocator分配器: 根据表格形式为节点初始化位置,当然表格的长度、宽度都可以根据用户要求自行分配
- RandomRectanglePositionAllocator分配器: 给出一个随机矩形来初始化节点位置
- RandomBoxPositionAllocator: 给出一个随机立体矩形分配方案
- RandomDiscPosition分配器
- UniformDiscPosition分配器
三、实例
以thrid.cc为例子, 下面给出关于移动的相关代码,如下:
MobilityHelper mobility;
rnobility.SetPositionAllocator ("ns3: : GridPositionAllocator",
"MinX" , DoubleValue (0.0) ,
"MinY", DoubleValue (0 .0) ,
"DeltaX", DoubleValue (5 .0),
"DeltaY", DoubleValue (10 .0) ,
"GridWidth", UintegerValue (3) ,
"LayoutType", StringValue ("RowFirst") ); //配置初始位置分布
mobility. SetMobilityModel ("ns3: : RandomWalk2dMobilityModel",
"Bounds", RectangleValue (Rectangle (- 50, 50, - 50, 50))) ; //配置矩形范围内随机2d游走的移动模型
mobility. Install (wifiStaNodes); //给STA移动工作站安装随机2d游走移动模型
mobility.SetMobilityModel ("ns3: :ConstantPositionMobilityModel") ;
mobility. Install (wi fiApNode) ; //给AP固定接入点安装固定位置移动模型
NS3自带的NetAnim工具提供了可视化仿真过程演示,可以查看节点的初始位置分布和仿真过程中的移动轨迹等,具体工具的使用见下一章节。