Description Usage Arguments Value Examples
View source: R/simulate_wiedemann74_driver.R
This function takes in the lead vehicle trajectory and calculates speed, spacing and acceleration of the following vehicle using the Wiedemann74 Model.It also estimates the car-following state in each time frame.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | simulate_wiedemann74_driver(
resolution,
N,
dfn1,
xn1,
vn1,
bn1,
xn_first,
vn_first,
ln,
D_MAX,
V_MAX,
V_DESIRED,
FAKTORVmult,
BMAXmult,
BNULLmult,
BMIN,
CX,
AXadd,
BXadd,
EXadd,
OPDVadd
)
|
resolution |
Duration of a time frame. Typical values are 0.1, 0.5, 1.0 s. Double. Must match with the resolution of the observed lead vehicle data dfn1 defined below |
N |
Number of Following Vehicles in the same lane. Integer. |
dfn1 |
Unquoted name of the dataframe that contains lead vehicle data. |
xn1 |
Name of the column in dfn1 that contains lead vehicle position. Character. |
vn1 |
Name of the column in dfn1 that contains lead vehicle speed. Character. |
bn1 |
Name of the column in dfn1 that contains lead vehicle acceleration. Character. |
xn_first |
First value of vehicle position of each of the following vehicles. A list of doubles with size equal to N. |
vn_first |
First value of vehicle speed of each of the following vehicles. A list of doubles with size equal to N. |
ln |
Length of each of the lead vehicles. A list of doubles with size equal to N. |
D_MAX |
Upper limit of reaction spacing. Double. Typical value is 150 m. |
V_MAX |
Maximum speed of the following vehicle model. Double. Typical values are 40 m/s, 60 m/s. |
V_DESIRED |
Desired speed of the following driver. Double. |
FAKTORVmult |
Controls acceleration in Free-driving state. Double. Higher values will result in large acceleration. |
BMAXmult |
Controls acceleration in Free-driving state. Double. It can be calculated as the maximum acceleration of the following vehicle model divided by V_MAX. |
BNULLmult |
Controls oscillation in speed in Following state. Double. Typical value is 0.25 m/s2. |
BMIN |
Controls maximum deceleration in Approaching and Emergency-braking states. Double. |
CX |
Calibration parameter. Double. It is a function of width of the lead vehicle and the angular velocity threshold at which driver slows down during Approaching state. Typical values are 20 - 75. |
AXadd |
Calibration parameter. Double. It is the bumper-to-bumper distance when both vehicles are stopped. Typical values are 2 - 4 m. |
BXadd |
Calibration parameter. Double. It controls the speed dependent spacing to the lead vehicle. Typical value is 2. |
EXadd |
Calibration parameter. Double. It controls the maximum spacing to the lead vehicle, as well as the speed difference in perception of closing in. Typical value is 2. |
OPDVadd |
Calibration parameter. Double. It controls the speed difference in perception of the opening process. Typical value is 1.5. |
A dataframe with lead and following vehicle(s) trajectories. It also returns all the pereception thresholds.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | # Time
last_time <- 3000 ## s
time_frame <- 0.1 ## s
Time <- seq(from = 0, to = last_time, by = time_frame)
time_length <- length(Time)
## Lead vehicle
vn1_first <- 13.9 ## first speed m/s
xn1_first <- 100 ## position of lead vehicle front center m
bn1_complete <- c(rep(0, 29500),
rep(-5, time_length - 29500))
#############################################
### Complete speed trajectory of Lead vehicle
#############################################
vn1_complete <- rep(NA_real_, time_length) ### an empty vector
xn1_complete <- rep(NA_real_, time_length) ### an empty vector
vn1_complete[1] <- vn1_first
xn1_complete[1] <- xn1_first
for (t in 2:time_length) {
### Lead vehicle calculations
vn1_complete[t] <- vn1_complete[t-1] + (bn1_complete[t-1] * time_frame)
vn1_complete[t] <- ifelse(vn1_complete[t] < 0, 0, vn1_complete[t])
xn1_complete[t] <- ifelse(
vn1_complete[t] > 0,
xn1_complete[t-1] + (vn1_complete[t-1] * time_frame) +
(0.5 * bn1_complete[t-1] * (time_frame)^2),
xn1_complete[t-1]
)
}
ldf <- data.frame(Time, bn1_complete, xn1_complete, vn1_complete)
# Run the Wiedemann function:
simulate_wiedemann74_driver(
resolution=0.1,
N=5,
dfn1=ldf,
xn1="xn1_complete",
vn1="vn1_complete",
bn1="bn1_complete",
xn_first=list(85, 70, 55, 40, 25),
vn_first=list(12, 12, 12, 12, 12),
ln=list(5, 5, 5, 5, 5),
D_MAX=150,
V_MAX=44,
V_DESIRED=14.4,
FAKTORVmult=0.001,
BMAXmult=0.08,
BNULLmult=0.25,
BMIN=-5,
CX=50,
AXadd=2,
BXadd=2,
EXadd=2,
OPDVadd=1.5
)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.