当前位置: 首页 > 知识库问答 >
问题:

设置Cooja模拟的参数

赏高格
2023-03-14

我正在尝试使用Contiki 3.0和Cooja模拟器对RPL协议进行一些模拟。我正在使用sky motes,我想看看DODAG是如何形成的,并使用Collect视图监视网络的参数。我有一些问题:

1) 在何处以及如何更改目标函数

2) 我的传感器能耗为1mW,我认为对于实际应用来说太多了,因为传感器需要工作几年

3)我可以在哪里更改模拟的其他参数?比如Tx/Rx数据包?

4) 如何解释collect视图中给出的路由度量?

5)我注意到当我改变节点的位置时,网络检测移动太慢,RPL不是很快,但在Cooja中需要太多时间,可能吗?您对模拟移动传感器有什么建议吗?

共有1个答案

单于耘豪
2023-03-14

1) 您可以从contiki/core/net/rpl/rpl-conf.h中设置更改目标函数

根据您的要求编辑:

/*
 * The objective function (OF) used by a RPL root is configurable through
 * the RPL_CONF_OF_OCP parameter. This is defined as the objective code
 * point (OCP) of the OF, RPL_OCP_OF0 or RPL_OCP_MRHOF. This flag is of
 * no relevance to non-root nodes, which run the OF advertised in the
 * instance they join.
 * Make sure the selected of is inRPL_SUPPORTED_OFS.
 */
#ifdef RPL_CONF_OF_OCP
#define RPL_OF_OCP RPL_CONF_OF_OCP
#else /* RPL_CONF_OF_OCP */
#define RPL_OF_OCP RPL_OCP_MRHOF
#endif /* RPL_CONF_OF_OCP */

/*
 * The set of objective functions supported at runtime. Nodes are only
 * able to join instances that advertise an OF in this set. To include
 * both OF0 and MRHOF, use {&rpl_of0, &rpl_mrhof}.
 */
#ifdef RPL_CONF_SUPPORTED_OFS
#define RPL_SUPPORTED_OFS RPL_CONF_SUPPORTED_OFS
#else /* RPL_CONF_SUPPORTED_OFS */
#define RPL_SUPPORTED_OFS {&rpl_mrhof}
#endif /* RPL_CONF_SUPPORTED_OFS */

/*
 * Enable/disable RPL Metric Containers (MC). The actual MC in use
 * for a given DODAG is decided at runtime, when joining. Note that
 * OF0 (RFC6552) operates without MC, and so does MRHOF (RFC6719) when
 * used with ETX as a metric (the rank is the metric). We disable MC
 * by default, but note it must be enabled to support joining a DODAG
 * that requires MC (e.g., MRHOF with a metric other than ETX).
 */
#ifdef RPL_CONF_WITH_MC
#define RPL_WITH_MC RPL_CONF_WITH_MC
#else /* RPL_CONF_WITH_MC */
#define RPL_WITH_MC 0
#endif /* RPL_CONF_WITH_MC */

2) Contiki为节点的长期运行提供了无线电占空比(RDC)机制。默认值为nullrdc,其中节点始终保持打开状态,因此寿命较短。设置ContikiMAC以最小化节点的功耗。转到contiki/core/contiki-default-conf.h并根据需要进行编辑。

例如

#ifndef NETSTACK_CONF_RDC
/* #define NETSTACK_CONF_RDC   nullrdc_driver */
#define NETSTACK_CONF_RDC   contikimac_driver 
#endif /* NETSTACK_CONF_RDC */

3) Tx/Rx可以从网络可视化器本身进行设置。您可以右键单击任何节点并编辑发送/接收范围以及成功率。也可以在中编辑相同内容。csc(模拟)文件。

    <radiomedium>
      org.contikios.cooja.radiomediums.UDGM
      <transmitting_range>100.0</transmitting_range>
      <interference_range>120.0</interference_range>
      <success_ratio_tx>0.9</success_ratio_tx>
      <success_ratio_rx>0.9</success_ratio_rx>
    </radiomedium>

4)您必须计算各种性能指标。为此,您自己有代码脚本文件(困难的部分)。或者使用这些链接https://github.com/iloveyii/contiki_rpl/tree/master/perl

https://pdfs.semanticscholar.org/d319/4d5f43f1cd3995ba7c9e99776ac8f150d445.pdf

5) 使用mobility插件模拟各种移动模型。

https://anrg.usc.edu/contiki/index.php/Mobility_of_Nodes_in_Cooja

http://vrajesh2188.blogspot.com/2016/04/mobility-in-contiki-2.html

 类似资料:
  • 我在Cooja上读不到不同的温度读数。我做了以下工作: 创建了一个初始化灯光和温度传感器的源文件 使用天空微尘创建了模拟 使用8个微尘网络运行模拟 每个微尘的读数都是相同的温度,这对我想要的东西是无用的。在过去的8个小时里,我一直在浏览线程、文档(包括Contiki wiki),但没有找到任何东西。 如果我误解了Cooja/Contiki的工作方式,我也希望得到一些帮助,但是,底线是,我如何模拟模

  • 我在Windows7上使用i7处理器,我正在尝试使用Android SDK模拟器。然而,当我将像素密度设置为320并打开GPU时,它的仿真开始滞后和冻结,它的浏览器几乎无法使用(每秒1帧或更少)。 除了转移到Linux之外,还能做什么来使它顺利工作吗?我注意到GPU仿真对性能的影响最大。

  • 我目前正在大学从事一个基于Contiki NG和Cooja的为期3个月的项目,我必须创建建筑模型,我想问两个问题: 1)有没有可能在Cooja中添加一个障碍,比如墙或其他东西,或者你知道任何类似的工具能够做到这一点? 2) 在库贾,我可以用哪一个最接近的mote来模拟德克萨斯仪器CC2650发射台?(z1 mote在新版Contiki NG中不可用) 谢啦!

  • 我有一个问题,而试图使用Android模拟位置,我的主要目标是设置Android GPS认为我们在一个不同的地方,又名假GPS。 我目前尝试了两种不同的类似解决方案,可在这两个网站上使用: 编程丛林 莫比亚奇 这两个教程都是2012年的,我不知道它们是否过时,或者我很难实现它们。 首先,我要确保我有权限: ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION AC

  • 我使用Cooja和Contiki实现了一个6LowPAN网络模拟,现在我想在处理来自网络外部的数据后,为执行器(MOTE)发送一些命令。 这些命令将在处理从边界路由器接收到的数据后发送到motes。 如何从外部访问模拟网络中的特定mote并向其发送数据包?

  • 我试图模仿下面的行,但它在执行时给出了一个错误,它说: 此处检测到错误的参数匹配器: when(mock.get(anyInt())).thenreturn(null); doThrow(new RuntimeException()).When(mock).SomeVoidMethod(anyObject()); verify(mock).somemethod(contains(“foo”)) 这