diff --git a/docker/Dockerfile_binary b/docker/Dockerfile_binary index 501199dd4..5bd7a35a0 100644 --- a/docker/Dockerfile_binary +++ b/docker/Dockerfile_binary @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=nvidia/cudagl:10.0-devel-ubuntu18.04 +ARG BASE_IMAGE=ghcr.io/epicgames/unreal-engine:runtime FROM $BASE_IMAGE RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ @@ -12,7 +12,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-ins RUN python3 -m pip install --upgrade pip && \ pip3 install setuptools wheel && \ - pip3 install airsim + pip3 install cosysairsim RUN adduser --force-badname --disabled-password --gecos '' --shell /bin/bash airsim_user && \ echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ diff --git a/docker/Dockerfile_source b/docker/Dockerfile_source index 7e07e0ccb..86859225c 100644 --- a/docker/Dockerfile_source +++ b/docker/Dockerfile_source @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=adamrehn/ue4-engine:4.19.2-cudagl10.0 +ARG BASE_IMAGE=ghcr.io/epicgames/unreal-engine:dev-5.4.3 FROM $BASE_IMAGE USER root @@ -9,13 +9,13 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-ins x11-xserver-utils RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ - adduser ue4 sudo + adduser ue5 sudo -USER ue4 -RUN cd /home/ue4 && \ +USER ue5 +RUN cd /home/ue5 && \ git clone --progress https://github.com/Cosys-Lab/Cosys-AirSim.git && \ cd AirSim && \ ./setup.sh && \ ./build.sh -WORKDIR /home/ue4 +WORKDIR /home/ue5 diff --git a/docker/build_airsim_image.py b/docker/build_airsim_image.py index e5130927d..1ea50e760 100644 --- a/docker/build_airsim_image.py +++ b/docker/build_airsim_image.py @@ -14,7 +14,7 @@ def build_docker_image(args): dockerfile = 'Dockerfile_source' if args.source: if not args.base_image: - args.base_image = "adamrehn/ue4-engine:4.19.2-cudagl10.0" + args.base_image = "ghcr.io/epicgames/unreal-engine:runtime" target_image_tag = args.base_image.split(":")[1] # take tag from base image if not args.target_image: args.target_image = 'airsim_source' + ':' + target_image_tag @@ -22,7 +22,7 @@ def build_docker_image(args): else: dockerfile = 'Dockerfile_binary' if not args.base_image: - args.base_image = "nvidia/cudagl:10.0-devel-ubuntu18.04" + args.base_image = "ghcr.io/epicgames/unreal-engine:dev-5.4.3" target_image_tag = args.base_image.split(":")[1] # take tag from base image if not args.target_image: args.target_image = 'airsim_binary' + ':' + target_image_tag diff --git a/docker/download_blocks_env_binary.sh b/docker/download_blocks_env_binary.sh index 3b7e5fb4b..f2acb7764 100755 --- a/docker/download_blocks_env_binary.sh +++ b/docker/download_blocks_env_binary.sh @@ -5,6 +5,6 @@ if ! which unzip; then sudo apt-get install unzip fi -wget -c https://github.com/microsoft/AirSim/releases/download/v1.6.0-linux/Blocks.zip -unzip -q Blocks.zip -rm Blocks.zip +wget -c https://github.com/Cosys-Lab/Cosys-AirSim/releases/download/5.4-v3.1/Blocks_package_54_31.zip +unzip -q Blocks_package_54_31.zip +rm Blocks_package_54_31.zip diff --git a/docker/settings.json b/docker/settings.json index da59ce4aa..90c8d0970 100644 --- a/docker/settings.json +++ b/docker/settings.json @@ -1,19 +1,439 @@ { - "SeeDocsAt": "https://cosys-lab.github.io/settings/", - "SettingsVersion": 2.0, - "SimMode": "Multirotor", - "ClockSpeed": 1.0, - "Vehicles": { - "SimpleFlight": { - "VehicleType": "SimpleFlight", - "DefaultVehicleState": "Armed", - "EnableCollisionPassthrough": false, - "EnableCollisions": true, - "AllowAPIAlways": true, - "RC": { - "RemoteControlID": 0, - "AllowAPIWhenDisconnected": false - } + "SeeDocsAt": "https://cosys-lab.github.io/settings/", + "SettingsVersion": 2.0, + "ClockSpeed": 1, + "LocalHostIp": "127.0.0.1", + "ApiServerPort": 41451, + "RecordUIVisible": true, + "MoveWorldOrigin": false, + "InitialInstanceSegmentation": true, + "LogMessagesVisible": true, + "ShowLosDebugLines": false, + "ViewMode": "", + "RpcEnabled": true, + "EngineSound": false, + "PhysicsEngineName": "", + "SpeedUnitFactor": 1, + "SpeedUnitLabel": "m/s", + "SimMode": "Car", + "Annotation": [ + { + "Name": "RGBTestDirect", + "Type": 0, + "Default": true, + "SetDirect": true, + "ViewDistance": 10 + }, + { + "Name": "RGBTestIndex", + "Type": 0, + "Default": true, + "SetDirect": false + }, + { + "Name": "GreyscaleTest", + "Type": 1, + "Default": true, + "ViewDistance": 5 + }, + { + "Name": "TextureTestDirect", + "Type": 2, + "Default": true, + "SetDirect": true + }, + { + "Name": "TextureTestRelativePath", + "Type": 2, + "Default": false, + "SetDirect": false, + "TexturePath": "/Game/AnnotationTest", + "TexturePrefix": "Test1" + } + ], + "Wind": { + "X": 0, + "Y": 0, + "Z": 0 + }, + "CameraDirector": { + "FollowDistance": -5 + }, + "Recording": { + "RecordOnMove": false, + "RecordInterval": 0.05, + "Folder": "", + "Enabled": false, + "Cameras": [ + { + "CameraName": "0", + "ImageType": 0, + "PixelsAsFloat": false, + "VehicleName": "", + "Compress": true + } + ] + }, + "OriginGeopoint": { + "Latitude": 47.641468, + "Longitude": -122.140165, + "Altitude": 122 + }, + "TimeOfDay": { + "Enabled": false, + "StartDateTime": "", + "CelestialClockSpeed": 1, + "StartDateTimeDst": false, + "UpdateIntervalSecs": 60 + }, + "SubWindows": [ + { + "WindowID": 0, + "CameraName": "frontcamera", + "ImageType": 3, + "VehicleName": "airsimvehicle", + "Visible": false + }, + { + "WindowID": 1, + "CameraName": "frontcamera", + "ImageType": 5, + "VehicleName": "airsimvehicle", + "Visible": false + }, + { + "WindowID": 2, + "CameraName": "frontcamera", + "ImageType": 0, + "VehicleName": "airsimvehicle", + "Visible": false + } + ], + "CameraDefaults": { + "CaptureSettings": [ + { + "ImageType": 0, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "AutoExposureSpeed": 100, + "AutoExposureBias": 0, + "AutoExposureMaxBrightness": 0.64, + "AutoExposureMinBrightness": 0.03, + "MotionBlurAmount": 1, + "MotionBlurMax": 10, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "ChromaticAberrationScale": 2, + "IgnoreMarked": false, + "LumenGIEnable": true, + "LumenReflectionEnable": true, + "LumenFinalQuality": 1, + "LumenSceneDetail": 1, + "LumenSceneLightningDetail": 1 + }, + { + "ImageType": 1, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 2, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 3, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 4, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 5, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 6, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 7, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 8, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 9, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + }, + { + "ImageType": 10, + "Width": 960, + "Height": 540, + "FOV_Degrees": 90, + "TargetGamma": 1, + "ProjectionMode": "", + "OrthoWidth": 5.12, + "IgnoreMarked": false + } + ], + "NoiseSettings": [ + { + "Enabled": false, + "ImageType": 0, + "RandContrib": 0.2, + "RandSpeed": 100000, + "RandSize": 500, + "RandDensity": 2, + "HorzWaveContrib": 0.03, + "HorzWaveStrength": 0.08, + "HorzWaveVertSize": 1, + "HorzWaveScreenSize": 1, + "HorzNoiseLinesContrib": 1, + "HorzNoiseLinesDensityY": 0.01, + "HorzNoiseLinesDensityXY": 0.5 + } + ] + }, + "Vehicles": { + "airsimvehicle": { + "VehicleType": "BoxCar", + "DefaultVehicleState": "", + "AutoCreate": true, + "PawnPath": "", + "EnableCollisionPassthrough": false, + "EnableCollisions": true, + "RC": { + "RemoteControlID": 0 + }, + "X": 0, + "Y": 0, + "Z": 0, + "Pitch": 0, + "Roll": 0, + "Yaw": 0, + "Cameras": { + "frontcamera": { + "X": 0.25, + "Y": 0, + "Z": -0.3, + "Roll": 0, + "Pitch": 0, + "Yaw": 0, + "DrawSensor": false, + "External": false, + "ExternalLocal": true + }, + "backcamera": { + "X": -0.25, + "Y": 0, + "Z": -0.3, + "Roll": 0, + "Pitch": 0, + "Yaw": 180, + "DrawSensor": false, + "External": false, + "ExternalLocal": true + } + }, + "Sensors": { + "barometer": { + "Enabled": false, + "SensorType": 1 + }, + "imu": { + "Enabled": true, + "SensorType": 2 + }, + "gps": { + "Enabled": true, + "SensorType": 3 + }, + "magnetometer": { + "Enabled": false, + "SensorType": 4 + }, + "distance": { + "Enabled": false, + "SensorType": 5 + }, + "gpulidar": { + "SensorType": 8, + "Enabled": true, + "External": false, + "ExternalLocal": true, + "NumberOfChannels": 32, + "Range": 50, + "Resolution": 1024, + "RotationsPerSecond": 10, + "MeasurementsPerCycle": 512, + "X": 0, + "Y": 0, + "Z": -0.3, + "Roll": 0, + "Pitch": 0, + "Yaw": 0, + "VerticalFOVUpper": 20, + "VerticalFOVLower": -20, + "HorizontalFOVStart": 0, + "HorizontalFOVEnd": 360, + "DrawDebugPoints": false, + "DrawMode": 1, + "IgnoreMarked": true, + "GroundTruth": true, + "GenerateIntensity": false, + "rangeMaxLambertianPercentage": 80, + "rainMaxIntensity": 70, + "rainConstantA": 0.01, + "rainConstantB": 0.6, + "DrawSensor": false + }, + "lidar": { + "SensorType": 6, + "Enabled": true, + "External": false, + "ExternalLocal": true, + "NumberOfChannels": 32, + "Range": 120, + "RotationsPerSecond": 10, + "MeasurementsPerCycle": 1024, + "X": 0, + "Y": 0, + "Z": -0.55, + "Roll": 0, + "Pitch": 0, + "Yaw": 0, + "VerticalFOVUpper": 26.8, + "VerticalFOVLower": -24.8, + "HorizontalFOVStart": 0, + "HorizontalFOVEnd": 360, + "DrawDebugPoints": false, + "IgnoreMarked": true, + "GenerateNoise": true, + "DrawSensor": false + }, + "echo": { + "SensorType": 7, + "Enabled": true, + "External": false, + "ExternalLocal": true, + "RunParallel": true, + "X": 0, + "Y": 0, + "Z": -0.55, + "Roll": 0, + "Pitch": 0, + "Yaw": 0, + "MeasurementFrequency": 5, + "NumberOfTraces": 1000, + "SensorDiameter": 0.5, + "SensorLowerAzimuthLimit": -90, + "SensorUpperAzimuthLimit": 90, + "SensorLowerElevationLimit": -90, + "SensorUpperElevationLimit": 90, + "AttenuationPerDistance": 0, + "AttenuationPerReflection": 0, + "AttenuationLimit": -100, + "DistanceLimit": 10, + "ReflectionLimit": 3, + "ReflectionDistanceLimit": 0.4, + "ReflectionOpeningAngle": 10, + "DrawInitialPoints": false, + "DrawBounceLines": false, + "DrawReflectedPoints": false, + "DrawReflectedLines": false, + "DrawReflectedPaths": false, + "DrawExternalPoints": false, + "DrawPassiveSources": false, + "DrawPassiveLines": false, + "DrawSensor": false, + "SenseActive": true, + "SensePassive": true, + "PassiveRadius": 10 + } + } + } + }, + "PassiveEchoBeacons": { + "PassiveEchoBeaconTest": { + "X": 10, + "Y": 10, + "Z": -2, + "Roll": -40, + "Pitch": 50, + "Yaw": -50, + "Enable": true, + "InitialDirections": 1000, + "SensorLowerAzimuthLimit": -90, + "SensorUpperAzimuthLimit": 90, + "SensorLowerElevationLimit": -90, + "SensorUpperElevationLimit": 90, + "AttenuationPerDistance": 0, + "AttenuationPerReflection": 0, + "AttenuationLimit": -100, + "DistanceLimit": 3, + "ReflectionLimit": 3, + "ReflectionOnlyFinal": false, + "DrawDebugAllPoints": false, + "DrawDebugAllLines": false, + "DrawDebugLocation": false + } } - } -} +} \ No newline at end of file diff --git a/docs/docker_ubuntu.md b/docs/docker_ubuntu.md new file mode 100644 index 000000000..a12264749 --- /dev/null +++ b/docs/docker_ubuntu.md @@ -0,0 +1,177 @@ +# Cosys-AirSim on Docker in Linux +We've two options for docker. You can either build an image for running [airsim linux binaries](#binaries), or for compiling Unreal Engine + Cosys-AirSim [from source](#source) + +THIS IS WIP DOCUMENTATION, SUBJECT TO UPDATE AND CHANGE + +## Binaries +#### Requirements: +- Install [nvidia-docker2](https://github.com/NVIDIA/nvidia-docker#quickstart) + +#### Build the docker image +- Below are the default arguments. + `--base_image`: This is image over which we'll install airsim. We've tested on Ubuntu 18.04 with CUDA 10.0. + You can specify any [NVIDIA cudagl](https://hub.docker.com/r/nvidia/cudagl/) at your own risk. + `--target_image` is the desired name of your docker image. + Defaults to `airsim_binary` with same tag as the base image + +```bash +$ cd Airsim/docker; +$ python build_airsim_image.py \ + --base_image=nvidia/cudagl:10.0-devel-ubuntu18.04 \ + --target_image=airsim_binary:10.0-devel-ubuntu18.04 +``` + +- Verify you have an image by: + `$ docker images | grep airsim` + +#### Running an unreal binary inside a docker container +- Get [a Linux binary](https://github.com/CodexLabsLLC/Colosseum/releases) or package your own project in Ubuntu. +Let's take the Blocks binary as an example. +You can download it by running + +```bash + $ cd Airsim/docker; + $ ./download_blocks_env_binary.sh +``` + +Modify it to fetch the specific binary required. + +- Running an unreal binary inside a docker container + The syntax is: + +```bash + $ ./run_airsim_image_binary.sh DOCKER_IMAGE_NAME UNREAL_BINARY_SHELL_SCRIPT UNREAL_BINARY_ARGUMENTS -- headless +``` + + For Blocks, you can do a `$ ./run_airsim_image_binary.sh airsim_binary:10.0-devel-ubuntu18.04 Blocks/BlocksV2.sh -windowed -ResX=1080 -ResY=720` + + * `DOCKER_IMAGE_NAME`: Same as `target_image` parameter in previous step. By default, enter `airsim_binary:10.0-devel-ubuntu18.04` + * `UNREAL_BINARY_SHELL_SCRIPT`: for Blocks enviroment, it will be `BlocksV2/BlocksV2.sh` + * [`UNREAL_BINARY_ARGUMENTS`](https://docs.unrealengine.com/en-us/Programming/Basics/CommandLineArguments): + For airsim, most relevant would be `-windowed`, `-ResX`, `-ResY`. Click on link to see all options. + + * Running in Headless mode: + Suffix `-- headless` at the end: +```bash +$ ./run_airsim_image_binary.sh BlocksV2/BlocksV2.sh -- headless +``` + +- [Specifying a `settings.json`](#specifying-settingsjson) + +## Source +#### Requirements: +- Install [nvidia-docker2](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker) +- Install [ue4-docker](https://docs.adamrehn.com/ue4-docker/configuration/configuring-linux) + +#### Build Unreal Engine inside docker: +- To get access to Unreal Engine's source code, register on Epic Games' website and link it to your github account, as explained in the `Required Steps` section [here](https://docs.unrealengine.com/en-us/Platforms/Linux/BeginnerLinuxDeveloper/SettingUpAnUnrealWorkflow). + + Note that you don't need to do `Step 2: Downloading UE4 on Linux`! + +- Build unreal engine 4.19.2 docker image. We're going to use CUDA 10.0 in our example. + `$ ue4-docker build 4.19.2 --cuda=10.0 --no-full` + - [optional] `$ ue4-docker clean` to free up some space. [Details here](https://docs.adamrehn.com/ue4-docker/commands/clean) + - `ue4-docker` supports all CUDA version listed on NVIDIA's cudagl dockerhub [here](https://hub.docker.com/r/nvidia/cudagl/). + - Please see [this page](https://docs.adamrehn.com/ue4-docker/building-images/advanced-build-options) for advanced configurations using `ue4-docker` + +- Disk space: + - The unreal images and containers can take up a lot of space, especially if you try more than one version. + - Here's a list of useful links to monitor space used by docker and clean up intermediate builds: + - [Large container images primer](https://docs.adamrehn.com/ue4-docker/read-these-first/large-container-images-primer) + - [`docker system df`](https://docs.docker.com/engine/reference/commandline/system_df/) + - [`docker container prune`](https://docs.docker.com/engine/reference/commandline/container_prune/) + - [`docker image prune`](https://docs.docker.com/engine/reference/commandline/image_prune/) + - [`docker system prune`](https://docs.docker.com/engine/reference/commandline/system_prune/) + +#### Building Colosseum inside UE4 docker container: +* Build Colosseum docker image (which lays over the unreal image we just built) + Below are the default arguments. + - `--base_image`: This is image over which we'll install airsim. We've tested on `adamrehn/ue4-engine:4.19.2-cudagl10.0`. See [ue4-docker](https://docs.adamrehn.com/ue4-docker/building-images/available-container-images) for other versions. + - `--target_image` is the desired name of your docker image. + Defaults to `airsim_source` with same tag as the base image + +```bash +$ cd Airsim/docker; +$ python build_airsim_image.py \ + --source \ + ----base_image adamrehn/ue4-engine:4.19.2-cudagl10.0 \ + --target_image=airsim_source:4.19.2-cudagl10.0 +``` + +#### Running Colosseum container +* Run the airsim source image we built by: + +```bash + ./run_airsim_image_source.sh airsim_source:4.19.2-cudagl10.0 +``` + + Syntax is `./run_airsim_image_source.sh DOCKER_IMAGE_NAME -- headless` + `-- headless`: suffix this to run in optional headless mode. + +* Inside the container, you can see `UnrealEngine` and `Colosseum` under `/home/ue4`. +* Start unreal engine inside the container: + `ue4@HOSTMACHINE:~$ /home/ue4/UnrealEngine/Engine/Binaries/Linux/UE4Editor` +* [Specifying an airsim settings.json](#specifying-settingsjson) +* Continue with [Colosseum's Linux docs](build_linux.md#build-unreal-environment). + +#### [Misc] Packaging Unreal Environments in `airsim_source` containers +* Let's take the Blocks environment as an example. + In the following script, specify the full path to your unreal uproject file by `project` and the directory where you want the binaries to be placed by `archivedirectory` + +```bash +$ /home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -platform=Linux -clientconfig=Shipping -serverconfig=Shipping -noP4 -cook -allmaps -build -stage -prereqs -pak -archive \ +-archivedirectory=/home/ue4/Binaries/BlocksV2/ \ +-project=/home/ue4/Colosseum/Unreal/Environments/BlocksV2/BlocksV2.uproject +``` + +This would create a Blocks binary in `/home/ue4/Binaries/BlocksV2/`. +You can test it by running `/home/ue4/Binaries/BlocksV2/LinuxNoEditor/BlocksV2.sh -windowed` + +### Specifying settings.json +#### `airsim_binary` docker image: + - We're mapping the host machine's `PATH/TO/Airsim/docker/settings.json` to the docker container's `/home/airsim_user/Documents/Colosseum/settings.json`. + - Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_binary.sh`](https://github.com/CodexLabsLLC/Colosseum/blob/main/docker/run_airsim_image_binary.sh) + +```bash +nvidia-docker run --runtime=nvidia -it \ + -v $PATH_TO_YOUR/settings.json:/home/airsim_user/Documents/Colosseum/settings.json \ + -v $UNREAL_BINARY_PATH:$UNREAL_BINARY_PATH \ + -e SDL_VIDEODRIVER=$SDL_VIDEODRIVER_VALUE \ + -e SDL_HINT_CUDA_DEVICE='0' \ + --net=host \ + --env="DISPLAY=$DISPLAY" \ + --env="QT_X11_NO_MITSHM=1" \ + --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ + -env="XAUTHORITY=$XAUTH" \ + --volume="$XAUTH:$XAUTH" \ + --rm \ + $DOCKER_IMAGE_NAME \ + /bin/bash -c "$UNREAL_BINARY_COMMAND" +``` + +**Note:** Docker version >=19.03 (check using `docker -v`), natively supports Nvidia GPUs, so run using `--gpus all` flag as given - + +```bash +docker run --gpus all -it \ + ... +``` + +#### `airsim_source` docker image: + + * We're mapping the host machine's `PATH/TO/Airsim/docker/settings.json` to the docker container's `/home/airsim_user/Documents/Colosseum/settings.json`. + * Hence, we can load any settings file by simply modifying `PATH_TO_YOUR/settings.json` by modifying the following snippets in [`run_airsim_image_source.sh`](https://github.com/CodexLabsLLC/Colosseum/blob/main/docker/run_airsim_image_source.sh): + +```bash + nvidia-docker run --runtime=nvidia -it \ + -v $(pwd)/settings.json:/home/airsim_user/Documents/Colosseum/settings.json \ + -e SDL_VIDEODRIVER=$SDL_VIDEODRIVER_VALUE \ + -e SDL_HINT_CUDA_DEVICE='0' \ + --net=host \ + --env="DISPLAY=$DISPLAY" \ + --env="QT_X11_NO_MITSHM=1" \ + --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ + -env="XAUTHORITY=$XAUTH" \ + --volume="$XAUTH:$XAUTH" \ + --rm \ + $DOCKER_IMAGE_NAME +``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6678b8184..2286f749b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,6 +18,7 @@ nav: - "Download and install from precompiled plugin": 'install_precompiled.md' - "Install from Source on Windows": 'install_windows.md' - "Install from Source on Linux": 'install_linux.md' + - "Using Docker on Ubuntu": 'docker_ubuntu.md' - "Custom Unreal Environment": 'unreal_custenv.md' - "Dynamic Objects": 'dynamic_objects.md' - "Using AirSim":