diff --git a/RELEASE.md b/RELEASE.md
index dd663a47c0c..418f3aea241 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,3 +1,20 @@
+# Release 3.0
+
+Apollo 3.0 enables L4 product level solution that allows vehicles to drive in a closed venue setting at a low speed. Automakers can now leverage this one stop solution for autonomous driving without having to customize on their own.
+
+## Major Features And Improvements
+* New Safety module called Guardian
+* Enhanced Surveillance module - Monitor
+* Hardware service layer that will now act like a platform and not a product, giving developers the flexibility to integrate their own Hardware
+* Apollo Sensor Unit (ASU)
+* New Gatekeeper - Ultrasonic Sensor
+* Perception module changes:
+ - **CIPV detection/ Tailgating** – moving within a single lane
+ - Whole lane line support - bold line support for long range accuracy. There are 2 different types on installations for Camera, low and high installation.
+ - **Online pose estimation** – determines angle change and estimates it when there are bumps or slopes to ensure that the sensors move with the car and the angle/pose changes accordingly
+ - **Visual localization** – we now use camera for localization. This functionality is currently being tested.
+ - **Ultrasonic Sensor** – Currently being tested as the final gatekeeper to be used in conjunction with Guardian for Automated Emergency brake and vertical/perpendicular parking.
+
# Release 2.5
This release allows the vehicle to autonomously run on geo-fenced highways. Vehicles are able to do lane keeping cruise and avoid collisions with the leading vehicles.
diff --git a/docs/howto/How_to_use_a_different_vehicle.md b/docs/howto/How_to_use_a_different_vehicle.md
new file mode 100644
index 00000000000..e0a29eec7df
--- /dev/null
+++ b/docs/howto/How_to_use_a_different_vehicle.md
@@ -0,0 +1,14 @@
+# How to use a different vehicle
+
+To add a different Vehicle, you must first follow the [Readme Installation steps](https://github.com/ApolloAuto/apollo/blob/master/README.md) to assemble and launch Apollo successfully.
+
+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 `Vehicle` dropdown menu.
+
+4. Select the newly configured vehicle.
+
diff --git a/docs/quickstart/apollo_3_0_hardware_system_installation_guide.md b/docs/quickstart/apollo_3_0_hardware_system_installation_guide.md
new file mode 100644
index 00000000000..a11f584fa7b
--- /dev/null
+++ b/docs/quickstart/apollo_3_0_hardware_system_installation_guide.md
@@ -0,0 +1,173 @@
+# Apollo 3.0 Hardware and System Installation Guide
+
+* [About This Guide](#about-this-guide)
+ * [Document Conventions](#document-conventions)
+* [Introduction](#introduction)
+ * [Documentation](#documentation)
+* [Key Hardware Components](#key-hardware-components)
+ * [Additional Components Required](#additional-components-required)
+* [Steps for the Installation Tasks](#steps-for-the-installation-tasks)
+ * [At the Office](#at-the-office)
+ * [In the Vehicle](#in-the-vehicle)
+ * [Prerequisites](#prerequisites)
+ * [Diagrams of the Major Component Installations](#diagrams-of-the-major-component-installations)
+* [Additional Tasks Required](#additional-tasks-required)
+* [Next Steps](#next-steps)
+
+
+## About This Guide
+
+The *Apollo 3.0 Hardware and System Installation Guide* provides the instructions to install all of the hardware components and system software for the **Apollo Project**. The system installation information included pertains to the procedures to download and install the Apollo Linux Kernel.
+
+### Document Conventions
+
+The following table lists the conventions that are used in this document:
+
+| **Icon** | **Description** |
+| ----------------------------------- | ---------------------------------------- |
+| **Bold** | Emphasis |
+| `Mono-space font` | Code, typed data |
+| _Italic_ | Titles of documents, sections, and headings Terms used |
+| ![info](images/info_icon.png) | **Info** Contains information that might be useful. Ignoring the Info icon has no negative consequences. |
+| ![tip](images/tip_icon.png) | **Tip**. Includes helpful hints or a shortcut that might assist you in completing a task. |
+| ![online](images/online_icon.png) | **Online**. Provides a link to a particular web site where you can get more information. |
+| ![warning](images/warning_icon.png) | **Warning**. Contains information that must **not** be ignored or you risk failure when you perform a certain task or step. |
+
+## Introduction
+
+The **Apollo Project** is an initiative that provides an open, complete, and reliable software platform for Apollo partners in the automotive and autonomous driving industries. The aim of this project is to enable these entities to develop their own self-driving systems based on the Apollo software stack.
+
+### Documentation
+
+The following set of documentation describes Apollo 3.0:
+
+- ***[Apollo Hardware and System Installation Guide]*** ─ Provides the instructions to install the hardware components and the system software for the vehicle:
+
+ - **Vehicle**:
+
+ - Industrial PC (IPC)
+ - Global Positioning System (GPS)
+ - Inertial Measurement Unit (IMU)
+ - Controller Area Network (CAN) card
+ - GPS Antenna
+ - GPS Receiver
+ - Light Detection and Ranging System (LiDAR)
+ - Camera
+ - Radar
+ - Apollo Sensor Unit (ASU)
+
+ - **Software**:
+ - Ubuntu Linux
+ - Apollo Linux Kernel
+ - NVIDIA GPU Driver
+
+- ***[Apollo Quick Start Guide]*** ─ The combination of a tutorial and a roadmap that provides the complete set of end-to-end instructions. The Quick Start Guide also provides links to additional documents that describe the conversion of a regular car to an autonomous-driving vehicle.
+
+## Key Hardware Components
+
+The key hardware components to install include:
+
+- Onboard computer system ─ Neousys Nuvo-6108GC
+- Controller Area Network (CAN) Card ─ ESD CAN-PCIe/402-B4
+- General Positioning System (GPS) and Inertial Measurement Unit (IMU) ─
+ You can select one of the following options:
+ - NovAtel SPAN-IGM-A1
+ - NovAtel SPAN® ProPak6™ and NovAtel IMU-IGM-A1
+ - Navtech NV-GI120
+- Light Detection and Ranging System (LiDAR) ─ You can select one of the following options:
+ - Velodyne HDL-64E S3
+ - Velodyne Puck series
+ - Innovusion LiDAR
+ - Hesai's Pandora
+- Cameras — You can select one of the following options:
+ - Leopard Imaging LI-USB30-AR023ZWDR with USB 3.0 case
+ - Argus Camera
+ - Wissen Camera
+- Radar — You can select one of the following options:
+ - Continental ARS408-21
+ - Delphi ESR 2.5
+ - Racobit B01HC
+
+### Additional Components Required
+
+You need to provide these additional components for the Additional Tasks Required:
+
+- Apollo Sensor Unit (ASU)
+- A 4G router for Internet access
+- A USB hub for extra USB ports
+- A monitor, keyboard, and mouse for debugging at the car onsite
+- Cables: a Digital Visual Interface (DVI) cable (optional), a customized cable for GPS-LiDAR time synchronization
+- Apple iPad Pro: 9.7-inch, Wi-Fi (optional)
+
+The features of the key hardware components are presented in the subsequent sections.
+
+## Steps for the Installation Tasks
+
+This section describes the steps to install:
+
+- The key hardware and software components
+- The hardware in the vehicle
+
+### At the Office
+
+Perform the following tasks:
+
+- Prepare the IPC:
+ - Install the CAN card
+ - Install or replace the hard drive
+ - Prepare the IPC for powering up
+
+- Install the software for the IPC:
+ - Ubuntu Linux
+ - Apollo Kernel
+ - Nvidia GPU Driver
+
+The IPC is now ready to be mounted on the vehicle.
+
+### In the Vehicle
+
+Perform these tasks:
+
+- Make the necessary modifications to the vehicle as specified in the list of prerequisites
+- Install the major components:
+ - GPS Antenna
+ - IPC
+ - GPS Receiver and IMU
+ - LiDAR's
+ - Cameras
+ - Radar
+
+
+#### Prerequisites
+
+**![warning_icon](images/warning_icon.png)WARNING**: Prior to mounting the major components (GPS Antenna, IPC, and GPS Receiver) in the vehicle, perform certain modifications as specified in the list of prerequisites. The instructions for making the mandatory changes in the list are outside the scope of this document.
+
+The list of prerequisites are as follows:
+
+- The vehicle must be modified for “drive-by-wire” technology by a professional service company. Also, a CAN interface hookup must be provided in the trunk where the IPC will be mounted.
+- A power panel must be installed in the trunk to provide power to the IPC and the GPS-IMU. The power panel would also service other devices in the vehicle such as a 4G LTE router. The power panel should be hooked up to the power system in the vehicle.
+- A custom-made rack must be installed to mount the GPS-IMU Antenna, the cameras and the LiDAR's on top of the vehicle.
+- A custom-made rack must be installed to mount the GPS-IMU in the trunk.
+- A custom-made rack must be installed in front of the vehicle to mount the front-facing radar.
+- A 4G LTE router must be mounted in the trunk to provide Internet access for the IPC. The router must have built-in Wi-Fi access point (AP) capability to connect to other devices, such as an iPad, to interface with the autonomous driving (AD) system. A user would be able to use the mobile device to start AD mode or monitor AD status, for example.
+
+#### Diagrams of the Major Component Installations
+
+The following two diagrams indicate the locations of where the three major components (GPS Antenna, IPC, GPS Receiver and LiDAR) should be installed on the vehicle:
+
+![major_component_side_view](https://github.com/ApolloAuto/apollo/blob/master/docs/demo_guide/images/Hardware_overview.png)
+
+![major_component_rear_view](images/Car_Rearview.png)
+
+## Additional Tasks Required
+
+Use the components that you were required to provide to perform the following tasks:
+
+1. Connect a monitor using the DVI or the HDMI cables and connect the keyboard and mouse to perform debugging tasks at the car onsite.
+
+2. Establish a Wi-Fi connection on the Apple iPad Pro to access the HMI and control the Apollo ADS that is running on the IPC.
+
+## Next Steps
+
+After you complete the hardware installation in the vehicle, see the [Apollo Quick Start](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_3_0_quick_start.md) for the steps to complete the software installation.
+
diff --git a/docs/quickstart/apollo_3_0_quick_start.md b/docs/quickstart/apollo_3_0_quick_start.md
new file mode 100644
index 00000000000..2a9d29322f9
--- /dev/null
+++ b/docs/quickstart/apollo_3_0_quick_start.md
@@ -0,0 +1,87 @@
+# Apollo 3.0 Quick Start Guide
+
+The following guide serves as a user manual for launching the Apollo 3.0
+software and hardware stack on vehicle.
+
+The Apollo 3.0 Quick Start Guide focuses on Apollo 3.0's new features. For general
+Apollo concepts, please refer to
+[Apollo 1.0 Quick Start](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_1_0_quick_start.md).
+
+## Contents
+
+- [Calibration Guide](#calibration-guide)
+- [Hardware and Software Installation](#hardware-and-software-installation)
+- [Dreamview Usage Table](#dreamview-usage-table)
+- [Onboard Test](#onboard-test)
+
+## Calibration Guide
+
+For the vehicle's onboard testing make sure you have calibrated all the sensors. For
+sensor calibration, please refer to
+[Apollo 2.0 Sensor Calibration Guide](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide.md)
+before you proceed.
+
+## Hardware and Software Installation
+
+Please refer to
+[Apollo 3.0 Hardware and System Installation Guide](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_3_0_hardware_system_installation_guide.md)
+for the steps to install the hardware components and the system software, as well as
+[Apollo Software Installation Guide](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_software_installation_guide.md).
+
+## Dreamview Usage Table
+
+For questions regarding Dreamview icons refer to the
+[Dreamview Usage Table](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/dreamview_usage_table.md).
+
+## Onboard Test
+
+1. Plug-in an external hard-drive to any available USB port in the host machine.
+
+2. Turn on the vehicle, and then the host machine.
+
+3. Launch Docker Release Container.
+
+4. Launch DreamView.
+
+ Note\: Use your favorite browser to access Dreamview web service in your host
+ machine browser with URL http://localhost:8888.
+
+ ![](images/dreamview_2_5.png)
+
+5. Select Mode, Vehicle and Map.
+
+ ![](images/dreamview_2_5_setup_profile.png)
+
+ Note\: You'll be required to setup profile before doing anything else. Click
+ the dropdown menu to select **Navigation** mode, the HDMap and vehicle you
+ want to use. The lists are defined in
+ [HMI config file](https://raw.githubusercontent.com/ApolloAuto/apollo/master/modules/dreamview/conf/hmi.conf).
+
+ Note\: It's also possible to change the profile on the right panel of the
+ HMI, but just remember to click `Reset All` on the top-right corner to
+ restart the system.
+
+6. Start the Modules.
+
+ Click the `Setup` button.
+
+ ![](images/dreamview_2_5_setup.png)
+
+ Go to **Module Controller** tab, check if all modules and hardware are ready.
+ (Note\: In your offline environment, the hardware modules such as GPS,
+ CANBus, Velodyne, Camera and Radar cannot be brought up.)
+ (Note\: You may need to drive around a bit to get a good GPS signal.)
+
+ ![](images/dreamview_2_5_module_controller.png)
+
+7. Under `Default Routing` select your desired route.
+
+8. Under Tasks click `Start Auto`. (Note: Be cautious when starting the autonomous
+ driving, you should now be in autonomous mode.)
+
+ ![](images/dreamview_2_5_start_auto.png)
+
+9. After the autonomous testing is complete, under Tasks click `Reset All`, close all
+ windows and shutdown the machine.
+
+10. Remove the hard drive.
diff --git a/docs/quickstart/apollo_software_installation_guide.md b/docs/quickstart/apollo_software_installation_guide.md
index 6dc46fa7076..f674b95d03f 100644
--- a/docs/quickstart/apollo_software_installation_guide.md
+++ b/docs/quickstart/apollo_software_installation_guide.md
@@ -1,4 +1,4 @@
-# Overview of Apollo
+# Software Overview of Apollo
Apollo has been initiated to provide an open, comprehensive, and reliable software platform for its partners in the automotive and autonomous-driving industries. Partners can use the Apollo software platform and the reference hardware that Apollo has certified as a template to customize in the development of their own autonomous vehicles.
@@ -6,11 +6,12 @@ Apollo has been initiated to provide an open, comprehensive, and reliable softwa
This section includes:
-- Download the Apollo Release Package
-- Set up Docker Support
-- Customize Your Release Container
+- [Download the Apollo Release Package](#download-apollo-source)
+- [Set up the Docker environment](#Set-up-the-Docker-environment)
+- [Support a new Vehicle in DreamView](#Support-a-new-Vehicle-in-DreamView)
+- [Run Apollo in Ubuntu 16](#Run-Apollo-in-Ubuntu-16)
-Before getting started, please make sure you have installed the Ubuntu Linux 14.04.3 and the Apollo Kernel following the steps in the [Apollo 1.0 Hardware and System Installation Guide](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_1_0_hardware_system_installation_guide.md#installing-the-software-for-the-ipc).
+Before getting started, please make sure you have installed Ubuntu Linux 14.04.3 and the Apollo Kernel following the steps in the [Apollo core Software Installation Guide](https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_1_0_hardware_system_installation_guide.md#installing-the-software-for-the-ipc).
## Download Apollo Source
@@ -33,7 +34,7 @@ Before getting started, please make sure you have installed the Ubuntu Linux 14.
![tip](images/tip_icon.png) In the following sections, it is assumed that the Apollo directory is located in `$APOLLO_HOME`.
-## Set Up Docker Support
+## Set Up the Docker Environment
The Docker container is the simplest way to set up the build environment for Apollo.
@@ -53,73 +54,19 @@ Don't forget the
DOCKER_OPTS = "-s overlay"
```
-## Use Your Release Container
+We encourage you to continue the Build process using [Build the Dev docker environment](https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_build_and_release.md#build_release) if you have not already set it up.
-1. Download and start the Apollo Release docker image by running the following commands:
+## Support a new Vehicle in DreamView
- ```
- cd $APOLLO_HOME
- bash docker/scripts/release_start.sh
- ```
-
-2. (Optional) If you want to customize your release container, login into the Apollo Release docker image by running the following commands:
-
- ```
- bash docker/scripts/release_into.sh
- ```
-
-3. (Skip this if you only want to do the offline simulation in release docker container) Set up the zone number for the Global Navigation Satellite System (GNSS) Driver by modifying the following line in file `./modules/drivers/gnss/conf/gnss_conf.pb.txt`.
-
- ```
- proj4_text: "+proj=utm +zone=10 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
- ```
-
- You only have to modify the value `+zone=10` in the above line. Please refer to the [Apollo's Coordinate System](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/coordination.pdf) to find your local zone number. For example, if you are in Beijing, China, you have to set `+zone=50`.
+In order to support a new vehicle in DreamView, please follow the steps below:
-4. (Skip this if you only want to do the offline simulation in release docker container) Set up the Real Time Kinematic (RTK) Base Station for the GNSS Driver by modifying the file: `./modules/drivers/gnss/conf/gnss_conf.pb.txt`
+1. Create a new folder for your vehicle under `modules/calibration/data`
- Refer to the following example for a typical RTK setup:
-
- ```
- rtk_from {
- format: RTCM_V3
- ntrip {
- address:
- port:
- mount_point:
- user:
- password:
- timeout_s:
- }
- }
- rtk_to {
- format: RTCM_V3
- serial {
- device:
- baud_rate:
- }
- }
- ```
-
- The `rtk_from` is used for RTK base station information. The `rtk_to` is used to send the RTK differential data to the receiver.
-
-5. (Skip this if you only want to do the offline simulation in release docker container) Add ESD CAN Support
-
- Please refer to [ESD CAN README](https://github.com/ApolloAuto/apollo/blob/master/third_party/can_card_library/esd_can/README.md) to install the ESD CAN library.
-
-6. (Skip this if you have NOT customized your release docker container) Follow these steps to persist your local changes:
-
- ```
- # EXIT DOCKER ENV
- # commit your docker local changes to local docker image.
- exit # exit from docker environment
- cd $APOLLO_HOME
- bash docker/scripts/release_commit.sh
- ```
+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.
-7. Start your favorite browser (i.e. Chrome) and with URL: http://localhost:8888
+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.
-## Run Apollo 2.5 in Ubuntu 16
+## Run Apollo in Ubuntu 16
Please refer to
-[How to run Apollo 2.5 with Ubuntu 16](https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_apollo_2.5_with_ubuntu16.md)
+[How to run Apollo with Ubuntu 16](https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_apollo_2.5_with_ubuntu16.md)
diff --git a/docs/specs/Apollo_3.0_Software_Architecture.md b/docs/specs/Apollo_3.0_Software_Architecture.md
new file mode 100644
index 00000000000..32c13676050
--- /dev/null
+++ b/docs/specs/Apollo_3.0_Software_Architecture.md
@@ -0,0 +1,127 @@
+# Apollo 3.0 Software Architecture
+
+Core software modules running on the Apollo 3.0 powered autonomous vehicle include:
+
+- **Perception** — The perception module identifies the world surrounding the autonomous vehicle. There are two important submodules inside perception: obstacle detection and traffic light detection.
+- **Prediction** — The prediction module anticipates the future motion trajectories of the perceived obstacles.
+- **Routing** — The routing module tells the autonomous vehicle how to reach its destination via a series of lanes or roads.
+- **Planning** — The planning module plans the spatio-temporal trajectory for the autonomous vehicle to take.
+- **Control** — The control module executes the planned spatio-temporal trajectory by generating control commands such as throttle, brake, and steering.
+- **CanBus** — The CanBus is the interface that passes control commands to the vehicle hardware. It also passes chassis information to the software system.
+- **HD-Map** — This module is similar to a library. Instead of publishing and subscribing messages, it frequently functions as query engine support to provide ad-hoc structured information regarding the roads.
+- **Localization** — The localization module leverages various information sources such as GPS, LiDAR and IMU to estimate where the autonomous vehicle is located.
+- **HMI** - Human Machine Interface or DreamView in Apollo is a module for viewing the status of the vehicle, testing other modules and controlling the functioning of the vehicle in real-time.
+- **Monitor** - The surveillance system of all the modules in the vehicle including hardware.
+- **Guardian** - A new safety module that performs the function of an Action Center and intervenes should Monitor detect a failure.
+
+
+```
+Note: Detailed information on each of these modules is included below.
+```
+
+The interactions of these modules are illustrated in the picture below.
+
+![img](images/Apollo_3.0_SW.png)
+
+Every module is running as a separate CarOS-based ROS node. Each module node publishes and subscribes certain topics. The subscribed topics serve as data input while the published topics serve as data output. The detailed interactions are described in the following sections.
+
+## Perception
+
+Perception depends on the raw sensor data such as LiDAR point cloud data and camera data. In addition to these raw sensor data inputs, traffic light detection also depends on the localization data as well as the HD-Map. Because real-time ad-hoc traffic light detection is computationally infeasible, traffic light detection needs localization to determine when and where to start detecting traffic lights through the camera captured pictures.
+Changes to Apollo 3.0:
+ - CIPV detection/ Tailgating – moving within a single lane
+ - Whole lane line support - bold line support for long range accuracy. There are 2 different types on installations for Camera, low and high installation.
+ - Asynchronous sensor fusion – get all the information and get data points by asynchronously fusing LiDAR, Radar and Camera data. This is specifically important because of the frame rate differences in the different sensors – Radar is 10ms, Camera is 33s and LiDAR is 100ms
+ - Online pose estimation – determines angle change and estimates it when there are bumps or slopes to ensure that the sensors move with the car and the angle/pose changes accordingly
+ - Visual localization – we now use camera for localization. This functionality is currently being tested.
+ - Ultrasonic Sensor – Currently being tested as the final gatekeeper to be used in conjunction with Guardian for Automated Emergency brake and vertical/perpendicular parking.
+
+## Prediction
+
+The prediction module estimates the future motion trajectories for all the perceived obstacles. The output prediction message wraps the perception information. Prediction subscribes to both localization and perception obstacle messages as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/prediction.png)
+
+When a localization update is received, the prediction module updates its internal status. The actual prediction is triggered when perception sends out its published perception obstacle message.
+
+## Localization
+
+The routing module aggregates various data to locate the autonomous vehicle. There are two types of localization modes: OnTimer and Multiple SensorFusion.
+
+The first localization method is RTK-based, with a timer-based callback function `OnTimer`, as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/localization.png)
+
+The other localization method is the Multiple Sensor Fusion (MSF) method, where a bunch of event-triggered callback functions are registered, as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/localization_2.png)
+
+## Routing
+
+The routing module needs to know the routing start point and routing end point, to compute the passage lanes and roads. Usually the routing start point is the autonomous vehicle location. The important data interface is an event triggered function called `OnRoutingRequest`, in which `RoutingResponse` is computed and published as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/routing.png)
+
+## Planning
+
+Apollo 2.0 uses several information sources to plan a safe and collision free trajectory, so the planning module interacts with almost every other module.
+
+Initially, the planning module takes the prediction output. Because the prediction output wraps the original perceived obstacle, the planning module subscribes to the traffic light detection output rather than the perception obstacles output.
+
+Then, the planning module takes the routing output. Under certain scenarios, the planning module might also trigger a new routing computation by sending a routing request if the current route cannot be faithfully followed.
+
+Finally, the planning module needs to know the location (Localization: where I am) as well as the current autonomous vehicle information (Chassis: what is my status). The planning module is also triggered by a fixed frequency, and the main data interface is the `OnTimer` callback function that invokes the `RunOnce` function.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/planning_1.png)
+
+The data dependencies such as chassis, localization, traffic light, and prediction are managed through the `AdapterManager` class. The core software modules are similarly managed. For example, localization is managed through `AdapterManager::GetLocalization()` as shown below.![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/planning_2.png)
+
+## Control
+
+As described in the planning module, control takes the planned trajectory as input, and generates the control command to pass to CanBus. It has three main data interfaces: OnPad, OnMonitor, and OnTimer.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/control_1.png)
+
+The `OnPad` and `OnMonitor` are routine interactions with the PAD-based human interface and simulations. The main data interface is the `OnTimer` interface, which periodically produces the actual control commands as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/control_2.png)
+
+## CanBus
+
+The CanBus has two data interfaces as shown below.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/canbus_1.png)
+
+The first data interface is a timer-based publisher with the callback function `OnTimer`. This data interface periodically publishes the chassis information as well as chassis details, if enabled.
+
+![img](https://github.com/ApolloAuto/apollo/blob/master/docs/specs/images/canbus_2.png)
+
+The second data interface is an event-based publisher with a callback function `OnControlCommand`, which is triggered when the CanBus module receives control commands.
+
+## HMI
+
+ Human Machine Interface or DreamView in Apollo is a web application that:
+ - visualizes the current output of relevant autonomous driving modules, e.g. planning trajectory, car localization, chassis status, etc.
+ - provides human-machine interface for user to view hardware status, turn on/off of modules, and start the autonomous driving car.
+ - provides debugging tools, such as PnC Monitor to efficiently track module issues.
+
+## Monitor
+
+The surveillance system of all the modules in the vehicle including hardware. Monitor receives Data from different modules and passes them on to HMI for the driver to view and ensure that all the modules are working without any issue. In the event of a module or hardware failure, monitor sends an alert to Guardian (new Action Center Module) which then decides on which action needs to be taken to prevent a crash.
+
+## Guardian
+
+This new module is basically an action center that takes a decision based on the data that is sent by Monitor. There are 2 main functions of Guardian:
+ - All modules working fine - Guardian allows the flow of control to work normally. Control signals are sent to CANBus as if Guardian were not present.
+ - Module crash is detected by Monitor - if there is a failure detected by Monitor, Guardian will prevent Control signals from reaching CANBus and bring the car to a stop. There are 3 ways in which Guardian decides how to stop the car, and to do so, Guardian turns to the final Gatekeeper, Ultrasonic sensors,
+ - If the Ultrasonic sensor is running fine without detecting an obstacle, Guardian will bring the car to a slow stop
+ - If the sensor is not responding, Guardian applies a hard brake to bring the car to an immediate stop.
+ - This is a special case, If the HMI informs the driver of an impending crash and the driver does not intervene for 10 seconds, Guardian applies a hard brake to bring the car to an immediate stop.
+
+```
+Note:
+1. In either case above, Guardian will always stop the car should Monitor detect a failure in any module or hardware.
+2. Monitor and Guardian are decoupled to ensure that there is not a single point of failure and also that with a module approach, the action center can be modified to include additional actions without affecting the functioning of the surveillance system as Monitor also communicates with HMI.
+
+```
+
diff --git a/docs/specs/Apollo_Sensor_Unit/.DS_Store b/docs/specs/Apollo_Sensor_Unit/.DS_Store
new file mode 100644
index 00000000000..5c3c6c2f972
Binary files /dev/null and b/docs/specs/Apollo_Sensor_Unit/.DS_Store differ
diff --git a/docs/specs/Apollo_Sensor_Unit/Apollo_Sensor_Unit_Installation_Guide.md b/docs/specs/Apollo_Sensor_Unit/Apollo_Sensor_Unit_Installation_Guide.md
new file mode 100644
index 00000000000..1e966faf1b6
--- /dev/null
+++ b/docs/specs/Apollo_Sensor_Unit/Apollo_Sensor_Unit_Installation_Guide.md
@@ -0,0 +1,38 @@
+## Guide for Apollo Sensor Unit
+
+Apollo Sensor Unit (ASU) is designed to work with Industrial PC (IPC) to implement sensor fusion, vehicle control and network access in Apollo's autonomous driving platform.
+
+The ASU system provides sensor interfaces to collect data from various sensors, including cameras, Lidars, Radars, and Ultrasonic Sensors. The system also utilizes pulse per second (PPS) and GPRMC signals from GNSS receiver to implement data collection synchronization for the camera and LiDAR sensors.
+
+The communication between the ASU and the IPC is through PCI Express Interface. ASU collects sensor data and passes to IPC via PCI Express Interface, and the IPC uses the ASU to send out Vehicle Control commands in the Controller Area Network (CAN) protocol.
+
+In addition, the ASU system integrates Wi-Fi module and LTE module for LAN and WAN access.
+
+![ASU_pic](images/ASU_pic.jpg)
+
+### System Connectors
+
+#### Front Panel Connectors
+
+1. External GPS PPS / GPRMC Input Port
+2. FAKRA Camera Data Input Port (5 ports)
+3. 10/100/1000M Base-T Ethernet Port (2 Ports)
+4. KL-15 (AKA Car Ignite) Signal Input Port
+
+#### Rear Panel Connectors
+
+1. Micro USB to UART port (reserved for debug)
+2. Micro USB to UART port (ASU configuration port)
+3. Micro SIM card holder for built-in LTE module
+4. General purpose UART port(reserved)
+5. USB 3.0 type A port (2 Ports)
+6. External PCI Express Port (Support X4 or X8)
+7. GPS PPS / GPRMC Output Port ( 3 Ports)
+8. Micro USB 2.0 OTG
+9. Power and PPS/GPRMC Output Port for Stereo Camera
+10. CAN Bus (4 Ports)
+11. Main Power Input Connector
+
+### Purchase Channels
+
+The Apollo Sensor Unit is currently only provided to our Partners and certain developers.
\ No newline at end of file
diff --git a/docs/specs/Apollo_Sensor_Unit/images/.gitattributes b/docs/specs/Apollo_Sensor_Unit/images/.gitattributes
new file mode 100644
index 00000000000..8b39f5365f3
--- /dev/null
+++ b/docs/specs/Apollo_Sensor_Unit/images/.gitattributes
@@ -0,0 +1 @@
+*.jpg filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/Apollo_Sensor_Unit/images/ASU_pic.jpg b/docs/specs/Apollo_Sensor_Unit/images/ASU_pic.jpg
new file mode 100644
index 00000000000..2b5606eb1eb
Binary files /dev/null and b/docs/specs/Apollo_Sensor_Unit/images/ASU_pic.jpg differ
diff --git a/docs/specs/Camera/.DS_Store b/docs/specs/Camera/.DS_Store
new file mode 100644
index 00000000000..5b6a191436a
Binary files /dev/null and b/docs/specs/Camera/.DS_Store differ
diff --git a/docs/specs/Camera/Leopard_Camera_LI-USB30-AZ023WDR__Installation_Guide.md b/docs/specs/Camera/Leopard_Camera_LI-USB30-AZ023WDR__Installation_Guide.md
new file mode 100644
index 00000000000..d8757e28aad
--- /dev/null
+++ b/docs/specs/Camera/Leopard_Camera_LI-USB30-AZ023WDR__Installation_Guide.md
@@ -0,0 +1,17 @@
+## Guide for LI-USB30-AZ023WDRB
+
+The cameras used are LI-USB30-AR023ZWDR with standard USB 3.0 case manufactured by Leopard Imaging Inc. This line of product is based on AZ023Z 1080P sensor and AP0202 ISP from ON Semiconductor. It supports external trigger and software trigger.
+
+We recommend using two cameras with 6 mm lens and one with 25 mm lens to achieve the required performance for traffic light detection application.
+
+![camera_image](images/LI-USB30-AZ023ZWDRB.png)
+
+This camera can be connected to the IPC through USB 3.0 cable for power and data communication. External trigger signal can be sent into the camera via the HR25-7TP-8P(72) connector. A firmware change would also be needed to enable external trigger. For more detail on external triggers, please contact Leopard Imaging Inc. for more instructions.
+
+### Reference
+
+You can find additional information regarding the Leopard Imaging Inc. cameras on their [website](https://leopardimaging.com/product/li-usb30-ar023zwdrb/)
+
+* [Data Sheet](https://www.leopardimaging.com/LI-USB30-AR023ZWDRB_datasheet.pdf)
+* [Trigger Cable](https://leopardimaging.com/product/li-usb3-trig_cable/)
+
diff --git a/docs/specs/Camera/README.md b/docs/specs/Camera/README.md
new file mode 100644
index 00000000000..fb48bda683e
--- /dev/null
+++ b/docs/specs/Camera/README.md
@@ -0,0 +1,7 @@
+#Apollo Cameras
+
+You could integrate 3 types of Camera's with Apollo. Refer to their individual Installation guides for more information.
+
+1. [Leopard Imaging Inc's Camera - LI-USB30-AZ023WDRB](Leopard_Camera_LI-USB30-AZ023WDR__Installation_Guide.md)
+2. [Truly Camera](Truly_Argus_Camera_Installation_Guide.md)
+3. [Wissen Camera](Wissen_Camera_Installation_Guide.md)
\ No newline at end of file
diff --git a/docs/specs/Camera/Truly_Argus_Camera_Installation_Guide.md b/docs/specs/Camera/Truly_Argus_Camera_Installation_Guide.md
new file mode 100644
index 00000000000..72f1d8aafc4
--- /dev/null
+++ b/docs/specs/Camera/Truly_Argus_Camera_Installation_Guide.md
@@ -0,0 +1,9 @@
+## Guide for Argus Camera
+
+Argus camera is a joint development venture product of Truly Seminconductors Itd. and Baidu. The Argus camera features high dynamic range (HDR 120dB), internal/external trigger and OTA firmware update. It is well supported by the Apollo Sensor Unit. This line of product is based on AR230 1080P sensor and AP0202 ISP from ON Semiconductor.
+
+We recommend using ```three cameras```, two with **6 mm** lens and one with **25 mm** lens to achieve the required performance for the traffic light detection application.
+
+![camera_image](images/Argus_pic.png)
+
+This camera can be connected to the Apollo Sensor Unit via the FAKRA connector for data transfer, trigger and OTA firmware update.
\ No newline at end of file
diff --git a/docs/specs/Camera/Wissen_Camera_Installation_Guide.md b/docs/specs/Camera/Wissen_Camera_Installation_Guide.md
new file mode 100644
index 00000000000..86466d6007b
--- /dev/null
+++ b/docs/specs/Camera/Wissen_Camera_Installation_Guide.md
@@ -0,0 +1,10 @@
+## Guide for Wissen Camera
+
+Wissen's camera is a joint development venture product of Wissen Technologies and Baidu. This line of camera features high dynamic range (HDR 120dB), internal/external trigger and OTA firmware update. It is well supported by the Apollo Sensor Unit. This line of product is based on AR230 sensor (1080P) and AP0202 ISP from ON Semiconductor.
+
+We recommend using ```three cameras```, two with **6 mm** lens and one with **25 mm** lens to achieve the required performance for the traffic light detection application.
+
+![images](images/Wissen_pic.png)
+
+This camera can be connected to the Apollo Sensor Unit via the FAKRA connector for data transfer, trigger and OTA firmware update.
+
diff --git a/docs/specs/Camera/images/ Wissen_pic.png b/docs/specs/Camera/images/ Wissen_pic.png
new file mode 100644
index 00000000000..57dcdcf8dcf
Binary files /dev/null and b/docs/specs/Camera/images/ Wissen_pic.png differ
diff --git a/docs/specs/Camera/images/.gitattributes b/docs/specs/Camera/images/.gitattributes
new file mode 100644
index 00000000000..c091529f367
--- /dev/null
+++ b/docs/specs/Camera/images/.gitattributes
@@ -0,0 +1 @@
+*.png filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/Camera/images/Argus_pic.png b/docs/specs/Camera/images/Argus_pic.png
new file mode 100644
index 00000000000..0f8714ae851
Binary files /dev/null and b/docs/specs/Camera/images/Argus_pic.png differ
diff --git a/docs/specs/Camera/images/LI-USB30-AZ023ZWDRB.png b/docs/specs/Camera/images/LI-USB30-AZ023ZWDRB.png
new file mode 100644
index 00000000000..1561b92d140
Binary files /dev/null and b/docs/specs/Camera/images/LI-USB30-AZ023ZWDRB.png differ
diff --git a/docs/specs/IPC/.DS_Store b/docs/specs/IPC/.DS_Store
new file mode 100644
index 00000000000..1a38863042f
Binary files /dev/null and b/docs/specs/IPC/.DS_Store differ
diff --git a/docs/specs/IPC/Nuvo-6108GC_Installation_Guide.md b/docs/specs/IPC/Nuvo-6108GC_Installation_Guide.md
new file mode 100644
index 00000000000..cf39d1ce7fc
--- /dev/null
+++ b/docs/specs/IPC/Nuvo-6108GC_Installation_Guide.md
@@ -0,0 +1,103 @@
+## Guide on Nuvo-6108GC Installation
+
+```
+Nuvo-6018GC is world's first industrial-grade GPU computer supporting high-end graphics cards. It's designed to fuel emerging GPU-accelerated applications, such as artificial intelligence, VR, autonomous driving and CUDA computing, by accommodating nVidia GPU with up to 250W TDP. Leveraging Intel® C236 chipset, Nuvo-6018GC supports Xeon® E3 V5 or 6th-Gen Core™ i7/i5 CPU with up to 32 GB ECC/ non-ECC DDR4 memory. It incorporates general computer I/Os such as Gigabit Ethernet, USB 3.0 and serial ports. In addition to the x16 PCIe port for GPU installation, Nuvo-6108GC further provides two x8 PCIe slots so you can have additional devices for information collection and communication.Nuvo-6108GC comes with sophisticated power design to handle heavy power consumption and power transient of a 250W GPU. Furthermore, to have reliable GPU performance for industrial environments, Nuvo-6018GC inherits Neousys' patented design, a tuned cold air intake to effectively dissipate the heat generated by GPU. This unique design guarantees operation at 60°C with 100% GPU loading and makes Nuvo-6018GC extremely reliable for demanding field usage.
+
+----NEOUSYS MARKETING TEAM
+```
+
+### IPC Configuration
+
+Configure the IPC as follows:
+
+- ASUS GTX1080 GPU-A8G-Gaming GPU Card
+
+- 32GB DDR4 RAM
+
+- PO-280W-OW 280W AC/DC power adapter
+
+- 2.5" SATA Hard Disk 1TB 7200rpm
+
+ ![IPC-6108GC-front-side](images/IPC-6108GC-front-side.jpg)
+
+### Preparing the IPC
+
+Follow these steps:
+
+1. Prepare and install the Controller Area Network (CAN) card:
+ In the Neousys Nuvo-6108GC, ASUS® GTX-1080GPU-A8G-GAMING GPU card is pre-installed into one of the three PCI slots. We still need to install a CAN card into a PCI slot.
+
+ a. Locate and unscrew the eight screws (shown in the brown squares or pointed by brown arrows) on the side of computer:
+
+ ![Positions_of_Screws](images/IPC-6108GC-Screw-Positions_labeled.png)
+
+ b. Remove the cover from the IPC.
+
+ ![removing the cover](images/Removing_the_cover.JPG)
+
+ You will find 3 PCI slots (one occupied by the graphic card) located on the base:
+
+ ![Before installing the CAN card](images/Before_installing_the_can_card.png)
+
+ c. [Optional] Set the CAN card termination jumper by removing the red jumper cap (shown in the diagram below) from its default location and placing it at its termination position:
+
+ ![prepare_can_card2](images/prepare_can_card2.png)
+
+ **![warning_icon](images/warning_icon.png)WARNING**: The CAN card will not work if the termination jumper is not set correctly.
+
+ d. [Optional] Insert the CAN card into the slot in the IPC:
+
+ ![installed CAN](images/After_installing_the_CAN_Card.png)
+
+ e. Reinstall the cover for the IPC
+
+ ![IPC-6108GC-Screw-Positions.png](images/IPC-6108GC-Screw-Positions.png)
+
+2. Power up the IPC:
+
+ a. Attach the power cable to the power connector (terminal block) that comes with the IPC:
+
+ ![warning_icon](images/warning_icon.png)**WARNING**: Make sure that the positive(labeled **R** for red) and the negative(labeled **B** for black) wires of the power cable are inserted into the correct holes on the power terminal block as seen in the image below.
+
+ ![ipc_power_RB](images/ipc_power_RB.png)
+
+ b. Connect the monitor, Ethernet cable, keyboard, and mouse to the IPC:
+
+ ![IPC-6108GC-CableConnected-overexposed.png](images/IPC-6108GC-CableConnected-overexposed.png)
+
+
+
+3. Start the computer:
+
+![warning](images/tip_icon.png)It is recommended to configure the fan speed through BIOS settings, if one or more plugin card is added to the system
+
+```
+- While starting up the computer, press F2 to enter BIOS setup menu.
+- Go to [Advanced] => [Smart Fan Setting]
+- Set [Fan Max. Trip Temp] to 50
+- Set [Fan Start Trip Temp] to 20
+```
+
+![tip_icon](images/tip_icon.png)It is recommended that you use a Digital Visual Interface (DVI) connector on the graphic card for the monitor. To set the display to the DVI port on the motherboard, following is the setting procedure:
+
+```
+- While starting up the computer, press F2 to enter BIOS setup menu.
+- Go to [Advanced]=>[System Agent (SA) Configuration]=>[Graphics Configuration]=>[Primary Display]=> Set to "PEG"
+```
+
+![tip_icon](images/tip_icon.png)It is recommended to configure the IPC to run at maximum performance mode at all time:
+
+```
+- While starting up the computer, press F2 to enter BIOS setup menu.
+- Go to [Power] => [SKU POWER CONFIG] => set to "MAX. TDP"
+```
+
+4. Connect the power:
+
+![IPC-6108GC-PowerCable.JPG](images/IPC-6108GC-PowerCable.JPG)
+
+
+
+### References
+
+1. Neousys Nuvo-6108GC [Product Page](http://www.neousys-tech.com/en/product/application/rugged-embedded/nuvo-6108gc-gpu-computing)
\ No newline at end of file
diff --git a/docs/specs/IPC/images/.gitattributes b/docs/specs/IPC/images/.gitattributes
new file mode 100644
index 00000000000..1c27cfc4d07
--- /dev/null
+++ b/docs/specs/IPC/images/.gitattributes
@@ -0,0 +1,2 @@
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/IPC/images/After_installing_the_CAN_Card.png b/docs/specs/IPC/images/After_installing_the_CAN_Card.png
new file mode 100644
index 00000000000..5de4e7744c3
Binary files /dev/null and b/docs/specs/IPC/images/After_installing_the_CAN_Card.png differ
diff --git a/docs/specs/IPC/images/Before_installing_the_can_card.png b/docs/specs/IPC/images/Before_installing_the_can_card.png
new file mode 100644
index 00000000000..8602c76918c
Binary files /dev/null and b/docs/specs/IPC/images/Before_installing_the_can_card.png differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-CableConnected-overexposed.png b/docs/specs/IPC/images/IPC-6108GC-CableConnected-overexposed.png
new file mode 100644
index 00000000000..1f3f80ea02b
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-CableConnected-overexposed.png differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-PowerCable.JPG b/docs/specs/IPC/images/IPC-6108GC-PowerCable.JPG
new file mode 100644
index 00000000000..b33483ee955
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-PowerCable.JPG differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-Screw-Positions.png b/docs/specs/IPC/images/IPC-6108GC-Screw-Positions.png
new file mode 100644
index 00000000000..b8be2184911
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-Screw-Positions.png differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-Screw-Positions_labeled.png b/docs/specs/IPC/images/IPC-6108GC-Screw-Positions_labeled.png
new file mode 100644
index 00000000000..c7f013b7265
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-Screw-Positions_labeled.png differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-front-side.jpg b/docs/specs/IPC/images/IPC-6108GC-front-side.jpg
new file mode 100644
index 00000000000..4e67052f87e
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-front-side.jpg differ
diff --git a/docs/specs/IPC/images/IPC-6108GC-left-side.jpg b/docs/specs/IPC/images/IPC-6108GC-left-side.jpg
new file mode 100644
index 00000000000..f864a1f55d7
Binary files /dev/null and b/docs/specs/IPC/images/IPC-6108GC-left-side.jpg differ
diff --git a/docs/specs/IPC/images/IPC_powerbutton.png b/docs/specs/IPC/images/IPC_powerbutton.png
new file mode 100644
index 00000000000..4a0511c79e3
Binary files /dev/null and b/docs/specs/IPC/images/IPC_powerbutton.png differ
diff --git a/docs/specs/IPC/images/Mount_ipc_on_carpet.JPG b/docs/specs/IPC/images/Mount_ipc_on_carpet.JPG
new file mode 100644
index 00000000000..d55a3ba76cb
Binary files /dev/null and b/docs/specs/IPC/images/Mount_ipc_on_carpet.JPG differ
diff --git a/docs/specs/IPC/images/Removing_the_cover.JPG b/docs/specs/IPC/images/Removing_the_cover.JPG
new file mode 100644
index 00000000000..efa01f1e13d
Binary files /dev/null and b/docs/specs/IPC/images/Removing_the_cover.JPG differ
diff --git a/docs/specs/IPC/images/ipc_power_RB.png b/docs/specs/IPC/images/ipc_power_RB.png
new file mode 100644
index 00000000000..3ff3be244c8
Binary files /dev/null and b/docs/specs/IPC/images/ipc_power_RB.png differ
diff --git a/docs/specs/IPC/images/prepare_can_card2.png b/docs/specs/IPC/images/prepare_can_card2.png
new file mode 100644
index 00000000000..e4c2c98016d
Binary files /dev/null and b/docs/specs/IPC/images/prepare_can_card2.png differ
diff --git a/docs/specs/IPC/images/tip_icon.png b/docs/specs/IPC/images/tip_icon.png
new file mode 100644
index 00000000000..73a28e6656b
Binary files /dev/null and b/docs/specs/IPC/images/tip_icon.png differ
diff --git a/docs/specs/IPC/images/warning_icon.png b/docs/specs/IPC/images/warning_icon.png
new file mode 100644
index 00000000000..de34160f90e
Binary files /dev/null and b/docs/specs/IPC/images/warning_icon.png differ
diff --git a/docs/specs/Lidar/.DS_Store b/docs/specs/Lidar/.DS_Store
new file mode 100644
index 00000000000..d48fe013329
Binary files /dev/null and b/docs/specs/Lidar/.DS_Store differ
diff --git a/docs/specs/Lidar/HDL64E_S3_Installation_Guide.md b/docs/specs/Lidar/HDL64E_S3_Installation_Guide.md
new file mode 100644
index 00000000000..de4e769b125
--- /dev/null
+++ b/docs/specs/Lidar/HDL64E_S3_Installation_Guide.md
@@ -0,0 +1,107 @@
+## Installation guide of Velodyne HDL64E-S3
+
+Apollo uses the 64 line LiDar system **HDL-64E S3** from Velodyne LiDAR, Inc.
+
+![](images/lidar_pic.png)
+
+### Key Features:
+
+- 64 Channels
+- 120m range
+- 2.2 Million Points per Second
+- 360° Horizontal FOV
+- 26.9° Vertical FOV
+- 0.08° angular resolution (azimuth)
+- <2cm accuracy
+- ~0.4° Vertical Resolution
+- User selectable frame rate
+- Rugged DesignLidar/Velodyne/HDL64E-S3/
+
+#### Mounting
+
+A customized mounting structure is required to successfully mount an HDL64E S3 LiDAR on top of a vehicle. This structure must provide rigid support to the LiDAR system while raising the LiDAR to a certain height above the ground under driving conditions. This mounted height should prevent the laser beams from the LiDAR being blocked by the front and/or rear of the vehicle. The actual height needed for the LiDAR depends on the design of the vehicle and the mounting point of the LiDAR is relative to the vehicle being used. The vertical tilt angle of the lasers normally ranges from **+2~-24.8 degrees relative to the horizon**.
+For a standard Lincoln MKZ, it is recommended that you mount the LiDAR at a minimum height of 1.8 meters (from ground to the base of the LiDAR), to use the angle range for detection effectively.
+
+```
+If for some reason, the LiDAR beam has to be blocked by the vehicle, it might be necessary to apply a filter to remove these points while processing the data received.
+```
+
+#### Wiring
+
+Each HDL-64E S3 LiDAR includes a cable bundle to connect the LiDAR to the power supply, the GPS timesync source and the computer (Ethernet for data transfer and a serial port for LiDAR configuration).
+
+![](images/HDL64_Cable_whitened_labeled.png)
+
+* **Connecting the LiDAR**
+
+ Connect the power and signal cable to the matching ports on the LiDAR
+
+ ![HDL64_Cabling](images/HDL64_Cabling.JPG)
+
+* **Connecting the Power Source**
+
+ Two AWG 16 wires are used to power the HDL-64E S3 LiDAR. It requires about 3A at 12V. To connect the power source, make full contact with the wires and tighten the screws.
+
+ ![HDL64_Power_Cable](images/HDL64_PowerCable.JPG)
+
+* **Connecting the IPC**
+
+ The connection to the IPC is through an ethernet cable. Plug the ethernet connector in the cable bundle, to an ethernet port on the IPC.
+
+* **Connecting the GPS**:
+
+ The HDL64E S3 LiDAR requires the recommended minimum specific GPS/Transit data (GPRMC) and pulse per second (PPS) signal to synchronize to the GPS time. A customized connection is needed to establish the communication between the GPS receiver and the LiDAR, as follows:
+
+ - **SPAN-IGM-A1**
+
+ If you configured the SPAN-IGM-A1 as specified in [Configuring the GPS and IMU](#configuring-the-gps-and-imu), the GPRMC signal is sent from the GPS receiver via the "User Port" cable from the "Main" port. The PPS signal is sent through the wire cables labeled as “PPS” and “PPS dgnd” from the AUX port. The dash-line boxes in the figure below show the available connections that come with the HDL64E S3 LiDAR and the SPAN-IGM-A1 GPS receiver. The remaining connections must be made by the user.
+
+ ![Wiring_Schematics_IGM_A1](images/LiDAR_A1_wiring.png)
+
+ - **Propak 6 and IMU-IGM-A1**
+
+ If you configured the Propak 6 as specified in [Configuring the GPS and IMU](#configuring-the-gps-and-imu), the GPRMC signal is sent from the GPS receiver via COM2 port. The PPS signal is sent through the IO port. The dash-line boxes in the figure below are available connections that comes with the HDL-64E S3 LiDAR and the Propak 6 GPS receiver. The remaining connections need to be made by the user.
+
+ ![Wiring_Schematics_PP6](images/LiDAR_PP6_wiring.png)
+
+* **Connection with a computer through serial port for LiDAR configuration**
+
+ You can configure some of the low-level parameters through the serial port. Within the cable bundle provided by Velodyne LiDAR, Inc., there are two pairs of red/black cables as shown in the pinout table below. The thicker pair (AWG 16) is used to power the LiDAR system. The thinner pair is used for serial connection. Connect the black wire (Serial In) to RX, the red wire to the Ground wire of a serial cable. Connect the serial cable with a USB-serial adapter to your selected computer.
+
+ ![pinout_table](images/pinout_table.png)
+
+#### Configuration
+
+By default, the HDL-64E S3 has the network IP address of 192.168.0.1. However, when you are setting up Apollo, change the network IP address to **192.168.20.13**. You can use the terminal application with Termite3.2 for this purpose. The IP address of the HDL-64E S3 can be configured using the following steps:
+
+* Connect one side of the serial cable to your laptop
+* Connect the other side of the serial cable to HDL-64E S3’s serial wires
+* Use the following default COM port settings:
+
+ - Baudrate: 9600
+
+ - Parity: None
+
+ - Data bits: 8
+
+ - Stop bits: 1
+
+* Use the COM port application: Download Termite3.2 from the link below and install it on your laptop (Windows) - [Installation link](http://www.compuphase.com/software_termite.htm)
+
+* Use the serial cable connection for the COM port between the HDL-64E S3 and the laptop:
+
+![Serial cable connected to laptop.png](images/Serial_cable_connected_to_laptop.png)
+
+* Launch **Termite 3.2** from your laptop
+
+* Issue a serial command for setting up the HDL-64E S3’s IP addresses over serial port "\#HDLIPA192168020013192168020255"
+
+* The unit must be power cycled to adopt the new IP addresses
+
+![Issuing the serial command](images/Issuing_the_serial_command.png)
+
+#### References
+
+For additional information on Velodyne HDL-64E S3, please refer to their
+[website here](http://velodynelidar.com/hdl-64e.html).
+
diff --git a/docs/specs/Lidar/Hesai_Pandora_Installation_Guide.md b/docs/specs/Lidar/Hesai_Pandora_Installation_Guide.md
new file mode 100644
index 00000000000..b30dc3f05a4
--- /dev/null
+++ b/docs/specs/Lidar/Hesai_Pandora_Installation_Guide.md
@@ -0,0 +1,58 @@
+## Installation guide of Pandora
+
+Pandora is an all-in-one sensor kit for environmental sensing for self-driving cars. It integrates cameras, LiDAR and data processing ability into the same module, with synchronization and calibration solutions.
+
+![lidar_image](images/hesai_pandora.png)
+
+#### Mounting
+
+A customized mounting structure is required to successfully mount a Pandora kit on top of a vehicle. This structure must provide rigid support to the LiDAR system while raising the LiDAR to a certain height above the ground under driving conditions. This height should prevent the laser beams from the LiDAR being blocked by the front and/or rear of the vehicle. The actual height needed for the LiDAR depends on the design of the vehicle and the mounting point of the LiDAR relative to the vehicle. While planning the mounting height and angle, please read through the manual for additional details.
+
+```
+If for some reason, the LiDAR beam has to be blocked by the vehicle, it might be necessary to apply a filter to remove these points while processing the data received.
+```
+
+#### Wiring
+
+Each Pandora includes a cable connection box and a corresponding cable bundle to connect to the power supply, the computer (ethernet) and the GPS timesync source.
+
+![LiDAR_Cable](images/pandora_cable.png)
+
+* **Connection to the Power Source**
+
+ Please connect the power cable to a proper power source. Typically, a **9~32VDC**, **40W** power supply should be sufficient to power the LiDAR
+
+2. **Connection to the IPC**
+
+ Connect the interface box to the IPC using the ethernet cable provided in the cable bundle.
+
+3. **Connection to the GPS**
+
+ The Pandora kit requires the recommended minimum specific GPS/Transit data (GPRMC) and pulse per second (PPS) signal to synchronize to GPS time. A customized connection is needed to establish the communication between the GPS receiver and the LiDAR. Please read your GPS manual for information on how to collect the output of those signals.
+
+ On the interface box, a GPS port (SM06B-SRSS-TB) is provided to send the GPS signals as an input to the LiDAR. The detailed pinout is shown in the image below.
+
+![Pinout_table](images/Pandora_pinout_table.png)
+
+ | Pin # | Input/output | Comment |
+ | ----- | ------------ | ----------------------------------------------- |
+ | 1 | Input | PPS signal (3.3V) |
+ | 2 | Output | 5V power supply to power the GPS Unit if needed |
+ | 3 | Output | GND for external GPS unit |
+ | 4 | Input | RX serial port for GPRMC signal (RS232) |
+ | 5 | Output | GND for external GPS unit |
+ | 6 | Output | TX serial port for external GPS unit |
+
+#### Configuration
+
+The detailed configuration steps can be found in the manual provided on Hesai Technologies official website.
+
+* [Chinese version](https://hsdown.blob.core.chinacloudapi.cn/upload/Pandar40%2040%E7%BA%BF%E6%9C%BA%E6%A2%B0%E5%BC%8F%E6%BF%80%E5%85%89%E9%9B%B7%E8%BE%BE%20%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6.pdf)
+
+* [English version ](https://drive.google.com/file/d/1THtxhlrzmyVpV_IZufRsYUBudmHTd8Ge/view)
+
+#### References
+
+* A Detailed Specification sheet on Pandora can be found at the following [website link](http://www.hesaitech.com/en/pandora.html)
+
+* Additional information about Pandora - Hesai can be found [here](https://drive.google.com/file/d/1THtxhlrzmyVpV_IZufRsYUBudmHTd8Ge/view)
diff --git a/docs/specs/Lidar/Innovusion_Note.md b/docs/specs/Lidar/Innovusion_Note.md
new file mode 100644
index 00000000000..c40c7912189
--- /dev/null
+++ b/docs/specs/Lidar/Innovusion_Note.md
@@ -0,0 +1,4 @@
+## Installation guide of Innovusion
+
+Please note,
+Innovusion's lidar product currently has to be installed by a trained engineer. For more information, please contact Yimin Li via his email Yimin.li@innovusion.com.
\ No newline at end of file
diff --git a/docs/specs/Lidar/README.md b/docs/specs/Lidar/README.md
new file mode 100644
index 00000000000..d26825bd334
--- /dev/null
+++ b/docs/specs/Lidar/README.md
@@ -0,0 +1,9 @@
+#Apollo LiDAR
+
+You could integrate 3 types of LiDAR's with Apollo. Refer to their individual Installation guides for more information.
+
+1. **Velodyne** - Apollo 3.0 provides support to 2 types of Velodyne LiDARs
+ - [HDL64E-S3](HDL64E_S3_Installation_Guide.md)
+ - [VLP Series](VLP_Series_Installation_Guide.md)
+2. [Hesai](Hesai_Pandora_Installation_Guide.md)
+3. [Innovusion](Innovusion_Note.md)
\ No newline at end of file
diff --git a/docs/specs/Lidar/VLP_Series_Installation_Guide.md b/docs/specs/Lidar/VLP_Series_Installation_Guide.md
new file mode 100644
index 00000000000..f79c914d32b
--- /dev/null
+++ b/docs/specs/Lidar/VLP_Series_Installation_Guide.md
@@ -0,0 +1,66 @@
+## Installation guide of the Puck Series LiDAR (and HDL32)
+![lidar_image](images/lidar_pic_vlp32c.png)
+
+![Interface_Box](images/lidar_interface_box.png)
+
+This guide covers the installation procedure of Puck(VLP16), Puck LITE, Puck High-Res, Ultra Puck(VLP-32c) and HDL32.
+You can connect to the LiDAR via an interface box which is included in the package.
+
+```
+Since the interface box was first introduced with the HDL32 product line, this installation guide also works for HDL32 Lidars.
+```
+#### Mounting
+
+A customized mounting structure(s) is required to successfully mount a Puck Series LiDAR on top of a vehicle. This structure must provide rigid support to the LiDAR system. If only one LiDAR is used in the system, the mount needs to raise the LiDAR to a certain height to avoid the laser beams being blocked by the vehicle's body. If multiple LiDAR's are to be installed, the mounting structure(s) needs to provide suitable LiDAR configurations including positioning and tilting of the LiDARs as required by your system. Please find the detailed tilt angle of each laser beam on the individual LiDAR's manual when deciding the mounting of the LiDARs. Or you could also consult with Apollo engineers for the configurations that we have used and tested successfully.
+
+#### Wiring
+
+* **Connection to the Power Source**
+
+ An AC/DC adapter with PJ-102A connector is provided to power the LiDAR. You can use it directly or make your own power cable to connect to your power source.
+
+* **Connection to the IPC**
+
+ Connect the interface box to the IPC using the ethernet cable provided in the cable bundle.
+
+* **Connectionto the GPS**
+
+ The LiDARs in the PUCK series require the recommended minimum specific GPS/Transit data (GPRMC) and Pulse Per Second (PPS) signal to synchronize to the GPS time. A customized connection is needed to establish the communication between the GPS receiver and the LiDAR. Please read your GPS manual for information on how to output those signals.
+
+ On the interface box, a GPS port (SM06B-SRSS-TB) is provided to send the GPS signals as an input to the LiDAR. The detailed pinout is shown in the image below. The GPRMC signal should be sent to **GPS_RXD_CNT** (pin4), while the PPS pulse train should be sent to **GPS_PULSE_CNT**. The ground of both signals should be shorted and sent to one of the **GND** pins.
+
+![gps_pinout](images/lidar_gps_pinout.png)
+
+#### Configuration
+By default, the LiDAR has the network IP address of 192.168.0.201. However, when you setting up Apollo, you might need to change the IP address to **192.168.20.14**.
+
+* Power the LiDAR and connect it to your laptop via an ethernet cable.
+* Configure your laptop's IP address to be on the same network as the LiDAR
+* Open a web browser and connect to the LiDAR's IP address. A webpage should show up in the browser.
+* Configure the IP address, Host, Gateway, port numbers on this webpage. Click on set for each change.
+* After the changes, click **save config**. Then, power cycle the LiDAR.
+* [Optional] Configure your laptop again to connect to the LiDAR (if IP changed) to confirm that the changes have taken effect.
+
+#### [Optional] Installation of VLP-16 for Mapping
+
+In Apollo 2.5, map creation service has been made available. To acquire the data necessary for map creation, you would need to install an additional VLP-16 LiDAR on the vehicle. The purpose of this LiDAR is to collect point cloud information for objects above the FOV of the HDL-64 S3 LiDAR, such as traffic lights and signs. It requires a customized rack to mount the VLP-16 LiDAR on top of the vehicle. The figure below shows one of the possible configurations.
+
+![VLP_16_installation](images/VLP16_install_configuration.jpg)
+
+In this specific configuration, the VLP-16 LiDAR is mounted with an upward tilt of 20±2°. The power cable of the VLP-16 is connected to the DataSpeed power panel. The ethernet connection is connected to the IPC (possibly through an ethernet switch). Similar to HDL-64E S3 LiDAR, the VLP-16's GPRMC and PPS receive input from the same GPS receiver. Ideally, additional hardware should be installed to duplicate the GPRMC and PPS signals from the GPS receiver and sent to HDL-64 and VLP-16 respectively. However, a simple Y-split cable may also provide adequate signal for both LiDARs. To help distinguish from the HDL-64 S3 LiDAR, please follow the VLP-16 manual and use the webpage interface to configure the IP of VLP-16 to **192.168.20.14**, its data port to **2369**, and its telemetry port to **8309**. The pinout for the signal input from GPS receiver can also be found in the manual if you need customized cable. Please connect the VLP-16 to the same network as the HDL-64E and configure the ethernet switch to do port forwarding.
+
+#### References
+
+For additional information, please refer to:
+
+* VLP - 16: [http://velodynelidar.com/vlp-16.html](http://velodynelidar.com/vlp-16.html)
+
+* VLP - 32: [http://velodynelidar.com/vlp-32c.html](http://velodynelidar.com/vlp-32c.html)
+
+* VLP - 16 Hi-Res: [http://velodynelidar.com/vlp-16-hi-res.html](http://velodynelidar.com/vlp-16-hi-res.html)
+
+* VLP - 16 Lite: [http://velodynelidar.com/vlp-16-lite.html](http://velodynelidar.com/vlp-16-lite.html)
+
+* HDL - 32E: [http://velodynelidar.com/hdl-32e.html](http://velodynelidar.com/hdl-32e.html)
+
+
diff --git a/docs/specs/Lidar/images/.gitattributes b/docs/specs/Lidar/images/.gitattributes
new file mode 100644
index 00000000000..1c27cfc4d07
--- /dev/null
+++ b/docs/specs/Lidar/images/.gitattributes
@@ -0,0 +1,2 @@
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/Lidar/images/HDL64_Cable_whitened_labeled.png b/docs/specs/Lidar/images/HDL64_Cable_whitened_labeled.png
new file mode 100644
index 00000000000..7519f2db09a
Binary files /dev/null and b/docs/specs/Lidar/images/HDL64_Cable_whitened_labeled.png differ
diff --git a/docs/specs/Lidar/images/HDL64_Cabling.JPG b/docs/specs/Lidar/images/HDL64_Cabling.JPG
new file mode 100644
index 00000000000..28144a25deb
Binary files /dev/null and b/docs/specs/Lidar/images/HDL64_Cabling.JPG differ
diff --git a/docs/specs/Lidar/images/HDL64_PowerCable.JPG b/docs/specs/Lidar/images/HDL64_PowerCable.JPG
new file mode 100644
index 00000000000..e51d112fa9c
Binary files /dev/null and b/docs/specs/Lidar/images/HDL64_PowerCable.JPG differ
diff --git a/docs/specs/Lidar/images/Issuing_the_serial_command.png b/docs/specs/Lidar/images/Issuing_the_serial_command.png
new file mode 100644
index 00000000000..f142d0f5019
Binary files /dev/null and b/docs/specs/Lidar/images/Issuing_the_serial_command.png differ
diff --git a/docs/specs/Lidar/images/LiDAR_A1_wiring.png b/docs/specs/Lidar/images/LiDAR_A1_wiring.png
new file mode 100644
index 00000000000..6e78ae71b54
Binary files /dev/null and b/docs/specs/Lidar/images/LiDAR_A1_wiring.png differ
diff --git a/docs/specs/Lidar/images/LiDAR_PP6_wiring.png b/docs/specs/Lidar/images/LiDAR_PP6_wiring.png
new file mode 100644
index 00000000000..efc1171de2c
Binary files /dev/null and b/docs/specs/Lidar/images/LiDAR_PP6_wiring.png differ
diff --git a/docs/specs/Lidar/images/Pandora_A1_wiring.png b/docs/specs/Lidar/images/Pandora_A1_wiring.png
new file mode 100644
index 00000000000..fa831aee655
Binary files /dev/null and b/docs/specs/Lidar/images/Pandora_A1_wiring.png differ
diff --git a/docs/specs/Lidar/images/Pandora_GPS_pinout.png b/docs/specs/Lidar/images/Pandora_GPS_pinout.png
new file mode 100644
index 00000000000..1e51ab0ebe3
Binary files /dev/null and b/docs/specs/Lidar/images/Pandora_GPS_pinout.png differ
diff --git a/docs/specs/Lidar/images/Pandora_PP6_wiring.png b/docs/specs/Lidar/images/Pandora_PP6_wiring.png
new file mode 100644
index 00000000000..e4d662db1b7
Binary files /dev/null and b/docs/specs/Lidar/images/Pandora_PP6_wiring.png differ
diff --git a/docs/specs/Lidar/images/Pandora_PowerCable.png b/docs/specs/Lidar/images/Pandora_PowerCable.png
new file mode 100644
index 00000000000..22cb5fe9d1e
Binary files /dev/null and b/docs/specs/Lidar/images/Pandora_PowerCable.png differ
diff --git a/docs/specs/Lidar/images/Pandora_pinout_table.png b/docs/specs/Lidar/images/Pandora_pinout_table.png
new file mode 100644
index 00000000000..9f5bf717412
Binary files /dev/null and b/docs/specs/Lidar/images/Pandora_pinout_table.png differ
diff --git a/docs/specs/Lidar/images/Serial_cable_connected_to_laptop.png b/docs/specs/Lidar/images/Serial_cable_connected_to_laptop.png
new file mode 100644
index 00000000000..25279cacb5d
Binary files /dev/null and b/docs/specs/Lidar/images/Serial_cable_connected_to_laptop.png differ
diff --git a/docs/specs/Lidar/images/VLP16_install_configuration.jpg b/docs/specs/Lidar/images/VLP16_install_configuration.jpg
new file mode 100644
index 00000000000..b3869423abe
Binary files /dev/null and b/docs/specs/Lidar/images/VLP16_install_configuration.jpg differ
diff --git a/docs/specs/Lidar/images/hesai_pandora.png b/docs/specs/Lidar/images/hesai_pandora.png
new file mode 100644
index 00000000000..5e85781385e
Binary files /dev/null and b/docs/specs/Lidar/images/hesai_pandora.png differ
diff --git a/docs/specs/Lidar/images/lidar_gps_pinout.png b/docs/specs/Lidar/images/lidar_gps_pinout.png
new file mode 100644
index 00000000000..3b99c7d99af
Binary files /dev/null and b/docs/specs/Lidar/images/lidar_gps_pinout.png differ
diff --git a/docs/specs/Lidar/images/lidar_interface_box.png b/docs/specs/Lidar/images/lidar_interface_box.png
new file mode 100644
index 00000000000..009132abaad
Binary files /dev/null and b/docs/specs/Lidar/images/lidar_interface_box.png differ
diff --git a/docs/specs/Lidar/images/lidar_pic.png b/docs/specs/Lidar/images/lidar_pic.png
new file mode 100644
index 00000000000..d50ac705412
Binary files /dev/null and b/docs/specs/Lidar/images/lidar_pic.png differ
diff --git a/docs/specs/Lidar/images/lidar_pic_vlp32c.png b/docs/specs/Lidar/images/lidar_pic_vlp32c.png
new file mode 100644
index 00000000000..846f295a7d9
Binary files /dev/null and b/docs/specs/Lidar/images/lidar_pic_vlp32c.png differ
diff --git a/docs/specs/Lidar/images/online_icon.png b/docs/specs/Lidar/images/online_icon.png
new file mode 100644
index 00000000000..490b3451166
Binary files /dev/null and b/docs/specs/Lidar/images/online_icon.png differ
diff --git a/docs/specs/Lidar/images/pandora_cable.png b/docs/specs/Lidar/images/pandora_cable.png
new file mode 100644
index 00000000000..8e269f2c648
Binary files /dev/null and b/docs/specs/Lidar/images/pandora_cable.png differ
diff --git a/docs/specs/Lidar/images/pinout_table.png b/docs/specs/Lidar/images/pinout_table.png
new file mode 100644
index 00000000000..8e6f864bb79
Binary files /dev/null and b/docs/specs/Lidar/images/pinout_table.png differ
diff --git a/docs/specs/Navigation/.DS_Store b/docs/specs/Navigation/.DS_Store
new file mode 100644
index 00000000000..5c3c6c2f972
Binary files /dev/null and b/docs/specs/Navigation/.DS_Store differ
diff --git a/docs/specs/Navigation/Navtech_NV-GI120_Installation_Guide.md b/docs/specs/Navigation/Navtech_NV-GI120_Installation_Guide.md
new file mode 100644
index 00000000000..a5dea23fc99
--- /dev/null
+++ b/docs/specs/Navigation/Navtech_NV-GI120_Installation_Guide.md
@@ -0,0 +1,39 @@
+## Guide for Navtech NV-GI120
+
+```
+NV-GI120 is a position and orientation system for automatic drive of NAV Technology. With the
+high-precision GNSS board card and high-precision MEMS gyro, it has the real-time attitude
+and position resolving ability while transmitting the original data of the sensor and board card
+for post-processing high-precision resolution.
+
+----Navtech official brochure
+```
+
+![navtech_pic](images/navtech_pic.png)
+
+NV-GI120 integrates the GNSS receiver and MEMS IMU device into a compact package to provide high precision localization results. It supports dual antenna configuration and multi-frequency reception.
+
+### Installation
+
+![navtech_pic](images/navtech_cables.png)
+
+1. The antennas(antennae) can be connected to the module via SMA connection.
+
+2. A cable bundle is provided with the navigation module. One cable breaks out to multiple connectors to handle communication and configuration.
+
+3. The configuration is similar to what can be done on Novatel devices. Please contact the vendor for detailed instructions.
+
+4. The table for the labels on the break out cable bundle and the corresponding explanations/translations is shown below:
+
+ | Labels | Explanations |
+ | -------------- | ------------------------------------------------ |
+ | PPS | Pulse per second |
+ | 导航 | navigation output (replaceable by the ethernet) |
+ | 板卡 | ------- |
+ | 里程 | Odometer connection |
+ | 调试 | configuration |
+ | 网口 | ethernet |
+ | Two naked wire | Power (red and blue) |
+ | 扩展 | Extension |
+
+
\ No newline at end of file
diff --git a/docs/specs/Navigation/Propak_6_IMU-IGM-A1_Installation_Guide.md b/docs/specs/Navigation/Propak_6_IMU-IGM-A1_Installation_Guide.md
new file mode 100644
index 00000000000..4ef8f79b9dd
--- /dev/null
+++ b/docs/specs/Navigation/Propak_6_IMU-IGM-A1_Installation_Guide.md
@@ -0,0 +1,132 @@
+## Installation Guide of NovAtel Propak6 and NovAtel IMU-IGM-A1
+
+NovAtel ProPak6 is a standalone GNSS receiver. It works with a separate NovAtel-supported IMU (in this case, the NovAtel IMU-IGM-A1)to provide localization functionality.
+
+The IMU-IGM-A1 is an IMU that pairs with a SPAN-enabled GNSS receiver such as the SPAN ProPak6.
+
+![novatel_pp6](images/Novatel_pp6.png)
+
+The GPS Receiver/Antenna used with the GPS-IMU component is the **NovAtel GPS-703-GGG-HV**.
+
+![gps_receiver](/Users/hanyang07/apollo/docs/quickstart/images/gps_receiver.png)
+
+
+### Installing the GPS Receiver and Antenna
+
+The installation instructions describe the procedure to mount, connect, and take the lever arm measurements for the GPS NovAtel SPAN® ProPak6™ **and** the NovAtel IMU-IGM-A1.
+
+##### Components for the Installation
+
+The components that are required for the installation include:
+
+- NovAtel GPS SPAN ProPak6
+- NovAtel IMU-IGM-A1
+- NovAtel GPS-703-GGG-HV Antenna
+- NovAtel GPS-C006 Cable (to connect antenna to GPS)
+- NovAtel 01019014 Main Cable (to connect GPS to a serial port on the IPC)
+- Data Transport Unit (DTU) – similar to a 4G router
+- Magnetic adapters (for antenna and DTU)
+- DB9 straight through cable
+
+##### Mounting
+
+You can place the two devices, the ProPak6 and the IMU in most places in the vehicle, but it is suggested that you follow these recommendations:
+
+- Place and secure the ProPak6 and the IMU side-by-side inside the trunk with the Y-axis pointing forward.
+- Mount the NovAtel GPS-703-GGG-HV antenna on top of the vehicle or on top of the trunk lid as shown:
+
+![gps_receiver_on_car](images/gps_receiver_on_car.png)
+
+- Use a magnetic adapter to tightly attach the antenna to the trunk lid.
+- Install the antenna cable in the trunk by opening the trunk and placing the cable in the space between the trunk lid and the body of the car.
+
+##### Wiring
+
+Follow these steps to connect the ProPak6 GNSS Receiver and the IMU to the Apollo system:
+
+* Use the split cable that comes with IMU-IGM-A1 to connect the IMU Main port and theProPak6 COM3/IMU port.
+* Use a USB-A-to-MicroUSB cable to connect the USB port of the IPC and the MicroUSB port of the ProPak6.
+* Connect the other end of the IMU-IGM-A1 split cable to the vehicle power.
+* Connect the GNSS antenna to Propak6.
+* Connect the Propak6 power cable.
+
+![wiring](images/wiring.png)
+
+#### Taking the Lever Arm Measurement
+
+Follow these steps:
+
+* Before taking the measurement, turn on the IPC.
+* When the IMU and the GPS Antenna are in position, the distance from the IMU to the GPS Antenna must be measured. The center of the IMU and the center of the antenna are labeled on the exterior of the devices.
+* The distance should be measured as: X offset, Y offset, and Z offset. The axis should be determined by the IMU. The error of offset must be within one centimeter to achieve high accuracy in positioning and localization.
+
+### Configuring the GPS and IMU
+
+Configure the GPS and IMU as shown below. This process can be done either by keying in the commands, or by loadinag batch configuration file in NovAtel Connect.
+
+```
+WIFICONFIG STATE OFF
+UNLOGALL THISPORT
+CONNECTIMU COM3 IMU_ADIS16488
+INSCOMMAND ENABLE
+SETIMUORIENTATION 5
+ALIGNMENTMODE AUTOMATIC
+VEHICLEBODYROTATION 0 0 0
+COM COM1 9600 N 8 1 N OFF OFF
+COM COM2 9600 N 8 1 N OFF OFF
+INTERFACEMODE COM1 NOVATEL NOVATEL ON
+PPSCONTROL ENABLE POSITIVE 1.0 10000
+MARKCONTROL MARK1 ENABLE POSITIVE
+EVENTINCONTROL MARK1 ENABLE POSITIVE 0 2
+interfacemode usb2 rtcmv3 none off
+rtksource auto any
+psrdiffsource auto any
+SETIMUTOANTOFFSET 0.00 1.10866 1.14165 0.05 0.05 0.08
+SETINSOFFSET 0 0 0
+EVENTOUTCONTROL MARK2 ENABLE POSITIVE 999999990 10
+EVENTOUTCONTROL MARK1 ENABLE POSITIVE 500000000 500000000
+
+
+LOG COM2 GPRMC ONTIME 1.0 0.25
+LOG USB1 GPGGA ONTIME 1.0
+
+log USB1 bestgnssposb ontime 1
+log USB1 bestgnssvelb ontime 1
+log USB1 bestposb ontime 1
+log USB1 INSPVAXB ontime 1
+log USB1 INSPVASB ontime 0.01
+log USB1 CORRIMUDATASB ontime 0.01
+log USB1 RAWIMUSXB onnew 0 0
+log USB1 mark1pvab onnew
+
+log USB1 rangeb ontime 1
+log USB1 bdsephemerisb
+log USB1 gpsephemb
+log USB1 gloephemerisb
+log USB1 bdsephemerisb ontime 15
+log USB1 gpsephemb ontime 15
+log USB1 gloephemerisb ontime 15
+
+log USB1 imutoantoffsetsb once
+log USB1 vehiclebodyrotationb onchanged
+
+SAVECONFIG
+```
+
+**![warning_icon](images/warning_icon.png) WARNING:** Modify the **SETIMUTOANTOFFSET** line based on the actual measurement (of the antenna and the IMU offset).
+
+For example:
+
+```
+SETIMUTOANTOFFSET -0.05 0.5 0.8 0.05 0.05 0.08
+```
+
+The first 3 numbers indicate the result of the lever arm distance measurement. The last 3 numbers are the uncertainty of the measurement.
+
+### References
+
+For more information about the NovAtel SPAN ProPak6 and the IMU-IGM-A1, see:
+* [NovAtel ProPak6 Installation & Operation Manual](https://www.novatel.com/assets/Documents/Manuals/OM-20000148.pdf)
+* [NovAtel IMU-IGM-A1 Product Page](https://www.novatel.com/products/span-gnss-inertial-systems/span-imus/span-mems-imus/imu-igm-a1/#overview)
+
+* [NovAtel GPS-703-GGG-HV](https://www.novatel.com/products/gnss-antennas/high-performance-gnss-antennas/gps-703-ggg-hv/)
diff --git a/docs/specs/Navigation/README.md b/docs/specs/Navigation/README.md
new file mode 100644
index 00000000000..4a8cdcd6d6a
--- /dev/null
+++ b/docs/specs/Navigation/README.md
@@ -0,0 +1,8 @@
+#Apollo Navigation
+
+You could integrate 2 types of Navigation Hardware with Apollo. Refer to their individual Installation guides for more information.
+
+1. **Novatel**
+ - [NovAtel Propak6 with NovAtel IMU-IGM-A1](Propak_6_IMU-IGM-A1_Installation_Guide.md)
+ - [SPAN-IGM-A1](SPAN-IGM-A1_Installation_Guide.md)
+3. [Navtech NV-GI120](Navtech_NV-GI120_Installation_Guide.md)
\ No newline at end of file
diff --git a/docs/specs/Navigation/SPAN-IGM-A1_Installation_Guide.md b/docs/specs/Navigation/SPAN-IGM-A1_Installation_Guide.md
new file mode 100644
index 00000000000..5b759abefb1
--- /dev/null
+++ b/docs/specs/Navigation/SPAN-IGM-A1_Installation_Guide.md
@@ -0,0 +1,126 @@
+## Installation Guide of SPAN-IGM-A1
+
+The NovAtel SPAN-IGM-A1 is an integrated, single-box solution that offers tightly coupled Global Navigation Satellite System (GNSS) positioning and inertial navigation featuring the NovAtel OEM615 receiver.
+
+![novatel_imu](images/Novatel_imu.png)
+
+The GPS Receiver/Antenna used with the GPS-IMU component is the **NovAtel GPS-703-GGG-HV**.
+
+```
+The GPS NovAtelGPS-703-GGG-HV works with either model of the two GPS-IMU options (SPAN-IGM-A1 and Propak6), Global Positioning System (GPS) and Inertial Measurement Unit (IMU).
+```
+
+![gps_receiver](images/gps_receiver.png)
+
+### Installing the GPS Receiver and Antenna
+
+The installation instructions describe the procedure to mount, connect, and take the lever arm measurements for the GPS-IMU NovAtel SPAN-IGM-A1.
+
+##### Mounting
+
+You can place the GPS-IMU NovAtel SPAN-IGM-A1 in most places in the vehicle but it is suggested that you follow these recommendations:
+
+- Place and secure the NovAtel SPAN-IGM-A1 inside the trunk with the Y-axis pointing forward.
+- Mount the NovAtel GPS-703-GGG-HV antenna in an unobstructed location on top of the vehicle.
+
+##### Wiring
+
+There are three cables that need to be connected
+
+- The antenna cable connects the GNSS antenna to the antenna port of the SPAN-IGM-A1
+- The main cable:
+ - Connect the 15-pin end to the SPAN-IGM-A1
+ - Connect the power wires to a power supply of 10-to-30V DC
+ - Connects the user port to the IPC.
+ - If the power comes from a vehicle battery, add an auxiliary battery (recommended).
+- The AUX cable:
+ - Connect the AUX cable to the 15-pin Aux port
+ - Connect the USB cable to the IPC, if the USB port is used for data transferring.
+
+Refer to the diagram below for reference:
+
+![imu_main_cable_connection](images/imu_main_cable_connection.png)
+
+For additional information, visit Page 3 of [the SPAN-IGM™ Quick Start Guide](http://www.novatel.com/assets/Documents/Manuals/GM-14915114.pdf) to view the detailed diagram.
+
+##### Taking the Lever Arm Measurement
+
+When the SPAN-IGM-A1 and the GPS Antenna are in position, the distance from the SPAN-IGM-A1 to the GPS Antenna must be measured. The distance should be measured as: X offset, Y offset, and Z offset.
+
+The center of the IMU and the center of the antenna are labeled on the exterior of the devices.
+
+For additional information, visit Page 5 of [the SPAN-IGM™ Quick Start Guide](http://www.novatel.com/assets/Documents/Manuals/GM-14915114.pdf) to view the detailed diagram.
+
+### Configuring the GPS and IMU
+
+Configure the GPS and IMU as shown below. The setting can be configured by keying in the following command or loading a batch file in Novatel Connect:
+
+```
+WIFICONFIG STATE OFF
+UNLOGALL THISPORT
+INSCOMMAND ENABLE
+SETIMUORIENTATION 5
+ALIGNMENTMODE AUTOMATIC
+VEHICLEBODYROTATION 0 0 0
+COM COM1 9600 N 8 1 N OFF OFF
+COM COM2 9600 N 8 1 N OFF OFF
+INTERFACEMODE COM1 NOVATEL NOVATEL ON
+PPSCONTROL ENABLE POSITIVE 1.0 10000
+MARKCONTROL MARK1 ENABLE POSITIVE
+EVENTINCONTROL MARK1 ENABLE POSITIVE 0 2
+interfacemode usb2 rtcmv3 none off
+rtksource auto any
+psrdiffsource auto any
+
+SETIMUTOANTOFFSET 0.00 1.10866 1.14165 0.05 0.05 0.08
+SETINSOFFSET 0 0 0
+EVENTOUTCONTROL MARK2 ENABLE POSITIVE 999999990 10
+EVENTOUTCONTROL MARK1 ENABLE POSITIVE 500000000 500000000
+
+
+LOG COM2 GPRMC ONTIME 1.0 0.25
+LOG USB1 GPGGA ONTIME 1.0
+
+log USB1 bestgnssposb ontime 1
+log USB1 bestgnssvelb ontime 1
+log USB1 bestposb ontime 1
+log USB1 INSPVAXB ontime 1
+log USB1 INSPVASB ontime 0.01
+log USB1 CORRIMUDATASB ontime 0.01
+log USB1 RAWIMUSXB onnew 0 0
+log USB1 mark1pvab onnew
+
+log USB1 rangeb ontime 1
+log USB1 bdsephemerisb
+log USB1 gpsephemb
+log USB1 gloephemerisb
+log USB1 bdsephemerisb ontime 15
+log USB1 gpsephemb ontime 15
+log USB1 gloephemerisb ontime 15
+
+log USB1 imutoantoffsetsb once
+log USB1 vehiclebodyrotationb onchanged
+
+SAVECONFIG
+```
+
+**![warning_icon](/Users/hanyang07/apollo/docs/quickstart/images/warning_icon.png) WARNING:** Modify the **SETIMUTOANTOFFSET** line based on the actual measurement (of the antenna and the IMU offset).
+
+For example:
+
+```
+SETIMUTOANTOFFSET -0.05 0.5 0.8 0.05 0.05 0.08
+```
+The first 3 numbers indicate the result of the lever arm distance measurement. The last 3 numbers are the uncertainty of the measurement.
+
+### References
+
+For additional information on the NovAtel SPAN-IGM-A1:
+
+* [NovAtel SPAN-IGM-A1 Product Page](https://www.novatel.com/products/span-gnss-inertial-systems/span-combined-systems/span-igm-a1/)
+
+* [NovAtel GPS-703-GGG-HV Product page](https://www.novatel.com/products/gnss-antennas/high-performance-gnss-antennas/gps-703-ggg-hv/)
+
+* [SPAN-IGM™ Quick Start Guide](http://www.novatel.com/assets/Documents/Manuals/GM-14915114.pdf)
+
+* [SPAN-IGM™ User Manual](http://www.novatel.com/assets/Documents/Manuals/OM-20000141.pdf)
\ No newline at end of file
diff --git a/docs/specs/Navigation/images/.gitattributes b/docs/specs/Navigation/images/.gitattributes
new file mode 100644
index 00000000000..c091529f367
--- /dev/null
+++ b/docs/specs/Navigation/images/.gitattributes
@@ -0,0 +1 @@
+*.png filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/Navigation/images/Novatel_imu.png b/docs/specs/Navigation/images/Novatel_imu.png
new file mode 100644
index 00000000000..36945a66bdf
Binary files /dev/null and b/docs/specs/Navigation/images/Novatel_imu.png differ
diff --git a/docs/specs/Navigation/images/Novatel_pp6.png b/docs/specs/Navigation/images/Novatel_pp6.png
new file mode 100644
index 00000000000..5b1e2006018
Binary files /dev/null and b/docs/specs/Navigation/images/Novatel_pp6.png differ
diff --git a/docs/specs/Navigation/images/gps_receiver.png b/docs/specs/Navigation/images/gps_receiver.png
new file mode 100644
index 00000000000..26ba57915cc
Binary files /dev/null and b/docs/specs/Navigation/images/gps_receiver.png differ
diff --git a/docs/specs/Navigation/images/gps_receiver_on_car.png b/docs/specs/Navigation/images/gps_receiver_on_car.png
new file mode 100644
index 00000000000..3c0a6c15054
Binary files /dev/null and b/docs/specs/Navigation/images/gps_receiver_on_car.png differ
diff --git a/docs/specs/Navigation/images/imu_main_cable_connection.png b/docs/specs/Navigation/images/imu_main_cable_connection.png
new file mode 100644
index 00000000000..fecb16afe97
Binary files /dev/null and b/docs/specs/Navigation/images/imu_main_cable_connection.png differ
diff --git a/docs/specs/Navigation/images/navtech_cables.png b/docs/specs/Navigation/images/navtech_cables.png
new file mode 100644
index 00000000000..ae3a99cf840
Binary files /dev/null and b/docs/specs/Navigation/images/navtech_cables.png differ
diff --git a/docs/specs/Navigation/images/navtech_pic.png b/docs/specs/Navigation/images/navtech_pic.png
new file mode 100644
index 00000000000..d3012d77661
Binary files /dev/null and b/docs/specs/Navigation/images/navtech_pic.png differ
diff --git a/docs/specs/Navigation/images/online_icon.png b/docs/specs/Navigation/images/online_icon.png
new file mode 100644
index 00000000000..490b3451166
Binary files /dev/null and b/docs/specs/Navigation/images/online_icon.png differ
diff --git a/docs/specs/Navigation/images/warning_icon.png b/docs/specs/Navigation/images/warning_icon.png
new file mode 100644
index 00000000000..de34160f90e
Binary files /dev/null and b/docs/specs/Navigation/images/warning_icon.png differ
diff --git a/docs/specs/Navigation/images/wiring.png b/docs/specs/Navigation/images/wiring.png
new file mode 100644
index 00000000000..a1339e28d7a
Binary files /dev/null and b/docs/specs/Navigation/images/wiring.png differ
diff --git a/docs/specs/README.md b/docs/specs/README.md
index bdd2c013b03..a9d7abf0644 100644
--- a/docs/specs/README.md
+++ b/docs/specs/README.md
@@ -1,25 +1,38 @@
# Specs
+## Software
- [Apollo 2.0 Software Architecture](Apollo_2.0_Software_Architecture.md)
- [Class Architecture Planning](Class_Architecture_Planning.md)
-##
+## Hardware
+- [Apollo Sensor Unit](Apollo_Sensor_Unit/Apollo_Sensor_Unit_Installation_Guide.md)
+- [Camera](Camera/README.md)
+- [LiDAR](Lidar/README.md)
+- [Radar](Radar/README.md)
+- [Navigation](Navigation/README.md)
+- [IPC](IPC/Nuvo-6108GC_Installation_Guide.md)
+- [Software system and Kernel Installation](Software_and_Kernel_Installation_guide.md)
+
+## Perception
- [Perception Apollo 2.5](perception_apollo_2.5.md)
- [Guideline Sensor Installation Apollo 2.5](Guideline_sensor_Installation_apollo_2.5.md)
+- [Lidar calibration.pdf](lidar_calibration.pdf)
+- [Lidar calibration cn.pdf](lidar_calibration_cn.pdf)
+
-##
-- [apollo secure upgrade user guide EN](apollo_secure_upgrade_user_guide-EN.md)
-- [dreamview usage table](dreamview_usage_table.md)
+## HMI
+- [Dreamview usage table](dreamview_usage_table.md)
-##
+## Algorithms
- [3d obstacle perception](3d_obstacle_perception.md)
- [3d obstacle perception cn](3d_obstacle_perception_cn.md)
-- [qp spline path optimizer](qp_spline_path_optimizer.md)
-- [qp spline st speed optimizer](qp_spline_st_speed_optimizer.md)
-- [reference line smoother](reference_line_smoother.md)
+- [QP spline path optimizer](qp_spline_path_optimizer.md)
+- [QP spline st speed optimizer](qp_spline_st_speed_optimizer.md)
+- [Reference line smoother](reference_line_smoother.md)
- [traffic light](traffic_light.md)
-##
-- [coordination.pdf](coordination.pdf)
-- [lidar calibration.pdf](lidar_calibration.pdf)
-- [lidar calibration cn.pdf](lidar_calibration_cn.pdf)
+## General
+- [Coordinate System.pdf](coordination.pdf)
+- [Apollo secure upgrade user guide](apollo_secure_upgrade_user_guide-EN.md)
+
+
diff --git a/docs/specs/Radar/.DS_Store b/docs/specs/Radar/.DS_Store
new file mode 100644
index 00000000000..50c27e7d421
Binary files /dev/null and b/docs/specs/Radar/.DS_Store differ
diff --git a/docs/specs/Radar/Continental_ARS408-21_Radar_Installation_Guide.md b/docs/specs/Radar/Continental_ARS408-21_Radar_Installation_Guide.md
new file mode 100644
index 00000000000..071f66e53a1
--- /dev/null
+++ b/docs/specs/Radar/Continental_ARS408-21_Radar_Installation_Guide.md
@@ -0,0 +1,40 @@
+## Installation Guide of Continental ARS-408-21 Radar
+
+```
+The ARS408 realized a broad field of view by two independent scans in conjunction with the high range functions
+like Adaptive Cruise Control, Forward Collision Warning and Emergency Brake Assist can be easily implemented.
+Its capability to detect stationary objects without the help of a camera system emphasizes its performance. The ARS408 is a best in class radar,
+especially for the stationary target detection and separation.
+
+----Continental official website
+```
+
+![radar_image](images/ARS-408-21.jpg)
+
+The following diagram contains the range of the ARS-408-21 Radar:
+
+![radar_range](images/ARS-404-21-range.jpg)
+
+### Installation
+
+1. A mechanical mount needs to be designed to mount the Radar to the desired position. The mount should be able to hold the Radar in a way that the scanning plane is parallel to the bottom of the car, so that the scanning radar wave would not be blocked by the road surface causing it to create ghost objects. If a stationary mount cannot satisfy such requirement, please consider adding adjustment in vertical and horizontal directions to the mount
+
+2. When you receive the Radar package, a set of connection cables should be included. Connect the water-proof connector to the Radar, and guide the cable through/under the car into the trunk. Secure the cable to the body of the car if necessary
+
+ ![radar_cable](images/ars-408-21-cable.png)
+
+3. Connect the power cable to **12VDC** power supply
+
+4. Connect the CAN output to the CAN interface of the IPC
+
+5. You should be able to receive the CAN messages through the CAN port once the Radar is powered.
+
+### References
+
+1. Additional information can be found on the [product page](https://www.continental-automotive.com/Landing-Pages/Industrial-Sensors/Products/ARS-408-21)
+
+2. For information on troubleshooting or for the user manual, contact Continental directly
+
+
+
+
\ No newline at end of file
diff --git a/docs/specs/Radar/Delphi_ESR_2_5_Radar_Installation_Guide.md b/docs/specs/Radar/Delphi_ESR_2_5_Radar_Installation_Guide.md
new file mode 100644
index 00000000000..8bd453257ab
--- /dev/null
+++ b/docs/specs/Radar/Delphi_ESR_2_5_Radar_Installation_Guide.md
@@ -0,0 +1,36 @@
+## Installation Guide of Delphi ESR 2.5 Radar
+
+```
+Delphi's technologically advanced ESR uses proven solid state technology plus class-leading performance,
+packaging and durability to offer customers game-changing forward radar detection.
+The quality of data provided by Delphi's system enables powerful functionality including
+adaptive cruise control, forward collision warning, brake support and headway alert.
+
+----Delphi official website
+```
+
+![radar_image](images/esr_2_5.png)
+
+### Installation
+
+1. A mechanical mount needs to be designed to mount the Radar to the desired position. The mount should be able to hold the Radar in a way that the scanning plane is parallel to the bottom of the car, so that the scanning radar wave would not be blocked by the road surface causing it to create ghost objects. If a stationary mount cannot satisfy such requirement, please consider adding adjustment in vertical and horizontal directions to the mount
+
+ ![radar_image](images/Radar_OnVehicle.png)
+
+2. When you receive the Radar package, a set of connection cables should be included. Connect the water-proof connector to the Radar, and guide the cable through/under the car into the trunk. Secure the cable to the body of the car if necessary
+
+3. Connect the power cable to **24VDC** power supply. Add a voltage converter if 24VDC is not available.
+
+4. Connect the CAN output to the CAN interface of the IPC.
+
+5. You should be able to receive the CAN messages through the CAN port once the Radar is powered.
+
+### References
+
+1. Additional information can be found on the [product page](https://autonomoustuff.com/product/delphi-esr-2-5-24v/ )
+
+2. For additional information on the detailed working principle or data interpretation, please contact Delphi or AutonomouStuff directly.
+
+
+
+
\ No newline at end of file
diff --git a/docs/specs/Radar/README.md b/docs/specs/Radar/README.md
new file mode 100644
index 00000000000..726d6f0145c
--- /dev/null
+++ b/docs/specs/Radar/README.md
@@ -0,0 +1,7 @@
+#Apollo Radar
+
+You could integrate 3 types of Radar's with Apollo. Refer to their individual Installation guides for more information.
+
+1. [Continental ARS408-21 Radar](Continental_ARS408-21_Radar_Installation_Guide.md)
+2. [Delphi ESR 2_5 Radar](Delphi_ESR_2_5_Radar_Installation_Guide.md)
+3. [Racobit B01HC Radar](Racobit_B01HC_Radar_Installation_Guide.md)
\ No newline at end of file
diff --git a/docs/specs/Radar/Racobit_B01HC_Radar_Installation_Guide.md b/docs/specs/Radar/Racobit_B01HC_Radar_Installation_Guide.md
new file mode 100644
index 00000000000..fc46638e440
--- /dev/null
+++ b/docs/specs/Radar/Racobit_B01HC_Radar_Installation_Guide.md
@@ -0,0 +1,18 @@
+## Installation Guide of Racobit B01HC Radar
+
+Racobit developed one Radar product with **60 degree FOV** and **150 m** detection range for autonomous driving needs.
+
+![radar_image](images/b01hc.png)
+
+### Installation
+
+1. A mechanical mount needs to be designed to mount the Radar to the desired position. The mount should be able to hold the Radar in a way that the scanning plane is parallel to the bottom of the car, so that the scanning radar wave would not be blocked by the road surface causing it to create ghost objects. If a stationary mount cannot satisfy such requirement, please consider adding adjustment in vertical and horizontal directions to the mount
+2. When you receive the Radar package, a set of connection cables should be included. Connect the water-proof connector to the Radar, and guide the cable through/under the car into the trunk. Secure the cable to the body of the car if necessary
+3. Connect the power cable to **12VDC** power supply.
+4. Connect the CAN output to the CAN interface of the IPC.
+5. You should be able to receive the CAN messages through the CAN port once the Radar is powered.
+6. Please discuss with the vendor for additional support if needed while integrating it with your vehicle.
+
+
+
+
\ No newline at end of file
diff --git a/docs/specs/Radar/images/.DS_Store b/docs/specs/Radar/images/.DS_Store
new file mode 100644
index 00000000000..cb8af070052
Binary files /dev/null and b/docs/specs/Radar/images/.DS_Store differ
diff --git a/docs/specs/Radar/images/.gitattributes b/docs/specs/Radar/images/.gitattributes
new file mode 100644
index 00000000000..1c27cfc4d07
--- /dev/null
+++ b/docs/specs/Radar/images/.gitattributes
@@ -0,0 +1,2 @@
+*.jpg filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/docs/specs/Radar/images/ARS-408-21.jpg b/docs/specs/Radar/images/ARS-408-21.jpg
new file mode 100644
index 00000000000..945bdff6bb3
Binary files /dev/null and b/docs/specs/Radar/images/ARS-408-21.jpg differ
diff --git a/docs/specs/Radar/images/Radar_OnVehicle.png b/docs/specs/Radar/images/Radar_OnVehicle.png
new file mode 100644
index 00000000000..5bfa8197c28
Binary files /dev/null and b/docs/specs/Radar/images/Radar_OnVehicle.png differ
diff --git a/docs/specs/Radar/images/ars-404-21-range.jpg b/docs/specs/Radar/images/ars-404-21-range.jpg
new file mode 100644
index 00000000000..773cc67be6b
Binary files /dev/null and b/docs/specs/Radar/images/ars-404-21-range.jpg differ
diff --git a/docs/specs/Radar/images/ars-408-21-cable.png b/docs/specs/Radar/images/ars-408-21-cable.png
new file mode 100644
index 00000000000..3dcf652e833
Binary files /dev/null and b/docs/specs/Radar/images/ars-408-21-cable.png differ
diff --git a/docs/specs/Radar/images/b01hc.png b/docs/specs/Radar/images/b01hc.png
new file mode 100644
index 00000000000..ac307996b76
Binary files /dev/null and b/docs/specs/Radar/images/b01hc.png differ
diff --git a/docs/specs/Radar/images/esr_2_5.png b/docs/specs/Radar/images/esr_2_5.png
new file mode 100644
index 00000000000..70c224f66f2
Binary files /dev/null and b/docs/specs/Radar/images/esr_2_5.png differ
diff --git a/docs/specs/Radar/images/online_icon.png b/docs/specs/Radar/images/online_icon.png
new file mode 100644
index 00000000000..490b3451166
Binary files /dev/null and b/docs/specs/Radar/images/online_icon.png differ
diff --git a/docs/specs/Software_and_Kernel_Installation_guide.md b/docs/specs/Software_and_Kernel_Installation_guide.md
new file mode 100644
index 00000000000..8e3c16a4dbe
--- /dev/null
+++ b/docs/specs/Software_and_Kernel_Installation_guide.md
@@ -0,0 +1,103 @@
+### IPC Software Installation Guide
+
+This section describes the steps to install the following:
+
+- Ubuntu Linux
+- Apollo Kernel
+- Nvidia GPU Driver
+
+![tip_icon](images/tip_icon.png)It is assumed that you have experience working with Linux to successfully perform the software installation.
+
+#### Installing Ubuntu Linux
+
+Follow these steps:
+
+1. Create a bootable Ubuntu Linux USB flash drive:
+
+ Download Ubuntu 14.04 (or a variant such as Xubuntu) [create a bootable USB flash drive](https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0). It is recommended that you use Ubuntu 14.04. You can type F2 during the system boot process to enter the BIOS settings. It is recommended that you disable Quick Boot and Quiet Boot in the BIOS to make it easier to catch any issues in the boot process.
+
+2. Install Ubuntu Linux:
+
+ a. Insert the Ubuntu installation drive into a USB port and turn on the system.
+ b. Install Linux by following the on-screen instructions.
+
+3. Perform a software update:
+ a. Reboot into Linux after the installation is done.
+ b. Launch the Software Updater to update to the latest software packages (for the installed distribution) or type the following commands in a terminal program such as GNOME Terminal.
+
+ ```shell
+ sudo apt-get update; sudo apt-get upgrade
+ ```
+
+ c. Launch a terminal program such as GNOME Terminal and type the following command to install the Linux 4.4 kernel:
+
+ ```shell
+ sudo apt-get install linux-generic-lts-xenial
+ ```
+
+![tip_icon](images/tip_icon.png)The IPC must have Internet access to update and install software. Make sure that the Ethernet cable is connected to a network with Internet access. You might need to configure the network for the IPC if the network that it is connected to is not using the Dynamic Host Configuration Protocol (DHCP).
+
+#### Installing the Apollo Kernel
+
+The Apollo runtime in the vehicle requires the [Apollo Kernel](https://github.com/ApolloAuto/apollo-kernel). It is strongly recommended to install the pre-built kernel.
+
+##### Use the pre-built Apollo Kernel.
+
+You get access to and install the pre-built kernel using the following commands.
+
+1. Download the release packages from the release section on GitHub:
+
+```
+https://github.com/ApolloAuto/apollo-kernel/releases
+```
+
+2. Install the kernel after having downloaded the release package:
+
+```
+tar zxvf linux-4.4.32-apollo-1.5.0.tar.gz
+cd install
+sudo bash install_kernel.sh
+```
+
+3. Reboot your system using the `reboot` command.
+4. [Optional - if you are using CAN card for interface] Build the CAN driver source code, according to the vendor's instructions
+
+##### Build your own kernel.
+
+If you have modified the kernel, or the pre-built kernel is not the best for your platform, you can build your own kernel using the following steps:
+
+1. Clone the code from the repository
+
+```
+git clone https://github.com/ApolloAuto/apollo-kernel.git
+cd apollo-kernel
+```
+
+2. Add the CAN driver source code according to vendor's instruction
+3. Build the kernel using the following command:
+
+```
+bash build.sh
+```
+
+4. Install the kernel using the steps for a pre-built Apollo Kernel as described in the previous section.
+
+#### Installing NVIDIA GPU Driver
+
+The Apollo runtime in the vehicle requires the [NVIDIA GPU Driver](http://www.nvidia.com/download/driverResults.aspx/114708/en-us). You must install the NVIDIA GPU driver with specific options.
+
+1. Download the installation files
+
+```
+wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run
+```
+
+2. Start the driver installation
+
+```
+sudo bash ./NVIDIA-Linux-x86_64-375.39.run --no-x-check -a -s
+```
+
+### References
+
+1. Ubuntu official [website](https://www.ubuntu.com/desktop)
\ No newline at end of file
diff --git a/docs/specs/images/Apollo_3.0_SW.png b/docs/specs/images/Apollo_3.0_SW.png
new file mode 100644
index 00000000000..8b966bb2fff
Binary files /dev/null and b/docs/specs/images/Apollo_3.0_SW.png differ
diff --git a/docs/specs/images/tip_icon.png b/docs/specs/images/tip_icon.png
new file mode 100644
index 00000000000..73a28e6656b
Binary files /dev/null and b/docs/specs/images/tip_icon.png differ
diff --git a/docs/specs/images/warning_icon.png b/docs/specs/images/warning_icon.png
new file mode 100644
index 00000000000..de34160f90e
Binary files /dev/null and b/docs/specs/images/warning_icon.png differ