You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Veins、OMNeT++、SUMO中实现RSU间消息传输?

Veins 5.2 实现RSU间消息收发的配置与方法

1. 检查RSU通信模块一致性配置

  • 确保新增RSU与原有RSU使用完全一致的IEEE 802.11p协议栈,NED文件中RSU的nic模块配置需统一,示例:
    module RSU {
        @display("i=block/routing");
        submodules:
            nic: Ieee80211p {
                @display("p=100,100");
            }
            app: TraCIDemoRSU11p;
        connections allowunconnected:
            app.upperLayerOut --> nic.upperLayerIn;
            app.upperLayerIn <-- nic.upperLayerOut;
    }
    
  • 同步RSU的传输功率、信道参数,在omnetpp.ini中统一配置:
    *.rsu[*].nic.mac1609_4.txPower = 20mW
    *.rsu[*].nic.mac1609_4.channelNumber = 18
    

2. 修正消息目标地址设置

  • 发送消息时必须指定目标RSU的MAC地址,不能默认使用广播(除非是广播场景)。可通过模块索引或预配置参数获取目标MAC,示例代码:
    // 获取第2个RSU的MAC地址(索引从0开始)
    LAddress::L2Type targetMac = getParentModule()->getParentModule()->getSubmodule("rsu", 1)->getSubmodule("nic")->getSubmodule("mac")->par("address");
    
    WaveShortMessage* wsm = new WaveShortMessage();
    wsm->setRecipientAddress(targetMac);
    wsm->setSenderAddress(myMac); // myMac为当前RSU的MAC地址
    wsm->setWsmData("RSU intercommunication message");
    sendDown(wsm);
    
  • 若需广播,将recipientAddress设为LAddress::L2BROADCAST即可。

3. 调整应用层消息接收逻辑

  • 确认RSU应用层(如TraCIDemoRSU11p)的onWSM方法未过滤来自其他RSU的消息,保留完整的消息处理逻辑:
    void TraCIDemoRSU11p::onWSM(WaveShortMessage* wsm) {
        EV_INFO << "Received message from " << wsm->getSenderAddress() << ": " << wsm->getWsmData() << endl;
        delete wsm;
    }
    

4. 验证物理层连通性

  • 仿真时通过Veins可视化界面确认两个RSU的通信范围重叠(近距离场景默认满足),也可启用物理层调试日志排查:
    *.rsu[*].nic.phy80211p.debug = true
    
    查看日志中是否有数据包被物理层接收或丢弃的记录。

5. 确认场景拓扑配置

  • 确保新增RSU已正确添加到仿真场景的NED文件中,与原有RSU处于同一网络环境,无拓扑隔离问题。

内容的提问来源于stack exchange,提问作者ZeBarnabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:32:36