riebl / artery

OMNeT++ V2X simulation framework for ETSI ITS-G5
GNU General Public License v2.0
203 stars 131 forks source link

GeoBroadcast #39

Closed danieladriano closed 5 years ago

danieladriano commented 5 years ago

Hi,

I'am trying implement the GeoBroadcast in my research.

The idea is a application hosted on a RSU send some messages to certain area. I see the code in TransfusionService.cc, but i cant understand. Why is latitude and longitude multiplied by 0.1 and microdegree?

area.position.latitude = vanetza::units::GeoAngle { gbc.area().latitude() * 0.1 * microdegree };
area.position.longitude = vanetza::units::GeoAngle { gbc.area().longitude() * 0.1 * microdegree };

Thanks.

riebl commented 5 years ago

Hi @danieladriano,

latitude and longitude are encoded as "tenth of microdegree" in GBC headers (see https://www.etsi.org/deliver/etsi_en/302600_302699/3026360401/01.03.01_60/en_3026360401v010301p.pdf Table 14). Our protobuf message (see TransfusionMsg.proto) follows this convention. Multiplying the raw numbers with * 0.1 * microdegree "attaches" the appropriate unit (in terms of Boost.Units) to them.

Is your RSU a physically existing device? TransfusionService is a service meant for coupling Artery with external tools/devices. If your RSU is purely an OMNeT++ module then fiddling with TransfusionMsg may lead you in the wrong direction.

Regards, Raphael

danieladriano commented 5 years ago

Hi @riebl,

Thanks for the explanation about the conversion.

My RSU is purely an OMNeT++ module. I created a service and configured it in the RSU middleware in omnet.ini. Do you have another example about the use of RSU or GeoBroadcast?

Thanks, Daniel

riebl commented 5 years ago

Unfortunately, there is no RSU service included in Artery yet. I know, however, that a PhD student from France is working on such a use case using Artery. You can have look at DenService::fillRequest and TrafficJamEndOfQueue::createRequest to see how the request data structure is filled for DENMs disseminated via GBC. Of course, you don't need to split up the code the same way, this is just a particularity of our DEN implementation.

MounaKaroui commented 5 years ago

Hi Raphael, I can share with you the modifications That I added to integrate RSU DENM service. You can see this gist https://gist.github.com/MounaKaroui/ea65ce3d69975f07f21858a5e8011ffd I developed Roadwork Use case, but I can't share the specification because of confidential issues; Regards, Mouna

MounaKaroui commented 5 years ago

Maybe we can create a general skeleton of an RSU DENM use case. And then we can integrate it in Artery.

danieladriano commented 5 years ago

Hi,

Thanks for the help @riebl and @MounaKaroui. I will try to implement the RSU service, based on the DenService example and the Mouna modification.

On the skeleton, I think it's a good idea and maybe I can help you if necessary, Mouna.

Regards, Daniel

ruipatcheco commented 5 years ago

Hello everybody,

just came across this exact issue when trying to develop an RSU DEN service, did any of you adapt the UseCase.cc to work with RSU?

P.S. this is the error when using a DEN service in an RSU, it comes from the provided UseCase.cc including VehicleDataProvider.h that is not supported by RSU, given RSU is not a vehicle?

include "artery/application/VehicleDataProvider.h"

Error: no valid object of type 'N6artery19VehicleDataProviderE' registered -- in module (artery::den::IcyRoadRSU) World.rsu[0].middleware.DEN.IcyRoadRSU (id=155), during network initialization

riebl commented 5 years ago

@ruipatcheco There is no VehicleDataProvider in RSUs for obvious reasons. We could eliminate DenService's current dependency on this class by looking up its station ID in the associated Identity and creating a RSU station ID in StationaryMiddleware::initializeIdentity. Please open a new issue ticket if you need this feature to keep the concerns separated, thanks.

ruipatcheco commented 5 years ago

@ruipatcheco There is no VehicleDataProvider in RSUs for obvious reasons. We could eliminate DenService's current dependency on this class by looking up its station ID in the associated Identity and creating a RSU station ID in StationaryMiddleware::initializeIdentity. Please open a new issue ticket if you need this feature to keep the concerns separated, thanks.

Hi,

Yes of course, will do, I'm sorry.

Best regards