riebl / artery

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

denm service #222

Closed wangchenyu8 closed 1 year ago

wangchenyu8 commented 2 years ago

Hello sir, I have been referring the mt-its2017... Which is dynamic scenario control for VANET simulation 1.And i add my new denm usecase ,but i donnot know whether the denm msg is event trrigerd. Is there any way to print the denm msg.? 2.How can i get the pointer value of the polygonCondition in storyboard? and whether the storybord msg can print? 3.i can see some vehicles with a red frame outside in ui, is there anything special about them? Please help me

Thanks

riebl commented 2 years ago
  1. Every DENM transmission can be recorded via the DenService's DenmSent signal and the accompanying transmission statistic. You have to enable its recording so you can see those transmissions as vector in your result files, e.g. with ".node[].middleware.DEN.transmission.result-recording-modes = all" in case of the mt-its2017 scenario.
  2. Sorry, I don't understand your question. https://github.com/riebl/artery/blob/master/src/artery/storyboard/PolygonCondition.cc is the C++ source code related to the polygonCondition defined in mt-its2017.py. You may add print lines there.
  3. The red frame just highlights which module is currently processed by the OMNeT++ event scheduler.
wangchenyu8 commented 2 years ago
  1. Every DENM transmission can be recorded via the DenService's DenmSent signal and the accompanying transmission statistic. You have to enable its recording so you can see those transmissions as vector in your result files, e.g. with ".node[].middleware.DEN.transmission.result-recording-modes = all" in case of the mt-its2017 scenario.
  2. Sorry, I don't understand your question. https://github.com/riebl/artery/blob/master/src/artery/storyboard/PolygonCondition.cc is the C++ source code related to the polygonCondition defined in mt-its2017.py. You may add print lines there.
  3. The red frame just highlights which module is currently processed by the OMNeT++ event scheduler.

Another question :Can i get get the vehicleid those receive others‘ denm msg through code?And how can i change their speed through vehicleid?

riebl commented 2 years ago

The SUMO vehicle ID is not part of DEN messages but the so-called ITS station id, a 32bit number. If the simulated World has an IdentityRegistry, you can lookup the SUMO vehicle id by the ITS station id. See https://github.com/riebl/artery/blob/bc7013066c2f00aa84324d71cf0a9e9ffdf07b00/src/artery/envmod/sensor/CamSensor.cc#L49 for an example.

wangchenyu8 commented 2 years ago

I encountered the same problem with #216.World.node[x].mobility.mPosition does not show the same coordinates with sumo,and the node number dose not match the vehicleID in sumo. How can I solve it?

riebl commented 2 years ago

There is no link between the x in node[x] and the vehicle ID of SUMO. Also, the OMNeT++ coordinate system differs from the SUMO coordinate system because the y-axis is flipped. It is thus expected that the vehicle coordinates in OMNeT++ do not equal the coordinates shown in SUMO; however, the coordinates are equivalent because a bijective mapping exists.

wangchenyu8 commented 2 years ago

There is no link between the x in node[x] and the vehicle ID of SUMO. Also, the OMNeT++ coordinate system differs from the SUMO coordinate system because the y-axis is flipped. It is thus expected that the vehicle coordinates in OMNeT++ do not equal the coordinates shown in SUMO; however, the coordinates are equivalent because a bijective mapping exists.

thanks,and is there any way to solve the 2 issues?

riebl commented 2 years ago

Why is this an issue at all? Please describe exactly what you expect and for what reason; thanks!

wangchenyu8 commented 2 years ago

I use the vehicleID in vehicle controller change the speed of the car which meet the polygoncondition in sumo, but i am not sure this also change the vehicle speed in Omnet.

riebl commented 2 years ago

Setting the speed via VehicleController commands the SUMO vehicle directly and in OMNeT++ we always use the speed value reported by SUMO, i.e. there is no difference between "SUMO vehicle speed" and "OMNeT++ vehicle speed". Be aware that the coordinates of a PolygonCondition are specified in the OMNeT++ coordinate system. The conversion function can be found here: https://github.com/riebl/artery/blob/bc7013066c2f00aa84324d71cf0a9e9ffdf07b00/src/artery/traci/Cast.cc#L32-L37 The boundary is defined in the SUMO network's XML file.

wangchenyu8 commented 2 years ago

Setting the speed via VehicleController commands the SUMO vehicle directly and in OMNeT++ we always use the speed value reported by SUMO, i.e. there is no difference between "SUMO vehicle speed" and "OMNeT++ vehicle speed". Be aware that the coordinates of a PolygonCondition are specified in the OMNeT++ coordinate system. The conversion function can be found here:

https://github.com/riebl/artery/blob/bc7013066c2f00aa84324d71cf0a9e9ffdf07b00/src/artery/traci/Cast.cc#L32-L37

The boundary is defined in the SUMO network's XML file.

Thanks sir!