Overview#
sumo supports the simulation of wireless onboard devices to facilitate a sensor mechanism which relies on the detection of radio signals (usually Bluetooth or Wi-Fi) emitted by the vehicle. Every vehicle can act as a sender and/or a receiving device. The parameters of the detection (e.g. the range and detection probability) can be configured and a log of the detection events can be written. It is currently not possible to retrieve the detection events via TraCI or react directly in the simulation to such an event. The relevant parameters for configuring the sender and receiver devices are described at sumo#communication. Details on the detection process can be found in the following publication: Behrisch, Michael and Gurczik, Gaby (2014) Modelling Bluetooth Inquiry for SUMO. In: SUMO2014 Modeling Mobility with Open Data. SUMO2014, 15.-16. Mai 2014, Berlin
Enabling Sender / Receiver devices#
The Bluetooth functionality is enabled using two devices:
- btsender: enables this vehicle to be detected
- btreceiver: enables this vehicle to detector senders
Activation of these devices is explained here.
The behavior of the btreceiver device can be further customized using the following sumo-Options:
- --device.btreceiver-range <FLOAT> (defines the detection range in meters)
- --device.btreceiver-offtime <FLOAT> (defines the minimum time between connections in seconds. This can be used to model effects of communication traffic load).
Persons#
Both sender and receiver devices may also be enable for persons. These devices work the same as those for vehicles and will interact with each other as well as with vehicle devices.
Output#
The option --bt-output generates an XML output file of the following form:
<bt-output>
<bt id="<VEHICLE_ID>">
<seen id="<VEHICLE_ID>" tBeg="<TIME>" observerPosBeg="<COORD>" observerSpeedBeg="<SPEED>" observerLaneIDBeg="<LANE_ID>" observerLanePosBeg="<LANE_POS>"
seenPosBeg="<COORD>" seenSpeedBeg="<SPEED>" seenLaneIDBeg="<LANE_ID>" seenLanePosBeg="<LANE_POS>"
tEnd="<TIME>" observerPosEnd="<COORD>" observerSpeedEnd="<SPEED>" observerLaneIDEnd="<LANE_ID>" observerLanePosEnd="<LANE_POS>"
seenPosEnd="<COORD>" seenSpeedEnd="<SPEED>" seenLaneIDEnd="<LANE_ID>" seenLanePosEnd="<LANE_POS>"
observerRoute="<EDGE_ID>+" seenRoute="<EDGE_ID>+">
<recognitionPoint t="<TIME>" observerPos="<COORD>" observerSpeed="<SPEED>" observerLaneID="<LANE_ID>" observerLanePos="<LANE_POS>"
seenPos="<COORD>" seenSpeed="<SPEED>" seenLaneID="<LANE_ID>" seenLanePos="<LANE_POS>"/>
... more recognition points ...
</seen>
... more contacts of the same vehicle ...
</bt>
... more data of of sensor vehicles ...
</bt-output>
If the option --device.btreceiver.all-recognitions is not given only the first recognition point will be printed for each encounter. The meanings of the written values are given in the following table.
Name | Type | Description |
---|---|---|
id@bt | ID | The id of the observing vehicle (receiver) |
id@seen | ID | The id of the detected vehicle (sender) |
tBeg | s | The time the sender entered the detection range |
observerPosBeg | x,y in m | Cartesian coordinates of the observer when the sender entered the range |
observerSpeedBeg | m/s | Speed of the observer when the sender entered the range |
observerLaneIDBeg | ID | Lane id of the observer when the sender entered the range |
observerLanePosBeg | m | Longitudinal position on the lane of the observer when the sender entered the range |
seenPosBeg | x,y in m | Cartesian coordinates of the sender when it entered the range |
seenSpeedBeg | m/s | Speed of the sender when it entered the range |
seenLaneIDBeg | ID | Lane id of the sender when it entered the range |
seenLanePosBeg | m | Longitudinal position on the lane of the sender when it entered the range |
tEnd | s | The time the sender left the detection range |
observerPosEnd | x,y in m | Cartesian coordinates of the observer when the sender left the range |
observerSpeedEnd | m/s | Speed of the observer when the sender left the range |
observerLaneIDEnd | ID | Lane id of the observer when the sender left the range |
observerLanePosEnd | m | Longitudinal position on the lane of the observer when the sender left the range |
seenPosEnd | x,y in m | Cartesian coordinates of the sender when it left the range |
seenSpeedEnd | m/s | Speed of the sender when it left the range |
seenLaneIDEnd | ID | Lane id of the sender when it left the range |
seenLanePosEnd | m | Longitudinal position on the lane of the sender when it left the range |
observerRoute | list of IDs | the route of the observing vehicle |
seenRoute | list of IDs | the route of the sender vehicle |
t | s | The time the observer detected the sender |
observerPos | x,y in m | Cartesian coordinates of the observer when it detected the sender |
observerSpeed | m/s | Speed of the observer when it detected the sender |
observerLaneID | ID | Lane id of the observer when it detected the sender |
observerLanePos | m | Longitudinal position on the lane of the observer when it detected the sender |
seenPos | x,y in m | Cartesian coordinates of the sender when it was detected |
seenSpeed | m/s | Speed of the sender when it was detected |
seenLaneID | ID | Lane id of the sender when it left the range |
seenLanePos | m | Longitudinal position on the lane of the sender when it was detected |
Simulating Vehicle-to-Infrastructure (V2I)#
To simulate detection events between vehicles and a road-side-unit (RSU), it is convenient to place a stopped vehicle at the side of the road. This can be accomplished by by setting attribute parking="true".