Мгновенные вены 4.7-i1 Локализация Время прибытия - PullRequest
0 голосов
/ 09 сентября 2018

Я учусь в магистратуре, работаю над локализацией, использую дальность (время прибытия между транспортным средством и RSU) и относительное местоположение (используя эмулированную инерциальную навигационную систему).

Я реализовал логику локализации на основе фильтра Калмана в Matlab, теперь я хотел бы реализовать это на венах. Я хочу, чтобы только RSU отправил сообщение, содержащее его местоположение и идентификатор

1) Я знаю, что могу использовать double Coord = mobility->getCurrentPosition().x; double Coord = mobility->getCurrentPosition().y; к местоположению RSU (и моего транспортного средства также), я не понимаю, как я должен назначить эти координаты сообщению. Я не могу использовать sstream, поскольку понимаю, что сообщение должно быть типа const char *

Спасибо за любой вклад

Редактировать 1: Вот как выглядит мой новый код на RSU:

#include "RsuScOne.h"
#include <sstream>

Define_Module(RsuScOne);

void RsuScOne::initialize(int stage) {
    BaseWaveApplLayer::initialize(stage);
    if (stage == 0) {
        //Initializing members and pointers of your application goes here
        //WaveShortMessage* wsm = new WaveShortMessage();
        EV << "Initializing " << std::endl;
    }
    else if (stage == 1) {
        //Initializing members that require initialized other modules goes here

    }
}

void RsuScOne::finish() {
    BaseWaveApplLayer::finish();
    //statistics recording goes here
    cancelEvent(sendWSAEvt);
}

void RsuScOne::onWSM(WaveShortMessage* wsm) {
    //Your application has received a data message from another car or RSU
    //code for handling the message goes here, see TraciDemo11p.cc for examples

    populateWSM(wsm);
    std::stringstream ss;
    ss<<mobility->getCurrentPosition().x<<mobility->getCurrentPosition().y;
    wsm->setWsmData(ss.str().c_str());
    scheduleAt(simTime()+par("beaconInterval").doubleValue(), sendWSAEvt);
    EV<<wsm;
}

void RsuScOne::handleSelfMsg(cMessage* msg) {
    BaseWaveApplLayer::handleSelfMsg(msg);

}

Но я понимаю, что все, что сейчас делается, - это мой RSU, постоянно посылающий общий BSM. Почему это так?

...