# TitanMonitor
**Repository Path**: kinggreat24/TitanMonitor
## Basic Information
- **Project Name**: TitanMonitor
- **Description**: Titan数据采集客户端软件
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-12-04
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TITAN3 数据采集客户端
Titan3数据采集软件采用CS架构,服务端运行在泰坦的主机上,客户端软件运行在用户电脑上,主机开放的端口为**8000**。数据交换采用**TCP/IP**协议,数据协议如下:通信的协议为:
| length(4-bytes) | header(57-bytes) | data(header.Length) |
| :---------------------------: | :-----------------------------------------: | :-------------------: |
| length(header) + length(data) | {"Portocal":%4d,"Number": %8d,"Length":%8d} | json |
每一个数据包分为三个部分:
- length
数据包长度,大小等于header段的长度加data段的长度,小端字节序
- header
描述数据包的信息,格式为json
- Protocal: 数据包的类型
- Number: 数据包的sequence
- Length: data字段的长度
- data
数据包内容,格式为json
## 安装
- 可执行程序安装
1. 点击
2. 下一步,即可安装成功
- 源码编译安装
1. 依赖
- PCL1.8
用于点云数据处理
- QGLViewer
用于显示点云
- QCustomPlot
用于显示数据的频率
- Boost、OpenCV、Qt的各种库
2. 环境VS2015
## 功能介绍
客户端分为四个页面,分别为摄像头、激光雷达、GPS以及配置页面,主要功能包括以下几部分:
1. 建立于服务器的TCP连接
2. 打开、关闭激光雷达与摄像头等传感器
3. 录制、停止录制数据包
4. 预览图像
5. 预览激光雷达等的数据
6. 显示GPS的消息
其中, 摄像头、激光雷达、GPS是用来预览图像、激光雷达、GPS数据的页面以及相应消息的频率;配置页面用于连接服务器,开关传感器、录制数据等。
### 连接服务端
服务端目前部署在**2号**主板上,其**IP**为`192.168.5.102`(内网IP)或者`192.168.3.102`(外网IP),端口号为`8000`。具体的操作步骤如下:
1. 打开客户端,点击**配置 -> 输入主机IP -> 输入主机Port -> 连接 **,连接成功之后将弹出成功的对话框, 失败后也将弹出错误提示。
2. 连接失败的提示如下:

---
### 打开、关闭激光雷达与摄像头传感器
1. 连接服务器成功之后,点击**打开**即可以打开四路激光雷达、3路摄像头的传感器。4路激光雷达分别为:何赛、速腾前向、速腾左侧、速腾右侧;3路摄像头分别为前中、左侧、右侧CSI相机。
2. 打开传感器之后, 点击**关闭**即可关闭上述打开的传感器
---
### 录制、停止录制数据包
#### 录制数据包
1. 连接服务器成功之后,点击录制,将弹出录制数据对话框,如下:
如果当前Topics显示为空,点击中间的**刷新**按钮即可刷新当前的消息列表。

2. 选择需要录制的消息,点击

3. 删除选中的消息点击

4. 确定消息以及数据包的名字之后,点击**确定**将开始数据包的录制工作。

点击确定之后, 将弹出进度条,当进度条消息后,数据开始录制。
#### 停止录制数据包
成功开始录制数据包后,**录制**按键将变成**停止录制**,点击停止录制,将弹出进度条,待进度条消息,数据包录制完成。
---
### 预览图像
主要是显示摄像头的数据以及对应消息的频率。

1. 连接服务器成功之后,点击**摄像头**即可进入图像预览界面
2. 点击需要预览的摄像头的名称,即开始显示该摄像头的数据。
---
### 预览激光雷达
主要是显示激光雷达的频率,以及相应的激光雷达的数据。

1. 点击左侧**激光雷达**即进入激光雷达预览界面;
2. 点击需要预览的激光雷达的名称,即开始显示该激光雷达的数据。
---
#### GPS数据预览

1. 点击左侧**GPS**即可进入GPS预览界面,将显示GPS的轨迹;
2. 地图采用的是百度在线地图,因此客户端需要连接网络才能显示位置;
## BUG
目前数据采集软件存在以下几个问题:
1. 由于摄像头目前不怎么稳定,存在有时候摄像头打不开的情况,因此需要代码进行摄像头状态的检查;
2. 摄像头可能不能反复的进行开关,关之后需要运行`./killCamera.sh`,杀掉摄像头的守护进程方可再次打开,这一部分的工作还没有做;
3. 消息的频率可能会因为内网网速的问题导致计算的结果不对。目前计算各个消息的频率是在2号机器中进行的,因此1号机中激光雷达的频率计算可能会偏小;
4. 各个消息的频率有一处可能出现NAN的值,导致计算得到的json数据出错,进而客户端解析出错。
## 待完善的地方
1. 目前所有的消息都通过一个TCP连接进行数据的传输,传输的效率在数据量很大的时候并不实时,因此如果要实时显示图像、激光雷达的数据,需要建立单独的TCP连接获取数据,这个我可以提供解决的方法;
2. 激光显示的时候,QGLViewer的视角存在一定的问题,需要调一下,以显示所有的点;
3. 主机的存储、内存利用率、CPU利用率已经得到,但是还没有显示,需要显示一下。
4. 百度地图中经纬度的显示与真实位置相差一定的距离,有一个坐标转换需要做一下,还有就是百度离线地图可以去做一下,这样就不用联网了显示GPS数据的时候。
### 软件架构
