# Apollo Software Installation Guide

This document describes the steps required to install Apollo on Ubuntu 18.04.5
LTS (Bionic Beaver), the recommended Ubuntu release for Apollo 6.0.

## Pre-requisites

Before getting started, please make sure all the pre-requisite steps were
finished as described in the
[Pre-requisite Software Installation Guide](../specs/prerequisite_software_installation_guide.md).

Please also make sure Docker is running. Type `systemctl status docker` to check
the running status of Docker daemon, and type `systemctl start docker` to start
Docker if needed.

## Download Apollo Sources

Run the following commands to clone
[Apollo's GitHub Repo](https://github.com/ApolloAuto/apollo.git).

```bash
# Using SSH
git clone git@github.com:ApolloAuto/apollo.git

# Using HTTPS
git clone https://github.com/ApolloAuto/apollo.git

```

And checkout the latest branch:

```bash
cd apollo
git checkout master
```

For CN users, please refer to
[How to Clone Apollo Repository from China](../howto/how_to_clone_apollo_repo_from_china.md)
if your have difficulty cloning from GitHub.

(Optional) For convenience, you can set up environment variable
`APOLLO_ROOT_DIR` to refer to Apollo root directory by running:

```bash
echo "export APOLLO_ROOT_DIR=$(pwd)" >> ~/.bashrc  && source ~/.bashrc
```

![tip](images/tip_icon.png) In the following sections, we will refer to Apollo
root directory as `$APOLLO_ROOT_DIR`

## Start Apollo Development Docker Container

From the `${APOLLO_ROOT_DIR}` directory, type

```bash
bash docker/scripts/dev_start.sh
```

to start Apollo development Docker container.

If successful, you will see the following messages at the bottom of your screen:

```bash
[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_dev_michael container, please run the following command:
[ OK ]   bash docker/scripts/dev_into.sh
[ OK ] Enjoy!
```

## Enter Apollo Development Docker Container

Run the following command to login into the newly started container:

```bash
bash docker/scripts/dev_into.sh
```

## Build Apollo inside Container

From the `/apollo` directory inside Apollo Docker container, type:

```bash
./apollo.sh build
```

to build the whole Apollo project.

Or type

```bash
./apollo.sh build_opt
```

for an optimized build.

You can refer to
[Apollo Build and Test Explained](../specs/apollo_build_and_test_explained.md)
for a thorough understanding of Apollo builds and tests.

## Launch and Run Apollo

Please refer to the
[Run Apollo](../howto/how_to_launch_and_run_apollo.md#run-apollo) section of
[How to Launch And Run Apollo](../howto/how_to_launch_and_run_apollo.md).

## (Optional) Support a new Vehicle in DreamView

In order to support a new vehicle in DreamView, please follow the steps below:

1. Create a new folder for your vehicle under `modules/calibration/data`

2. There is already a sample file in the `modules/calibration/data` folder named
   `mkz_example`. Refer to this structure and include all necessary
   configuration files in the same file structure as “mkz_example”. Remember to
   update the configuration files with your own parameters if needed.

3. Restart DreamView and you will be able to see your new vehicle (name is the
   same as your newly created folder) in the selected vehicle.