46 bool AreValid(
const TArray<FActorDefinition> &ActorDefinitions)
49 return AreValid(TEXT(
"Actor Definition"), ActorDefinitions);
56 auto ScopeText = FString::Printf(TEXT(
"[Actor Definition : %s]"), *Definition.
Id);
70 template <
typename T,
typename ... ARGS>
84 Message += FString::Printf(Format, std::forward<ARGS>(Args) ...);
87 UE_LOG(LogCarla, Error, TEXT(
"%s"), *Message);
95 GEngine->AddOnScreenDebugMessage(42, 15.0f, FColor::Red, Message);
104 template <
typename T>
108 return FString::Printf(TEXT(
"[%s %d : %s]"), *Type, Index, *Item.Id);
112 FString
GetDisplayId(
const FString &Type,
size_t Index,
const FString &Item)
115 return FString::Printf(TEXT(
"[%s %d : %s]"), *Type, Index, *Item);
121 template <
typename T,
typename F>
122bool ForEach(
const FString &Type,
const TArray<T> &Array, F Validator)
128 for (
const auto &Item : Array)
137 Result &= Validator(Item);
151 template <
typename T>
152bool AreValid(
const FString &Type,
const TArray<T> &Array)
156 return ForEach(Type, Array, [
this](
const auto &Item) {
return IsValid(Item); });
164 return OnScreenAssert((!Id.IsEmpty() && Id != TEXT(
".")), TEXT(
"Id cannot be empty"));
172 return OnScreenAssert(!Tags.IsEmpty(), TEXT(
"Tags cannot be empty"));
180 return OnScreenAssert(Type < EActorAttributeType::SIZE, TEXT(
"Invalid type"));
208 return ValueIsValid(Variation.Type, Value);
252template <
typename ... ARGS>
253static FString
JoinStrings(
const FString &Separator, ARGS && ... Args)
258 return FString::Join(TArray<FString>{std::forward<ARGS>(Args) ...}, *Separator);
268 FString::FromInt(Color.R),
269 FString::FromInt(Color.G),
270 FString::FromInt(Color.B));
294 return Validator.
AreValid(ActorDefinitions);
302template <
typename ... TStrs>
308 Def.
Id =
JoinStrings(TEXT(
"."), std::forward<TStrs>(Strings) ...).ToLower();
311 Def.
Tags =
JoinStrings(TEXT(
","), std::forward<TStrs>(Strings) ...).ToLower();
315 ActorRole.
Id = TEXT(
"role_name");
323 Var.
Id = TEXT(
"ros_name");
333 TArray<FString> &&RecommendedValues)
336 for (
auto &&ActorVariation: Definition.
Variations)
339 if (ActorVariation.Id ==
"role_name")
342 ActorVariation.RecommendedValues = RecommendedValues;
352 AddRecommendedValuesForActorRoleName(Definition, { TEXT(
"front"), TEXT(
"back"), TEXT(
"left"), TEXT(
"right"), TEXT(
"front_left"), TEXT(
"front_right"), TEXT(
"back_left"), TEXT(
"back_right") });
362 Tick.
Id = TEXT(
"sensor_tick");
384 Friction.
Id = FString(
"friction");
399 FString Extent(
"extent");
400 FString Coordinates[3] = { FString(
"x"), FString(
"y"), FString(
"z") };
403 for (
auto Coordinate : Coordinates)
408 ExtentCoordinate.
Id =
JoinStrings(TEXT(
"_"), Extent, Coordinate);
429 const FString& Category,
476 const bool bEnableModifyingPostProcessEffects)
502 const bool bEnableModifyingPostProcessEffects,
511 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"camera"), Id);
525 FOV.
Id = TEXT(
"fov");
541 ResX.
Id = TEXT(
"image_size_x");
556 ResY.
Id = TEXT(
"image_size_y");
572 LensCircleFalloff.
Id = TEXT(
"lens_circle_falloff");
587 LensCircleMultiplier.
Id = TEXT(
"lens_circle_multiplier");
602 LensK.
Id = TEXT(
"lens_k");
617 LensKcube.
Id = TEXT(
"lens_kcube");
632 LensXSize.
Id = TEXT(
"lens_x_size");
647 LensYSize.
Id = TEXT(
"lens_y_size");
665 LensCircleMultiplier,
672if (bEnableModifyingPostProcessEffects)
676 PostProccess.
Id = TEXT(
"enable_postprocess_effects");
683 Gamma.
Id = TEXT(
"gamma");
692 MBIntesity.
Id = TEXT(
"motion_blur_intensity");
699 MBMaxDistortion.
Id = TEXT(
"motion_blur_max_distortion");
706 MBMinObjectScreenSize.
Id = TEXT(
"motion_blur_min_object_screen_size");
715 LensFlareIntensity.
Id = TEXT(
"lens_flare_intensity");
731 BloomIntensity.
Id = TEXT(
"bloom_intensity");
751 ExposureMode.
Id = TEXT(
"exposure_mode");
766 ExposureCompensation.
Id = TEXT(
"exposure_compensation");
785 ShutterSpeed.
Id = TEXT(
"shutter_speed");
792 ISO.
Id = TEXT(
"iso");
800 Aperture.
Id = TEXT(
"fstop");
810 ExposureMinBright.
Id = TEXT(
"exposure_min_bright");
817 ExposureMaxBright.
Id = TEXT(
"exposure_max_bright");
824 ExposureSpeedUp.
Id = TEXT(
"exposure_speed_up");
831 ExposureSpeedDown.
Id = TEXT(
"exposure_speed_down");
838 CalibrationConstant.
Id = TEXT(
"calibration_constant");
846 FocalDistance.
Id = TEXT(
"focal_distance");
853 DepthBlurAmount.
Id = TEXT(
"blur_amount");
860 DepthBlurRadius.
Id = TEXT(
"blur_radius");
869 MaxAperture.
Id = TEXT(
"min_fstop");
876 BladeCount.
Id = TEXT(
"blade_count");
884 FilmSlope.
Id = TEXT(
"slope");
890 FilmToe.
Id = TEXT(
"toe");
896 FilmShoulder.
Id = TEXT(
"shoulder");
902 FilmBlackClip.
Id = TEXT(
"black_clip");
908 FilmWhiteClip.
Id = TEXT(
"white_clip");
916 Temperature.
Id = TEXT(
"temp");
922 Tint.
Id = TEXT(
"tint");
928 ChromaticIntensity.
Id = TEXT(
"chromatic_aberration_intensity");
934 ChromaticOffset.
Id = TEXT(
"chromatic_aberration_offset");
946 ExposureCompensation,
976 MBMinObjectScreenSize,
1064 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"camera"), TEXT(
"normals"));
1074 FOV.
Id = TEXT(
"fov");
1081 ResX.
Id = TEXT(
"image_size_x");
1087 ResY.
Id = TEXT(
"image_size_y");
1094 LensCircleFalloff.
Id = TEXT(
"lens_circle_falloff");
1100 LensCircleMultiplier.
Id = TEXT(
"lens_circle_multiplier");
1106 LensK.
Id = TEXT(
"lens_k");
1112 LensKcube.
Id = TEXT(
"lens_kcube");
1118 LensXSize.
Id = TEXT(
"lens_x_size");
1124 LensYSize.
Id = TEXT(
"lens_y_size");
1135 LensCircleMultiplier,
1168 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"other"), TEXT(
"imu"));
1176 NoiseSeed.
Id = TEXT(
"noise_seed");
1184 StdDevAccelX.
Id = TEXT(
"noise_accel_stddev_x");
1191 StdDevAccelY.
Id = TEXT(
"noise_accel_stddev_y");
1198 StdDevAccelZ.
Id = TEXT(
"noise_accel_stddev_z");
1207 StdDevGyroX.
Id = TEXT(
"noise_gyro_stddev_x");
1214 StdDevGyroY.
Id = TEXT(
"noise_gyro_stddev_y");
1221 StdDevGyroZ.
Id = TEXT(
"noise_gyro_stddev_z");
1229 BiasGyroX.
Id = TEXT(
"noise_gyro_bias_x");
1236 BiasGyroY.
Id = TEXT(
"noise_gyro_bias_y");
1243 BiasGyroZ.
Id = TEXT(
"noise_gyro_bias_z");
1314 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"other"), TEXT(
"radar"));
1323 HorizontalFOV.
Id = TEXT(
"horizontal_fov");
1338 VerticalFOV.
Id = TEXT(
"vertical_fov");
1353 Range.
Id = TEXT(
"range");
1368 PointsPerSecond.
Id = TEXT(
"points_per_second");
1384 NoiseSeed.
Id = TEXT(
"noise_seed");
1440 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"lidar"), Id);
1450 Channels.
Id = TEXT(
"channels");
1456 Range.
Id = TEXT(
"range");
1462 PointsPerSecond.
Id = TEXT(
"points_per_second");
1468 Frequency.
Id = TEXT(
"rotation_frequency");
1474 UpperFOV.
Id = TEXT(
"upper_fov");
1480 LowerFOV.
Id = TEXT(
"lower_fov");
1486 HorizontalFOV.
Id = TEXT(
"horizontal_fov");
1492 AtmospAttenRate.
Id = TEXT(
"atmosphere_attenuation_rate");
1498 NoiseSeed.
Id = TEXT(
"noise_seed");
1505 DropOffGenRate.
Id = TEXT(
"dropoff_general_rate");
1511 DropOffIntensityLimit.
Id = TEXT(
"dropoff_intensity_limit");
1517 DropOffAtZeroIntensity.
Id = TEXT(
"dropoff_zero_intensity");
1523 StdDevLidar.
Id = TEXT(
"noise_stddev");
1527 if (Id ==
"ray_cast") {
1538 DropOffIntensityLimit,
1539 DropOffAtZeroIntensity,
1543 else if (Id ==
"ray_cast_semantic") {
1573 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"other"), TEXT(
"v2x"));
1578 NoiseSeed.
Id = TEXT(
"noise_seed");
1585 Frequency.
Id = TEXT(
"frequency_ghz");
1591 TransmitPower.
Id = TEXT(
"transmit_power");
1597 ReceiverSensitivity.
Id = TEXT(
"receiver_sensitivity");
1603 CombinedAntennaGain.
Id = TEXT(
"combined_antenna_gain");
1609 Scenario.
Id = TEXT(
"scenario");
1616 PLE.
Id = TEXT(
"path_loss_exponent");
1623 FSPL_RefDistance.
Id = TEXT(
"d_ref");
1629 FilterDistance.
Id = TEXT(
"filter_distance");
1635 EtsiFading.
Id = TEXT(
"use_etsi_fading");
1641 CustomFadingStddev.
Id = TEXT(
"custom_fading_stddev");
1647 GenCamMin.
Id = TEXT(
"gen_cam_min");
1653 GenCamMax.
Id = TEXT(
"gen_cam_max");
1659 FixedRate.
Id = TEXT(
"fixed_rate");
1665 PLModel.
Id = TEXT(
"path_loss_model");
1673 StdDevLat.
Id = TEXT(
"noise_lat_stddev");
1678 BiasLat.
Id = TEXT(
"noise_lat_bias");
1685 StdDevLong.
Id = TEXT(
"noise_lon_stddev");
1690 BiasLong.
Id = TEXT(
"noise_lon_bias");
1697 StdDevAlt.
Id = TEXT(
"noise_alt_stddev");
1702 BiasAlt.
Id = TEXT(
"noise_alt_bias");
1709 StdDevHeading.
Id = TEXT(
"noise_head_stddev");
1714 BiasHeading.
Id = TEXT(
"noise_head_bias");
1723 StdDevAccelX.
Id = TEXT(
"noise_accel_stddev_x");
1729 StdDevAccelY.
Id = TEXT(
"noise_accel_stddev_y");
1735 StdDevAccelZ.
Id = TEXT(
"noise_accel_stddev_z");
1742 StdDevYawrate.
Id = TEXT(
"noise_yawrate_stddev");
1747 BiasYawrate.
Id = TEXT(
"noise_yawrate_bias");
1755 StdDevVelX.
Id = TEXT(
"noise_vel_stddev_x");
1763 ReceiverSensitivity,
1765 CombinedAntennaGain,
1806 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"other"), TEXT(
"v2x_custom"));
1811 NoiseSeed.
Id = TEXT(
"noise_seed");
1818 TransmitPower.
Id = TEXT(
"transmit_power");
1824 ReceiverSensitivity.
Id = TEXT(
"receiver_sensitivity");
1830 Frequency.
Id = TEXT(
"frequency_ghz");
1836 CombinedAntennaGain.
Id = TEXT(
"combined_antenna_gain");
1842 Scenario.
Id = TEXT(
"scenario");
1849 PLE.
Id = TEXT(
"path_loss_exponent");
1856 FSPL_RefDistance.
Id = TEXT(
"d_ref");
1862 FilterDistance.
Id = TEXT(
"filter_distance");
1868 EtsiFading.
Id = TEXT(
"use_etsi_fading");
1874 CustomFadingStddev.
Id = TEXT(
"custom_fading_stddev");
1880 PLModel.
Id = TEXT(
"path_loss_model");
1889 ReceiverSensitivity,
1891 CombinedAntennaGain,
1918 FillIdAndTags(Definition, TEXT(
"sensor"), TEXT(
"other"), TEXT(
"gnss"));
1923 NoiseSeed.
Id = TEXT(
"noise_seed");
1930 StdDevLat.
Id = TEXT(
"noise_lat_stddev");
1935 BiasLat.
Id = TEXT(
"noise_lat_bias");
1942 StdDevLong.
Id = TEXT(
"noise_lon_stddev");
1947 BiasLong.
Id = TEXT(
"noise_lon_bias");
1954 StdDevAlt.
Id = TEXT(
"noise_alt_stddev");
1959 BiasAlt.
Id = TEXT(
"noise_alt_bias");
1984 {TEXT(
"autopilot"), TEXT(
"scenario"), TEXT(
"ego_vehicle")});
1990 Colors.
Id = TEXT(
"color");
2003 Drivers.
Id = TEXT(
"driver_id");
2014 StickyControl.
Id = TEXT(
"sticky_control");
2018 Definition.
Variations.Emplace(StickyControl);
2021 TerramechanicsAttribute.
Id = TEXT(
"terramechanics");
2025 Definition.
Variations.Emplace(TerramechanicsAttribute);
2028 TEXT(
"object_type"),
2039 TEXT(
"special_type"),
2045 TEXT(
"number_of_wheels"),
2057 TEXT(
"has_dynamic_doors"),
2065 Parameters.
HasLights ? TEXT(
"true") : TEXT(
"false")});
2069template <
typename T,
typename Functor>
2070static void FillActorDefinitionArray(
2071 const TArray<T> &ParameterArray,
2072 TArray<FActorDefinition> &Definitions,
2075 for (
auto &Item : ParameterArray)
2079 Maker(Item,
Success, Definition);
2082 Definitions.Emplace(std::move(Definition));
2088 const TArray<FVehicleParameters> &ParameterArray,
2089 TArray<FActorDefinition> &Definitions)
2100 FillIdAndTags(Definition, TEXT(
"walker"), TEXT(
"pedestrian"), Parameters.Id);
2107 case EPedestrianGender::Female:
return TEXT(
"female");
2108 case EPedestrianGender::Male:
return TEXT(
"male");
2109 default:
return TEXT(
"other");
2116 case EPedestrianAge::Child:
return TEXT(
"child");
2117 case EPedestrianAge::Teenager:
return TEXT(
"teenager");
2118 case EPedestrianAge::Elderly:
return TEXT(
"elderly");
2119 default:
return TEXT(
"adult");
2126 GetGender(Parameters.Gender)});
2136 GetAge(Parameters.Age)});
2140 TEXT(
"can_use_wheelchair"),
2142 Parameters.bCanUseWheelChair ? TEXT(
"true") : TEXT(
"false") });
2144 if (Parameters.Speed.Num() > 0)
2147 Speed.
Id = TEXT(
"speed");
2149 for (
auto &Value : Parameters.Speed)
2151 Speed.RecommendedValues.Emplace(FString::SanitizeFloat(Value));
2153 Speed.bRestrictToRecommended =
false;
2157 bool bCanUseWheelChair = Parameters.bCanUseWheelChair;
2160 IsInvincible.
Id = TEXT(
"is_invincible");
2167 WheelChairVariation.
Id = TEXT(
"use_wheelchair");
2169 if(bCanUseWheelChair)
2178 Definition.
Variations.Emplace(WheelChairVariation);
2184 const TArray<FPedestrianParameters> &ParameterArray,
2185 TArray<FActorDefinition> &Definitions)
2191 const TArray<FString> &ParameterArray,
2192 TArray<FActorDefinition> &Definitions)
2202 FillIdAndTags(Definition, TEXT(
"static"), TEXT(
"trigger"), Id);
2214 FillIdAndTags(Definition, TEXT(
"static"), TEXT(
"prop"), Parameters.Name);
2220 case EPropSize::Tiny:
return TEXT(
"tiny");
2221 case EPropSize::Small:
return TEXT(
"small");
2222 case EPropSize::Medium:
return TEXT(
"medium");
2223 case EPropSize::Big:
return TEXT(
"big");
2224 case EPropSize::Huge:
return TEXT(
"huge");
2225 default:
return TEXT(
"unknown");
2232 GetSize(Parameters.Size)});
2238 const TArray<FPropParameters> &ParameterArray,
2239 TArray<FActorDefinition> &Definitions)
2245 const FString &Type,
2253 distance.
Id = TEXT(
"distance");
2259 hitradius.
Id = TEXT(
"hit_radius");
2265 onlydynamics.
Id = TEXT(
"only_dynamics");
2271 debuglinetrace.
Id = TEXT(
"debug_linetrace");
2294 UE_LOG(LogCarla, Error, TEXT(
"ActorAttribute '%s' is not a bool"), *ActorAttribute.
Id);
2297 return ActorAttribute.
Value.ToBool();
2306 UE_LOG(LogCarla, Error, TEXT(
"ActorAttribute '%s' is not an int"), *ActorAttribute.
Id);
2309 return FCString::Atoi(*ActorAttribute.
Value);
2318 UE_LOG(LogCarla, Error, TEXT(
"ActorAttribute '%s' is not a float"), *ActorAttribute.
Id);
2321 return FCString::Atof(*ActorAttribute.
Value);
2326 const FString &Default)
2330 UE_LOG(LogCarla, Error, TEXT(
"ActorAttribute '%s' is not a string"), *ActorAttribute.
Id);
2333 return ActorAttribute.
Value;
2338 const FColor &Default)
2342 UE_LOG(LogCarla, Error, TEXT(
"ActorAttribute '%s' is not a color"), *ActorAttribute.
Id);
2345 TArray<FString> Channels;
2346 ActorAttribute.
Value.ParseIntoArray(Channels, TEXT(
","),
false);
2347 if (Channels.Num() != 3)
2351 TEXT(
"ActorAttribute '%s': invalid color '%s'"),
2353 *ActorAttribute.
Value);
2356 TArray<uint8> Colors;
2357 for (
auto &Str : Channels)
2359 auto Val = FCString::Atoi(*Str);
2360 if ((Val < 0) || (Val > std::numeric_limits<uint8>::max()))
2364 TEXT(
"ActorAttribute '%s': invalid color '%s'"),
2366 *ActorAttribute.
Value);
2372 Color.R = Colors[0u];
2373 Color.G = Colors[1u];
2374 Color.B = Colors[2u];
2380 const TMap<FString, FActorAttribute> &Attributes,
2383 return Attributes.Contains(Id) ?
2390 const TMap<FString, FActorAttribute> &Attributes,
2393 return Attributes.Contains(Id) ?
2400 const TMap<FString, FActorAttribute> &Attributes,
2403 return Attributes.Contains(Id) ?
2410 const TMap<FString, FActorAttribute> &Attributes,
2411 const FString &Default)
2413 return Attributes.Contains(Id) ?
2420 const TMap<FString, FActorAttribute> &Attributes,
2421 const FColor &Default)
2423 return Attributes.Contains(Id) ?
2435# define CARLA_ABFL_CHECK_ACTOR(ActorPtr) \
2436 if ((ActorPtr == nullptr) || ActorPtr->IsPendingKill()) \
2438 UE_LOG(LogCarla, Error, TEXT("Cannot set empty actor!")); \
2442# define CARLA_ABFL_CHECK_ACTOR(ActorPtr) \
2443 check((ActorPtr != nullptr) && !ActorPtr->IsPendingKill());
2456 if (Description.
Variations.Contains(
"enable_postprocess_effects"))
2460 Description.
Variations[
"enable_postprocess_effects"],
2560 constexpr float TO_CENTIMETERS = 1e2;
2594 if (Description.
Variations.Contains(
"noise_seed"))
2623 if (Description.
Variations.Contains(
"noise_seed"))
2654 constexpr float TO_CENTIMETERS = 1e2;
2656 if (Description.
Variations.Contains(
"noise_seed"))
2663 Radar->SetSeed(Radar->GetRandomEngine()->GenerateRandomSeed());
2666 Radar->SetHorizontalFOV(
2668 Radar->SetVerticalFOV(
2672 Radar->SetPointsPerSecond(
2681 if (Description.
Variations.Contains(
"noise_seed"))
2761 if (Description.
Variations.Contains(
"noise_seed"))
2808#undef CARLA_ABFL_CHECK_ACTOR
static FString JoinStrings(const FString &Separator, ARGS &&... Args)
static void AddVariationsForTrigger(FActorDefinition &Def)
static void AddRecommendedValuesForSensorRoleNames(FActorDefinition &Definition)
#define CARLA_ABFL_CHECK_ACTOR(ActorPtr)
static void AddRecommendedValuesForActorRoleName(FActorDefinition &Definition, TArray< FString > &&RecommendedValues)
static void AddVariationsForSensor(FActorDefinition &Def)
static FString ColorToFString(const FColor &Color)
static void FillIdAndTags(FActorDefinition &Def, TStrs &&... Strings)
============================================================================
UE_LOG(LogCarla, Log, TEXT("UActorDispatcher::Destroying actor: '%s' %x"), *Id, Actor)
#define DEBUG_ASSERT(predicate)
EActorAttributeType
List of valid types for actor attributes.(角色属性有效类型的列表)
void SetPathLossModel(const EPathLossModel path_loss_model)
void SetPropagationParams(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)
void SetScenario(EScenario scenario)
GNSS传感器表示类 实际的位置信息计算是在服务器端进行的
void SetLatitudeDeviation(float Value)
void SetLongitudeBias(float Value)
void SetLongitudeDeviation(float Value)
void SetAltitudeDeviation(float Value)
void SetAltitudeBias(float Value)
void SetLatitudeBias(float Value)
void SetGyroscopeBias(const FVector &Vec)
void SetAccelerationStandardDeviation(const FVector &Vec)
void SetGyroscopeStandardDeviation(const FVector &Vec)
A ray-cast based Radar sensor.
Base class for sensors using a USceneCaptureComponent2D for rendering the scene.
void SetExposureMethod(EAutoExposureMethod Method)
void SetFOVAngle(float FOVAngle)
void SetShutterSpeed(float Speed)
void SetImageSize(uint32 Width, uint32 Height)
void SetChromAberrIntensity(float Intensity)
void SetMotionBlurMinObjectScreenSize(float ScreenSize)
void SetFilmShoulder(float Shoulder)
void SetExposureCompensation(float Compensation)
void SetMotionBlurMaxDistortion(float MaxDistortion)
void SetDepthBlurAmount(float Amount)
void SetExposureMaxBrightness(float Brightness)
void SetWhiteTemp(float Temp)
void SetFilmBlackClip(float BlackClip)
void SetExposureCalibrationConstant(float Constant)
void SetAperture(float Aperture)
void EnablePostProcessingEffects(bool Enable=true)
void SetDepthBlurRadius(float Radius)
void SetFocalDistance(float Distance)
void SetChromAberrOffset(float ChromAberrOffset)
void SetLensFlareIntensity(float Intensity)
void SetBladeCount(int Count)
void SetFilmWhiteClip(float WhiteClip)
void SetBloomIntensity(float Intensity)
void SetMotionBlurIntensity(float Intensity)
void SetTargetGamma(float InTargetGamma)
void SetDepthOfFieldMinFstop(float MinFstop)
void SetWhiteTint(float Tint)
void SetFilmToe(float Toe)
void SetExposureSpeedDown(float Speed)
void SetFilmSlope(float Slope)
void SetExposureSpeedUp(float Speed)
void SetExposureMinBrightness(float Brightness)
URandomEngine * GetRandomEngine()
void SetSeed(int32 InSeed)
A sensor that produces data by applying post-process materials (shaders) to a scene capture image.
void SetFloatShaderParameter(uint8_t ShaderIndex, const FName &ParameterName, float Value)
void SetPropagationParams(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)
void SetGNSSDeviation(const float noise_lat_stddev, const float noise_lon_stddev, const float noise_alt_stddev, const float noise_head_stddev, const float noise_lat_bias, const float noise_lon_bias, const float noise_alt_bias, const float noise_head_bias)
void SetAccelerationStandardDeviation(const FVector &Vec)
void SetPathLossModel(const EPathLossModel path_loss_model)
void SetScenario(EScenario scenario)
void SetYawrateDeviation(const float noise_yawrate_stddev, const float noise_yawrate_bias)
void SetCaServiceParams(const float GenCamMin, const float GenCamMax, const bool FixedRate)
void SetVelDeviation(const float noise_vel_stddev)
Checks validity of FActorDefinition.(检查 FActorDefinition 的有效性)
bool IsValid(const FActorVariation &Variation)
bool OnScreenAssert(bool Predicate, const T &Format, ARGS &&... Args) const
If Predicate is false, print an error message.
bool AreTagsValid(const FString &Tags)
验证标签是否有效
FString GetDisplayId(const FString &Type, size_t Index, const T &Item)
为给定类型的项目生成显示ID。
bool SingleIsValid(const FActorDefinition &Definition)
Validate ActorDefinition and display messages on error.(验证ActorDefinition的有效性,并在出现错误时显示消息)
bool IsValid(const EActorAttributeType Type)
验证类型是否有效
bool AreValid(const FString &Type, const TArray< T > &Array)
Applies IsValid to each item in Array.
bool AreValid(const TArray< FActorDefinition > &ActorDefinitions)
Iterate all actor definitions and their properties and display messages on error.
bool ValueIsValid(const EActorAttributeType Type, const FString &Value)
验证值是否有效
bool IsIdValid(const FString &Id)
验证ID是否有效
bool IsValid(const FActorAttribute &Attribute)
bool ForEach(const FString &Type, const TArray< T > &Array, F Validator)
Applies Validator to each item in Array.
FScopedStack< FString > Stack
bool IsValid(const FActorDefinition &ActorDefinition)
FString GetDisplayId(const FString &Type, size_t Index, const FString &Item)
为给定类型的字符串项目生成显示ID的重载版本。
auto PushScope(V &&Value)
static FActorDefinition MakeIMUDefinition()
创建一个惯性测量单元参与者定义。
static void MakeTriggerDefinition(const FString &Id, bool &Success, FActorDefinition &Definition)
根据ID创建触发器参与者定义,并返回操作是否成功。
static FActorDefinition MakeCustomV2XDefinition()
创建一个自定义车对外界信息交换传感器参与者定义。
static void MakeVehicleDefinitions(const TArray< FVehicleParameters > &ParameterArray, TArray< FActorDefinition > &Definitions)
根据车辆参数数组创建多个车辆参与者定义。
static void MakePropDefinitions(const TArray< FPropParameters > &ParameterArray, TArray< FActorDefinition > &Definitions)
static void MakePedestrianDefinition(const FPedestrianParameters &Parameters, bool &Success, FActorDefinition &Definition)
根据行人参数创建行人参与者定义,并返回操作是否成功。
static int32 ActorAttributeToInt(const FActorAttribute &ActorAttribute, int32 Default)
将参与者属性转换为整数,如果不存在则返回默认值。
static FColor ActorAttributeToColor(const FActorAttribute &ActorAttribute, const FColor &Default)
将参与者属性转换为颜色,如果不存在则返回默认值。
static FColor RetrieveActorAttributeToColor(const FString &Id, const TMap< FString, FActorAttribute > &Attributes, const FColor &Default)
static void SetLidar(const FActorDescription &Description, FLidarDescription &Lidar)
static void SetRadar(const FActorDescription &Description, ARadar *Radar)
static void SetV2X(const FActorDescription &Description, AV2XSensor *V2X)
static void MakePedestrianDefinitions(const TArray< FPedestrianParameters > &ParameterArray, TArray< FActorDefinition > &Definitions)
根据行人参数数组创建多个行人参与者定义。
static int32 RetrieveActorAttributeToInt(const FString &Id, const TMap< FString, FActorAttribute > &Attributes, int32 Default)
从参与者属性映射中检索整数,如果不存在则返回默认值。
static FString ActorAttributeToString(const FActorAttribute &ActorAttribute, const FString &Default)
将参与者属性转换为字符串,如果不存在则返回默认值。
static bool RetrieveActorAttributeToBool(const FString &Id, const TMap< FString, FActorAttribute > &Attributes, bool Default)
从参与者属性映射中检索布尔值,如果不存在则返回默认值。
static FString RetrieveActorAttributeToString(const FString &Id, const TMap< FString, FActorAttribute > &Attributes, const FString &Default)
static FActorDefinition MakeCameraDefinition(const FString &Id, bool bEnableModifyingPostProcessEffects=false)
创建一个相机参与者定义。
static FActorDefinition MakeV2XDefinition()
创建一个车对外界信息交换传感器参与者定义。
static void MakeTriggerDefinitions(const TArray< FString > &ParameterArray, TArray< FActorDefinition > &Definitions)
根据ID数组创建触发器参与者定义。
static void MakePropDefinition(const FPropParameters &Parameters, bool &Success, FActorDefinition &Definition)
根据道具参数创建道具参与者定义,并返回操作是否成功。
static FActorDefinition MakeNormalsCameraDefinition()
创建一个法线相机参与者定义。
static FActorDefinition MakeRadarDefinition()
创建一个雷达参与者定义。
static FActorDefinition MakeLidarDefinition(const FString &Id)
创建一个激光雷达参与者定义。
static float RetrieveActorAttributeToFloat(const FString &Id, const TMap< FString, FActorAttribute > &Attributes, float Default)
static bool CheckActorDefinitions(const TArray< FActorDefinition > &ActorDefinitions)
返回演员定义列表是否有效。打印所有 发现错误
static void SetCustomV2X(const FActorDescription &Description, ACustomV2XSensor *V2X)
static FActorDefinition MakeGenericSensorDefinition(const FString &Type, const FString &Id)
创建一个通用的传感器参与者定义。
static float ActorAttributeToFloat(const FActorAttribute &ActorAttribute, float Default)
将参与者属性转换为浮点数,如果不存在则返回默认值。
static bool ActorAttributeToBool(const FActorAttribute &ActorAttribute, bool Default)
static FActorDefinition MakeGnssDefinition()
创建一个全球导航卫星系统传感器参与者定义。
static void SetGnss(const FActorDescription &Description, AGnssSensor *Gnss)
static FActorDefinition MakeGenericDefinition(const FString &Category, const FString &Type, const FString &Id)
创建一个通用的参与者定义。
static void SetIMU(const FActorDescription &Description, AInertialMeasurementUnit *IMU)
static void SetCamera(const FActorDescription &Description, ASceneCaptureSensor *Camera)
static void MakeVehicleDefinition(const FVehicleParameters &Parameters, bool &Success, FActorDefinition &Definition)
根据车辆参数创建车辆参与者定义,并返回操作是否成功。
static void MakeObstacleDetectorDefinitions(const FString &Type, const FString &Id, FActorDefinition &Definition)
static bool CheckActorDefinition(const FActorDefinition &ActorDefinitions)
返回角色定义是否有效。打印所有找到的错误
static int32 GenerateRandomSeed()
生成一个非确定性随机数种子。
An actor attribute, may be an intrinsic (non-modifiable) attribute of the actor or an user-defined ac...
TArray< FActorVariation > Variations
变体代表了用户可以修改的变量,以生成不同的变体 关于参与者
TArray< FActorAttribute > Attributes
属性表示参与者可能具有的不可修改的特性 帮助用户识别和过滤参与者
TSubclassOf< AActor > Class
要生成的参与者类(可选)
TMap< FString, FActorAttribute > Variations
用户选择了参与者的变化版本。请注意,此时是 由不可修改的属性表示
Definition of an actor variation.
TArray< FString > RecommendedValues
bool bRestrictToRecommended
float DropOffAtZeroIntensity
对于基于强度的下降,每个零强度点被下降的概率。
float HorizontalFov
水平视野(以度为单位),0 - 360。
int RandomSeed
该传感器使用的噪声/丢弃的随机种子。
float LowerFovLimit
最低激光的角度(以度为单位),从水平开始计数,负值表示在水平线以下。
float DropOffGenRate
随机丢弃的点的一般比例。
float DropOffIntensityLimit
对于基于强度的下降,高于该阈值的强度值没有任何点被下降。
uint32 PointsPerSecond
每秒钟所有激光产生的点。
float RotationFrequency
激光雷达旋转频率
float AtmospAttenRate
大气中的衰减率(单位:m^-1)
float UpperFovLimit
最高激光的角度(以度为单位),从水平线开始计数,正值表示水平线以上。
TArray< FColor > RecommendedColors
TArray< int32 > SupportedDrivers
此车辆支持的驾驶员(行人)的ID列表,如果没有任何驾驶员支持,则留空
TSubclassOf< ACarlaWheeledVehicle > Class
FString BaseType
(可选)用于车辆的基本分类(汽车/卡车/货车/自行车/摩托车)
FString ObjectType
(可选)用于车辆的自定义分类
FString SpecialType
(可选)用于对车辆进行更深入的分类(电动/应急/出租车等)