LTE用户文档
(如有不当的地方,欢迎指正!)
8 Mobility Model with Buildings
我们现在通过例子解释如何在 ns-3 仿真程序中使用 buildings 模型(特别是 MobilityBuildingInfo 和 BuildingPropagationModel 类) 来设置 LTE 仿真场景(包括建筑物和室内节点)。
1. 包含的头文件:
#include <ns3/mobility-building-info.h> #include <ns3/buildings-propagation-loss-model.h> #include <ns3/building.h>
2. 路径损耗模型选择:
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::BuildingsPropagationLossModel"));
3. EUTRA 频带选择:
传播模型的工作频段选择必须通过相关章节(“配置LTE模型参数”)描述的标准 ns-3 属性系统来实现,例如,通过设置 DlEarfcn 和 UlEarfcn 参数:
lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (100)); lteHelper->SetEnbDeviceAttribute ("UlEarfcn", UintegerValue (18100));
注意,使用其他方式配置传播模型使用的频段(例如,直接配置相关的 BuildingsPropagationLossModel 属性),可能会在仿真期间对模块中频率的定义造成冲突,因此不提倡这样做。
1. 移动性模型选择:
MobilityHelper mobility; mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
2. 创建建筑物:
double x_min = 0.0; double x_max = 10.0; double y_min = 0.0; double y_max = 20.0; double z_min = 0.0; double z_max = 10.0; Ptr<Building> b = CreateObject <Building> (); b->SetBoundaries (Box (x_min, x_max, y_min, y_max, z_min, z_max)); b->SetBuildingType (Building::Residential); b->SetExtWallsType (Building::ConcreteWithWindows); b->SetNFloors (3); b->SetNRoomsX (3); b->SetNRoomsY (2);
3. 节点创建和位置:
ueNodes.Create (2); mobility.Install (ueNodes); BuildingsHelper::Install (ueNodes); NetDeviceContainer ueDevs; ueDevs = lteHelper->InstallUeDevice (ueNodes); Ptr<ConstantPositionMobilityModel> mm0 = enbNodes.Get (0)->GetObject<ConstantPositionMobilityModel> (); Ptr<ConstantPositionMobilityModel> mm1 = enbNodes.Get (1)->GetObject<ConstantPositionMobilityModel> (); mm0->SetPosition (Vector (5.0, 5.0, 1.5)); mm1->SetPosition (Vector (30.0, 40.0, 1.5));
4. 完成建筑物和移动性模型的配置:
BuildingsHelper::MakeMobilityModelConsistent ();
详情见 buildings 模块文档。
参考文献
https://www.nsnam.org/docs/models/html/lte-user.html