Я учусь в магистратуре, работаю над локализацией, использую дальность (время прибытия между транспортным средством и 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. Почему это так?