41 void Simulate(
const std::vector<ActorPowerPair> ActorList,
UCarlaEpisode *CarlaEpisode, UWorld *World);
57 double CalcVehicleLoss(
const double d1,
const double d2,
const double h);
60 const float OtherTransmitPower,
62 const FVector Destination,
63 const double Distance3d,
65 const double ht_local,
67 const double hr_local,
68 const double reference_z);
107 float ComputeLoss(
AActor *OtherActor, FVector Source, FVector Destination,
double Distance3d,
double TxHeight,
double RxHeight,
double reference_z);
108 bool IsVehicle(
const FHitResult &HitInfo);
112 double CalculateNLOSvLoss(
const FVector Source,
const FVector Destination,
const double TxHeight,
const double RxHeight,
const double RxDistance3d, std::vector<FVector> &vehicle_obstacles);
std::pair< AActor *, float > ActorPowerPair
std::map< AActor *, float > ActorPowerMap
float ReceiverSensitivity
float ComputeLoss(AActor *OtherActor, FVector Source, FVector Destination, double Distance3d, double TxHeight, double RxHeight, double reference_z)
Method that allow to preprocess if the rays will be traced.
double CalcVehicleLoss(const double d1, const double d2, const double h)
FVector CurrentActorLocation
static double Frequency_GHz
PathLossModel(URandomEngine *random_engine)
ActorPowerMap GetReceiveActorPowerList()
void Simulate(const std::vector< ActorPowerPair > ActorList, UCarlaEpisode *CarlaEpisode, UWorld *World)
UCarlaEpisode * mCarlaEpisode
void SetScenario(EScenario scenario)
URandomEngine * mRandomEngine
float CalculatePathLoss_WINNER(EPathState state, double Distance)
void SetPathLossModel(const EPathLossModel path_loss_model)
double CalculateTwoRayPathLoss(double Distance3d, double TxHeight, double RxHeight)
static constexpr float c_speedoflight
float custom_fading_stddev
bool GetLocationIfVehicle(const FVector CurrentActorLocation, const FHitResult &HitInfo, const double reference_z, FVector &location)
float CalculateReceivedPower(AActor *OtherActor, const float OtherTransmitPower, const FVector Source, const FVector Destination, const double Distance3d, const double ht, const double ht_local, const double hr, const double hr_local, const double reference_z)
float CalculateTwoRayPathLossSimple(double Distance3d, double TxHeight, double RxHeight)
double CalculateNLOSvLoss(const FVector Source, const FVector Destination, const double TxHeight, const double RxHeight, const double RxDistance3d, std::vector< FVector > &vehicle_obstacles)
double MakeVehicleBlockageLoss(double TxHeight, double RxHeight, double obj_height, double obj_distance)
void EstimatePathStateAndVehicleObstacles(AActor *OtherActor, FVector Source, double TxHeight, double RxHeight, double reference_z, EPathState &state, std::vector< FVector > &vehicle_obstacles)
void SetParams(const float TransmitPower, const float ReceiverSensitivity, const float Frequency, const float combined_antenna_gain, const float path_loss_exponent, const float reference_distance_fspl, const float filter_distance, const bool use_etsi_fading, const float custom_fading_stddev)
float reference_distance_fspl
ActorPowerMap mReceiveActorPowerList
bool HitIsSelfOrOther(const FHitResult &HitInfo, AActor *OtherActor)
void SetOwner(AActor *Owner)
TArray< FHitResult > HitResult
float combined_antenna_gain
float CalculateShadowFading(EPathState state)
bool IsVehicle(const FHitResult &HitInfo)