我们正在研究基于Veins框架的应用程序,该应用程序需要接收信号的RSSI值以及发送方和接收方之间的距离。
我们提到了VeReMi项目,该项目还计算RSSI值并将其发送到更高级别。
我们将仿真结果(RSSI与距离)与VeReMi数据集进行了比较,它们看起来截然不同。您能否帮助我们解释RSSI的计算方式以及我们的结果是否正常?
在我们的应用程序中,我们通过以下方式获得距离和rssi值
auto distance = sender.getPosition().distance(receiverPos);
auto senderRSSI = sender.getRssi();
在较低级别中,如同在VeReMi项目中一样,在Decider80211p :: processSignalEnd(AirFrame * msg)方法中设置rssi。
if (result->isSignalCorrect()) {
DBG_D11P << "packet was received correctly, it is now handed to upper layer...\n";
// go on with processing this AirFrame, send it to the Mac-Layer
WaveShortMessage* decap = dynamic_cast<WaveShortMessage*>(static_cast<Mac80211Pkt*>(frame->decapsulate())->decapsulate());
simtime_t start = frame->getSignal().getReceptionStart();
simtime_t end = frame->getSignal().getReceptionEnd();
double rssiValue = calcChannelSenseRSSI(start, end);
decap->setRSSI(rssiValue);
phy->sendUp(frame, result);
}
关于模拟配置,我们的config.xml与VeReMi不同,在我们的案例中没有以下几行。
<AnalogueModel type="VehicleObstacleShadowing">
<parameter name="carrierFrequency" type="double" value="5.890e+9"/>
</AnalogueModel>.
omnetpp.ini中的11p特定参数和NIP设置相同。
此外,我们的模拟是基于波士顿地图。
我们的RSSI_vs_Distance模拟结果的散点图如下图所示。
相比之下,我们从VeReMi数据集中提取数据,并绘制RSSI与距离的关系图,如下图所示。
VeReMi dataset RSSI vs Distance is what we were expecting where RSSI decreases as distance increases
您能帮我们解释一下我们的结果是否正常,什么可能导致我们现在遇到的问题?谢谢!
答案 0 :(得分:1)
我对VeReMi project并不熟悉,所以我不知道在接收到帧时它指的是“ RSSI”的值。随附的ArXiV paper论文仅提及在帧接收中记录“接收器的RSSI”这一细节。
对code for logging the dataset you mentioned进行的定期检查表明,每接收到一帧,就会将方法称为sums up the power levels of all transmissions currently present at the receiver。
由此看来,(a)帧到达接收器时所经过的距离与(b)接收器此时所经历的总功率几乎没有关系。
如果您对接收到的每个帧的接收信号强度(RSS)感兴趣,则可以遵循一条更简单的路径:以Veins版本5 alpha 1为例,您的应用层可以访问帧的ControlInfo。以及从那里开始的RSS,例如,如下所示:
check_and_cast<DeciderResult80211*>(check_and_cast<PhyToMacControlInfo*>(wsm->getControlInfo())->getDeciderResult())->getRecvPower_dBm()
。同样的方法也适用于Veins 4.6(我相信您所指的VeReMi数据集基于它)。
在仅使用SimplePathlossModel
(自由空间路径损耗模型的静脉版本)的模拟中,这将产生熟悉的曲线: