# 基于双目感知的封闭园区自动驾驶搭建--设备集成

## 前提条件

 - 完成了[循迹搭建--车辆循迹演示](../Waypoint_Following/start_waypoint_following_cn.md)
 
## 主要步骤

 - 摄像头安装配置与数据验证。

### 摄像头型号说明

- 摄像头型号:smartereye S1双目相机。 

- smartereye S1双目相机采用标准RJ45的网络接口,由北京中科慧眼科技有限公司制造。

- 更多详细参数可参考中科慧眼官网:[Smartereye S1](http://www.smartereye.com/product/S1)。

### 摄像头安装配置与数据验证

- 牢固安装在小车结构架的竖杆上,水平安装,镜头保持清洁,避免影响图像采集。安装后的效果如下图所示:

![camera_integration_installation](images/camera_integration_installation.jpg)

### 摄像头与工控机连接
 
 - 用车上的电源给相机供电。
 
 - 用网线将设备连接在IPC的网络接口上。

 - 向双目相机的供应厂询问设备的IP地址,例如设备的IP地址为192.168.1.251;在IPC的终端中ping 192.168.1.251,能ping通则表示相机和IPC之间的网络是通的。

 - 参考双目相机的官网文档对相机做一下相关的配置:[Smartereye S1](http://www.smartereye.com/product/S1)。

### 摄像头的启动
 
 - 运行`git clone https://github.com/ApolloAuto/apollo-contrib.git`命令将apollo-contrib仓库克隆至本地,然后将apollo-contrib文件夹下面的smartereye文件夹整体拷贝到/apollo目录下。
 
 - 启动docker环境,在docker环境中输入以下命令:

 ```
 sudo bash /apollo/smartereye/install.sh /apollo/third_party/camera_library/smartereye
 ```

 将smartereye的共享库拷贝至apollo的对应的位置。删除`/apollo/smartereye`文件夹。

 - 将`/apollo/modules/dreamview/conf/hmi_modes/mkz_standard_debug.pb.txt`文件中的第四行的内容`dag_files: "/apollo/modules/drivers/camera/dag/camera.dag"`修改为`dag_files: "/apollo/modules/drivers/smartereye/dag/smartereye.dag"`并保存;将`/apollo/modules/common/data/global_flagfile.txt`文件中的末尾添加下面一行:`--image_short_topic=/apollo/sensor/smartereye/image/compressed`并保存。

 - 确保apollo被正确编译。
 
 - 启动DreamView: `bash /apollo/scripts/bootstrap.sh`,并在浏览器中输入DreamView地址:`http://localhost:8888/`
 
 - 在`Module Controller`标签栏下,打开`Camera`开关,开关位置如下图所示:
 
![camera_integration_dreamview1](images/camera_integration_dreamview1.png)

 - 在`Tasks`标签栏下依次打开`SimControl`和`Camera Sensor`开关,`Camera Sensor`打开后,务必关闭`SimControl`。选择`Mkz Standard Debug`模式,开关在dreamview界面的位置如下图所示:
 
![camera_integration_dreamview2](images/camera_integration_dreamview2.png)
 
 - 如果一切正常,则会在`DreamView`右下角出现摄像头采集的图像。
 
 - 在正确完成上述步骤后,在`docker`环境内使用`cyber_monitor`工具,查看`/apollo/sensor/smartereye/image`、`/apollo/sensor/smartereye/image/compressed`是否有数据输出,且帧率是否稳定在15帧左右。

```
//输入如下命令启动cyber_monitor
budaoshi@in_dev_docker:/apollo$ cyber_monitor
```