# 基于激光雷达的封闭园区自动驾驶搭建--感知设备集成
- [基于激光雷达的封闭园区自动驾驶搭建--感知设备集成](#基于激光雷达的封闭园区自动驾驶搭建--感知设备集成)
  - [概览](#概览)
  - [前提条件](#前提条件)
  - [激光雷达安装与数据验证](#激光雷达安装与数据验证)
    - [激光雷达的安装固定](#激光雷达的安装固定)
    - [激光雷达与车辆的接线](#激光雷达与车辆的接线)
      - [1.线缆端口及定义](#1线缆端口及定义)
      - [2.确保整车断电](#2确保整车断电)
      - [3.将端口1(8pin公头)与激光雷达本体上的8pin母头连接](#3将端口18pin公头与激光雷达本体上的8pin母头连接)
      - [4.将激光雷达电源接口(端口4、端口5)接入车上的12V接线盒](#4将激光雷达电源接口端口4端口5接入车上的12v接线盒)
      - [5.将端口2(授时)与IMU的授时端口相连](#5将端口2授时与imu的授时端口相连)
      - [6.将端口3(网线接口)通过网线与工控机相连](#6将端口3网线接口通过网线与工控机相连)
      - [7.再次确认上述安装步骤](#7再次确认上述安装步骤)
    - [激光雷达的配置及启动](#激光雷达的配置及启动)
      - [1.修改工控机IP地址](#1修改工控机ip地址)
    - [激光雷达数据的验证](#激光雷达数据的验证)
      - [1. 编译项目,启动Dreamview](#1-编译项目启动dreamview)
      - [2. 启动所需模块](#2-启动所需模块)
      - [3. 检查lidar数据是否正确](#3-检查lidar数据是否正确)
  - [毫米波雷达安装与数据验证(根据自身需求配置)](#毫米波雷达安装与数据验证根据自身需求配置)
    - [毫米波雷达接口及线序](#毫米波雷达接口及线序)
    - [毫米波雷达的安装固定](#毫米波雷达的安装固定)
    - [毫米波雷达的配置及启动](#毫米波雷达的配置及启动)
    - [毫米波雷达数据的验证](#毫米波雷达数据的验证)
  - [NEXT](#next)
  - [常见问题](#常见问题)
      - [1. 无法打开Lidar配置网页](#1-无法打开lidar配置网页)

## 概览
该用户手册旨在帮助用户完成激光雷达感知设备的安装、集成及数据验证。 

## 前提条件

 - 完成了[循迹搭建--车辆循迹演示](../Waypoint_Following/start_waypoint_following_cn.md)
  
## 激光雷达安装与数据验证
 
 **注意:** 针对Standard、Advanced用户,激光雷达默认已集成好,直接从`激光雷达数据的验证`章节开始进行数据验证即可
 - 激光雷达型号:80-VLP-16(velodyne 16线激光雷达)
 
 - 更多详细参数可参考:[https://velodynelidar.com/vlp-16.html](https://velodynelidar.com/vlp-16.html)
 
![lidar_integration_look](images/lidar_integration_look.png)

### 激光雷达的安装固定

 - 16线激光雷达要牢靠固定安装在车顶部,建议激光雷达对地高度1.5~1.8米,水平放置,精度在2度以内。安装位置如下图:
 
![lidar_integration_installation](images/lidar_integration_installation.png)

 - 安装激光雷达时线缆方向朝向车辆的正后方。

### 激光雷达与车辆的接线


请按照以下步骤进行激光雷达一拖三线缆的安装。

#### 1.线缆端口及定义

![lidar_integration_line](images/lidar_integration_line.jpg)

|端口号 | 端口名称 | 
|---|---|
|端口1 | 8pin公头 | 
|端口2 | 授时接口  | 
|端口3 | 网线接口| 
|端口4 | 12V+接口 | 
|端口5 | GND接口 | 

#### 2.确保整车断电

#### 3.将端口1(8pin公头)与激光雷达本体上的8pin母头连接

连接完成后,效果如下图所示:

![lidar_integration_slot](images/lidar_integration_slot.jpg)

#### 4.将激光雷达电源接口(端口4、端口5)接入车上的12V接线盒

 - 注意:电源接反会烧毁激光雷达
 
 - 将端口4(12V+)接入车上12V电源接线盒的12V+
 
 - 将端口5(GND)接入车上12V电源接线盒的GND

![lidar_integration_power_line](images/lidar_integration_power_line.jpg)

#### 5.将端口2(授时)与IMU的授时端口相连

 - 端口具有防反插功能,请确认正反后再进行连接

#### 6.将端口3(网线接口)通过网线与工控机相连

 - 通过网线,将工控机上的Ethernet接口与端口3连接
 
 - 工控机有两个Ethernet接口,一个用于给工控机上网,一个用于连接激光雷达,用户自行指定即可

#### 7.再次确认上述安装步骤

 - 请务必再次确认正确执行了上述安装步骤,电源线接反会烧毁激光雷达,确认无误后才可以上电,至此激光雷达线束接线完成

### 激光雷达的配置

 
#### 1.修改工控机IP地址

 - 激光雷达的默认IP地址是192.168.1.201,通过网线与工控机Ethernet接口连接,将该Ehternet接口的IP修改为固定IP,且与激光雷达IP处在同一网段,即`192.168.1.xx`,一个示例配置如下图所示:
 
    ![lidar_integration_ip](images/lidar_integration_ip.png)

 - 激光雷达的相关参数配置:在浏览器中输入激光雷达ip地址,打开激光雷达配置界面, 将`Host IP Address`修改为`255.255.255.255`,将`Data Port`修改为2369,将`Telemetry Port`修改为8309,点击`set` 按键、`Save Configuration`按键保存配置。 
 
    ![lidar_integration_config](images/lidar_integration_config.png)

### 激光雷达数据的验证

####  1. 编译项目,启动Dreamview
进入docker环境,用gpu编译项目,启动DreamView 

    cd /apollo
    bash docker/scripts/dev_start.sh
    bash docker/scripts/dev_into.sh
    bash apollo.sh build_opt_gpu
    bash scripts/bootstrap.sh

####  2. 启动所需模块

- 在浏览器中打开`(http://localhost:8888)`,选择模式为`Dev Kit Debug`, 根据车辆铭牌信息选择对应的车型(详情见下表),在Module Controller标签页启动GPS、Localization、Transform模块。

  | 铭牌信息 | 车型选择 | 
	|---|---|
	| Apollo D-KIT Lite | dev_kit |
	| Apollo D-KIT Standard  | dev_kit_standard |
	| Apollo D-KIT Advanced(NE-S)| dev_kit_advanced_ne-s |
	| Apollo D-KIT Advanced(SNE-R) | dev_kit_advanced_sne-r  |

  ![lidar_adaption_start_localization](images/lidar_adaption_start_localization.png)

- 定位模块启动后,需要接收定位数据,需要等待约1分钟左右。打开新的终端,并使用`bash docker/scripts/dev_into.sh`命令进入docker环境,在新终端中输入`cyber_monitor`命令查看`tf`、`tf_static`、`/apollo/localization/pose`数据,这三个数据在cyber_monitor中均显示为绿色代表定位模块启动成功。(关于cyber_monitor更详细使用,请参考[CyberRT_Developer_Tools](../../cyber/CyberRT_Developer_Tools.md))
![lidar_integration_localization_check](images/lidar_integration_localization_check.png)

- 在dreamview中启动`lidar`模块

  ![lidar_integration_start_lidar](images/lidar_adaption_start_lidar_1.png)
 
####  3. 检查lidar数据是否正确

 - 使用`cyber_monitor`,查看激光雷达数据是否正常输出,并使用上下方向键选择channel,使用右方向键查看channel详细数据,数据无异常则说明激光雷达适配成功
 
- 单激光雷达用户用户,请检查如下channel是否正常输出

  |序号 | channel | 帧率 | 
  |---|---|---|
  |  1 | `/apollo/sensor/lidar16/PointCloud2` | 10Hz |
  |  2 | `/apollo/sensor/lidar16/Scan` | 10Hz |
  |  3 | `/apollo/sensor/lidar16/compensator/PointCloud2` | 10Hz |
 
![lidar_integration_cyber_monitor](images/lidar_integration_cyber_monitor.png)

- 三激光雷达用户用户,请检查如下channel是否正常输出

  |序号 | channel | 帧率 | 
  |---|---|---|
  |  1 | `/apollo/sensor/lidar16/back/PointCloud2` | 10Hz |
  |  2 | `/apollo/sensor/lidar16/left/PointCloud2` | 10Hz |
  |  3 | `/apollo/sensor/lidar16/right/PointCloud2` | 10Hz |
  |  4 | `/apollo/sensor/lidar16/fusion/PointCloud2` | 10HZ |
  |  5 | `/apollo/sensor/lidar16/compensator/PointCloud2` | 10Hz |

## 毫米波雷达安装与数据验证(根据自身需求配置)
 **注意:** 在目前的感知方案中,没有融合毫米波雷达数据,对于没有二次开发需求的用户可以不配置毫米波;对于有二次开发需求的用户,可按照本章节内容配置毫米波雷达
 - 毫米波雷达型号:continental AS 408-21
 
 - continental AS 408-21简介:ARS408-21 是大陆 40X 毫米波雷达传感器系列中最新推出的高端产品,可以适用于不同的应用场景。ARS 408-21 很好的处理了测量性能与高安全性之间的矛盾,可实时检测目标的距离并根据当前车速判断是否存在碰撞风险可靠;具有自动故障检测功能,可识别传感器问题,并自动输出故障码鲁棒、轻量化设计;通过使用相对简单的雷达测量技术,以及在汽车行业的深度研发和批量生产基础,可以保证产品鲁棒和轻量化性能。
 
    ![lidar_integration_radar_look](images/lidar_integration_radar_look.jpg)

### 毫米波雷达接口及线序

 - continental AS 408-21传感器采用12V直流供电,使用CAN通信接口。使用时,通过如下图所示的连接线缆将传感器CAN通信接口与Apollo的CAN1口连接,电源接口接入12V直流电源(车辆上提供12V电源接线盒),注意正负极。
 
    ![lidar_integration_radar_line](images/lidar_integration_radar_line.png)
 
 - 传感器接口及定义如下图所示:其中,端口1接12V直流电源;端口8接GND;端口4接CAN_L;端口7接CAN_H。
 
    ![lidar_integration_radar_picture](images/lidar_integration_radar_picture.png)
 
     ![lidar_integration_radar_pin](images/lidar_integration_radar_pin.png)
 
 - 毫米波雷达CAN接口与工控机的CAN1接口连接,如下图所示:
 
     ![lidar_integration_radar_connection](images/lidar_integration_radar_connection.jpg)
  
### 毫米波雷达的安装固定

 - 传感器应安装在车前方中心处,当人正向面对车辆正前方时,传感器的正面朝向人,传感器的连接口朝向人的右手边,如下图所示:
 
    ![lidar_integration_radar_installation_look](images/lidar_integration_radar_installation_look.jpg)
 
    ![lidar_integration_radar_installation_position](images/lidar_integration_radar_installation_position.png)
 
  - 毫米波雷达要牢靠固定在车身上,连接到毫米波雷达的接头要牢靠接插。离地面高0.5米,不能向下倾斜,向上仰0-2度以内,高度误差±0.2米,俯仰角误差0-2度(向上仰小于2度,不能向下倾斜),翻滚角误差±2度(radar左右两侧的平齐程度),航向角误差±2度(radar是否正对前方)。
  
### 毫米波雷达的配置及启动



- 由于只使用了前向毫米波,需要在配置文件modules/drivers/radar/contiradar/dag/conti_radar.dag中删除后向毫米波雷达(rear components)的相关配置,否则,由于后向毫米波雷达使用的can 2,而我们的socket can没有can 2将会导致canbus无法正常启动。修改后的`conti_radar.dag`文件内容如下:


  ```
  module_config {
      module_library : "/apollo/bazel-bin/modules/drivers/radar/conti_radar/libconti_radar.so"
      components {
          class_name : "ContiRadarCanbusComponent"
          config {
              name: "conti_radar_front"
              config_file_path:  "/apollo/modules/drivers/radar/conti_radar/conf/radar_front_conf.pb.txt"
          }
      }
  }
  ```

- 进入can卡目录启动can卡
  
  ```
    cd ~/SocketCan/
    bash start.sh
  ```

- 正确启动Apollo及DreamView,选择模式为`Dev Kit Debug`, 选择车型为`Dev Kit`,并打开`radar`模块开关,如下图所示:

  ![lidar_integration_radar_dreamview](images/lidar_integration_radar_dreamview.png)

- 使用`cyber_monitor`工具,查看`/apollo/sensor/radar/front`数据

    ![lidar_integration_radar_rostopic2](images/lidar_integration_radar_rostopic2.png)
    
    ![lidar_integration_radar_rostopic3](images/lidar_integration_radar_rostopic3.png)
      
    ![lidar_integration_radar_rostopic4](images/lidar_integration_radar_rostopic4.png)

 - 主要参数的含义如下表所示:
 
	|参数 | 含义 | 
	|---|---|
	| `longitude_dist` | 距目标的纵向距离 | 
	| `lateral_dist`   | 距目标的横向距离 | 
	| `longitude_vel`  | 目标的纵向速度   | 
	| `lateral_vel`    |  目标的横向速度  | 
	
### 毫米波雷达数据的验证

 - 纵向距离(`longitude_dist`)/横向距离(`lateral_dist`)的验证:该传感器默认使用`长距离`模式,检测距离为0.2~250m,在车辆正前方检测距离范围内,分别放置障碍物,查看`/apollo/sensor/conti_radar`话题中的`longitute_dist`、`lateral_dist`数据是否正常(单位m)。下图中红色部分为长距离模式下传感器检测范围,误差在+/-0.4m内为正常。
 
    ![lidar_integration_radar_verify_picture](images/lidar_integration_radar_verify_picture.png)

 - 纵向速度(`longitude_vel`)/横向速度(`lateral_vel`)的验证:使得目标物体以固定速度在检测范围内运动,检测数据是否在误差允许有范围内。
 
 - 该传感器各项参数的测量范围及分辨率如下图所示:
 
    ![lidar_integration_radar_verify_excel](images/lidar_integration_radar_verify_excel.png)

## NEXT
现在,您已经完成激光雷达感知设备集成,接下来可以开始[基于激光雷达的封闭园区自动驾驶搭建--感知设备标定](sensor_calibration_cn.md)
## 常见问题
### 1. 无法打开Lidar配置网页
一般情况下只要Lidar IP、工控机与Lidar连接的网口IP处于相同号段就可以在浏览器中打开配置网页,如果确认本地IP已经正确修改还不能打开配置页面,请确认Lidar的IP地址是否被修改,可以下载`wireshark`来查看Lidar IP