微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 VeinsInetCar 转换为 RSU 时出错

如何解决将 VeinsInetCar 转换为 RSU 时出错

我尝试通过将移动性更改为固定移动性来使用 VeinsInetCar 模块作为 rsu

# VeinsInetmobility
*.node[*].mobility.typename = "VeinsInetmobility"
*.wifirsu.mobility.typename = "Stationarymobility"

我为车辆使用了 VeinsInetSampleApplication,并为 rsu 稍微更改了它。创建了一个新的 VeinsInetApplicationBase 并删除了traci 和mobility 部分。

void VeinsInetApplicationBase::handleStartOperation(LifecycleOperation* operation)
{
    mobility = veins::VeinsInetmobilityAccess().get(getParentModule());
    traci = mobility->getCommandInterface();
    traciVehicle = mobility->getVehicleCommandInterface();

    L3AddressResolver().tryResolve("224.0.0.1",destAddress);
    ASSERT(!destAddress.isUnspecified());

然后移除与traci相关的变量并将其替换为RSU的veinesInetSampleApplication中的虚拟变量。现在,当我尝试运行模拟时,它会导致此错误

check_and_cast(): Cannot cast (inet::physicallayer::Ieee80211ScalarTransmission*) to type 'const inet::physicallayer::DimensionalTransmission *' -- in module (inet::physicallayer::Ieee80211Radio) Scenario.node[0].wlan[0].radio 

此运行时错误是在模拟过程中引起的。什么原因导致这个错误

解决方法

我的猜测是您为名为 node[*] 的节点配置了一组参数,为名为 wifirsu 的节点配置了另一组参数。可能您的 .ini 文件主要列出名为 node[*] 的节点的参数,并将许多参数保留为名为 wifirsu 的节点的默认值。这可能会导致您的模拟对一种类型的节点使用“标量”无线电,而对其他类型的节点使用“维度”无线电,这会导致您显示的错误消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。