在 NS-3 中使用 Ramdomwaypoint 模型时如何设置位置分配器

How to set up the position allocator when using Ramdomwaypoint model in NS-3

我试图通过将移动模型名称 (RandomWalk2dMobilityModel) 替换为 RandomWaypointMobilityModel 来更改示例代码 (third.cc)。 运行代码后,结果是

这样的输出

assert failed. cond="m_position", msg="No position allocator added before using this model"

所以基本上这是与错误消息最相关的代码

MobilityHelper mobility;

mobility.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)));

mobility.SetMobilityModel ("ns3::RandomWaypointMobilityModel");
mobility.Install (wifiStaNodes);

mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");

mobility.Install (wifiApNode);

我很困惑的是在设置移动模型之前,已经设置了位置分配器它适用于randomwalk2d,但是,显然它不适用于randomwaypoint模型。那么如何处理呢? 如果有人可以帮助我解决这个问题,我将不胜感激。

非常感谢。

当您使用 RandomWayPointModel 时,实际上应该有两个位置分配器。

  • 第一个,你已经用过的,是节点的初始位置。

  • 第二个是 RandomWayPointModel 的属性,用于选择目标点。详情请参考documentation