Upgrade to UE4.21

This commit is contained in:
nsubiron 2019-01-22 15:15:08 +01:00
parent 89af74d967
commit 6c8499c8c9
25 changed files with 94 additions and 64 deletions

View File

@ -13,10 +13,10 @@ matrix:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-5.0
- llvm-toolchain-trusty-6.0
packages:
- g++-7 # we need this one for the libstdc++.
- clang-5.0
- clang-6.0
- ninja-build
- python
- python-pip

View File

@ -1,5 +1,6 @@
## Latest changes
* Upgraded to Unreal Engine 4.21
* Upgraded Boost to 1.69.0
* Added point transformation functionality for LibCarla and PythonAPI
* Added "sensor_tick" attribute to sensors (cameras and lidars) to specify the capture rate in seconds

View File

@ -11,7 +11,7 @@ process.
![modules](img/modules.png)
In Linux, we compile CARLA and all the dependencies with clang-5.0 and C++14
In Linux, we compile CARLA and all the dependencies with clang-6.0 and C++14
standard. We however link against different runtime C++ libraries depending on
where the code going to be used, since all the code that is going to be linked
with Unreal Engine needs to be compiled using `libc++`.
@ -26,7 +26,7 @@ make setup
Get and compile dependencies
* llvm-5.0 (libc++ and libc++abi)
* llvm-6.0 (libc++ and libc++abi)
* rpclib-2.2.1 (twice, with libstdc++ and libc++)
* boost-1.69 (headers only)
* googletest-1.8.0 (with libc++)
@ -53,7 +53,7 @@ Two configurations:
#### CarlaUE4 and Carla plugin
Both compiled at the same step with Unreal Engine 4.19 build tool. They require
Both compiled at the same step with Unreal Engine 4.21 build tool. They require
the `UE4_ROOT` environment variable set.
Command

View File

@ -27,7 +27,7 @@ C++
* Comments should not exceed 80 columns, code may exceed this limit a bit in
rare occasions if it results in clearer code.
* Compilation should not give any error or warning
(`clang++ -Wall -Wextra -std=C++14 -Wno-missing-braces`).
(`clang++-6.0 -Wall -Wextra -std=C++14 -Wno-missing-braces`).
* Unreal C++ code (CarlaUE4 and Carla plugin) follow the
[Unreal Engine's Coding Standard][ue4link] with the exception of using
spaces instead of tabs.

View File

@ -8,20 +8,20 @@ Install the build tools and dependencies
```
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install build-essential clang-5.0 lld-5.0 g++-7 cmake ninja-build python python-pip python-dev python3-dev python3-pip libpng16-dev libtiff5-dev libjpeg-dev tzdata sed curl wget unzip autoconf libtool
sudo apt-get install build-essential clang-6.0 lld-6.0 g++-7 cmake ninja-build python python-pip python-dev python3-dev python3-pip libpng16-dev libtiff5-dev libjpeg-dev tzdata sed curl wget unzip autoconf libtool
pip2 install --user setuptools nose2
pip3 install --user setuptools nose2
```
To avoid compatibility issues between Unreal Engine and the CARLA dependencies,
the best configuration is to compile everything with the same compiler version
and C++ runtime library. We use clang 5.0 and LLVM's libc++. We recommend to
and C++ runtime library. We use clang 6.0 and LLVM's libc++. We recommend to
change your default clang version to compile Unreal Engine and the CARLA
dependencies
```sh
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-5.0/bin/clang++ 101
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-5.0/bin/clang 101
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-6.0/bin/clang++ 102
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-6.0/bin/clang 102
```
Build Unreal Engine
@ -32,13 +32,13 @@ Build Unreal Engine
need to add your GitHub username when you sign up at
[www.unrealengine.com](https://www.unrealengine.com).
Download and compile Unreal Engine 4.19. Here we will assume you install it at
`~/UnrealEngine_4.19", but you can install it anywhere, just replace the path
Download and compile Unreal Engine 4.21. Here we will assume you install it at
`~/UnrealEngine_4.21", but you can install it anywhere, just replace the path
where necessary.
```sh
git clone --depth=1 -b 4.19 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.19
cd ~/UnrealEngine_4.19
git clone --depth=1 -b 4.21 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.21
cd ~/UnrealEngine_4.21
./Setup.sh && ./GenerateProjectFiles.sh && make
```
@ -71,7 +71,7 @@ For CARLA to find your Unreal Engine's installation folder you need to set the
following environment variable
```sh
export UE4_ROOT=~/UnrealEngine_4.19
export UE4_ROOT=~/UnrealEngine_4.21
```
You can also add this variable to your `~/.bashrc` or `~/.profile`.

View File

@ -15,7 +15,7 @@
Also:
- [Unreal Engine](https://www.unrealengine.com/download) (v4.19.x)
- [Unreal Engine](https://www.unrealengine.com/download) (v4.21.x)
- [Visual Studio](https://www.visualstudio.com/downloads/) (2017)
<h3>Environment Setup</h3>

2
Jenkinsfile vendored
View File

@ -2,7 +2,7 @@ pipeline {
agent any
environment {
UE4_ROOT = '/var/lib/jenkins/UnrealEngine_4.19'
UE4_ROOT = '/var/lib/jenkins/UnrealEngine_4.21'
}
options {

View File

@ -9,7 +9,14 @@
#include "carla/NonCopyable.h"
#ifdef LIBCARLA_WITH_PYTHON_SUPPORT
# include <boost/python.hpp>
# if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-register"
# endif
# include <boost/python.hpp>
# if defined(__clang__)
# pragma clang diagnostic pop
# endif
#endif // LIBCARLA_WITH_PYTHON_SUPPORT
namespace carla {

View File

@ -7,6 +7,8 @@
#ifndef LIBCARLA_INCLUDED_DISABLE_UE4_MACROS_HEADER
#define LIBCARLA_INCLUDED_DISABLE_UE4_MACROS_HEADER
#include "Carla.h"
#ifndef BOOST_ERROR_CODE_HEADER_ONLY
# define BOOST_ERROR_CODE_HEADER_ONLY
#endif // BOOST_ERROR_CODE_HEADER_ONLY

View File

@ -1,6 +1,6 @@
{
"FileVersion": 3,
"EngineAssociation": "4.19",
"EngineAssociation": "4.21",
"Category": "",
"Description": "",
"Modules": [

View File

@ -28,13 +28,13 @@ r.DefaultFeature.AmbientOcclusionStaticFraction=False
r.DefaultFeature.AutoExposure=False
r.CustomDepth=3
r.Streaming.PoolSize=2000
r.TextureStreaming=False
r.TextureStreaming=True
[/Script/AIModule.AISense_Sight]
bAutoRegisterAllPawnsAsSources=False
bAutoRegisterNewPawnsAsSources=False
[/Script/Engine.RecastNavMesh]
[/Script/NavigationSystem.RecastNavMesh]
RuntimeGeneration=Static
[/Script/AIModule.CrowdManager]
@ -53,6 +53,7 @@ bEnablePCM=False
bEnableStabilization=False
bWarnMissingLocks=True
bEnable2DPhysics=False
PhysicErrorCorrection=(PingExtrapolation=0.100000,PingLimit=100.000000,ErrorPerLinearDifference=1.000000,ErrorPerAngularDifference=1.000000,MaxRestoredStateError=1.000000,MaxLinearHardSnapDistance=400.000000,PositionLerp=0.000000,AngleLerp=0.400000,LinearVelocityCoefficient=100.000000,AngularVelocityCoefficient=10.000000,ErrorAccumulationSeconds=0.500000,ErrorAccumulationDistanceSq=15.000000,ErrorAccumulationSimilarity=100.000000)
LockedAxis=Invalid
DefaultDegreesOfFreedom=Full3D
BounceThresholdVelocity=200.000000
@ -69,6 +70,8 @@ bDefaultHasComplexCollision=True
bSuppressFaceRemapTable=False
bSupportUVFromHitResults=False
bDisableActiveActors=False
bDisableKinematicStaticPairs=False
bDisableKinematicKinematicPairs=False
bDisableCCD=False
bEnableEnhancedDeterminism=False
MaxPhysicsDeltaTime=0.333330
@ -80,5 +83,14 @@ SyncSceneSmoothingFactor=0.000000
AsyncSceneSmoothingFactor=0.990000
InitialAverageFrameRate=0.016667
PhysXTreeRebuildRate=10
DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2)
[/Script/LinuxTargetPlatform.LinuxTargetSettings]
SpatializationPlugin=
ReverbPlugin=
OcclusionPlugin=
-TargetedRHIs=SF_VULKAN_SM5
-TargetedRHIs=GLSL_430
+TargetedRHIs=GLSL_430

View File

@ -26,7 +26,7 @@ UAgentComponent::UAgentComponent(const FObjectInitializer& ObjectInitializer)
{
bVisible = false;
bHiddenInGame = true;
bShouldUpdatePhysicsVolume = false;
SetShouldUpdatePhysicsVolume(false);
PrimaryComponentTick.bCanEverTick = false;
}

View File

@ -8,6 +8,8 @@ public class Carla : ModuleRules
{
public Carla(ReadOnlyTargetRules Target) : base(Target)
{
PrivatePCHHeaderFile = "Carla.h";
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
@ -115,7 +117,6 @@ public class Carla : ModuleRules
}
else
{
PublicAdditionalLibraries.Add(Path.Combine(LibCarlaInstallPath, "lib", GetLibName("c++abi")));
PublicAdditionalLibraries.Add(Path.Combine(LibCarlaInstallPath, "lib", GetLibName("rpc")));
if (UseDebugLibs(Target))
{

View File

@ -70,7 +70,7 @@ public:
/// @{
UFUNCTION(BlueprintCallable)
const FTransform &GetTransform() const
const FTransform &GetPlayerTransform() const
{
return Transform;
}

View File

@ -263,9 +263,9 @@ bool URoadMap::SaveAsPNG(const FString &Folder, const FString &MapName) const
const FIntPoint DestSize(Width, Height);
FString ResultPath;
FHighResScreenshotConfig &HighResScreenshotConfig = GetHighResScreenshotConfig();
HighResScreenshotConfig.SetHDRCapture(false);
HighResScreenshotConfig.SaveImage(ImagePath, BitMap, DestSize, &ResultPath);
// FHighResScreenshotConfig &HighResScreenshotConfig = GetHighResScreenshotConfig();
// HighResScreenshotConfig.SetHDRCapture(false);
// HighResScreenshotConfig.SaveImage(ImagePath, BitMap, DestSize, &ResultPath);
// Save metadata.
FFormatNamedArguments Args;

View File

@ -92,20 +92,21 @@ bool FPixelReader::WritePixelsToArray(
}
bool FPixelReader::SavePixelsToDisk(
UTextureRenderTarget2D &RenderTarget,
const FString &FilePath)
UTextureRenderTarget2D &/*RenderTarget*/,
const FString &/*FilePath*/)
{
TArray<FColor> OutBMP;
if (!WritePixelsToArray(RenderTarget, OutBMP)) {
return false;
}
for (FColor &color : OutBMP) {
color.A = 255u;
}
const FIntPoint DestSize(RenderTarget.GetSurfaceWidth(), RenderTarget.GetSurfaceHeight());
FString ResultPath;
FHighResScreenshotConfig &HighResScreenshotConfig = GetHighResScreenshotConfig();
return HighResScreenshotConfig.SaveImage(FilePath, OutBMP, DestSize, &ResultPath);
return false;
// TArray<FColor> OutBMP;
// if (!WritePixelsToArray(RenderTarget, OutBMP)) {
// return false;
// }
// for (FColor &color : OutBMP) {
// color.A = 255u;
// }
// const FIntPoint DestSize(RenderTarget.GetSurfaceWidth(), RenderTarget.GetSurfaceHeight());
// FString ResultPath;
// FHighResScreenshotConfig &HighResScreenshotConfig = GetHighResScreenshotConfig();
// return HighResScreenshotConfig.SaveImage(FilePath, OutBMP, DestSize, &ResultPath);
}
void FPixelReader::WritePixelsToBuffer(

View File

@ -95,7 +95,7 @@ void FCarlaEncoder::Encode(
Data.platform_timestamp = PlayerState.GetPlatformTimeStamp();
Data.game_timestamp = PlayerState.GetGameTimeStamp();
auto &Player = Data.player_measurements;
::Encode(PlayerState.GetTransform(), Player.transform);
::Encode(PlayerState.GetPlayerTransform(), Player.transform);
::Encode(PlayerState.GetBoundingBoxTransform(), Player.bounding_box.transform);
::Encode(PlayerState.GetBoundingBoxExtent() * TO_METERS, Player.bounding_box.extent);
::Encode(PlayerState.GetAcceleration() * TO_METERS, Player.acceleration);

View File

@ -6,12 +6,16 @@
#pragma once
#include "Carla/Settings/QualityLevelUE.h"
#include "CoreMinimal.h"
#include "Engine/StaticMesh.h"
#include "Engine/World.h"
#include "CarlaSettingsDelegate.generated.h"
class UCarlaSettings;
/// Used to set settings for every actor that is spawned into the world.
UCLASS(BlueprintType)
class CARLA_API UCarlaSettingsDelegate : public UObject

View File

@ -57,7 +57,7 @@ ARoutePlanner::ARoutePlanner(const FObjectInitializer &ObjectInitializer)
TriggerVolume->SetHiddenInGame(true);
TriggerVolume->SetMobility(EComponentMobility::Static);
TriggerVolume->SetCollisionProfileName(FName("OverlapAll"));
TriggerVolume->bGenerateOverlapEvents = true;
TriggerVolume->SetGenerateOverlapEvents(true);
// Do not change default value here, our autopilot depends on this.
TriggerVolume->SetBoxExtent(FVector{32.0f, 32.0f, 32.0f});

View File

@ -6,6 +6,8 @@ public class CarlaUE4 : ModuleRules
{
public CarlaUE4(ReadOnlyTargetRules Target) : base(Target)
{
PrivatePCHHeaderFile = "CarlaUE4.h";
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] { });

View File

@ -23,7 +23,7 @@ set BUILD_CARLAUE4_EDITOR=false
set LAUNCH_UE4_EDITOR=false
set REMOVE_INTERMEDIATE=false
set UE_VERSION=4.19
set UE_VERSION=4.21
:arg-parse
if not "%1"=="" (

View File

@ -2,8 +2,8 @@
source $(dirname "$0")/Environment.sh
export CC=clang-5.0
export CXX=clang++-5.0
export CC=clang-6.0
export CXX=clang++-6.0
# ==============================================================================
# -- Parse arguments -----------------------------------------------------------

View File

@ -24,7 +24,7 @@ set DO_COPY_FILES=true
set DO_TARBALL=true
set DO_CLEAN=false
set UE_VERSION=4.19
set UE_VERSION=4.21
:arg-parse
if not "%1"=="" (

View File

@ -4,14 +4,14 @@
# -- Set up environment --------------------------------------------------------
# ==============================================================================
command -v /usr/bin/clang++-5.0 >/dev/null 2>&1 || {
echo >&2 "clang 5.0 is required, but it's not installed.";
echo >&2 "make sure you build Unreal Engine with clang 5.0 too.";
command -v /usr/bin/clang++-6.0 >/dev/null 2>&1 || {
echo >&2 "clang 6.0 is required, but it's not installed.";
echo >&2 "make sure you build Unreal Engine with clang 6.0 too.";
exit 1;
}
export CC=/usr/bin/clang-5.0
export CXX=/usr/bin/clang++-5.0
export CC=/usr/bin/clang-6.0
export CXX=/usr/bin/clang++-6.0
source $(dirname "$0")/Environment.sh
@ -22,7 +22,7 @@ pushd ${CARLA_BUILD_FOLDER} >/dev/null
# -- Get and compile libc++ ----------------------------------------------------
# ==============================================================================
LLVM_BASENAME=llvm-5.0
LLVM_BASENAME=llvm-6.0
LLVM_INCLUDE=${PWD}/${LLVM_BASENAME}-install/include/c++/v1
LLVM_LIBPATH=${PWD}/${LLVM_BASENAME}-install/lib
@ -34,9 +34,9 @@ else
log "Retrieving libc++."
git clone --depth=1 -b release_50 https://github.com/llvm-mirror/llvm.git ${LLVM_BASENAME}-source
git clone --depth=1 -b release_50 https://github.com/llvm-mirror/libcxx.git ${LLVM_BASENAME}-source/projects/libcxx
git clone --depth=1 -b release_50 https://github.com/llvm-mirror/libcxxabi.git ${LLVM_BASENAME}-source/projects/libcxxabi
git clone --depth=1 -b release_60 https://github.com/llvm-mirror/llvm.git ${LLVM_BASENAME}-source
git clone --depth=1 -b release_60 https://github.com/llvm-mirror/libcxx.git ${LLVM_BASENAME}-source/projects/libcxx
git clone --depth=1 -b release_60 https://github.com/llvm-mirror/libcxxabi.git ${LLVM_BASENAME}-source/projects/libcxxabi
log "Compiling libc++."
@ -58,8 +58,8 @@ else
popd >/dev/null
# Workaround, it seems LLVM 5.0 does not install these files.
cp -v ${LLVM_BASENAME}-build/include/c++/v1/cxxabi.h ${LLVM_INCLUDE}
cp -v ${LLVM_BASENAME}-build/include/c++/v1/__cxxabi_config.h ${LLVM_INCLUDE}
# cp -v ${LLVM_BASENAME}-build/include/c++/v1/cxxabi.h ${LLVM_INCLUDE}
# cp -v ${LLVM_BASENAME}-build/include/c++/v1/__cxxabi_config.h ${LLVM_INCLUDE}
rm -Rf ${LLVM_BASENAME}-source ${LLVM_BASENAME}-build
@ -92,7 +92,7 @@ else
pushd ${BOOST_BASENAME}-source >/dev/null
BOOST_TOOLSET="clang-5.0"
BOOST_TOOLSET="clang-6.0"
BOOST_CFLAGS="-fPIC -std=c++14 -DBOOST_ERROR_CODE_HEADER_ONLY"
py2="/usr/bin/env python2"
@ -277,7 +277,7 @@ set(CMAKE_CXX_COMPILER ${CXX})
set(CMAKE_CXX_FLAGS "\${CMAKE_CXX_FLAGS} -std=c++14 -pthread -fPIC" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "\${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra" CACHE STRING "" FORCE)
# See https://bugs.llvm.org/show_bug.cgi?id=21629
set(CMAKE_CXX_FLAGS "\${CMAKE_CXX_FLAGS} -Wno-missing-braces" CACHE STRING "" FORCE)
# set(CMAKE_CXX_FLAGS "\${CMAKE_CXX_FLAGS} -Wno-missing-braces" CACHE STRING "" FORCE)
# @todo These flags need to be compatible with setup.py compilation.
set(CMAKE_CXX_FLAGS_RELEASE_CLIENT "\${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c++14 -Wno-missing-braces -DBOOST_ERROR_CODE_HEADER_ONLY -DLIBCARLA_ENABLE_LIFETIME_PROFILER -DLIBCARLA_WITH_PYTHON_SUPPORT" CACHE STRING "" FORCE)

View File

@ -12,20 +12,20 @@ help:
@type "${CARLA_BUILD_TOOLS_FOLDER}\Windows.mk.help"
launch: LibCarla
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --build --ue-version 4.19
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --build --ue-version 4.21
launch-editor: LibCarla
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --launch-editor
package: PythonAPI
@"${CARLA_BUILD_TOOLS_FOLDER}/Package.bat" --ue-version 4.19
@"${CARLA_BUILD_TOOLS_FOLDER}/Package.bat" --ue-version 4.21
docs:
@doxygen
@echo "Documentation index at ./Doxygen/html/index.html"
clean:
@"${CARLA_BUILD_TOOLS_FOLDER}/Package.bat" --clean --ue-version 4.19
@"${CARLA_BUILD_TOOLS_FOLDER}/Package.bat" --clean --ue-version 4.21
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --clean
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildPythonAPI.bat" --clean
@ -34,7 +34,7 @@ clean:
rebuild: setup
@${CARLA_BUILD_TOOLS_FOLDER}/BuildLibCarla.bat" --rebuild
@${CARLA_BUILD_TOOLS_FOLDER}/BuildPythonAPI.bat" --rebuild
@${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --rebuild --ue-version 4.19
@${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --rebuild --ue-version 4.21
check: PythonAPI
@echo "Not implemented!"
@ -43,7 +43,7 @@ benchmark: LibCarla
@echo "Not implemented!"
CarlaUE4Editor: LibCarla
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --build-editor --ue-version 4.19
@"${CARLA_BUILD_TOOLS_FOLDER}/BuildCarlaUE4.bat" --build-editor --ue-version 4.21
.PHONY: PythonAPI
PythonAPI: LibCarla