I am currently doing research on the multi-hop broadcast technology of the Internet of Vehicles. I want to use only Veins (5.0) and SUMO to achieve it, but I have encountered problems:
1.Using Veins' example (TraCIDemo11p.cc) to modify the selection of relay nodes, the packet loss rate and delay cannot be counted So I want to know if the packet loss rate and delay can be counted after only modifying the example? It's been two weeks now, I would really appreciate if you could fix my problem.need to use inet?
Related
I'm using instant veins 5.2, sumo 1.11.0 and OMNet++ 5.7 to simulate V2I communication between vehicles and RSUs. Is there any way to get results as to the average waiting time of vehicles - nodes during a planned accident? The problem is that for each simulation the results of the waiting time are the same.
What I am trying to achieve is to verify if the traffic movement on the roadmap improves after applying different ranges in each simulation.
Thank you in advance.
I was able to complete basic tutorial in Veins.
In my simulation, 12 cars broadcast messages to each other. I want to compute the delay associated with every message. I am trying to achieve it in the following manner:
Save the time when the transmission begins and send the packet
...
wsm->setDelayTime(simTime().dbl());
populateWSM(wsm);
sendDelayedDown(wsm, computeAsynchronousSendingTime(1, ChannelType::service));
...
At the Rx side, compute the delay and save it
...
delayVector.record(simTime().dbl()-wsm->getDelayTime());
...
In the picture below you can see the delay w.r.t. node[0]. Two things puzzle me:
Why the delay is in the range of seconds? I would expect it to be in the range of ms.
Why does the delay increase with the simulation time?
Update
I have figured out that since 12 cars broadcast simulatenously, computeAsynchronousSendingTime(1, ChannelType::service) will return bigger delay for subsequent cars. I can circumvent the issue by using sendDown(wsm). However, in this case, not all the messages are delivered, since a car tries to receive a packet while transmitting. So I would like to update the question: how do I simulate the most realistic scenario with the reasonable delay and packet loss?
If somebody comes across the similar issue, computeAsynchronousSendingTime(1, ChannelType::service) returns the absolute simulation time, at which a message should be sent. We are interested in a delay, though. Thus, one would have to run sendDelayedDown(wsm, computeAsynchronousSendingTime(1, ChannelType::service) - simTime());
I am new to using veins and I'm currently trying to exchange messages between RSU and vehicle. However, only my vehicles are communicating with each other.
I tried using the following: findHost()->getDisplayString().updateWith("r=16,green");
the radius between the vehicles is turning green but the RSU does not show any changes.
From the previous questions, I could see there is an onData() function in the previous versions of veins(TraCIDemp11p.cc) but it is not available in the newer versions. Is there any way how I can establish connection and show it physically in my simulations?
OK, so it seems that the RSU and the vehicles in Veins have the same connections thus are capable of both receiving and transmitting Basic Safety Messages(BSM). One of the potential reasons why the RSU might not be able to receive messages might be because the distance between the vehicle and the RSU might be too great. Thus, try moving your RSU closer to the network(scenario). This can be done in the omnetpp.ini file under RSU settings. Change the x. mobility, y.mobility, and z.mobility to move the RSU closer to the network and this might potentially fix your problem.
I have setup my environment using omnet++, sumo and veins in ubuntu. I want to reduce packet loss in an emergency situation among vehicles and improve packet delivery time and cost. My project is about choosing the suitable processing position among cluster head (nodes), road side unit (rsu) and cloud. I want to achieve certain tasks that is need to implement my veins project. I have configured 50 nodes and 4 rsu and provide data rate about 6mbps and assign the packet size upto 2MB.
Therefore, how can I change the behavior of vehicles (nodes), road side unit (rsu) and cloud in order to implement the following parameters?
processing rate of clusters (nodes) = 3 Mbps.
processing rate of RSUs = 7 Mbps.
processing rate of cloud = 10 Mbps.
the range of clusters (nodes) = 60 m.
the range of RSU = 120 m.
the range of cloud = 500 m.
If you could help with building these parameters I will appreciate it.
Thank you
If you are talking about transsmision rate, then you can set the bit rate in the ini file (check veins example) but if you meant processing delay then it is usually simulated by scheduling self messages (check tictoc example). In terms of transsmsion range, veins uses Free Space Propagation model and the related parameters are set in the ini file so you can change them to decide the required range. Finally, I recommand to read more about veins and how it deal with the parameters you asked about. There are alot of answered questions on StackOverFlow about your questions.
I develop simulator of mobile nodes, each one with transmission range of 100m for example. The communication between the nodes are wireless and TDMA based.
I have notice that if 2 nodes (not in the same range) broadcast message on the same time, it's cause to a problem.
How can i limit the distance of nessage that is sent from a node ? such that i can broadcast 2 or more messages on the same time, and just the nodes in the range of the sending node will hear the message ?
The code that processes the reception of the packet should calculate the distance from the sender and drop the packet if it's out of range.
A little less accurate solution: before sending the packets the broadcasting node should check the distance to the potential receiving node and not send the packet if it is out of range. This is a bit faster (as it generates less packets) and more clear (you will see the broadcast animation only for the packets that actually delivered)
A much easier solution: Use INET Framework, which already has the necessary implementation. You would only need to implement a MAC module that handles the TDMA protocol.