MobilityHelper
MobilityHelper mobility // 用来设置节点移动模型
mobility.SetPositionAllocator() //设置节点初始位置
mobility.SetMobilityModel() //设置节点运动方式
1. 设置初始位置:SetPositionAllocator
1.1 GridPositionAllocator(网格布局)
mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
"MinX", DoubleValue (-100.0),
"MinY", DoubleValue (-100.0),
"DeltaX", DoubleValue (5.0),
"DeltaY", DoubleValue (20.0),
"GridWidth", UintegerValue (20),
"LayoutType", StringValue ("RowFirst"));
GridPositionAllocator的属性以及默认值
- “GridWidth”, “一行最多有几个节点”,UintegerValue (10),
- “MinX”, “网格布局起始处在x轴上的坐标.”,DoubleValue (1.0)
- “MinY”, “网格布局起始处在y轴上的坐标.”,DoubleValue (0.0)
- “DeltaX”, “x轴上节点间的距离.”,DoubleValue (1.0)
- “DeltaY”, “y轴上节点间的距离”, DoubleValue (1.0)
- “LayoutType”, “布局类型,是先分配行,还是先分配列”,EnumValue (ROW_FIRST)
1.2 RandomDiscPositionAllocator(在一个圆内随机布局)
mobility.SetPositionAllocator ("ns3::RandomDiscPositionAllocator",
"X", StringValue ("100.0"),
"Y", StringValue ("100.0"),
"Rho", StringValue ("ns3::UniformRandomVariable[Min=0|Max=30]"));
RandomDiscPositionAllocator属性以及默认值
- “Theta”,“随机角度.”, StringValue (“ns3::UniformRandomVariable[Min=0.0|Max=6.2830]”),
- “Rho”,“随机半径”, StringValue (“ns3::UniformRandomVariable[Min=0.0|Max=200.0]”),
- “X”,“圆心x轴坐标”, DoubleValue (0.0),
- “Y”,“圆心y轴坐标”, DoubleValue (0.0)
- ns3::UniformRandomVariable[Min=0.0|Max=6.2830] 一个随机的值,0.0~6.2830
2. 设置运动方式:SetMobilityModel
2.1 ConstantPositionMobilityModel(固定不动)
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
2.2. RandomWalk2dMobilityModel(2d场景随机运动)
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
"Mode", StringValue ("Time"),
"Time", StringValue ("2s"),
"Speed", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"),
"Bounds", StringValue ("0|200|0|200"));
RandomWalk2dMobilityModel模型的属性以及默认值
- “Bounds”,“运动的范围”, RectangleValue (Rectangle (0.0, 100.0, 0.0, 100.0))
- “Time”,“走多久换一次方向”,TimeValue (Seconds (1.0))
- “Distance”,"走多远换一次方向"DoubleValue (1.0),
- “Mode”,“Time or Distance”,EnumValue (RandomWalk2dMobilityModel::MODE_DISTANCE)
- “Direction”,"随机方向 (radians)."StringValue (“ns3::UniformRandomVariable[Min=0.0|Max=6.283184]”)
- “Speed”“随机速度 (m/s).”,StringValue (“ns3::UniformRandomVariable[Min=2.0|Max=4.0]”)
2.3. 自定义方式
//在5秒后node节点会沿x轴,y轴,z轴方向分别移动1米,
Ptr<MobilityModel> mob = node->GetObject<MobilityModel> ();
Simulator::Schedule (Seconds (5.0), &MobilityModel::SetPosition, mob, Vector (1, 1, 1));