我们正在开发一个基于 Veins 框架的应用程序,它需要接收信号的 RSSI 值以及发送器和接收器之间的距离。
我们参考了 VeReMi 项目,它也计算 RSSI 值并将其发送到上层。
我们将模拟结果(RSSI 与距离)与 VeReMi 数据集进行了比较,它们看起来非常不同。您能帮我们解释一下 RSSI 是如何计算的以及我们的结果是否正常吗?
在我们的应用程序中,我们通过以下方式获取距离和 RSSI 值
auto distance = sender.getPosition().distance(receiverPos);
auto senderRSSI = sender.getRssi();
在较低级别,RSSI 在 Decider80211p::processSignalEnd(AirFrame* msg) 方法中设置,如 VeReMi 项目中一样。
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仿真结果散点图如下图所示。
RSSI 与距离的关系 从我们的模拟来看,即使距离超过 1000 米,我们仍然收到具有强 RSSI 值的信号
相比之下,我们从 VeReMi 数据集中提取数据并绘制 RSSI 与距离的关系,如下图所示。
VeReMi 数据集 RSSI 与距离的关系是我们所期望的,其中 RSSI 随着距离的增加而减小
您能否帮我们解释一下我们的结果是否正常以及可能导致我们现在遇到的问题的原因是什么?谢谢!