Replace references to CarlaUE4.
This commit is contained in:
parent
6a6acd9a86
commit
d0dce22ba1
|
@ -15,9 +15,9 @@ Dependencies/
|
||||||
Install/
|
Install/
|
||||||
Plugins/
|
Plugins/
|
||||||
|
|
||||||
!Unreal/CarlaUE4/Plugins
|
!Unreal/CarlaUnreal/Plugins
|
||||||
Unreal/CarlaUE4/Plugins/Streetmap
|
Unreal/CarlaUnreal/Plugins/Streetmap
|
||||||
Unreal/CarlaUE4/Plugins/HoudiniEngine
|
Unreal/CarlaUnreal/Plugins/HoudiniEngine
|
||||||
|
|
||||||
/ExportedMaps
|
/ExportedMaps
|
||||||
/Import/*
|
/Import/*
|
||||||
|
|
|
@ -349,7 +349,7 @@
|
||||||
|
|
||||||
## CARLA 0.9.7
|
## CARLA 0.9.7
|
||||||
|
|
||||||
* Upgraded parameters of Unreal/CarlaUE4/Config/DefaultInput.ini to prevent mouse freeze
|
* Upgraded parameters of Unreal/CarlaUnreal/Config/DefaultInput.ini to prevent mouse freeze
|
||||||
* Add build variant with AD RSS library integration with RSS sensor and result visualisation
|
* Add build variant with AD RSS library integration with RSS sensor and result visualisation
|
||||||
* Support for OpenGL and Vulkan in docker + headless mode
|
* Support for OpenGL and Vulkan in docker + headless mode
|
||||||
* Added new sensor: Inertial measurement unit (IMU)
|
* Added new sensor: Inertial measurement unit (IMU)
|
||||||
|
|
|
@ -38,7 +38,7 @@ set (
|
||||||
|
|
||||||
set (
|
set (
|
||||||
CARLA_UNREAL_PLUGINS_PATH
|
CARLA_UNREAL_PLUGINS_PATH
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4/Plugins
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins
|
||||||
)
|
)
|
||||||
|
|
||||||
include (CheckCCompilerFlag)
|
include (CheckCCompilerFlag)
|
||||||
|
@ -116,11 +116,11 @@ if (BUILD_CARLA_UE)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
carla_two_step_configure_file (
|
carla_two_step_configure_file (
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Carla.Build.cs
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins/Carla/Source/Carla/Carla.Build.cs
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Carla.Build.cs.in
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins/Carla/Source/Carla/Carla.Build.cs.in
|
||||||
)
|
)
|
||||||
|
|
||||||
carla_two_step_configure_file (
|
carla_two_step_configure_file (
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4/Plugins/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4/Plugins/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs.in
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal/Plugins/CarlaTools/Source/CarlaTools/CarlaTools.Build.cs.in
|
||||||
)
|
)
|
||||||
|
|
|
@ -19,7 +19,7 @@ EXAMPLES_PATH = WORKSPACE_PATH / 'Examples'
|
||||||
UTIL_PATH = WORKSPACE_PATH / 'Util'
|
UTIL_PATH = WORKSPACE_PATH / 'Util'
|
||||||
DOCKER_UTILS_PATH = UTIL_PATH / 'DockerUtils'
|
DOCKER_UTILS_PATH = UTIL_PATH / 'DockerUtils'
|
||||||
PATCHES_PATH = UTIL_PATH / 'Patches'
|
PATCHES_PATH = UTIL_PATH / 'Patches'
|
||||||
CARLA_UE_PATH = WORKSPACE_PATH / 'Unreal' / 'CarlaUE4'
|
CARLA_UE_PATH = WORKSPACE_PATH / 'Unreal' / 'CarlaUnreal'
|
||||||
CARLA_UE_PLUGIN_ROOT_PATH = CARLA_UE_PATH / 'Plugins'
|
CARLA_UE_PLUGIN_ROOT_PATH = CARLA_UE_PATH / 'Plugins'
|
||||||
CARLA_UE_PLUGIN_PATH = CARLA_UE_PLUGIN_ROOT_PATH / 'Carla'
|
CARLA_UE_PLUGIN_PATH = CARLA_UE_PLUGIN_ROOT_PATH / 'Carla'
|
||||||
CARLA_UE_PLUGIN_DEPENDENCIES_PATH = CARLA_UE_PLUGIN_ROOT_PATH / 'CarlaDependencies'
|
CARLA_UE_PLUGIN_DEPENDENCIES_PATH = CARLA_UE_PLUGIN_ROOT_PATH / 'CarlaDependencies'
|
||||||
|
@ -1390,7 +1390,7 @@ def BuildCarlaUEMain():
|
||||||
'Development',
|
'Development',
|
||||||
'-WaitMutex',
|
'-WaitMutex',
|
||||||
'-FromMsBuild',
|
'-FromMsBuild',
|
||||||
CARLA_UE_PATH / 'CarlaUE4.uproject',
|
CARLA_UE_PATH / 'CarlaUnreal.uproject',
|
||||||
], log_name = 'carla-ue-editor-build')
|
], log_name = 'carla-ue-editor-build')
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -140,9 +140,9 @@ python -m pip install GPUtil
|
||||||
1. Start CARLA:
|
1. Start CARLA:
|
||||||
|
|
||||||
# Linux:
|
# Linux:
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
# Windows:
|
# Windows:
|
||||||
CarlaUE4.exe
|
CarlaUnreal.exe
|
||||||
# Source:
|
# Source:
|
||||||
make launch
|
make launch
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,11 @@ The parameters we can use are:
|
||||||
|
|
||||||
For example
|
For example
|
||||||
|
|
||||||
**./CarlaUE4.sh --nullrhi**
|
**./CarlaUnreal.sh --nullrhi**
|
||||||
|
|
||||||
The primary server will use by default the port 2002 to listen for secondary servers. If you need to listen on another port, then you can change it with the flag
|
The primary server will use by default the port 2002 to listen for secondary servers. If you need to listen on another port, then you can change it with the flag
|
||||||
|
|
||||||
**./CarlaUE4.sh --nullrhi -carla-primary-port=3002**
|
**./CarlaUnreal.sh --nullrhi -carla-primary-port=3002**
|
||||||
|
|
||||||
## Secondary servers
|
## Secondary servers
|
||||||
|
|
||||||
|
@ -32,13 +32,13 @@ Then we need to start as many servers as we want, but the ideal is to have as ma
|
||||||
|
|
||||||
For example, if the primary server is executing in the same computer than the secondary servers and with the default port, we can use this:
|
For example, if the primary server is executing in the same computer than the secondary servers and with the default port, we can use this:
|
||||||
|
|
||||||
**./CarlaUE4.sh -carla-rpc-port=3000 -carla-primary-host=127.0.0.1 -ini:[/Script/Engine.RendererSettings]:r.GraphicsAdapter=0**
|
**./CarlaUnreal.sh -carla-rpc-port=3000 -carla-primary-host=127.0.0.1 -ini:[/Script/Engine.RendererSettings]:r.GraphicsAdapter=0**
|
||||||
|
|
||||||
Here, the secondary server will use port 3000 as the RPC server to avoid conflicts with other ports (but it will never be used), and will connect to the primary server located at IP 127.0.0.1 (localhost) in the default port (2002), and also this server will use the GPU device 0.
|
Here, the secondary server will use port 3000 as the RPC server to avoid conflicts with other ports (but it will never be used), and will connect to the primary server located at IP 127.0.0.1 (localhost) in the default port (2002), and also this server will use the GPU device 0.
|
||||||
|
|
||||||
If we want to start another secondary server in the same machine using another GPU, we could use this command:
|
If we want to start another secondary server in the same machine using another GPU, we could use this command:
|
||||||
|
|
||||||
**./CarlaUE4.sh -carla-rpc-port=4000 -carla-primary-host=127.0.0.1 -carla-primary-port=2002 -ini:[/Script/Engine.RendererSettings]:r.GraphicsAdapter=1**
|
**./CarlaUnreal.sh -carla-rpc-port=4000 -carla-primary-host=127.0.0.1 -carla-primary-port=2002 -ini:[/Script/Engine.RendererSettings]:r.GraphicsAdapter=1**
|
||||||
|
|
||||||
This secondary server will use port 4000 as the RPC server to avoid conflicts with other ports and will connect to the primary server located at IP 127.0.0.1 in the port 2002, and also this server will use the GPU device 1.
|
This secondary server will use port 4000 as the RPC server to avoid conflicts with other ports and will connect to the primary server located at IP 127.0.0.1 in the port 2002, and also this server will use the GPU device 1.
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ python3 config.py -x opendrive/TownBig.xodr
|
||||||
__[client.generate_opendrive_world()](python_api.md#carla.Client.generate_opendrive_world)__ uses __content of the OpenDRIVE file parsed as string__. On the contrary, __`config.py`__ script needs __the path to the `.xodr` file__.
|
__[client.generate_opendrive_world()](python_api.md#carla.Client.generate_opendrive_world)__ uses __content of the OpenDRIVE file parsed as string__. On the contrary, __`config.py`__ script needs __the path to the `.xodr` file__.
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
If you experience the error `opendrive could not be correctly parsed`, ensure that there are write permissions on the `CarlaUE4/Content/Carla/Maps/OpenDrive/` directory. This is required by the server to parse the `xodr` file correctly.
|
If you experience the error `opendrive could not be correctly parsed`, ensure that there are write permissions on the `CarlaUnreal/Content/Carla/Maps/OpenDrive/` directory. This is required by the server to parse the `xodr` file correctly.
|
||||||
|
|
||||||
---
|
---
|
||||||
## Mesh generation
|
## Mesh generation
|
||||||
|
|
|
@ -29,7 +29,7 @@ The recorder file includes information regarding many different elements.
|
||||||
* __Pedestrians__ — position and orientation, and linear and angular velocity.
|
* __Pedestrians__ — position and orientation, and linear and angular velocity.
|
||||||
* __Lights__ — Light states from buildings, streets, and vehicles.
|
* __Lights__ — Light states from buildings, streets, and vehicles.
|
||||||
|
|
||||||
To start recording there is only need for a file name. Using `\`, `/` or `:` characters in the file name will define it as an absolute path. If no path is detailed, the file will be saved in `CarlaUE4/Saved`.
|
To start recording there is only need for a file name. Using `\`, `/` or `:` characters in the file name will define it as an absolute path. If no path is detailed, the file will be saved in `CarlaUnreal/Saved`.
|
||||||
|
|
||||||
```py
|
```py
|
||||||
client.start_recorder("/home/carla/recording01.log")
|
client.start_recorder("/home/carla/recording01.log")
|
||||||
|
|
|
@ -31,13 +31,13 @@ The simulation runs significantly faster in __Low__ mode. This is helpful in sit
|
||||||
The images below compare both modes. The flag used is the same for Windows and Linux. There is no equivalent option when working with the build, but the UE editor has its own quality settings. Go to `Settings/Engine Scalability Settings` for a greater customization of the desired quality.
|
The images below compare both modes. The flag used is the same for Windows and Linux. There is no equivalent option when working with the build, but the UE editor has its own quality settings. Go to `Settings/Engine Scalability Settings` for a greater customization of the desired quality.
|
||||||
|
|
||||||
#### Epic mode
|
#### Epic mode
|
||||||
`./CarlaUE4.sh -quality-level=Epic`
|
`./CarlaUnreal.sh -quality-level=Epic`
|
||||||
|
|
||||||
![Epic mode screenshot](img/rendering_quality_epic.jpg)
|
![Epic mode screenshot](img/rendering_quality_epic.jpg)
|
||||||
*Epic mode screenshot*
|
*Epic mode screenshot*
|
||||||
|
|
||||||
#### Low mode
|
#### Low mode
|
||||||
`./CarlaUE4.sh -quality-level=Low`
|
`./CarlaUnreal.sh -quality-level=Low`
|
||||||
|
|
||||||
![Low mode screenshot](img/rendering_quality_low.jpg)
|
![Low mode screenshot](img/rendering_quality_low.jpg)
|
||||||
*Low mode screenshot*
|
*Low mode screenshot*
|
||||||
|
@ -45,7 +45,7 @@ The images below compare both modes. The flag used is the same for Windows and L
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
!!! Important
|
!!! Important
|
||||||
The issue that made Epic mode show an abnormal whiteness has been fixed. If the problem persists, delete `GameUserSettings.ini`. It is saving previous settings, and will be generated again in the next run. __Ubuntu path:__ ` ~/.config/Epic/CarlaUE4/Saved/Config/LinuxNoEditor/` __Windows path:__ `<Package folder>\WindowsNoEditor\CarlaUE4\Saved\Config\WindowsNoEditor\`
|
The issue that made Epic mode show an abnormal whiteness has been fixed. If the problem persists, delete `GameUserSettings.ini`. It is saving previous settings, and will be generated again in the next run. __Ubuntu path:__ ` ~/.config/Epic/CarlaUnreal/Saved/Config/LinuxNoEditor/` __Windows path:__ `<Package folder>\WindowsNoEditor\CarlaUnreal\Saved\Config\WindowsNoEditor\`
|
||||||
|
|
||||||
---
|
---
|
||||||
## No-rendering mode
|
## No-rendering mode
|
||||||
|
@ -97,7 +97,7 @@ It is important to understand the distinction between __no-rendering mode__ and
|
||||||
To start CARLA in off-screen mode, run the following command:
|
To start CARLA in off-screen mode, run the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./CarlaUE4.sh -RenderOffScreen
|
./CarlaUnreal.sh -RenderOffScreen
|
||||||
```
|
```
|
||||||
|
|
||||||
### Setting off-screen mode (Versions prior to 0.9.12)
|
### Setting off-screen mode (Versions prior to 0.9.12)
|
||||||
|
@ -108,7 +108,7 @@ __Using OpenGL__, you can run in off-screen mode in Linux by running the followi
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Linux
|
# Linux
|
||||||
DISPLAY= ./CarlaUE4.sh -opengl
|
DISPLAY= ./CarlaUnreal.sh -opengl
|
||||||
```
|
```
|
||||||
|
|
||||||
__Vulkan__ requires extra steps because it needs to communicate to the display X server using the X11 network protocol to work properly. The following steps will guide you on how to set up an Ubuntu 18.04 machine without a display so that CARLA can run with Vulkan.
|
__Vulkan__ requires extra steps because it needs to communicate to the display X server using the X11 network protocol to work properly. The following steps will guide you on how to set up an Ubuntu 18.04 machine without a display so that CARLA can run with Vulkan.
|
||||||
|
@ -152,7 +152,7 @@ sudo X :0 &
|
||||||
__7. Run CARLA:__
|
__7. Run CARLA:__
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
DISPLAY=:0.GPU ./CarlaUE4.sh -vulkan
|
DISPLAY=:0.GPU ./CarlaUnreal.sh -vulkan
|
||||||
```
|
```
|
||||||
|
|
||||||
CARLA provides a Dockerfile that performs all the above steps [here](https://github.com/carla-simulator/carla/blob/0.9.12/Util/Docker/Release.Dockerfile).
|
CARLA provides a Dockerfile that performs all the above steps [here](https://github.com/carla-simulator/carla/blob/0.9.12/Util/Docker/Release.Dockerfile).
|
||||||
|
|
|
@ -25,7 +25,7 @@ SUMO is ready to run the co-simulations. There are some examples in `Co-Simulati
|
||||||
Run a CARLA simulation with __Town04__.
|
Run a CARLA simulation with __Town04__.
|
||||||
```sh
|
```sh
|
||||||
cd ~/carla
|
cd ~/carla
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
cd PythonAPI/util
|
cd PythonAPI/util
|
||||||
python3 config.py --map Town04
|
python3 config.py --map Town04
|
||||||
```
|
```
|
||||||
|
|
|
@ -458,7 +458,7 @@ The CARLA server keeps a register of all TM instances by storing the port and th
|
||||||
In a multi-client simulation, multiple TMs are created on the same port. The first TM will be a TM-Server and the rest will be TM-Clients connecting to it. The TM-Server will dictate the behavior of all the TM instances:
|
In a multi-client simulation, multiple TMs are created on the same port. The first TM will be a TM-Server and the rest will be TM-Clients connecting to it. The TM-Server will dictate the behavior of all the TM instances:
|
||||||
|
|
||||||
```py
|
```py
|
||||||
terminal 1: ./CarlaUE4.sh -carla-rpc-port=4000
|
terminal 1: ./CarlaUnreal.sh -carla-rpc-port=4000
|
||||||
terminal 2: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server
|
terminal 2: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server
|
||||||
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Client
|
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Client
|
||||||
```
|
```
|
||||||
|
@ -468,7 +468,7 @@ terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Client
|
||||||
In a multi-TM simulation, multiple TM instances are created on distinct ports. Each TM instance will control its own behavior:
|
In a multi-TM simulation, multiple TM instances are created on distinct ports. Each TM instance will control its own behavior:
|
||||||
|
|
||||||
```py
|
```py
|
||||||
terminal 1: ./CarlaUE4.sh -carla-rpc-port=4000
|
terminal 1: ./CarlaUnreal.sh -carla-rpc-port=4000
|
||||||
terminal 2: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server A
|
terminal 2: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server A
|
||||||
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4550 # TM-Server B
|
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4550 # TM-Server B
|
||||||
```
|
```
|
||||||
|
@ -478,8 +478,8 @@ terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4550 # TM-Server B
|
||||||
Multi-simulation is when more than one CARLA server is running at the same time. The TM needs to connect to the relevant CARLA server port. As long as the computational power allows for it, the TM can run multiple simulations at a time without any problems:
|
Multi-simulation is when more than one CARLA server is running at the same time. The TM needs to connect to the relevant CARLA server port. As long as the computational power allows for it, the TM can run multiple simulations at a time without any problems:
|
||||||
|
|
||||||
```py
|
```py
|
||||||
terminal 1: ./CarlaUE4.sh -carla-rpc-port=4000 # simulation A
|
terminal 1: ./CarlaUnreal.sh -carla-rpc-port=4000 # simulation A
|
||||||
terminal 2: ./CarlaUE4.sh -carla-rpc-port=5000 # simulation B
|
terminal 2: ./CarlaUnreal.sh -carla-rpc-port=5000 # simulation B
|
||||||
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server A connected to simulation A
|
terminal 3: python3 generate_traffic.py --port 4000 --tm-port 4050 # TM-Server A connected to simulation A
|
||||||
terminal 4: python3 generate_traffic.py --port 5000 --tm-port 5050 # TM-Server B connected to simulation B
|
terminal 4: python3 generate_traffic.py --port 5000 --tm-port 5050 # TM-Server B connected to simulation B
|
||||||
```
|
```
|
||||||
|
|
|
@ -51,13 +51,13 @@ __CARLA 0.9.12__
|
||||||
To run CARLA with a display:
|
To run CARLA with a display:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:0.9.12 /bin/bash ./CarlaUE4.sh
|
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:0.9.12 /bin/bash ./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
To run CARLA in off-screen mode:
|
To run CARLA in off-screen mode:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo docker run --privileged --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.12 /bin/bash ./CarlaUE4.sh -RenderOffScreen
|
sudo docker run --privileged --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.12 /bin/bash ./CarlaUnreal.sh -RenderOffScreen
|
||||||
```
|
```
|
||||||
|
|
||||||
__CARLA 0.9.7 to 0.9.11__
|
__CARLA 0.9.7 to 0.9.11__
|
||||||
|
@ -65,7 +65,7 @@ __CARLA 0.9.7 to 0.9.11__
|
||||||
To run CARLA using Vulkan:
|
To run CARLA using Vulkan:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VIDEODRIVER=x11 -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.11 /bin/bash ./CarlaUE4.sh -vulkan <-additonal-carla-flags>
|
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VIDEODRIVER=x11 -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.11 /bin/bash ./CarlaUnreal.sh -vulkan <-additonal-carla-flags>
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
|
@ -74,7 +74,7 @@ sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VI
|
||||||
To run CARLA using OpenGL:
|
To run CARLA using OpenGL:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -e DISPLAY=$DISPLAY --net=host --gpus all --runtime=nvidia carlasim/carla:<version> /bin/bash CarlaUE4.sh -opengl <-additonal-carla-flags>
|
docker run -e DISPLAY=$DISPLAY --net=host --gpus all --runtime=nvidia carlasim/carla:<version> /bin/bash CarlaUnreal.sh -opengl <-additonal-carla-flags>
|
||||||
```
|
```
|
||||||
|
|
||||||
__3. (Optional) Configure Docker flags.__
|
__3. (Optional) Configure Docker flags.__
|
||||||
|
|
|
@ -20,7 +20,7 @@ CARLA forum</a>
|
||||||
|
|
||||||
## Linux build
|
## Linux build
|
||||||
|
|
||||||
* ["CarlaUE4.sh" script does not appear when downloading from GitHub.](#carlaue4sh-script-does-not-appear-when-downloading-from-github)
|
* ["CarlaUnreal.sh" script does not appear when downloading from GitHub.](#carlaue4sh-script-does-not-appear-when-downloading-from-github)
|
||||||
* ["make launch" is not working on Linux.](#make-launch-is-not-working-on-linux)
|
* ["make launch" is not working on Linux.](#make-launch-is-not-working-on-linux)
|
||||||
* [Cloning the Unreal Engine repository shows an error.](#cloning-the-unreal-engine-repository-shows-an-error)
|
* [Cloning the Unreal Engine repository shows an error.](#cloning-the-unreal-engine-repository-shows-an-error)
|
||||||
* [AttributeError: module 'carla' has no attribute 'Client' when running a script.](#attributeerror-module-carla-has-no-attribute-client-when-running-a-script)
|
* [AttributeError: module 'carla' has no attribute 'Client' when running a script.](#attributeerror-module-carla-has-no-attribute-client-when-running-a-script)
|
||||||
|
@ -30,8 +30,8 @@ CARLA forum</a>
|
||||||
|
|
||||||
## Windows build
|
## Windows build
|
||||||
|
|
||||||
* ["CarlaUE4.exe" does not appear when downloading from GitHub.](#carlaue4exe-does-not-appear-when-downloading-from-github)
|
* ["CarlaUnreal.exe" does not appear when downloading from GitHub.](#carlaue4exe-does-not-appear-when-downloading-from-github)
|
||||||
* [CarlaUE4 could not be compiled. Try rebuilding it from source manually.](#carlaue4-could-not-be-compiled-try-rebuilding-it-from-source-manually)
|
* [CarlaUnreal could not be compiled. Try rebuilding it from source manually.](#carlaue4-could-not-be-compiled-try-rebuilding-it-from-source-manually)
|
||||||
* [CMake error shows even though CMake is properly installed.](#cmake-error-shows-even-though-cmake-is-properly-installed)
|
* [CMake error shows even though CMake is properly installed.](#cmake-error-shows-even-though-cmake-is-properly-installed)
|
||||||
* [Error C2440, C2672: compiler version.](#error-c2440-c2672-compiler-version)
|
* [Error C2440, C2672: compiler version.](#error-c2440-c2672-compiler-version)
|
||||||
* ["make launch" is not working on Windows.](#make-launch-is-not-working-on-windows)
|
* ["make launch" is not working on Windows.](#make-launch-is-not-working-on-windows)
|
||||||
|
@ -82,11 +82,11 @@ CARLA forum</a>
|
||||||
|
|
||||||
## Linux build
|
## Linux build
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
###### "CarlaUE4.sh" script does not appear when downloading from GitHub.
|
###### "CarlaUnreal.sh" script does not appear when downloading from GitHub.
|
||||||
|
|
||||||
> There is no `CarlaUE4.sh` script in the source version of CARLA. Follow the [build instructions](build_linux.md) to build CARLA from source.
|
> There is no `CarlaUnreal.sh` script in the source version of CARLA. Follow the [build instructions](build_linux.md) to build CARLA from source.
|
||||||
>
|
>
|
||||||
> To run CARLA using `CarlaUE4.sh`, follow the [quick start installation](start_quickstart.md).
|
> To run CARLA using `CarlaUnreal.sh`, follow the [quick start installation](start_quickstart.md).
|
||||||
|
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
|
|
||||||
|
@ -196,17 +196,17 @@ CARLA forum</a>
|
||||||
## Windows build
|
## Windows build
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
|
|
||||||
###### "CarlaUE4.exe" does not appear when downloading from GitHub.
|
###### "CarlaUnreal.exe" does not appear when downloading from GitHub.
|
||||||
|
|
||||||
> There is no `CarlaUE4.exe` executable in the source version of CARLA. Follow the [build instructions](build_windows.md) to build CARLA from source. To directly get the `CarlaUE4.exe`, follow the [quick start instructions](start_quickstart.md).
|
> There is no `CarlaUnreal.exe` executable in the source version of CARLA. Follow the [build instructions](build_windows.md) to build CARLA from source. To directly get the `CarlaUnreal.exe`, follow the [quick start instructions](start_quickstart.md).
|
||||||
|
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
|
|
||||||
###### CarlaUE4 could not be compiled. Try rebuilding it from source manually.
|
###### CarlaUnreal could not be compiled. Try rebuilding it from source manually.
|
||||||
|
|
||||||
> Something went wrong when trying to build CARLA. Rebuild using Visual Studio to discover what happened.
|
> Something went wrong when trying to build CARLA. Rebuild using Visual Studio to discover what happened.
|
||||||
>
|
>
|
||||||
> __1.__ Go to `carla/Unreal/CarlaUE4` and right-click the `CarlaUE4.uproject`.
|
> __1.__ Go to `carla/Unreal/CarlaUnreal` and right-click the `CarlaUnreal.uproject`.
|
||||||
> __2.__ Click on __Generate Visual Studio project files__.
|
> __2.__ Click on __Generate Visual Studio project files__.
|
||||||
> __3.__ Open the file generated with Visual Studio 2019.
|
> __3.__ Open the file generated with Visual Studio 2019.
|
||||||
> __4.__ Compile the project with Visual Studio. The shortcut is F7. The build will fail, but the issues found will be shown below.
|
> __4.__ Compile the project with Visual Studio. The shortcut is F7. The build will fail, but the issues found will be shown below.
|
||||||
|
@ -394,7 +394,7 @@ CARLA forum</a>
|
||||||
|
|
||||||
> In Linux, run `make package` in the project folder. The package will include the project, and the Python API modules.
|
> In Linux, run `make package` in the project folder. The package will include the project, and the Python API modules.
|
||||||
>
|
>
|
||||||
> Alternatively, it is possible to compile a binary version of CARLA within Unreal Editor. Open the CarlaUE4 project, go to the menu `File/Package Project`, and select a platform. This may take a while.
|
> Alternatively, it is possible to compile a binary version of CARLA within Unreal Editor. Open the CarlaUnreal project, go to the menu `File/Package Project`, and select a platform. This may take a while.
|
||||||
|
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
|
|
||||||
|
|
|
@ -191,11 +191,11 @@ The assets will be downloaded and extracted to the appropriate location.
|
||||||
To download the assets for a __specific version__ of CARLA:
|
To download the assets for a __specific version__ of CARLA:
|
||||||
|
|
||||||
1. From the root CARLA directory, navigate to `/Util/ContentVersions.txt`. This document contains the links to the assets for all CARLA releases.
|
1. From the root CARLA directory, navigate to `/Util/ContentVersions.txt`. This document contains the links to the assets for all CARLA releases.
|
||||||
2. Extract the assets in `Unreal\CarlaUE4\Content\Carla`. If the path doesn't exist, create it.
|
2. Extract the assets in `Unreal\CarlaUnreal\Content\Carla`. If the path doesn't exist, create it.
|
||||||
3. Extract the file with a command similar to the following:
|
3. Extract the file with a command similar to the following:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
tar -xvzf <assets_file_name>.tar.gz.tar -C /path/to/carla/Unreal/CarlaUE4/Content/Carla
|
tar -xvzf <assets_file_name>.tar.gz.tar -C /path/to/carla/Unreal/CarlaUnreal/Content/Carla
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set Unreal Engine environment variable
|
### Set Unreal Engine environment variable
|
||||||
|
|
|
@ -58,7 +58,7 @@ Two configurations:
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
## CarlaUE4 and Carla plugin
|
## CarlaUnreal and Carla plugin
|
||||||
|
|
||||||
Both compiled at the same step with Unreal Engine build tool. They require the `UE4_ROOT` environment variable set.
|
Both compiled at the same step with Unreal Engine build tool. They require the `UE4_ROOT` environment variable set.
|
||||||
|
|
||||||
|
|
|
@ -41,16 +41,16 @@ git pull origin master
|
||||||
git checkout master
|
git checkout master
|
||||||
make clean
|
make clean
|
||||||
git pull origin master
|
git pull origin master
|
||||||
# Erase the content in `Unreal\CarlaUE4\Content\Carla`.
|
# Erase the content in `Unreal\CarlaUnreal\Content\Carla`.
|
||||||
# Go to `\Util\ContentVersions.txt`.
|
# Go to `\Util\ContentVersions.txt`.
|
||||||
# Download the latest content.
|
# Download the latest content.
|
||||||
# Extract the new content in `Unreal\CarlaUE4\Content\Carla`.
|
# Extract the new content in `Unreal\CarlaUnreal\Content\Carla`.
|
||||||
|
|
||||||
|
|
||||||
# Get development assets.
|
# Get development assets.
|
||||||
# Delete the `/Carla` folder containing previous assets.
|
# Delete the `/Carla` folder containing previous assets.
|
||||||
# Go to the main carla folder.
|
# Go to the main carla folder.
|
||||||
git clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUE4/Content/Carla
|
git clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUnreal/Content/Carla
|
||||||
|
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
@ -122,10 +122,10 @@ __Linux.__
|
||||||
|
|
||||||
__Windows.__
|
__Windows.__
|
||||||
|
|
||||||
__1.__ Erase the previous content in `Unreal\CarlaUE4\Content\Carla`.
|
__1.__ Erase the previous content in `Unreal\CarlaUnreal\Content\Carla`.
|
||||||
__2.__ Go to `\Util\ContentVersions.txt`.
|
__2.__ Go to `\Util\ContentVersions.txt`.
|
||||||
__3.__ Download the content for `latest`.
|
__3.__ Download the content for `latest`.
|
||||||
__4.__ Extract the new content in `Unreal\CarlaUE4\Content\Carla`.
|
__4.__ Extract the new content in `Unreal\CarlaUnreal\Content\Carla`.
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
In order to work with that the CARLA team is devleoping, go to __get development assets__ below.
|
In order to work with that the CARLA team is devleoping, go to __get development assets__ below.
|
||||||
|
@ -148,7 +148,7 @@ In order to handle this repository it is advisted to install [git-lfs][gitlfslin
|
||||||
To clone the repository, __go to the main CARLA directory__ and run the following command.
|
To clone the repository, __go to the main CARLA directory__ and run the following command.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUE4/Content/Carla
|
git clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUnreal/Content/Carla
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! Warning
|
!!! Warning
|
||||||
|
|
|
@ -153,16 +153,16 @@ Download the __latest__ assets to work with the current version of CARLA by runn
|
||||||
Update.bat
|
Update.bat
|
||||||
```
|
```
|
||||||
|
|
||||||
The assets will be downloaded and extracted to the appropriate location if have 7zip installed. If you do not have this software installed, you will need to manually extract the file contents to `Unreal\CarlaUE4\Content\Carla`.
|
The assets will be downloaded and extracted to the appropriate location if have 7zip installed. If you do not have this software installed, you will need to manually extract the file contents to `Unreal\CarlaUnreal\Content\Carla`.
|
||||||
|
|
||||||
To download the assets for a __specific version__ of CARLA:
|
To download the assets for a __specific version__ of CARLA:
|
||||||
|
|
||||||
1. From the root CARLA directory, navigate to `\Util\ContentVersions.txt`. This document contains the links to the assets for all CARLA releases.
|
1. From the root CARLA directory, navigate to `\Util\ContentVersions.txt`. This document contains the links to the assets for all CARLA releases.
|
||||||
2. Extract the assets in `Unreal\CarlaUE4\Content\Carla`. If the path doesn't exist, create it.
|
2. Extract the assets in `Unreal\CarlaUnreal\Content\Carla`. If the path doesn't exist, create it.
|
||||||
3. Extract the file with a command similar to the following:
|
3. Extract the file with a command similar to the following:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
tar -xvzf <assets_file_name>.tar.gz.tar -C C:\path\to\carla\Unreal\CarlaUE4\Content\Carla
|
tar -xvzf <assets_file_name>.tar.gz.tar -C C:\path\to\carla\Unreal\CarlaUnreal\Content\Carla
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set Unreal Engine environment variable
|
### Set Unreal Engine environment variable
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* Compilation should not give any error or warning
|
* Compilation should not give any error or warning
|
||||||
(`clang++-8 -Wall -Wextra -std=C++14 -Wno-missing-braces`).
|
(`clang++-8 -Wall -Wextra -std=C++14 -Wno-missing-braces`).
|
||||||
* The use of `throw` is forbidden, use `carla::throw_exception` instead.
|
* The use of `throw` is forbidden, use `carla::throw_exception` instead.
|
||||||
* Unreal C++ code (CarlaUE4 and Carla plugin) follow the
|
* Unreal C++ code (CarlaUnreal and Carla plugin) follow the
|
||||||
[Unreal Engine's Coding Standard][ue4link] with the exception of using
|
[Unreal Engine's Coding Standard][ue4link] with the exception of using
|
||||||
spaces instead of tabs.
|
spaces instead of tabs.
|
||||||
* LibCarla uses a variation of [Google's style guide][googlelink].
|
* LibCarla uses a variation of [Google's style guide][googlelink].
|
||||||
|
|
|
@ -194,7 +194,7 @@ make import ARGS="--package=<package_name>"
|
||||||
make import ARGS="--no-carla-materials"
|
make import ARGS="--no-carla-materials"
|
||||||
```
|
```
|
||||||
|
|
||||||
All files will be imported and prepared to be used in the Unreal Editor. The map package will be created in `Unreal/CarlaUE4/Content`. A base map tile, `<mapName>`, will be created as a streaming level for all the tiles. The base tile will contain the sky, weather, and Large Map actors and will be ready for use in a simulation.
|
All files will be imported and prepared to be used in the Unreal Editor. The map package will be created in `Unreal/CarlaUnreal/Content`. A base map tile, `<mapName>`, will be created as a streaming level for all the tiles. The base tile will contain the sky, weather, and Large Map actors and will be ready for use in a simulation.
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
It is currently not recommended to use the customization tools provided for standard maps in the Unreal Editor, e.g., road painter, procedural buildings, etc.
|
It is currently not recommended to use the customization tools provided for standard maps in the Unreal Editor, e.g., road painter, procedural buildings, etc.
|
||||||
|
|
|
@ -159,7 +159,7 @@ The recorder file includes information regarding many different elements.
|
||||||
|
|
||||||
### Recording
|
### Recording
|
||||||
|
|
||||||
To start recording there is only need for a file name. Using `\`, `/` or `:` characters in the file name will define it as an absolute path. If no path is detailed, the file will be saved in `CarlaUE4/Saved`.
|
To start recording there is only need for a file name. Using `\`, `/` or `:` characters in the file name will define it as an absolute path. If no path is detailed, the file will be saved in `CarlaUnreal/Saved`.
|
||||||
|
|
||||||
```py
|
```py
|
||||||
client.start_recorder("/home/carla/recording01.log")
|
client.start_recorder("/home/carla/recording01.log")
|
||||||
|
@ -210,13 +210,13 @@ The recorder saves all of the data in a custom binary file format specified in [
|
||||||
CARLA offers a number of options regarding rendering quality and efficiency. At the most basic level, CARLA offers two quality options to enable operation on both high and low spec hardware with the best results:
|
CARLA offers a number of options regarding rendering quality and efficiency. At the most basic level, CARLA offers two quality options to enable operation on both high and low spec hardware with the best results:
|
||||||
|
|
||||||
### Epic mode
|
### Epic mode
|
||||||
`./CarlaUE4.sh -quality-level=Epic`
|
`./CarlaUnreal.sh -quality-level=Epic`
|
||||||
|
|
||||||
![Epic mode screenshot](img/rendering_quality_epic.jpg)
|
![Epic mode screenshot](img/rendering_quality_epic.jpg)
|
||||||
*Epic mode screenshot*
|
*Epic mode screenshot*
|
||||||
|
|
||||||
### Low mode
|
### Low mode
|
||||||
`./CarlaUE4.sh -quality-level=Low`
|
`./CarlaUnreal.sh -quality-level=Low`
|
||||||
|
|
||||||
![Low mode screenshot](img/rendering_quality_low.jpg)
|
![Low mode screenshot](img/rendering_quality_low.jpg)
|
||||||
*Low mode screenshot*
|
*Low mode screenshot*
|
||||||
|
|
|
@ -119,7 +119,7 @@ make import ARGS="--package=<package_name>"
|
||||||
make import ARGS="--no-carla-materials"
|
make import ARGS="--no-carla-materials"
|
||||||
```
|
```
|
||||||
|
|
||||||
All files will be imported and prepared to be used in the Unreal Editor. The map package will be created in `Unreal/CarlaUE4/Content`. A base map tile, `<mapName>`, will be created as a streaming level for all the tiles. The base tile will contain the sky, weather, and large map actors and will be ready for use in a simulation.
|
All files will be imported and prepared to be used in the Unreal Editor. The map package will be created in `Unreal/CarlaUnreal/Content`. A base map tile, `<mapName>`, will be created as a streaming level for all the tiles. The base tile will contain the sky, weather, and large map actors and will be ready for use in a simulation.
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
It is currently not recommended to use the customization tools provided for standard maps in the Unreal Editor, e.g., road painter, procedural buildings, etc.
|
It is currently not recommended to use the customization tools provided for standard maps in the Unreal Editor, e.g., road painter, procedural buildings, etc.
|
||||||
|
|
|
@ -63,7 +63,7 @@ CARLA up to 0.9.9 (included) is set to be single-stream. For later versions, mul
|
||||||
|
|
||||||
__1. Run CARLA.__
|
__1. Run CARLA.__
|
||||||
|
|
||||||
* __a) In a CARLA package__ — Go to the CARLA folder and start the simulation with `CarlaUE4.exe` (Windows) or `./CarlaUE4.sh` (Linux).
|
* __a) In a CARLA package__ — Go to the CARLA folder and start the simulation with `CarlaUnreal.exe` (Windows) or `./CarlaUnreal.sh` (Linux).
|
||||||
|
|
||||||
* __b) In a build from source__ — Go to the CARLA folder, run the UE editor with `make launch` and press `Play`.
|
* __b) In a build from source__ — Go to the CARLA folder, run the UE editor with `make launch` and press `Play`.
|
||||||
|
|
||||||
|
|
|
@ -533,10 +533,10 @@ The information saved by the recorder will be parsed and shown in your terminal
|
||||||
- <a name="carla.Client.start_recorder"></a>**<font color="#7fb800">start_recorder</font>**(<font color="#00a6ed">**self**</font>, <font color="#00a6ed">**filename**</font>, <font color="#00a6ed">**additional_data**=False</font>)
|
- <a name="carla.Client.start_recorder"></a>**<font color="#7fb800">start_recorder</font>**(<font color="#00a6ed">**self**</font>, <font color="#00a6ed">**filename**</font>, <font color="#00a6ed">**additional_data**=False</font>)
|
||||||
Enables the recording feature, which will start saving every information possible needed by the server to replay the simulation.
|
Enables the recording feature, which will start saving every information possible needed by the server to replay the simulation.
|
||||||
- **Parameters:**
|
- **Parameters:**
|
||||||
- `filename` (_str_) - Name of the file to write the recorded data. A simple name will save the recording in 'CarlaUE4/Saved/recording.log'. Otherwise, if some folder appears in the name, it will be considered an absolute path.
|
- `filename` (_str_) - Name of the file to write the recorded data. A simple name will save the recording in 'CarlaUnreal/Saved/recording.log'. Otherwise, if some folder appears in the name, it will be considered an absolute path.
|
||||||
- `additional_data` (_bool_) - Enables or disable recording non-essential data for reproducing the simulation (bounding box location, physics control parameters, etc).
|
- `additional_data` (_bool_) - Enables or disable recording non-essential data for reproducing the simulation (bounding box location, physics control parameters, etc).
|
||||||
- <a name="carla.Client.stop_recorder"></a>**<font color="#7fb800">stop_recorder</font>**(<font color="#00a6ed">**self**</font>)
|
- <a name="carla.Client.stop_recorder"></a>**<font color="#7fb800">stop_recorder</font>**(<font color="#00a6ed">**self**</font>)
|
||||||
Stops the recording in progress. If you specified a path in `filename`, the recording will be there. If not, look inside `CarlaUE4/Saved/`.
|
Stops the recording in progress. If you specified a path in `filename`, the recording will be there. If not, look inside `CarlaUnreal/Saved/`.
|
||||||
- <a name="carla.Client.stop_replayer"></a>**<font color="#7fb800">stop_replayer</font>**(<font color="#00a6ed">**self**</font>, <font color="#00a6ed">**keep_actors**</font>)
|
- <a name="carla.Client.stop_replayer"></a>**<font color="#7fb800">stop_replayer</font>**(<font color="#00a6ed">**self**</font>, <font color="#00a6ed">**keep_actors**</font>)
|
||||||
Stop current replayer.
|
Stop current replayer.
|
||||||
- **Parameters:**
|
- **Parameters:**
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
We use Doxygen to generate the documentation of our C++ code:
|
We use Doxygen to generate the documentation of our C++ code:
|
||||||
|
|
||||||
[Libcarla/Source](http://carla.org/Doxygen/html/dir_b9166249188ce33115fd7d5eed1849f2.html)<br>
|
[Libcarla/Source](http://carla.org/Doxygen/html/dir_b9166249188ce33115fd7d5eed1849f2.html)<br>
|
||||||
[Unreal/CarlaUE4/Source](http://carla.org/Doxygen/html/dir_733e9da672a36443d0957f83d26e7dbf.html)<br>
|
[Unreal/CarlaUnreal/Source](http://carla.org/Doxygen/html/dir_733e9da672a36443d0957f83d26e7dbf.html)<br>
|
||||||
[Unreal/CarlaUE4/Carla/Plugins](http://carla.org/Doxygen/html/dir_8fc34afb5f07a67966c78bf5319f94ae.html)
|
[Unreal/CarlaUnreal/Carla/Plugins](http://carla.org/Doxygen/html/dir_8fc34afb5f07a67966c78bf5319f94ae.html)
|
||||||
|
|
||||||
The generated documentation is available at this link **<http://carla.org/Doxygen/html/index.html>**
|
The generated documentation is available at this link **<http://carla.org/Doxygen/html/index.html>**
|
||||||
|
|
||||||
|
|
|
@ -699,7 +699,7 @@ __2.__ Run the simulation using `python3 config.py --fps=10`.
|
||||||
* __Output:__ [carla.Image](python_api.md#carla.Image) per step (unless `sensor_tick` says otherwise).
|
* __Output:__ [carla.Image](python_api.md#carla.Image) per step (unless `sensor_tick` says otherwise).
|
||||||
|
|
||||||
This camera classifies every object in sight by displaying it in a different color according to its tags (e.g., pedestrians in a different color than vehicles).
|
This camera classifies every object in sight by displaying it in a different color according to its tags (e.g., pedestrians in a different color than vehicles).
|
||||||
When the simulation starts, every element in scene is created with a tag. So it happens when an actor is spawned. The objects are classified by their relative file path in the project. For example, meshes stored in `Unreal/CarlaUE4/Content/Static/Pedestrians` are tagged as `Pedestrian`.
|
When the simulation starts, every element in scene is created with a tag. So it happens when an actor is spawned. The objects are classified by their relative file path in the project. For example, meshes stored in `Unreal/CarlaUnreal/Content/Static/Pedestrians` are tagged as `Pedestrian`.
|
||||||
|
|
||||||
![ImageSemanticSegmentation](img/ref_sensors_semantic.jpg)
|
![ImageSemanticSegmentation](img/ref_sensors_semantic.jpg)
|
||||||
|
|
||||||
|
@ -750,7 +750,7 @@ The following tags are currently available:
|
||||||
* __Output:__ [carla.Image](python_api.md#carla.Image) per step (unless `sensor_tick` says otherwise).
|
* __Output:__ [carla.Image](python_api.md#carla.Image) per step (unless `sensor_tick` says otherwise).
|
||||||
|
|
||||||
This camera classifies every object in the field of view both by class and also by instance ID.
|
This camera classifies every object in the field of view both by class and also by instance ID.
|
||||||
When the simulation starts, every element in scene is created with a tag. So it happens when an actor is spawned. The objects are classified by their relative file path in the project. For example, meshes stored in `Unreal/CarlaUE4/Content/Static/Pedestrians` are tagged as `Pedestrian`.
|
When the simulation starts, every element in scene is created with a tag. So it happens when an actor is spawned. The objects are classified by their relative file path in the project. For example, meshes stored in `Unreal/CarlaUnreal/Content/Static/Pedestrians` are tagged as `Pedestrian`.
|
||||||
|
|
||||||
![ImageInstanceSegmentation](img/instance_segmentation.png)
|
![ImageInstanceSegmentation](img/instance_segmentation.png)
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ How to run CARLA
|
||||||
Launch a terminal in this folder and execute the simulator by running
|
Launch a terminal in this folder and execute the simulator by running
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
this will launch a window with a view over the city. This is the "spectator"
|
this will launch a window with a view over the city. This is the "spectator"
|
||||||
|
|
|
@ -192,7 +192,7 @@ The method to start a CARLA server depends on the installation method you used a
|
||||||
```sh
|
```sh
|
||||||
cd /opt/carla-simulator/bin/
|
cd /opt/carla-simulator/bin/
|
||||||
|
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
- Linux package installation:
|
- Linux package installation:
|
||||||
|
@ -200,7 +200,7 @@ The method to start a CARLA server depends on the installation method you used a
|
||||||
```sh
|
```sh
|
||||||
cd path/to/carla/root
|
cd path/to/carla/root
|
||||||
|
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
- Windows package installation:
|
- Windows package installation:
|
||||||
|
@ -208,7 +208,7 @@ The method to start a CARLA server depends on the installation method you used a
|
||||||
```sh
|
```sh
|
||||||
cd path/to/carla/root
|
cd path/to/carla/root
|
||||||
|
|
||||||
CarlaUE4.exe
|
CarlaUnreal.exe
|
||||||
```
|
```
|
||||||
|
|
||||||
A window containing a view over the city will pop up. This is the _spectator view_. To fly around the city use the mouse and `WASD` keys, holding down the right mouse button to control the direction.
|
A window containing a view over the city will pop up. This is the _spectator view_. To fly around the city use the mouse and `WASD` keys, holding down the right mouse button to control the direction.
|
||||||
|
@ -234,7 +234,7 @@ This is the server simulator which is now running and waiting for a client to co
|
||||||
There are some configuration options available when launching CARLA and they can be used as follows:
|
There are some configuration options available when launching CARLA and they can be used as follows:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./CarlaUE4.sh -carla-rpc-port=3000
|
./CarlaUnreal.sh -carla-rpc-port=3000
|
||||||
```
|
```
|
||||||
|
|
||||||
* `-carla-rpc-port=N` Listen for client connections at port `N`. Streaming port is set to `N+1` by default.
|
* `-carla-rpc-port=N` Listen for client connections at port `N`. Streaming port is set to `N+1` by default.
|
||||||
|
|
|
@ -34,7 +34,7 @@ __Open the Unreal Engine Editor__ and go to `Carla/Static`. Create a new folder
|
||||||
|
|
||||||
### 3. Create two-way correspondence between UE and the code tag
|
### 3. Create two-way correspondence between UE and the code tag
|
||||||
|
|
||||||
__3.1. Open `Tagger.cpp`__ in `Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Game`. Go to __`GetLabelByFolderName`__ Add the your tag by the end of the list. The string being compared is the name of the UE folder used in [__2.__](#2-create-the-ue-folder-for-assets), so use the exact same name here.
|
__3.1. Open `Tagger.cpp`__ in `Unreal/CarlaUnreal/Plugins/Carla/Source/Carla/Game`. Go to __`GetLabelByFolderName`__ Add the your tag by the end of the list. The string being compared is the name of the UE folder used in [__2.__](#2-create-the-ue-folder-for-assets), so use the exact same name here.
|
||||||
|
|
||||||
![tagger_cpp](img/tuto_D_create_semantic_tags/03_tagger_cpp.jpg)
|
![tagger_cpp](img/tuto_D_create_semantic_tags/03_tagger_cpp.jpg)
|
||||||
|
|
||||||
|
|
|
@ -104,8 +104,8 @@ Let's start.
|
||||||
This class has to be located inside Carla plugin, we'll create two files for our
|
This class has to be located inside Carla plugin, we'll create two files for our
|
||||||
new C++ class
|
new C++ class
|
||||||
|
|
||||||
* `Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SafeDistanceSensor.h`
|
* `Unreal/CarlaUnreal/Plugins/Carla/Source/Carla/Sensor/SafeDistanceSensor.h`
|
||||||
* `Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SafeDistanceSensor.cpp`
|
* `Unreal/CarlaUnreal/Plugins/Carla/Source/Carla/Sensor/SafeDistanceSensor.cpp`
|
||||||
|
|
||||||
At the very minimum, the sensor is required to inherit `ASensor`, and provide a
|
At the very minimum, the sensor is required to inherit `ASensor`, and provide a
|
||||||
static method `GetSensorDefinition`; but we'll be overriding also the `Set`,
|
static method `GetSensorDefinition`; but we'll be overriding also the `Set`,
|
||||||
|
|
|
@ -476,7 +476,7 @@ depth_cam.listen(lambda image: image.save_to_disk('tutorial/new_depth_output/%.6
|
||||||
|
|
||||||
### Semantic segmentation camera
|
### Semantic segmentation camera
|
||||||
|
|
||||||
The [semantic segmentation camera](ref_sensors.md#semantic-segmentation-camera) renders elements in scene with a different color depending on how these have been tagged. The tags are created by the simulator depending on the path of the asset used for spawning. For example, meshes tagged as `Pedestrians` are spawned with content stored in `Unreal/CarlaUE4/Content/Static/Pedestrians`.
|
The [semantic segmentation camera](ref_sensors.md#semantic-segmentation-camera) renders elements in scene with a different color depending on how these have been tagged. The tags are created by the simulator depending on the path of the asset used for spawning. For example, meshes tagged as `Pedestrians` are spawned with content stored in `Unreal/CarlaUnreal/Content/Static/Pedestrians`.
|
||||||
|
|
||||||
The output is an image, as any camera, but each pixel contains the tag encoded in the red channel. This original image must be converted using __ColorConverter.CityScapesPalette__. New tags can be created, read more in the [documentation](ref_sensors.md#semantic-segmentation-camera).
|
The output is an image, as any camera, but each pixel contains the tag encoded in the red channel. This original image must be converted using __ColorConverter.CityScapesPalette__. New tags can be created, read more in the [documentation](ref_sensors.md#semantic-segmentation-camera).
|
||||||
|
|
||||||
|
@ -682,7 +682,7 @@ python3 no_rendering_mode.py --no-rendering
|
||||||
|
|
||||||
### Start recording
|
### Start recording
|
||||||
|
|
||||||
The [__recorder__](adv_recorder.md) can be started at anytime. The script does it at the very beginning, in order to capture everything, including the spawning of the first actors. If no path is detailed, the log will be saved into `CarlaUE4/Saved`.
|
The [__recorder__](adv_recorder.md) can be started at anytime. The script does it at the very beginning, in order to capture everything, including the spawning of the first actors. If no path is detailed, the log will be saved into `CarlaUnreal/Saved`.
|
||||||
|
|
||||||
```py
|
```py
|
||||||
# --------------
|
# --------------
|
||||||
|
@ -737,7 +737,7 @@ So far, a simulation has been recorded. Now, it is time to examine the recording
|
||||||
It is time to run a new simulation.
|
It is time to run a new simulation.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
To reenact the simulation, [choose a fragment](#choose-a-fragment) and run the script containing the code for the playback.
|
To reenact the simulation, [choose a fragment](#choose-a-fragment) and run the script containing the code for the playback.
|
||||||
|
|
||||||
|
|
|
@ -15,12 +15,12 @@ The RoadRunner software from MathWorks provides plugins for Unreal Engine to hel
|
||||||
|
|
||||||
__1.__ The plugins are available for download from the [MathWorks website](https://www.mathworks.com/help/roadrunner/ug/Downloading-Plugins.html). MathWorks also has a [full tutorial](https://www.mathworks.com/help/roadrunner/ug/Exporting-to-CARLA.html), similar to this one, on how to import maps to CARLA using the plugins.
|
__1.__ The plugins are available for download from the [MathWorks website](https://www.mathworks.com/help/roadrunner/ug/Downloading-Plugins.html). MathWorks also has a [full tutorial](https://www.mathworks.com/help/roadrunner/ug/Exporting-to-CARLA.html), similar to this one, on how to import maps to CARLA using the plugins.
|
||||||
|
|
||||||
__2.__ Extract the contents of the downloaded folder and move the folders `RoadRunnerImporter`, `RoadRunnerCarlaIntegration` and `RoadRunnerMaterials` to `<carla>/Unreal/CarlaUE4/Plugins/`.
|
__2.__ Extract the contents of the downloaded folder and move the folders `RoadRunnerImporter`, `RoadRunnerCarlaIntegration` and `RoadRunnerMaterials` to `<carla>/Unreal/CarlaUnreal/Plugins/`.
|
||||||
|
|
||||||
__3.__ Rebuild the plugin following the instructions below:
|
__3.__ Rebuild the plugin following the instructions below:
|
||||||
|
|
||||||
* __On Windows.__
|
* __On Windows.__
|
||||||
* Right-click the `.uproject` file in `<carla>/Unreal/CarlaUE4` and select `Generate Visual Studio project files`.
|
* Right-click the `.uproject` file in `<carla>/Unreal/CarlaUnreal` and select `Generate Visual Studio project files`.
|
||||||
* In the root folder of CARLA, run the command:
|
* In the root folder of CARLA, run the command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -30,7 +30,7 @@ make launch
|
||||||
* __On Linux.__
|
* __On Linux.__
|
||||||
* Run the following command:
|
* Run the following command:
|
||||||
```sh
|
```sh
|
||||||
UE4_ROOT/GenerateProjectFiles.sh -project="carla/Unreal/CarlaUE4/CarlaUE4.uproject" -game -engine
|
UE4_ROOT/GenerateProjectFiles.sh -project="carla/Unreal/CarlaUnreal/CarlaUnreal.uproject" -game -engine
|
||||||
```
|
```
|
||||||
|
|
||||||
__4.__ In the Unreal Engine window, make sure the checkbox is selected for both plugins `Edit > Plugins`.
|
__4.__ In the Unreal Engine window, make sure the checkbox is selected for both plugins `Edit > Plugins`.
|
||||||
|
@ -67,7 +67,7 @@ This method of importing maps can be used with generic `.fbx` and `.xodr` files.
|
||||||
|
|
||||||
To import a map manually to Unreal Engine:
|
To import a map manually to Unreal Engine:
|
||||||
|
|
||||||
__1.__ In your system's file explorer, copy the `.xodr` file to `<carla-root>/Unreal/CarlaUE4/Content/Carla/Maps/OpenDrive`.
|
__1.__ In your system's file explorer, copy the `.xodr` file to `<carla-root>/Unreal/CarlaUnreal/Content/Carla/Maps/OpenDrive`.
|
||||||
|
|
||||||
__2.__ Open the Unreal Engine editor by running `make launch` in the carla root directory. In the _Content Browser_ of the editor, navigate to `Content/Carla/Maps/BaseMap` and duplicate the `BaseMap`. This will provide a blank map with the default sky and lighting objects.
|
__2.__ Open the Unreal Engine editor by running `make launch` in the carla root directory. In the _Content Browser_ of the editor, navigate to `Content/Carla/Maps/BaseMap` and duplicate the `BaseMap`. This will provide a blank map with the default sky and lighting objects.
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ __14.__ In the _Modes_ panel, search for the __Open Drive Actor__ and drag it in
|
||||||
|
|
||||||
>>![ue_opendrive_actor](../img/ue_opendrive_actor.jpg)
|
>>![ue_opendrive_actor](../img/ue_opendrive_actor.jpg)
|
||||||
|
|
||||||
__15.__ In the _Details_ panel, check `Add Spawners` and then click on the box beside `Generate Routes`. This will find the `.xodr` file with the same map name in the `<carla-root>/Unreal/CarlaUE4/Content/Carla/Maps/OpenDrive` directory and use it to generate a series of _RoutePlanner_ and _VehicleSpawnPoint_ actors.
|
__15.__ In the _Details_ panel, check `Add Spawners` and then click on the box beside `Generate Routes`. This will find the `.xodr` file with the same map name in the `<carla-root>/Unreal/CarlaUnreal/Content/Carla/Maps/OpenDrive` directory and use it to generate a series of _RoutePlanner_ and _VehicleSpawnPoint_ actors.
|
||||||
|
|
||||||
>>![ue_generate_routes](../img/ue_generate_routes.png)
|
>>![ue_generate_routes](../img/ue_generate_routes.png)
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ make import ARGS="--package=<package_name>"
|
||||||
make import ARGS="--no-carla-materials"
|
make import ARGS="--no-carla-materials"
|
||||||
```
|
```
|
||||||
|
|
||||||
A folder will be created in `Unreal/CarlaUE4/Content` with the name of your map package. It will contain config files, overdrive information, static asset information and navigation information.
|
A folder will be created in `Unreal/CarlaUnreal/Content` with the name of your map package. It will contain config files, overdrive information, static asset information and navigation information.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ __2.__ Double check your mesh names. Mesh names should start with any of the app
|
||||||
|
|
||||||
![ue_meshes](../img/ue_meshes.jpg)
|
![ue_meshes](../img/ue_meshes.jpg)
|
||||||
|
|
||||||
__3.__ Press `ctrl + A` to select everything and export the map by selecting `File` -> `Carla Exporter`. A `<mapName>.obj` file will be created in `Unreal/CarlaUE4/Saved`.
|
__3.__ Press `ctrl + A` to select everything and export the map by selecting `File` -> `Carla Exporter`. A `<mapName>.obj` file will be created in `Unreal/CarlaUnreal/Saved`.
|
||||||
|
|
||||||
__4.__ Move the `<mapName>.obj` and the `<mapName>.xodr` to `Util/DockerUtils/dist`.
|
__4.__ Move the `<mapName>.obj` and the `<mapName>.xodr` to `Util/DockerUtils/dist`.
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ CARLA can be launched using the command line using the executable in Windows or
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /carla/root
|
cd /carla/root
|
||||||
./CarlaUE4.sh
|
./CarlaUnreal.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
To manipulate CARLA through the Python API, we need to connect the Python client to the server through an open port. The client controls the simulator through the [__client and world objects__](foundations.md#world-and-client) Open a Python notebook or create a new script, then add the following code to the start of the script or the main function:
|
To manipulate CARLA through the Python API, we need to connect the Python client to the server through an open port. The client controls the simulator through the [__client and world objects__](foundations.md#world-and-client) Open a Python notebook or create a new script, then add the following code to the start of the script or the main function:
|
||||||
|
|
4
Doxyfile
4
Doxyfile
|
@ -11,7 +11,7 @@ CASE_SENSE_NAMES = YES
|
||||||
SORT_BRIEF_DOCS = YES
|
SORT_BRIEF_DOCS = YES
|
||||||
WARN_IF_UNDOCUMENTED = NO
|
WARN_IF_UNDOCUMENTED = NO
|
||||||
WARN_LOGFILE = Doxygen/warnings.log
|
WARN_LOGFILE = Doxygen/warnings.log
|
||||||
INPUT = Unreal/CarlaUE4/Source Unreal/CarlaUE4/Plugins/Carla/Source LibCarla/source
|
INPUT = Unreal/CarlaUnreal/Source Unreal/CarlaUnreal/Plugins/Carla/Source LibCarla/source
|
||||||
FILE_PATTERNS = *.cpp *.h *.hpp *.cc
|
FILE_PATTERNS = *.cpp *.h *.hpp *.cc
|
||||||
EXCLUDE = LibCarla/source/carla/Version.h
|
EXCLUDE = LibCarla/source/carla/Version.h
|
||||||
RECURSIVE = YES
|
RECURSIVE = YES
|
||||||
|
@ -27,7 +27,7 @@ FORMULA_FONTSIZE = 12
|
||||||
GENERATE_LATEX = NO
|
GENERATE_LATEX = NO
|
||||||
MACRO_EXPANSION = YES
|
MACRO_EXPANSION = YES
|
||||||
EXPAND_ONLY_PREDEF = YES
|
EXPAND_ONLY_PREDEF = YES
|
||||||
INCLUDE_PATH = Unreal/CarlaUE4/Source Unreal/CarlaUE4/Plugins/Carla/Source LibCarla/source
|
INCLUDE_PATH = Unreal/CarlaUnreal/Source Unreal/CarlaUnreal/Plugins/Carla/Source LibCarla/source
|
||||||
INCLUDE_FILE_PATTERNS = *.h *.hpp
|
INCLUDE_FILE_PATTERNS = *.h *.hpp
|
||||||
HIDE_UNDOC_RELATIONS = NO
|
HIDE_UNDOC_RELATIONS = NO
|
||||||
HAVE_DOT = YES
|
HAVE_DOT = YES
|
||||||
|
|
|
@ -43,7 +43,7 @@ pipeline
|
||||||
{
|
{
|
||||||
steps
|
steps
|
||||||
{
|
{
|
||||||
sh 'git update-index --skip-worktree Unreal/CarlaUE4/CarlaUE4.uproject'
|
sh 'git update-index --skip-worktree Unreal/CarlaUnreal/CarlaUnreal.uproject'
|
||||||
sh 'make setup ARGS="--python-version=3.7,2 --target-wheel-platform=manylinux_2_27_x86_64 --chrono"'
|
sh 'make setup ARGS="--python-version=3.7,2 --target-wheel-platform=manylinux_2_27_x86_64 --chrono"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ pipeline
|
||||||
unstash name: 'ubuntu_examples'
|
unstash name: 'ubuntu_examples'
|
||||||
sh 'tar -xvzf Dist/CARLA*.tar.gz -C Dist/'
|
sh 'tar -xvzf Dist/CARLA*.tar.gz -C Dist/'
|
||||||
// sh 'tar -xvzf Dist/AdditionalMaps*.tar.gz -C Dist/'
|
// sh 'tar -xvzf Dist/AdditionalMaps*.tar.gz -C Dist/'
|
||||||
sh 'DISPLAY= ./Dist/CarlaUE4.sh -nullrhi -RenderOffScreen --carla-rpc-port=3654 --carla-streaming-port=0 -nosound > CarlaUE4.log &'
|
sh 'DISPLAY= ./Dist/CarlaUnreal.sh -nullrhi -RenderOffScreen --carla-rpc-port=3654 --carla-streaming-port=0 -nosound > CarlaUnreal.log &'
|
||||||
sh 'make smoke_tests ARGS="--xml --python-version=3.7 --target-wheel-platform=manylinux_2_27_x86_64"'
|
sh 'make smoke_tests ARGS="--xml --python-version=3.7 --target-wheel-platform=manylinux_2_27_x86_64"'
|
||||||
sh 'make run-examples ARGS="localhost 3654"'
|
sh 'make run-examples ARGS="localhost 3654"'
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ pipeline
|
||||||
{
|
{
|
||||||
always
|
always
|
||||||
{
|
{
|
||||||
archiveArtifacts 'CarlaUE4.log'
|
archiveArtifacts 'CarlaUnreal.log'
|
||||||
junit 'Build/test-results/smoke-tests-*.xml'
|
junit 'Build/test-results/smoke-tests-*.xml'
|
||||||
deleteDir()
|
deleteDir()
|
||||||
node('master')
|
node('master')
|
||||||
|
@ -240,7 +240,7 @@ pipeline
|
||||||
{
|
{
|
||||||
bat """
|
bat """
|
||||||
call ../setEnv64.bat
|
call ../setEnv64.bat
|
||||||
git update-index --skip-worktree Unreal/CarlaUE4/CarlaUE4.uproject
|
git update-index --skip-worktree Unreal/CarlaUnreal/CarlaUnreal.uproject
|
||||||
"""
|
"""
|
||||||
bat """
|
bat """
|
||||||
call ../setEnv64.bat
|
call ../setEnv64.bat
|
||||||
|
|
|
@ -116,7 +116,7 @@ namespace detail {
|
||||||
std::string opendrive,
|
std::string opendrive,
|
||||||
const rpc::OpendriveGenerationParameters & params, bool reset_settings) {
|
const rpc::OpendriveGenerationParameters & params, bool reset_settings) {
|
||||||
// The "OpenDriveMap" is an ".umap" located in:
|
// The "OpenDriveMap" is an ".umap" located in:
|
||||||
// "carla/Unreal/CarlaUE4/Content/Carla/Maps/"
|
// "carla/Unreal/CarlaUnreal/Content/Carla/Maps/"
|
||||||
// It will load the last sended OpenDRIVE by client's "LoadOpenDriveEpisode()"
|
// It will load the last sended OpenDRIVE by client's "LoadOpenDriveEpisode()"
|
||||||
constexpr auto custom_opendrive_map = "OpenDriveMap";
|
constexpr auto custom_opendrive_map = "OpenDriveMap";
|
||||||
_client.CopyOpenDriveToServer(std::move(opendrive), params);
|
_client.CopyOpenDriveToServer(std::move(opendrive), params);
|
||||||
|
|
|
@ -223,7 +223,7 @@
|
||||||
- param_name: filename
|
- param_name: filename
|
||||||
type: str
|
type: str
|
||||||
doc: >
|
doc: >
|
||||||
Name of the file to write the recorded data. A simple name will save the recording in 'CarlaUE4/Saved/recording.log'. Otherwise, if some folder appears in the name, it will be considered an absolute path.
|
Name of the file to write the recorded data. A simple name will save the recording in 'CarlaUnreal/Saved/recording.log'. Otherwise, if some folder appears in the name, it will be considered an absolute path.
|
||||||
- param_name: additional_data
|
- param_name: additional_data
|
||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
|
@ -235,7 +235,7 @@
|
||||||
- def_name: stop_recorder
|
- def_name: stop_recorder
|
||||||
params:
|
params:
|
||||||
doc: >
|
doc: >
|
||||||
Stops the recording in progress. If you specified a path in `filename`, the recording will be there. If not, look inside `CarlaUE4/Saved/`.
|
Stops the recording in progress. If you specified a path in `filename`, the recording will be there. If not, look inside `CarlaUnreal/Saved/`.
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
- def_name: get_available_maps
|
- def_name: get_available_maps
|
||||||
params:
|
params:
|
||||||
|
|
|
@ -16,12 +16,12 @@ endif ()
|
||||||
|
|
||||||
set (
|
set (
|
||||||
CARLA_UE_PATH
|
CARLA_UE_PATH
|
||||||
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUE4
|
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal
|
||||||
)
|
)
|
||||||
|
|
||||||
set (
|
set (
|
||||||
CARLA_UE_PROJECT_PATH
|
CARLA_UE_PROJECT_PATH
|
||||||
${CARLA_UE_PATH}/CarlaUE4.uproject
|
${CARLA_UE_PATH}/CarlaUnreal.uproject
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target (
|
add_custom_target (
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"Description": "",
|
"Description": "",
|
||||||
"Modules": [
|
"Modules": [
|
||||||
{
|
{
|
||||||
"Name": "CarlaUE4",
|
"Name": "CarlaUnreal",
|
||||||
"Type": "Runtime",
|
"Type": "Runtime",
|
||||||
"LoadingPhase": "Default",
|
"LoadingPhase": "Default",
|
||||||
"AdditionalDependencies": [
|
"AdditionalDependencies": [
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class CarlaUE4Target : TargetRules
|
||||||
|
|
||||||
Type = TargetType.Game;
|
Type = TargetType.Game;
|
||||||
|
|
||||||
ExtraModuleNames.Add("CarlaUE4");
|
ExtraModuleNames.Add("CarlaUnreal");
|
||||||
|
|
||||||
LogFlagStatus("Unity build", EnableUnityBuild);
|
LogFlagStatus("Unity build", EnableUnityBuild);
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ using EpicGames.Core;
|
||||||
using System;
|
using System;
|
||||||
using UnrealBuildTool;
|
using UnrealBuildTool;
|
||||||
|
|
||||||
public class CarlaUE4 : ModuleRules
|
public class CarlaUnreal : ModuleRules
|
||||||
{
|
{
|
||||||
[CommandLine("-slate-ui")]
|
[CommandLine("-slate-ui")]
|
||||||
bool EnableSlateUI = false;
|
bool EnableSlateUI = false;
|
||||||
|
@ -18,9 +18,9 @@ public class CarlaUE4 : ModuleRules
|
||||||
Console.WriteLine(string.Format("{0} is {1}.", name, state));
|
Console.WriteLine(string.Format("{0} is {1}.", name, state));
|
||||||
}
|
}
|
||||||
|
|
||||||
public CarlaUE4(ReadOnlyTargetRules Target) : base(Target)
|
public CarlaUnreal(ReadOnlyTargetRules Target) : base(Target)
|
||||||
{
|
{
|
||||||
PrivatePCHHeaderFile = "CarlaUE4.h";
|
PrivatePCHHeaderFile = "CarlaUnreal.h";
|
||||||
|
|
||||||
PublicDependencyModuleNames.AddRange(new string[]
|
PublicDependencyModuleNames.AddRange(new string[]
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
#include "CarlaUE4.h"
|
#include "CarlaUnreal.h"
|
||||||
|
|
||||||
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, CarlaUE4, "CarlaUE4" );
|
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, CarlaUnreal, "CarlaUnreal" );
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class CarlaUE4EditorTarget : TargetRules
|
||||||
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
|
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
|
||||||
Type = TargetType.Editor;
|
Type = TargetType.Editor;
|
||||||
|
|
||||||
ExtraModuleNames.Add("CarlaUE4");
|
ExtraModuleNames.Add("CarlaUnreal");
|
||||||
|
|
||||||
LogFlagStatus("Unity build", EnableUnityBuild);
|
LogFlagStatus("Unity build", EnableUnityBuild);
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ rem -- Set up environment ------------------------------------------------------
|
||||||
rem ============================================================================
|
rem ============================================================================
|
||||||
|
|
||||||
set SCRIPT_DIR=%~dp0
|
set SCRIPT_DIR=%~dp0
|
||||||
set CONTENT_FOLDER=%SCRIPT_DIR%Unreal/CarlaUE4/Content/Carla
|
set CONTENT_FOLDER=%SCRIPT_DIR%Unreal/CarlaUnreal/Content/Carla
|
||||||
set VERSION_FILE=%CONTENT_FOLDER%/.version
|
set VERSION_FILE=%CONTENT_FOLDER%/.version
|
||||||
set CONTENT_VERSIONS=%SCRIPT_DIR%/Util/ContentVersions.txt
|
set CONTENT_VERSIONS=%SCRIPT_DIR%/Util/ContentVersions.txt
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import shutil
|
||||||
import json
|
import json
|
||||||
|
|
||||||
WORKSPACE_PATH = Path(__file__).parent.resolve()
|
WORKSPACE_PATH = Path(__file__).parent.resolve()
|
||||||
CONTENT_PARENT_PATH = WORKSPACE_PATH / 'Unreal' / 'CarlaUE4' / 'Content'
|
CONTENT_PARENT_PATH = WORKSPACE_PATH / 'Unreal' / 'CarlaUnreal' / 'Content'
|
||||||
INTERMEDIATE_FILE_PATH = CONTENT_PARENT_PATH / f'Carla.tar.gz'
|
INTERMEDIATE_FILE_PATH = CONTENT_PARENT_PATH / f'Carla.tar.gz'
|
||||||
CONTENT_PATH = CONTENT_PARENT_PATH / 'Carla'
|
CONTENT_PATH = CONTENT_PARENT_PATH / 'Carla'
|
||||||
CONTENT_VERSION_FILE_PATH = WORKSPACE_PATH / 'Util' / 'ContentVersions.json'
|
CONTENT_VERSION_FILE_PATH = WORKSPACE_PATH / 'Util' / 'ContentVersions.json'
|
||||||
|
|
|
@ -44,7 +44,7 @@ done
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
pushd "$SCRIPT_DIR" >/dev/null
|
pushd "$SCRIPT_DIR" >/dev/null
|
||||||
|
|
||||||
CONTENT_FOLDER="${SCRIPT_DIR}/Unreal/CarlaUE4/Content/Carla"
|
CONTENT_FOLDER="${SCRIPT_DIR}/Unreal/CarlaUnreal/Content/Carla"
|
||||||
|
|
||||||
CONTENT_ID=$(tac $SCRIPT_DIR/Util/ContentVersions.txt | egrep -m 1 . | rev | cut -d' ' -f1 | rev)
|
CONTENT_ID=$(tac $SCRIPT_DIR/Util/ContentVersions.txt | egrep -m 1 . | rev | cut -d' ' -f1 | rev)
|
||||||
CONTENT_LINK=http://carla-assets.s3.amazonaws.com/${CONTENT_ID}.tar.gz
|
CONTENT_LINK=http://carla-assets.s3.amazonaws.com/${CONTENT_ID}.tar.gz
|
||||||
|
@ -82,7 +82,7 @@ if $SKIP_DOWNLOAD ; then
|
||||||
echo
|
echo
|
||||||
echo " ${CONTENT_LINK}"
|
echo " ${CONTENT_LINK}"
|
||||||
echo
|
echo
|
||||||
echo "and extract it under Unreal/CarlaUE4/Content/Carla."
|
echo "and extract it under Unreal/CarlaUnreal/Content/Carla."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ if not "%UE4_ROOT:~-1%"=="\" set UE4_ROOT=%UE4_ROOT%\
|
||||||
|
|
||||||
rem Set the visual studio solution directory
|
rem Set the visual studio solution directory
|
||||||
rem
|
rem
|
||||||
set UE4_PROJECT_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUE4\
|
set UE4_PROJECT_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUnreal\
|
||||||
pushd "%UE4_PROJECT_FOLDER%"
|
pushd "%UE4_PROJECT_FOLDER%"
|
||||||
|
|
||||||
rem Clear binaries and intermediates generated by the build system
|
rem Clear binaries and intermediates generated by the build system
|
||||||
|
@ -120,7 +120,7 @@ if %REMOVE_INTERMEDIATE% == true (
|
||||||
|
|
||||||
rem Remove files
|
rem Remove files
|
||||||
for %%G in (
|
for %%G in (
|
||||||
"%UE4_PROJECT_FOLDER%CarlaUE4.sln"
|
"%UE4_PROJECT_FOLDER%CarlaUnreal.sln"
|
||||||
) do (
|
) do (
|
||||||
if exist %%G (
|
if exist %%G (
|
||||||
echo %FILE_N% Cleaning %%G
|
echo %FILE_N% Cleaning %%G
|
||||||
|
@ -155,10 +155,10 @@ if exist %OMNIVERSE_PLUGIN_FOLDER% (
|
||||||
)
|
)
|
||||||
|
|
||||||
if %USE_CARSIM% == true (
|
if %USE_CARSIM% == true (
|
||||||
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject" -e
|
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject" -e
|
||||||
set CARSIM_STATE="CarSim ON"
|
set CARSIM_STATE="CarSim ON"
|
||||||
) else (
|
) else (
|
||||||
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
set CARSIM_STATE="CarSim OFF"
|
set CARSIM_STATE="CarSim OFF"
|
||||||
)
|
)
|
||||||
if %USE_CHRONO% == true (
|
if %USE_CHRONO% == true (
|
||||||
|
@ -177,7 +177,7 @@ if %USE_UNITY% == true (
|
||||||
set UNITY_STATE="Unity OFF"
|
set UNITY_STATE="Unity OFF"
|
||||||
)
|
)
|
||||||
set OPTIONAL_MODULES_TEXT=%CARSIM_STATE% %CHRONO_STATE% %ROS2_STATE% %OMNIVERSE_PLUGIN_INSTALLED% %UNITY_STATE%
|
set OPTIONAL_MODULES_TEXT=%CARSIM_STATE% %CHRONO_STATE% %ROS2_STATE% %OMNIVERSE_PLUGIN_INSTALLED% %UNITY_STATE%
|
||||||
echo %OPTIONAL_MODULES_TEXT% > "%ROOT_PATH%Unreal/CarlaUE4/Config/OptionalModules.ini"
|
echo %OPTIONAL_MODULES_TEXT% > "%ROOT_PATH%Unreal/CarlaUnreal/Config/OptionalModules.ini"
|
||||||
|
|
||||||
|
|
||||||
if %BUILD_UE4_EDITOR% == true (
|
if %BUILD_UE4_EDITOR% == true (
|
||||||
|
@ -189,16 +189,16 @@ if %BUILD_UE4_EDITOR% == true (
|
||||||
Development^
|
Development^
|
||||||
-WaitMutex^
|
-WaitMutex^
|
||||||
-FromMsBuild^
|
-FromMsBuild^
|
||||||
"%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
"%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
if errorlevel 1 goto bad_exit
|
if errorlevel 1 goto bad_exit
|
||||||
|
|
||||||
call "%UE4_ROOT%Engine\Build\BatchFiles\Build.bat"^
|
call "%UE4_ROOT%Engine\Build\BatchFiles\Build.bat"^
|
||||||
CarlaUE4^
|
CarlaUnreal^
|
||||||
Win64^
|
Win64^
|
||||||
Development^
|
Development^
|
||||||
-WaitMutex^
|
-WaitMutex^
|
||||||
-FromMsBuild^
|
-FromMsBuild^
|
||||||
"%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
"%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
if errorlevel 1 goto bad_exit
|
if errorlevel 1 goto bad_exit
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ rem
|
||||||
if %LAUNCH_UE4_EDITOR% == true (
|
if %LAUNCH_UE4_EDITOR% == true (
|
||||||
echo %FILE_N% Launching Unreal Editor...
|
echo %FILE_N% Launching Unreal Editor...
|
||||||
call "%UE4_ROOT%\Engine\Binaries\Win64\UE4Editor.exe"^
|
call "%UE4_ROOT%\Engine\Binaries\Win64\UE4Editor.exe"^
|
||||||
"%UE4_PROJECT_FOLDER%CarlaUE4.uproject" %EDITOR_FLAGS%
|
"%UE4_PROJECT_FOLDER%CarlaUnreal.uproject" %EDITOR_FLAGS%
|
||||||
if %errorlevel% neq 0 goto error_build
|
if %errorlevel% neq 0 goto error_build
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -224,11 +224,11 @@ rem ============================================================================
|
||||||
|
|
||||||
:error_build
|
:error_build
|
||||||
echo.
|
echo.
|
||||||
echo %FILE_N% [ERROR] There was a problem building CarlaUE4.
|
echo %FILE_N% [ERROR] There was a problem building CarlaUnreal.
|
||||||
echo %FILE_N% Please go to "Carla\Unreal\CarlaUE4", right click on
|
echo %FILE_N% Please go to "Carla\Unreal\CarlaUnreal", right click on
|
||||||
echo %FILE_N% "CarlaUE4.uproject" and select:
|
echo %FILE_N% "CarlaUnreal.uproject" and select:
|
||||||
echo %FILE_N% "Generate Visual Studio project files"
|
echo %FILE_N% "Generate Visual Studio project files"
|
||||||
echo %FILE_N% Open de generated "CarlaUE4.sln" and try to manually compile it
|
echo %FILE_N% Open de generated "CarlaUnreal.sln" and try to manually compile it
|
||||||
echo %FILE_N% and check what is causing the error.
|
echo %FILE_N% and check what is causing the error.
|
||||||
goto bad_exit
|
goto bad_exit
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# -- Parse arguments -----------------------------------------------------------
|
# -- Parse arguments -----------------------------------------------------------
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
DOC_STRING="Build and launch CarlaUE4."
|
DOC_STRING="Build and launch CarlaUnreal."
|
||||||
|
|
||||||
USAGE_STRING="Usage: $0 [-h|--help] [--build] [--rebuild] [--launch] [--clean] [--hard-clean] [--opengl]"
|
USAGE_STRING="Usage: $0 [-h|--help] [--build] [--rebuild] [--launch] [--clean] [--hard-clean] [--opengl]"
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ fi
|
||||||
pushd "${CARLAUE4_ROOT_FOLDER}" >/dev/null
|
pushd "${CARLAUE4_ROOT_FOLDER}" >/dev/null
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# -- Clean CarlaUE4 ------------------------------------------------------------
|
# -- Clean CarlaUnreal ------------------------------------------------------------
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
if ${HARD_CLEAN} ; then
|
if ${HARD_CLEAN} ; then
|
||||||
|
@ -153,17 +153,17 @@ if [[ ! -d ${HOUDINI_PLUGIN_PATH} ]] ; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# -- Build CarlaUE4 ------------------------------------------------------------
|
# -- Build CarlaUnreal ------------------------------------------------------------
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
if ${BUILD_CARLAUE4} ; then
|
if ${BUILD_CARLAUE4} ; then
|
||||||
|
|
||||||
OPTIONAL_MODULES_TEXT=""
|
OPTIONAL_MODULES_TEXT=""
|
||||||
if ${USE_CARSIM} ; then
|
if ${USE_CARSIM} ; then
|
||||||
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUE4.uproject" -e
|
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUnreal.uproject" -e
|
||||||
OPTIONAL_MODULES_TEXT="CarSim ON"$'\n'"${OPTIONAL_MODULES_TEXT}"
|
OPTIONAL_MODULES_TEXT="CarSim ON"$'\n'"${OPTIONAL_MODULES_TEXT}"
|
||||||
else
|
else
|
||||||
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUE4.uproject"
|
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUnreal.uproject"
|
||||||
OPTIONAL_MODULES_TEXT="CarSim OFF"$'\n'"${OPTIONAL_MODULES_TEXT}"
|
OPTIONAL_MODULES_TEXT="CarSim OFF"$'\n'"${OPTIONAL_MODULES_TEXT}"
|
||||||
fi
|
fi
|
||||||
if ${USE_CHRONO} ; then
|
if ${USE_CHRONO} ; then
|
||||||
|
@ -194,12 +194,12 @@ if ${BUILD_CARLAUE4} ; then
|
||||||
# This command fails sometimes but normally we can continue anyway.
|
# This command fails sometimes but normally we can continue anyway.
|
||||||
set +e
|
set +e
|
||||||
log "Generate Unreal project files."
|
log "Generate Unreal project files."
|
||||||
${UE4_ROOT}/GenerateProjectFiles.sh -project="${PWD}/CarlaUE4.uproject" -game -engine -makefiles
|
${UE4_ROOT}/GenerateProjectFiles.sh -project="${PWD}/CarlaUnreal.uproject" -game -engine -makefiles
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Build CarlaUE4 project."
|
log "Build CarlaUnreal project."
|
||||||
make CarlaUE4Editor
|
make CarlaUE4Editor
|
||||||
|
|
||||||
#Providing the user with the ExportedMaps folder
|
#Providing the user with the ExportedMaps folder
|
||||||
|
@ -216,7 +216,7 @@ fi
|
||||||
if ${LAUNCH_UE4_EDITOR} ; then
|
if ${LAUNCH_UE4_EDITOR} ; then
|
||||||
|
|
||||||
log "Launching UE4Editor..."
|
log "Launching UE4Editor..."
|
||||||
${GDB} ${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${PWD}/CarlaUE4.uproject" ${RHI} ${EDITOR_FLAGS}
|
${GDB} ${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${PWD}/CarlaUnreal.uproject" ${RHI} ${EDITOR_FLAGS}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ set LIBCARLA_VSPROJECT_PATH=%INSTALLATION_DIR:/=\%libcarla-visualstudio\
|
||||||
if %GENERATOR% == "" set GENERATOR="Visual Studio 16 2019"
|
if %GENERATOR% == "" set GENERATOR="Visual Studio 16 2019"
|
||||||
|
|
||||||
|
|
||||||
set LIBCARLA_SERVER_INSTALL_PATH=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\Carla\CarlaDependencies\
|
set LIBCARLA_SERVER_INSTALL_PATH=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\Carla\CarlaDependencies\
|
||||||
set LIBCARLA_CLIENT_INSTALL_PATH=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
set LIBCARLA_CLIENT_INSTALL_PATH=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
||||||
|
|
||||||
if %REMOVE_INTERMEDIATE% == true (
|
if %REMOVE_INTERMEDIATE% == true (
|
||||||
|
|
|
@ -73,8 +73,8 @@ rem
|
||||||
set OSM2ODR_VSPROJECT_PATH=%INSTALLATION_DIR:/=\%osm2odr-visualstudio\
|
set OSM2ODR_VSPROJECT_PATH=%INSTALLATION_DIR:/=\%osm2odr-visualstudio\
|
||||||
set OSM2ODR_SOURCE_PATH=%INSTALLATION_DIR:/=\%om2odr-source\
|
set OSM2ODR_SOURCE_PATH=%INSTALLATION_DIR:/=\%om2odr-source\
|
||||||
set OSM2ODR_INSTALL_PATH=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
set OSM2ODR_INSTALL_PATH=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
||||||
set OSM2ODR__SERVER_INSTALL_PATH=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\Carla\CarlaDependencies
|
set OSM2ODR__SERVER_INSTALL_PATH=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\Carla\CarlaDependencies
|
||||||
set CARLA_DEPENDENCIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\Carla\CarlaDependencies\
|
set CARLA_DEPENDENCIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\Carla\CarlaDependencies\
|
||||||
|
|
||||||
if %GENERATOR% == "" set GENERATOR="Visual Studio 16 2019"
|
if %GENERATOR% == "" set GENERATOR="Visual Studio 16 2019"
|
||||||
|
|
||||||
|
|
|
@ -57,8 +57,8 @@ rem ============================================================================
|
||||||
|
|
||||||
rem Set the visual studio solution directory
|
rem Set the visual studio solution directory
|
||||||
rem
|
rem
|
||||||
set CARLA_PLUGINS_PATH=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\
|
set CARLA_PLUGINS_PATH=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\
|
||||||
set CARLA_STREETMAP_PLUGINS_PATH=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\StreetMap\
|
set CARLA_STREETMAP_PLUGINS_PATH=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\StreetMap\
|
||||||
|
|
||||||
rem Build STREETMAP
|
rem Build STREETMAP
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ def generate_decals_file(folder):
|
||||||
def invoke_commandlet(name, arguments):
|
def invoke_commandlet(name, arguments):
|
||||||
"""Generic function for running a commandlet with its arguments."""
|
"""Generic function for running a commandlet with its arguments."""
|
||||||
ue4_path = os.environ["UE4_ROOT"]
|
ue4_path = os.environ["UE4_ROOT"]
|
||||||
uproject_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUE4", "CarlaUE4.uproject")
|
uproject_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUnreal", "CarlaUnreal.uproject")
|
||||||
run = "-run=%s" % (name)
|
run = "-run=%s" % (name)
|
||||||
|
|
||||||
if os.name == "nt":
|
if os.name == "nt":
|
||||||
|
@ -313,7 +313,7 @@ def generate_package_file(package_name, props, maps):
|
||||||
"use_carla_materials": use_carla_materials
|
"use_carla_materials": use_carla_materials
|
||||||
})
|
})
|
||||||
|
|
||||||
package_config_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUE4", "Content", package_name, "Config")
|
package_config_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUnreal", "Content", package_name, "Config")
|
||||||
if not os.path.exists(package_config_path):
|
if not os.path.exists(package_config_path):
|
||||||
try:
|
try:
|
||||||
os.makedirs(package_config_path)
|
os.makedirs(package_config_path)
|
||||||
|
@ -331,7 +331,7 @@ def copy_roadpainter_config_files(package_name):
|
||||||
two_directories_up = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
two_directories_up = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
||||||
final_path = os.path.join(two_directories_up, "Import", "roadpainter_decals.json")
|
final_path = os.path.join(two_directories_up, "Import", "roadpainter_decals.json")
|
||||||
if os.path.exists(final_path):
|
if os.path.exists(final_path):
|
||||||
package_config_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUE4", "Content", package_name, "Config")
|
package_config_path = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUnreal", "Content", package_name, "Config")
|
||||||
if not os.path.exists(package_config_path):
|
if not os.path.exists(package_config_path):
|
||||||
try:
|
try:
|
||||||
os.makedirs(package_config_path)
|
os.makedirs(package_config_path)
|
||||||
|
@ -402,7 +402,7 @@ def import_assets(package_name, json_dirname, props, maps, do_tiles, tile_size,
|
||||||
xodr_folder_destin = os.path.join(
|
xodr_folder_destin = os.path.join(
|
||||||
CARLA_ROOT_PATH,
|
CARLA_ROOT_PATH,
|
||||||
"Unreal",
|
"Unreal",
|
||||||
"CarlaUE4",
|
"CarlaUnreal",
|
||||||
"Content",
|
"Content",
|
||||||
package_name,
|
package_name,
|
||||||
"Maps",
|
"Maps",
|
||||||
|
@ -551,7 +551,7 @@ def build_binary_for_navigation(package_name, dirname, maps):
|
||||||
|
|
||||||
# copy the binary file
|
# copy the binary file
|
||||||
nav_path_source = os.path.join(folder, "%s.bin" % fbx_name_no_ext)
|
nav_path_source = os.path.join(folder, "%s.bin" % fbx_name_no_ext)
|
||||||
nav_folder_target = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUE4", "Content", package_name, "Maps", target_name, "Nav")
|
nav_folder_target = os.path.join(CARLA_ROOT_PATH, "Unreal", "CarlaUnreal", "Content", package_name, "Maps", target_name, "Nav")
|
||||||
if os.path.exists(nav_path_source):
|
if os.path.exists(nav_path_source):
|
||||||
if not os.path.exists(nav_folder_target):
|
if not os.path.exists(nav_folder_target):
|
||||||
os.makedirs(nav_folder_target)
|
os.makedirs(nav_folder_target)
|
||||||
|
@ -583,7 +583,7 @@ def build_binary_for_tm(package_name, dirname, maps):
|
||||||
tm_folder_target = os.path.join(
|
tm_folder_target = os.path.join(
|
||||||
CARLA_ROOT_PATH,
|
CARLA_ROOT_PATH,
|
||||||
"Unreal",
|
"Unreal",
|
||||||
"CarlaUE4",
|
"CarlaUnreal",
|
||||||
"Content",
|
"Content",
|
||||||
package_name,
|
package_name,
|
||||||
"Maps",
|
"Maps",
|
||||||
|
|
|
@ -11,11 +11,11 @@ Use the following commands:
|
||||||
|
|
||||||
launch:
|
launch:
|
||||||
|
|
||||||
Compile CarlaUE4 project and launch it in Unreal Engine's Editor.
|
Compile CarlaUnreal project and launch it in Unreal Engine's Editor.
|
||||||
|
|
||||||
launch-only:
|
launch-only:
|
||||||
|
|
||||||
Launch CarlaUE4 project in Unreal Engine's Editor, but skip building
|
Launch CarlaUnreal project in Unreal Engine's Editor, but skip building
|
||||||
step (assume the project is already built).
|
step (assume the project is already built).
|
||||||
|
|
||||||
import:
|
import:
|
||||||
|
@ -73,7 +73,7 @@ for developers:
|
||||||
|
|
||||||
CarlaUE4Editor:
|
CarlaUE4Editor:
|
||||||
|
|
||||||
Build CarlaUE4 project, but do not launch the editor.
|
Build CarlaUnreal project, but do not launch the editor.
|
||||||
|
|
||||||
PythonAPI(.2|.3):
|
PythonAPI(.2|.3):
|
||||||
|
|
||||||
|
|
|
@ -119,11 +119,11 @@ rem ============================================================================
|
||||||
if %DO_PACKAGE%==true (
|
if %DO_PACKAGE%==true (
|
||||||
|
|
||||||
if %USE_CARSIM% == true (
|
if %USE_CARSIM% == true (
|
||||||
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject" -e
|
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject" -e
|
||||||
echo CarSim ON > "%ROOT_PATH%Unreal/CarlaUE4/Config/CarSimConfig.ini"
|
echo CarSim ON > "%ROOT_PATH%Unreal/CarlaUnreal/Config/CarSimConfig.ini"
|
||||||
) else (
|
) else (
|
||||||
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
py -3 %ROOT_PATH%Util/BuildTools/enable_carsim_to_uproject.py -f="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
echo CarSim OFF > "%ROOT_PATH%Unreal/CarlaUE4/Config/CarSimConfig.ini"
|
echo CarSim OFF > "%ROOT_PATH%Unreal/CarlaUnreal/Config/CarSimConfig.ini"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "!BUILD_FOLDER!" mkdir "!BUILD_FOLDER!"
|
if not exist "!BUILD_FOLDER!" mkdir "!BUILD_FOLDER!"
|
||||||
|
@ -134,24 +134,24 @@ if %DO_PACKAGE%==true (
|
||||||
Development^
|
Development^
|
||||||
-WaitMutex^
|
-WaitMutex^
|
||||||
-FromMsBuild^
|
-FromMsBuild^
|
||||||
"%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
"%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
|
|
||||||
if errorlevel 1 goto error_build_editor
|
if errorlevel 1 goto error_build_editor
|
||||||
|
|
||||||
echo "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat"^
|
echo "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat"^
|
||||||
CarlaUE4^
|
CarlaUnreal^
|
||||||
Win64^
|
Win64^
|
||||||
%PACKAGE_CONFIG%^
|
%PACKAGE_CONFIG%^
|
||||||
-WaitMutex^
|
-WaitMutex^
|
||||||
-FromMsBuild^
|
-FromMsBuild^
|
||||||
"%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
"%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat"^
|
call "%UE4_ROOT%\Engine\Build\BatchFiles\Build.bat"^
|
||||||
CarlaUE4^
|
CarlaUnreal^
|
||||||
Win64^
|
Win64^
|
||||||
%PACKAGE_CONFIG%^
|
%PACKAGE_CONFIG%^
|
||||||
-WaitMutex^
|
-WaitMutex^
|
||||||
-FromMsBuild^
|
-FromMsBuild^
|
||||||
"%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"
|
"%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"
|
||||||
|
|
||||||
if errorlevel 1 goto error_build
|
if errorlevel 1 goto error_build
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ if %DO_PACKAGE%==true (
|
||||||
-Platform=Win64^
|
-Platform=Win64^
|
||||||
-installed^
|
-installed^
|
||||||
-nop4^
|
-nop4^
|
||||||
-project="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"^
|
-project="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"^
|
||||||
-cook^
|
-cook^
|
||||||
-stage^
|
-stage^
|
||||||
-build^
|
-build^
|
||||||
|
@ -178,7 +178,7 @@ if %DO_PACKAGE%==true (
|
||||||
-Platform=Win64^
|
-Platform=Win64^
|
||||||
-installed^
|
-installed^
|
||||||
-nop4^
|
-nop4^
|
||||||
-project="%ROOT_PATH%Unreal/CarlaUE4/CarlaUE4.uproject"^
|
-project="%ROOT_PATH%Unreal/CarlaUnreal/CarlaUnreal.uproject"^
|
||||||
-cook^
|
-cook^
|
||||||
-stage^
|
-stage^
|
||||||
-build^
|
-build^
|
||||||
|
@ -215,8 +215,8 @@ if %DO_COPY_FILES%==true (
|
||||||
echo f | xcopy /y "!XCOPY_FROM!PythonAPI\util\*.py" "!XCOPY_TO!PythonAPI\util\"
|
echo f | xcopy /y "!XCOPY_FROM!PythonAPI\util\*.py" "!XCOPY_TO!PythonAPI\util\"
|
||||||
echo d | xcopy /y /s "!XCOPY_FROM!PythonAPI\util\opendrive" "!XCOPY_TO!PythonAPI\util\opendrive"
|
echo d | xcopy /y /s "!XCOPY_FROM!PythonAPI\util\opendrive" "!XCOPY_TO!PythonAPI\util\opendrive"
|
||||||
echo f | xcopy /y "!XCOPY_FROM!PythonAPI\util\requirements.txt" "!XCOPY_TO!PythonAPI\util\"
|
echo f | xcopy /y "!XCOPY_FROM!PythonAPI\util\requirements.txt" "!XCOPY_TO!PythonAPI\util\"
|
||||||
echo f | xcopy /y "!XCOPY_FROM!Unreal\CarlaUE4\Content\Carla\HDMaps\*.pcd" "!XCOPY_TO!HDMaps\"
|
echo f | xcopy /y "!XCOPY_FROM!Unreal\CarlaUnreal\Content\Carla\HDMaps\*.pcd" "!XCOPY_TO!HDMaps\"
|
||||||
echo f | xcopy /y "!XCOPY_FROM!Unreal\CarlaUE4\Content\Carla\HDMaps\Readme.md" "!XCOPY_TO!HDMaps\README"
|
echo f | xcopy /y "!XCOPY_FROM!Unreal\CarlaUnreal\Content\Carla\HDMaps\Readme.md" "!XCOPY_TO!HDMaps\README"
|
||||||
if exist "!XCOPY_FROM!Plugins" (
|
if exist "!XCOPY_FROM!Plugins" (
|
||||||
echo d | xcopy /y /s "!XCOPY_FROM!Plugins" "!XCOPY_TO!Plugins"
|
echo d | xcopy /y /s "!XCOPY_FROM!Plugins" "!XCOPY_TO!Plugins"
|
||||||
)
|
)
|
||||||
|
@ -234,7 +234,7 @@ if %DO_PACKAGE%==true if %DO_TARBALL%==true (
|
||||||
if exist "!SRC_PATH!Manifest_NonUFSFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_NonUFSFiles_Win64.txt"
|
if exist "!SRC_PATH!Manifest_NonUFSFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_NonUFSFiles_Win64.txt"
|
||||||
if exist "!SRC_PATH!Manifest_DebugFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_DebugFiles_Win64.txt"
|
if exist "!SRC_PATH!Manifest_DebugFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_DebugFiles_Win64.txt"
|
||||||
if exist "!SRC_PATH!Manifest_UFSFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_UFSFiles_Win64.txt"
|
if exist "!SRC_PATH!Manifest_UFSFiles_Win64.txt" del /Q "!SRC_PATH!Manifest_UFSFiles_Win64.txt"
|
||||||
if exist "!SRC_PATH!CarlaUE4/Saved" rmdir /S /Q "!SRC_PATH!CarlaUE4/Saved"
|
if exist "!SRC_PATH!CarlaUnreal/Saved" rmdir /S /Q "!SRC_PATH!CarlaUnreal/Saved"
|
||||||
if exist "!SRC_PATH!Engine/Saved" rmdir /S /Q "!SRC_PATH!Engine/Saved"
|
if exist "!SRC_PATH!Engine/Saved" rmdir /S /Q "!SRC_PATH!Engine/Saved"
|
||||||
|
|
||||||
set DST_ZIP=%DESTINATION_ZIP:/=\%
|
set DST_ZIP=%DESTINATION_ZIP:/=\%
|
||||||
|
@ -262,7 +262,7 @@ rem -- Cook other packages -----------------------------------------------------
|
||||||
rem ==============================================================================
|
rem ==============================================================================
|
||||||
|
|
||||||
rem Set some file locations
|
rem Set some file locations
|
||||||
set CARLAUE4_ROOT_FOLDER=%ROOT_PATH%Unreal/CarlaUE4
|
set CARLAUE4_ROOT_FOLDER=%ROOT_PATH%Unreal/CarlaUnreal
|
||||||
set PACKAGE_PATH_FILE=%CARLAUE4_ROOT_FOLDER%/Content/PackagePath.txt
|
set PACKAGE_PATH_FILE=%CARLAUE4_ROOT_FOLDER%/Content/PackagePath.txt
|
||||||
set MAP_LIST_FILE=%CARLAUE4_ROOT_FOLDER%/Content/MapPaths.txt
|
set MAP_LIST_FILE=%CARLAUE4_ROOT_FOLDER%/Content/MapPaths.txt
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
REM # Prepare cooking of package
|
REM # Prepare cooking of package
|
||||||
echo Prepare cooking of package: !PACKAGE_NAME!
|
echo Prepare cooking of package: !PACKAGE_NAME!
|
||||||
call "%UE4_ROOT%/Engine/Binaries/Win64/UE4Editor.exe "^
|
call "%UE4_ROOT%/Engine/Binaries/Win64/UE4Editor.exe "^
|
||||||
"%CARLAUE4_ROOT_FOLDER%/CarlaUE4.uproject"^
|
"%CARLAUE4_ROOT_FOLDER%/CarlaUnreal.uproject"^
|
||||||
-run=PrepareAssetsForCooking^
|
-run=PrepareAssetsForCooking^
|
||||||
-PackageName=!PACKAGE_NAME!^
|
-PackageName=!PACKAGE_NAME!^
|
||||||
-OnlyPrepareMaps=false
|
-OnlyPrepareMaps=false
|
||||||
|
@ -319,7 +319,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
REM # Cook maps
|
REM # Cook maps
|
||||||
echo Cooking: %%a
|
echo Cooking: %%a
|
||||||
call "%UE4_ROOT%/Engine/Binaries/Win64/UE4Editor.exe "^
|
call "%UE4_ROOT%/Engine/Binaries/Win64/UE4Editor.exe "^
|
||||||
"%CARLAUE4_ROOT_FOLDER%/CarlaUE4.uproject"^
|
"%CARLAUE4_ROOT_FOLDER%/CarlaUnreal.uproject"^
|
||||||
-run=cook^
|
-run=cook^
|
||||||
-map="%%a"^
|
-map="%%a"^
|
||||||
-targetplatform="WindowsNoEditor"^
|
-targetplatform="WindowsNoEditor"^
|
||||||
|
@ -340,7 +340,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
|
|
||||||
pushd "!BUILD_FOLDER!"
|
pushd "!BUILD_FOLDER!"
|
||||||
|
|
||||||
set SUBST_PATH=!BUILD_FOLDER!CarlaUE4
|
set SUBST_PATH=!BUILD_FOLDER!CarlaUnreal
|
||||||
|
|
||||||
REM Copy the package config file to package
|
REM Copy the package config file to package
|
||||||
set TARGET="!SUBST_PATH!\Content\Carla\Config\"
|
set TARGET="!SUBST_PATH!\Content\Carla\Config\"
|
||||||
|
@ -353,7 +353,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
set MAPS_TO_COOK=!MAPS_TO_COOK:+=^
|
set MAPS_TO_COOK=!MAPS_TO_COOK:+=^
|
||||||
|
|
||||||
!
|
!
|
||||||
set BASE_CONTENT=%INSTALLATION_DIR:/=\%..\Unreal\CarlaUE4\Content
|
set BASE_CONTENT=%INSTALLATION_DIR:/=\%..\Unreal\CarlaUnreal\Content
|
||||||
for /f "tokens=1 delims=+" %%a in ("!MAPS_TO_COOK!") do (
|
for /f "tokens=1 delims=+" %%a in ("!MAPS_TO_COOK!") do (
|
||||||
|
|
||||||
REM Get path and name of map
|
REM Get path and name of map
|
||||||
|
@ -366,7 +366,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
|
|
||||||
REM # copy the OpenDrive file
|
REM # copy the OpenDrive file
|
||||||
set SRC=!BASE_CONTENT!!MAP_FOLDER!\OpenDrive\!MAP_NAME!.xodr
|
set SRC=!BASE_CONTENT!!MAP_FOLDER!\OpenDrive\!MAP_NAME!.xodr
|
||||||
set TRG=!BUILD_FOLDER!\CarlaUE4\Content\!MAP_FOLDER!\OpenDrive\
|
set TRG=!BUILD_FOLDER!\CarlaUnreal\Content\!MAP_FOLDER!\OpenDrive\
|
||||||
if exist "!SRC!" (
|
if exist "!SRC!" (
|
||||||
mkdir "!TRG!"
|
mkdir "!TRG!"
|
||||||
copy "!SRC!" "!TRG!"
|
copy "!SRC!" "!TRG!"
|
||||||
|
@ -374,7 +374,7 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
|
|
||||||
REM # copy the navigation file
|
REM # copy the navigation file
|
||||||
set SRC=!BASE_CONTENT!!MAP_FOLDER!\Nav\!MAP_NAME!.bin
|
set SRC=!BASE_CONTENT!!MAP_FOLDER!\Nav\!MAP_NAME!.bin
|
||||||
set TRG=!BUILD_FOLDER!\CarlaUE4\Content\!MAP_FOLDER!\Nav\
|
set TRG=!BUILD_FOLDER!\CarlaUnreal\Content\!MAP_FOLDER!\Nav\
|
||||||
if exist "!SRC!" (
|
if exist "!SRC!" (
|
||||||
mkdir "!TRG!"
|
mkdir "!TRG!"
|
||||||
copy "!SRC!" "!TRG!"
|
copy "!SRC!" "!TRG!"
|
||||||
|
@ -382,17 +382,17 @@ for /f "tokens=* delims=" %%i in ("!PACKAGES!") do (
|
||||||
|
|
||||||
REM # copy the traffic manager map file
|
REM # copy the traffic manager map file
|
||||||
set SRC=!BASE_CONTENT!!MAP_FOLDER!\TM\!MAP_NAME!.bin
|
set SRC=!BASE_CONTENT!!MAP_FOLDER!\TM\!MAP_NAME!.bin
|
||||||
set TRG=!BUILD_FOLDER!\CarlaUE4\Content\!MAP_FOLDER!\TM\
|
set TRG=!BUILD_FOLDER!\CarlaUnreal\Content\!MAP_FOLDER!\TM\
|
||||||
if exist "!SRC!" (
|
if exist "!SRC!" (
|
||||||
mkdir "!TRG!"
|
mkdir "!TRG!"
|
||||||
copy "!SRC!" "!TRG!"
|
copy "!SRC!" "!TRG!"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
rmdir /S /Q "!BUILD_FOLDER!\CarlaUE4\Metadata"
|
rmdir /S /Q "!BUILD_FOLDER!\CarlaUnreal\Metadata"
|
||||||
rmdir /S /Q "!BUILD_FOLDER!\CarlaUE4\Plugins"
|
rmdir /S /Q "!BUILD_FOLDER!\CarlaUnreal\Plugins"
|
||||||
REM del "!BUILD_FOLDER!\CarlaUE4\Content\!PACKAGE_NAME!/Maps/!PROPS_MAP_NAME!"
|
REM del "!BUILD_FOLDER!\CarlaUnreal\Content\!PACKAGE_NAME!/Maps/!PROPS_MAP_NAME!"
|
||||||
del "!BUILD_FOLDER!\CarlaUE4\AssetRegistry.bin"
|
del "!BUILD_FOLDER!\CarlaUnreal\AssetRegistry.bin"
|
||||||
|
|
||||||
if %DO_TARBALL%==true (
|
if %DO_TARBALL%==true (
|
||||||
|
|
||||||
|
@ -463,7 +463,7 @@ rem ============================================================================
|
||||||
|
|
||||||
:error_build
|
:error_build
|
||||||
echo.
|
echo.
|
||||||
echo %FILE_N% [ERROR] There was a problem while building the CarlaUE4.
|
echo %FILE_N% [ERROR] There was a problem while building the CarlaUnreal.
|
||||||
echo [ERROR] Please read the screen log for more information.
|
echo [ERROR] Please read the screen log for more information.
|
||||||
goto bad_exit
|
goto bad_exit
|
||||||
|
|
||||||
|
|
|
@ -110,10 +110,10 @@ if ${DO_CARLA_RELEASE} ; then
|
||||||
pushd "${CARLAUE4_ROOT_FOLDER}" >/dev/null
|
pushd "${CARLAUE4_ROOT_FOLDER}" >/dev/null
|
||||||
|
|
||||||
if ${USE_CARSIM} ; then
|
if ${USE_CARSIM} ; then
|
||||||
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUE4.uproject" -e
|
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUnreal.uproject" -e
|
||||||
echo "CarSim ON" > ${PWD}/Config/CarSimConfig.ini
|
echo "CarSim ON" > ${PWD}/Config/CarSimConfig.ini
|
||||||
else
|
else
|
||||||
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUE4.uproject"
|
python ${PWD}/../../Util/BuildTools/enable_carsim_to_uproject.py -f="CarlaUnreal.uproject"
|
||||||
echo "CarSim OFF" > ${PWD}/Config/CarSimConfig.ini
|
echo "CarSim OFF" > ${PWD}/Config/CarSimConfig.ini
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ if ${DO_CARLA_RELEASE} ; then
|
||||||
mkdir -p ${RELEASE_BUILD_FOLDER}
|
mkdir -p ${RELEASE_BUILD_FOLDER}
|
||||||
|
|
||||||
${UE4_ROOT}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
|
${UE4_ROOT}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
|
||||||
-project="${PWD}/CarlaUE4.uproject" \
|
-project="${PWD}/CarlaUnreal.uproject" \
|
||||||
-nocompileeditor -nop4 -cook -stage -archive -package -iterate \
|
-nocompileeditor -nop4 -cook -stage -archive -package -iterate \
|
||||||
-clientconfig=${PACKAGE_CONFIG} -ue4exe=UE4Editor \
|
-clientconfig=${PACKAGE_CONFIG} -ue4exe=UE4Editor \
|
||||||
-prereqs -targetplatform=Linux -build -utf8output \
|
-prereqs -targetplatform=Linux -build -utf8output \
|
||||||
|
@ -181,12 +181,12 @@ if ${DO_CARLA_RELEASE} ; then
|
||||||
copy_if_changed "./Plugins/" "${DESTINATION}/Plugins/"
|
copy_if_changed "./Plugins/" "${DESTINATION}/Plugins/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "./Unreal/CarlaUE4/Plugins/Carla/CarlaDependencies/lib" ] ; then
|
if [ -d "./Unreal/CarlaUnreal/Plugins/Carla/CarlaDependencies/lib" ] ; then
|
||||||
cp -r "./Unreal/CarlaUE4/Plugins/Carla/CarlaDependencies/lib" "${DESTINATION}/CarlaUE4/Plugins/Carla/CarlaDependencies"
|
cp -r "./Unreal/CarlaUnreal/Plugins/Carla/CarlaDependencies/lib" "${DESTINATION}/CarlaUnreal/Plugins/Carla/CarlaDependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
copy_if_changed "./Unreal/CarlaUE4/Content/Carla/HDMaps/*.pcd" "${DESTINATION}/HDMaps/"
|
copy_if_changed "./Unreal/CarlaUnreal/Content/Carla/HDMaps/*.pcd" "${DESTINATION}/HDMaps/"
|
||||||
copy_if_changed "./Unreal/CarlaUE4/Content/Carla/HDMaps/Readme.md" "${DESTINATION}/HDMaps/README"
|
copy_if_changed "./Unreal/CarlaUnreal/Content/Carla/HDMaps/Readme.md" "${DESTINATION}/HDMaps/README"
|
||||||
|
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ if ${DO_CARLA_RELEASE} && ${DO_TARBALL} ; then
|
||||||
|
|
||||||
rm -f ./Manifest_NonUFSFiles_Linux.txt
|
rm -f ./Manifest_NonUFSFiles_Linux.txt
|
||||||
rm -f ./Manifest_UFSFiles_Linux.txt
|
rm -f ./Manifest_UFSFiles_Linux.txt
|
||||||
rm -Rf ./CarlaUE4/Saved
|
rm -Rf ./CarlaUnreal/Saved
|
||||||
rm -Rf ./Engine/Saved
|
rm -Rf ./Engine/Saved
|
||||||
|
|
||||||
tar -czf ${DESTINATION} *
|
tar -czf ${DESTINATION} *
|
||||||
|
@ -265,7 +265,7 @@ for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ;
|
||||||
pushd "${CARLAUE4_ROOT_FOLDER}" > /dev/null
|
pushd "${CARLAUE4_ROOT_FOLDER}" > /dev/null
|
||||||
|
|
||||||
# Prepare cooking of package
|
# Prepare cooking of package
|
||||||
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUE4.uproject" \
|
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUnreal.uproject" \
|
||||||
-run=PrepareAssetsForCooking -PackageName=${PACKAGE_NAME} -OnlyPrepareMaps=false
|
-run=PrepareAssetsForCooking -PackageName=${PACKAGE_NAME} -OnlyPrepareMaps=false
|
||||||
|
|
||||||
PACKAGE_FILE=$(<${PACKAGE_PATH_FILE})
|
PACKAGE_FILE=$(<${PACKAGE_PATH_FILE})
|
||||||
|
@ -280,7 +280,7 @@ for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ;
|
||||||
for MAP in "${MAP_LIST[@]}"; do
|
for MAP in "${MAP_LIST[@]}"; do
|
||||||
if (($(($TOTAL+${#MAP})) > $MAX_STRINGLENGTH)); then
|
if (($(($TOTAL+${#MAP})) > $MAX_STRINGLENGTH)); then
|
||||||
echo "Cooking $MAP_STRING"
|
echo "Cooking $MAP_STRING"
|
||||||
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUE4.uproject" \
|
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUnreal.uproject" \
|
||||||
-run=cook -map="${MAP_STRING}" -cooksinglepackage -targetplatform="LinuxNoEditor" \
|
-run=cook -map="${MAP_STRING}" -cooksinglepackage -targetplatform="LinuxNoEditor" \
|
||||||
-OutputDir="${BUILD_FOLDER}" -iterate
|
-OutputDir="${BUILD_FOLDER}" -iterate
|
||||||
MAP_STRING=""
|
MAP_STRING=""
|
||||||
|
@ -290,7 +290,7 @@ for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ;
|
||||||
TOTAL=$(($TOTAL+${#MAP}))
|
TOTAL=$(($TOTAL+${#MAP}))
|
||||||
done
|
done
|
||||||
if (($TOTAL > 0)); then
|
if (($TOTAL > 0)); then
|
||||||
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUE4.uproject" \
|
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${CARLAUE4_ROOT_FOLDER}/CarlaUnreal.uproject" \
|
||||||
-run=cook -map="${MAP_STRING}" -cooksinglepackage -targetplatform="LinuxNoEditor" \
|
-run=cook -map="${MAP_STRING}" -cooksinglepackage -targetplatform="LinuxNoEditor" \
|
||||||
-OutputDir="${BUILD_FOLDER}" -iterate
|
-OutputDir="${BUILD_FOLDER}" -iterate
|
||||||
fi
|
fi
|
||||||
|
@ -305,7 +305,7 @@ for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ;
|
||||||
|
|
||||||
pushd "${BUILD_FOLDER}" > /dev/null
|
pushd "${BUILD_FOLDER}" > /dev/null
|
||||||
|
|
||||||
SUBST_PATH="${BUILD_FOLDER}/CarlaUE4"
|
SUBST_PATH="${BUILD_FOLDER}/CarlaUnreal"
|
||||||
SUBST_FILE="${PACKAGE_FILE/${CARLAUE4_ROOT_FOLDER}/${SUBST_PATH}}"
|
SUBST_FILE="${PACKAGE_FILE/${CARLAUE4_ROOT_FOLDER}/${SUBST_PATH}}"
|
||||||
|
|
||||||
# Copy the package config file to package
|
# Copy the package config file to package
|
||||||
|
@ -345,10 +345,10 @@ for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ;
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -Rf "./CarlaUE4/Metadata"
|
rm -Rf "./CarlaUnreal/Metadata"
|
||||||
rm -Rf "./CarlaUE4/Plugins"
|
rm -Rf "./CarlaUnreal/Plugins"
|
||||||
rm -Rf "./CarlaUE4/Content/${PACKAGE_NAME}/Maps/${PROPS_MAP_NAME}"
|
rm -Rf "./CarlaUnreal/Content/${PACKAGE_NAME}/Maps/${PROPS_MAP_NAME}"
|
||||||
rm -f "./CarlaUE4/AssetRegistry.bin"
|
rm -f "./CarlaUnreal/AssetRegistry.bin"
|
||||||
|
|
||||||
if ${DO_TARBALL} ; then
|
if ${DO_TARBALL} ; then
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ elif [[ -f ${PRETTIFY_FILE} ]] ; then
|
||||||
if [[ ${PRETTIFY_FILE} == *.py ]] ; then
|
if [[ ${PRETTIFY_FILE} == *.py ]] ; then
|
||||||
log "autopep8 ${PRETTIFY_FILE}"
|
log "autopep8 ${PRETTIFY_FILE}"
|
||||||
${AUTOPEP8_COMMAND} ${PRETTIFY_FILE}
|
${AUTOPEP8_COMMAND} ${PRETTIFY_FILE}
|
||||||
elif [[ ${PRETTIFY_FILE} == *Unreal/CarlaUE4/* ]] ; then
|
elif [[ ${PRETTIFY_FILE} == *Unreal/CarlaUnreal/* ]] ; then
|
||||||
log "uncrustify for UE4 ${PRETTIFY_FILE}"
|
log "uncrustify for UE4 ${PRETTIFY_FILE}"
|
||||||
${UNCRUSTIFY_COMMAND} -c ${UNCRUSTIFY_UE4_CONFIG} ${PRETTIFY_FILE}
|
${UNCRUSTIFY_COMMAND} -c ${UNCRUSTIFY_UE4_CONFIG} ${PRETTIFY_FILE}
|
||||||
else
|
else
|
||||||
|
|
|
@ -27,9 +27,9 @@ rem ============================================================================
|
||||||
set BOOST_VERSION=1.80.0
|
set BOOST_VERSION=1.80.0
|
||||||
set INSTALLERS_DIR=%ROOT_PATH:/=\%Util\InstallersWin\
|
set INSTALLERS_DIR=%ROOT_PATH:/=\%Util\InstallersWin\
|
||||||
set VERSION_FILE=%ROOT_PATH:/=\%Util\ContentVersions.txt
|
set VERSION_FILE=%ROOT_PATH:/=\%Util\ContentVersions.txt
|
||||||
set CONTENT_DIR=%ROOT_PATH:/=\%Unreal\CarlaUE4\Content\Carla\
|
set CONTENT_DIR=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Content\Carla\
|
||||||
set CARLA_DEPENDENCIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\Carla\CarlaDependencies\
|
set CARLA_DEPENDENCIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\Carla\CarlaDependencies\
|
||||||
set CARLA_BINARIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUE4\Plugins\Carla\Binaries\Win64
|
set CARLA_BINARIES_FOLDER=%ROOT_PATH:/=\%Unreal\CarlaUnreal\Plugins\Carla\Binaries\Win64
|
||||||
set CARLA_PYTHON_DEPENDENCIES=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
set CARLA_PYTHON_DEPENDENCIES=%ROOT_PATH:/=\%PythonAPI\carla\dependencies\
|
||||||
set USE_CHRONO=false
|
set USE_CHRONO=false
|
||||||
set USE_ROS2=false
|
set USE_ROS2=false
|
||||||
|
|
|
@ -8,8 +8,8 @@ CARLA_DOCKER_UTILS_FOLDER=${CARLA_UTIL_FOLDER}/DockerUtils
|
||||||
CARLA_BUILD_TOOLS_FOLDER=${CARLA_UTIL_FOLDER}/BuildTools
|
CARLA_BUILD_TOOLS_FOLDER=${CARLA_UTIL_FOLDER}/BuildTools
|
||||||
CARLA_TEST_RESULTS_FOLDER=${CARLA_BUILD_FOLDER}/test-results
|
CARLA_TEST_RESULTS_FOLDER=${CARLA_BUILD_FOLDER}/test-results
|
||||||
|
|
||||||
CARLAUE4_ROOT_FOLDER=${CURDIR}/Unreal/CarlaUE4
|
CARLAUE4_ROOT_FOLDER=${CURDIR}/Unreal/CarlaUnreal
|
||||||
CARLAUE4_PLUGIN_ROOT_FOLDER=${CURDIR}/Unreal/CarlaUE4/Plugins/Carla
|
CARLAUE4_PLUGIN_ROOT_FOLDER=${CURDIR}/Unreal/CarlaUnreal/Plugins/Carla
|
||||||
CARLA_PYTHONAPI_ROOT_FOLDER=${CURDIR}/PythonAPI
|
CARLA_PYTHONAPI_ROOT_FOLDER=${CURDIR}/PythonAPI
|
||||||
CARLA_PYTHONAPI_SOURCE_FOLDER=${CARLA_PYTHONAPI_ROOT_FOLDER}/carla
|
CARLA_PYTHONAPI_SOURCE_FOLDER=${CARLA_PYTHONAPI_ROOT_FOLDER}/carla
|
||||||
|
|
||||||
|
@ -34,5 +34,5 @@ CMAKE_CONFIG_FILE=${CARLA_BUILD_FOLDER}/CMakeLists.txt.in
|
||||||
LIBCARLA_TEST_CONTENT_FOLDER=${CARLA_BUILD_FOLDER}/test-content
|
LIBCARLA_TEST_CONTENT_FOLDER=${CARLA_BUILD_FOLDER}/test-content
|
||||||
CARLA_EXAMPLES_FOLDER=${CURDIR}/Examples
|
CARLA_EXAMPLES_FOLDER=${CURDIR}/Examples
|
||||||
|
|
||||||
CARLAUE4_ADDPLUGINS_FOLDER=${CURDIR}/Unreal/CarlaUE4/Plugins
|
CARLAUE4_ADDPLUGINS_FOLDER=${CURDIR}/Unreal/CarlaUnreal/Plugins
|
||||||
CARLAUE4_STREETMAP_FOLDER=${CARLAUE4_ADDPLUGINS_FOLDER}/Streetmap
|
CARLAUE4_STREETMAP_FOLDER=${CARLAUE4_ADDPLUGINS_FOLDER}/Streetmap
|
||||||
|
|
|
@ -11,7 +11,7 @@ Use the following commands:
|
||||||
|
|
||||||
launch:
|
launch:
|
||||||
|
|
||||||
Compile CarlaUE4 project and launch it in Unreal Engine's Editor.
|
Compile CarlaUnreal project and launch it in Unreal Engine's Editor.
|
||||||
|
|
||||||
package:
|
package:
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@
|
||||||
"PythonAPI/carla/dependencies",
|
"PythonAPI/carla/dependencies",
|
||||||
"PythonAPI/carla/dist",
|
"PythonAPI/carla/dist",
|
||||||
"Saved",
|
"Saved",
|
||||||
"Unreal/CarlaUE4/Content/Carla/*",
|
"Unreal/CarlaUnreal/Content/Carla/*",
|
||||||
"Unreal/CarlaUE4/Plugins/Carla/CarlaDependencies",
|
"Unreal/CarlaUnreal/Plugins/Carla/CarlaDependencies",
|
||||||
"__pycache__",
|
"__pycache__",
|
||||||
"_site"
|
"_site"
|
||||||
],
|
],
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
{
|
{
|
||||||
"name": "CARLA - make CarlaUE4Editor",
|
"name": "CARLA - make CarlaUE4Editor",
|
||||||
"working_dir": "${project_path}/..",
|
"working_dir": "${project_path}/..",
|
||||||
"file_regex": "(Unreal\\/CarlaUE4\\/[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
|
"file_regex": "(Unreal\\/CarlaUnreal\\/[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
|
||||||
"syntax": "Packages/Makefile/Make Output.sublime-syntax",
|
"syntax": "Packages/Makefile/Make Output.sublime-syntax",
|
||||||
"linux":
|
"linux":
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,17 +61,17 @@ fi
|
||||||
./ImportAssets.sh
|
./ImportAssets.sh
|
||||||
|
|
||||||
# Removing unnecessary files
|
# Removing unnecessary files
|
||||||
rm CarlaUE4/Binaries/Linux/CarlaUE4-Linux-Shipping.debug
|
rm CarlaUnreal/Binaries/Linux/CarlaUnreal-Linux-Shipping.debug
|
||||||
rm CarlaUE4/Binaries/Linux/CarlaUE4-Linux-Shipping.sym
|
rm CarlaUnreal/Binaries/Linux/CarlaUnreal-Linux-Shipping.sym
|
||||||
|
|
||||||
# ==================================================================================================
|
# ==================================================================================================
|
||||||
# -- Debian package --------------------------------------------------------------------------------
|
# -- Debian package --------------------------------------------------------------------------------
|
||||||
# ==================================================================================================
|
# ==================================================================================================
|
||||||
# Updating CarlaUE4.sh script
|
# Updating CarlaUnreal.sh script
|
||||||
rm CarlaUE4.sh
|
rm CarlaUnreal.sh
|
||||||
cat >> CarlaUE4.sh <<EOF
|
cat >> CarlaUnreal.sh <<EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
"/opt/carla-simulator/CarlaUE4/Binaries/Linux/CarlaUE4-Linux-Shipping" CarlaUE4 \$@
|
"/opt/carla-simulator/CarlaUnreal/Binaries/Linux/CarlaUnreal-Linux-Shipping" CarlaUnreal \$@
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Making debian package to install Carla in /opt folder
|
# Making debian package to install Carla in /opt folder
|
||||||
|
@ -83,9 +83,9 @@ binary:
|
||||||
|
|
||||||
install:
|
install:
|
||||||
mkdir -p \$(DESTDIR)/opt/carla-simulator/bin
|
mkdir -p \$(DESTDIR)/opt/carla-simulator/bin
|
||||||
cp CarlaUE4.sh \$(DESTDIR)/opt/carla-simulator/bin
|
cp CarlaUnreal.sh \$(DESTDIR)/opt/carla-simulator/bin
|
||||||
cp ImportAssets.sh \$(DESTDIR)/opt/carla-simulator
|
cp ImportAssets.sh \$(DESTDIR)/opt/carla-simulator
|
||||||
cp -r CarlaUE4 \$(DESTDIR)/opt/carla-simulator
|
cp -r CarlaUnreal \$(DESTDIR)/opt/carla-simulator
|
||||||
cp -r Engine \$(DESTDIR)/opt/carla-simulator
|
cp -r Engine \$(DESTDIR)/opt/carla-simulator
|
||||||
cp -r Import \$(DESTDIR)/opt/carla-simulator
|
cp -r Import \$(DESTDIR)/opt/carla-simulator
|
||||||
cp -r PythonAPI \$(DESTDIR)/opt/carla-simulator
|
cp -r PythonAPI \$(DESTDIR)/opt/carla-simulator
|
||||||
|
@ -146,7 +146,7 @@ mkdir -p "\$SITEDIR"
|
||||||
PYTHON2_EGG=\$(ls /opt/carla-simulator/PythonAPI/carla/dist | grep py2.)
|
PYTHON2_EGG=\$(ls /opt/carla-simulator/PythonAPI/carla/dist | grep py2.)
|
||||||
echo "/opt/carla-simulator/PythonAPI/carla/dist/\$PYTHON2_EGG\n/opt/carla-simulator/PythonAPI/carla/" > "\$SITEDIR/carla.pth"
|
echo "/opt/carla-simulator/PythonAPI/carla/dist/\$PYTHON2_EGG\n/opt/carla-simulator/PythonAPI/carla/" > "\$SITEDIR/carla.pth"
|
||||||
|
|
||||||
chmod +x /opt/carla-simulator/bin/CarlaUE4.sh
|
chmod +x /opt/carla-simulator/bin/CarlaUnreal.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|
|
@ -17,5 +17,5 @@ USER carla
|
||||||
WORKDIR /home/carla
|
WORKDIR /home/carla
|
||||||
|
|
||||||
# you can also run CARLA in offscreen mode with -RenderOffScreen
|
# you can also run CARLA in offscreen mode with -RenderOffScreen
|
||||||
# CMD /bin/bash CarlaUE4.sh -RenderOffScreen
|
# CMD /bin/bash CarlaUnreal.sh -RenderOffScreen
|
||||||
CMD /bin/bash CarlaUE4.sh
|
CMD /bin/bash CarlaUnreal.sh
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# -- Parse arguments -----------------------------------------------------------
|
# -- Parse arguments -----------------------------------------------------------
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
DOC_STRING="Unpack and copy over CarlaUE4's Exported Assets"
|
DOC_STRING="Unpack and copy over CarlaUnreal's Exported Assets"
|
||||||
|
|
||||||
USAGE_STRING="Usage: $0 [-h|--help] [-d|--dir] <outdir>"
|
USAGE_STRING="Usage: $0 [-h|--help] [-d|--dir] <outdir>"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue