NS3 mobility移动模型内容翻译

ns3-model-library.pdf文档中移动模型翻译

Mobility

在ns3中mobility包含如下内容:

1. 一系列mobility模型,可以用来跟踪和保持一个对象的笛卡尔位置和速度。
2. a “course change notifier” trace source,可以用于注册一个mobility模型的轨迹的改变
3. 许多helper类,可以用于放置节点和建立移动模型(包括解析一些mobility定义格式)。

22.1 MOdel Description

mobility的源码放在src/mobility目录中。

22.1.1 Design

这一节包括mobility模型,位置分配器和helper函数。

在ns3中,MobilityModel使用一个(笛卡尔)坐标系跟踪位置的演化。mobility模型聚合了ns3::Node对象和使用GetObject<MobilityModel> ()方法查询节点。基类ns3::MobilityModel是许多不同motion行为的父类。
对象的初始位置使用一个PositionAllocator进行设置的。这些对象的类型铺排在一个notional canvas上。一旦仿真启动,位置分配器可能不再使用,或者被用于挑选未来waypoints这样的移动模型。

大多数用户使用mobility帮助类完成移动系统。MobilityHelper结合了一个移动模型和一个位置分配器,可用于在一系列节点上建立移动能力。

我们首先描述坐标系系统和周围多个坐标系统的问题。

Coordinate system

有许多位置坐标系,它们之间也可以转换。目前ns3仅使用笛卡尔坐标系。
对于不同的坐标系,如何使用(支持笛卡尔坐标系)移动模型这是个问题。在ns3笛卡尔坐标系和其他坐标系之间执行转换是可能的。一个可用的库是proj4 http://trac.osgeo.org/proj/ 库完成映射和反映射。

如果我们支持坐标系之间的转换,我们必须采用一个参考。建议使用地心直角坐标系作为参考。在这方面我们欢迎大家有所贡献。

添加一个在不同坐标系下本地实现的移动模型也是一个问题(例如使用球面坐标系实现的轨道模型)。我们建议使用已经创建的APIS(例如Get/SetSphericalPosition)的子类和一个新的位置分配器实现期望的运动,但是必须支持能够转换到笛卡尔坐标系(可通过笛卡尔Get/SetPosition完成)。

Coordinates

坐标系的基类是ns3::Vector。在文献中位置通常使用坐标系而不使用矢量(vectors)进行描述,但是重新使用相同的数据结构表现位置(x,y,z)和速度是可能的。ns3的Vector类结合使用了两者。
也有另外一些相关的结构用于支持移动模型:

• Rectangle
• Box
• Waypoint

**MobilityModel **
描述基类:

• GetPosition ()
• Position and Velocity attributes
• GetDistanceFrom ()
• CourseChangeNotification

MobilityModel Subclasses 子类

• ConstantPosition
• ConstantVelocity
• ConstantAcceleration
• GaussMarkov
• Hierarchical
• RandomDirection2D
• RandomWalk2D
• RandomWaypoint
• SteadyStateRandomWaypoint
• Waypoint

PositionAllocator

PositionAllocator仅用于开始时初始化节点位置。然而,一些移动模型(例如RandomWaypoint)将用一个位置分配器挑选新的waypoints。

• ListPositionAllocator
• GridPositionAllocator
• RandomRectanglePositionAllocator
• RandomBoxPositionAllocator
• RandomDiscPositionAllocator
• UniformDiscPositionAllocator

Helper

一个特殊的mobility helper已经提供,主要用来帮助完成节点容器(当使用帮助API的容器时)安装移动特性。MobilityHelper类包含MobilityModel工厂对象和一个用于初始化节点布局的PositionAllocator。

ns-2 MobilityHelper

(略)咱们是用的ns3,不翻译。(翻译很累人的好吧。。(<::>))

22.1.2 Scope and Limitations

目前仅支持笛卡尔坐标系

22.1.3 References

TBD

22.2 Usage

大多数ns3程序作者仅在配置时使用移动模型。然而,多个的ns3对象与mobility对象交互发生在执行期间,例如传播模型尝试决定两个移动节点之间的路径损耗。

22.2.1 Helper

可以在教程tutorial的third.cc代码中找到典型的使用模式。
首先,用户初始化MobilityHelper对象,并设置一些属性来控制postion allocator的功能。

    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 helper使用二维网格初始放置的节点。第一个参数是ns3的typeId,就是指定了mobility model的类型;剩下的参数属性/值对配置了这个position allocator(位置分配器)。
下一步,用户指定MobilityModel的子类:
    mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
        "Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));
一旦这个helper对象配置完成,典型的用法是传递给一个容器,如:
mobility.Install (wifiStaNodes);

一个MobilityHelper对象可以被重新配置和使用,用于ns3场景的配置中的不同的NodeContainers。

22.2.2 Ns2MobilityHelper

【略】(原始文档中这一节是没有内容的)

22.2.3 Use of Random Variables

一个典型的案例就是在移动拓扑中来评估协议,设计在运动货初始化位置分配的随机性。为了获取到的随机运动和位置与场景中其他部分的配置没有影响,建议使用随机数字系统的“AssignStreams”技巧。
类MobilityModel和类PositionAllocator都有公开的API来分配底层的随机变量:

    /**
    * Assign a fixed random variable stream number to the random variables
    * used by this model. Return the number of streams (possibly zero) that
    * have been assigned.
    *
    * \param stream first stream index to use
    * \return the number of stream indices assigned by this model
    *
    * 分配一个被这个模型所用的固定的随机变量流数字到随机变量。返回一个已经分配的流数字
    *(可能是0)
    */
    int64_t AssignStreams (int64_t stream);

    MobilityHelper类也提供了这个API,当使用这个helper对象时的典型用法是:
    int64_t streamIndex = /*some positive integer */
    MobilityHelper mobility;
    ... (configure mobility)
    mobility.Install (wifiStaNodes);
    int64_t streamsUsed = mobility.AssignStreams (wifiStaNodes, streamIndex);
如果AssignStreams在Install之前调用,将不会有任何效果。

22.2.4 Advanced Usage

许多额外的工具可以用于产生被Ns2MobilityHelper读取的轨迹。

ns2 scengen
TBD

BonnMotion
http://net.cs.uni-bonn.de/wg/cs/applications/bonnmotion/

SUMO
http://sourceforge.net/apps/mediawiki/sumo/index.php?title=Main_Page

TraNS
http://trans.epfl.ch/

22.2.5 Examples

• main-random-topology.cc
• main-random-walk.cc
• main-grid-topology.cc
• ns2-mobility-trace.cc
• ns2-bonnmotion.cc

22.3 Validation

TBD
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容