# LabTool-V2
**Repository Path**: tmrnic/lab-tool-v2
## Basic Information
- **Project Name**: LabTool-V2
- **Description**: 更新“求索er/QT串口采数软件”,在此基础上加入两路串口数据采集,便于组合导航、传递对准等测试
- **Primary Language**: C++
- **License**: GPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 4
- **Created**: 2024-11-27
- **Last Updated**: 2025-06-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 串口助手, 数据可视化
## README
# LabTool-V2
导航实验中非常好用的一款串口采集软件
![Forks][author-shield]
![MIT License][license-shield]
![Version][version-shield]
![Forks][forks-shield]
![Stargazers][stars-shield]
LabTool串口数据采集软件 V2.0
西北工业大学惯性导航实验室惯导设采数软件。支持:可编辑协议帧、波形动态刷新、姿态仪表显示、数据实时捕获。
探索本项目的文档 »
使用教程
·
程序下载
·
网盘下载
惯导实验中还是串口通信用的最多,LabTool-v1版本对于采集IMU数据和测试非常方便,实验室一直使用到现在都没有什么问题。为了能满足组合导航试验和传递对准试验的需要,对v1版本进行优化,加入GNSS串口,自动识别NMEA报文和NovAtel报文数据,以支持进行组合导航相关试验。
对于多传感器数据采集功能,以前用MFC做过不少软件,但是对于不同的试验方案和硬件配置,需要重新调整数据解析代码,重新编译,使用起来不够灵活。既然LabTool中已经设计好了数据脚本配置功能,那就直接在上边加一个GNSS采数功能,先满足组合导航的需要。
新的软件使用起来更加灵活,继承了LabTool-V1的通过IMU数据帧格式配置文件快速解析IMU数据的优点,又引入了常规的GNSS报文自动解析功能,直接将GNSS数据与数据同步显示与保存。
## 目录
- [LabTool-V2](#labtool-v2)
- [目录](#目录)
- [开发说明](#开发说明)
- [更新说明](#更新说明)
- [开发环境配置](#开发环境配置)
- [下载源码](#下载源码)
- [软件安装步骤](#软件安装步骤)
- [软件使用说明](#软件使用说明)
- [数据帧协议配置](#数据帧协议配置)
- [数据保存](#数据保存)
- [数据可视化](#数据可视化)
- [自动时间对齐,便于数据处理](#自动时间对齐便于数据处理)
- [文件目录说明](#文件目录说明)
- [软件架构](#软件架构)
- [使用到的开源程序](#使用到的开源程序)
- [作者](#作者)
- [版权说明](#版权说明)
## 开发说明
仓库中存储的是LabTool-V2 Qt项目的全部工程文件,包括源码、资源文件和项目配置文件。如果开发环境没有问题,可以直接用Qt Creator直接打开项目文件进行编译运行。
### 更新说明
- __20241213更新:加入GNSS轨迹显示__
利用GNSS数据位置数据,绘制载体轨迹图。
> 点击图片可查看视频演示:
[](http://www.navspace.tech:5244/LabTool%20v2.0%E5%AE%89%E8%A3%85%E5%8C%85/doc/test.mp4)
- __1 删除v1中QUC控件及代码__
v1版本中加入quc开源控件后UI更加美观,也增加常见的地平和航向指示控件;但是也带来了代码对环境要求较高(保证Qt版本、编译器版本和QUC库版本匹配),增加了二次开发的难度。
因此在v2版本中,首先删除了QUC相关控件,使项目不再依赖QUC控件。对于LED灯、拟物化的checkbox控件直接使用图片资源配合样式表实现,代码更加轻便。
- __2 加入GNSS数据采集功能__
v2版本中增加了GNSS数据采集功能,增加GNSS串口数据配置界面,打开串口后同时采集IMU数据和GNSS数据。双路串口的软件架构也可以修改成双IMU数据采集,以便于进行传递对准、高低精度IMU数据对比等试验。
- __3 加入GNSS数据显示与保存功能__
加入一个新的页面用来展示GNSS的实时数据。
存储数据中加入了GNSS速度、位置、时间和精度因子。
- __4 加入标度因数__
加入标度因数列,可以直接补偿或转换IMU的原始数据,直接存储为数据处理需要的格式。
- __5 更新Help的内容__
更新Help对话框中的内容,加入v2版本的介绍。
### 开发环境配置
1. LabTool-V2使用Qt 5.15.18 和 MinGW 8.1.0 32bits 进行编译,比上一版本略有不同,但是不影响项目编译。
2. 不能使用Qt6进行开发,会报错。
3. 移除了quc相关控件,不需要额外配置对此的支持。
### 下载源码
1. 复制指令到终端执行
> git clone git@gitee.com:tmrnic/lab-tool-v2.git
2. 点击右上角“克隆/下载”,选择zip下载
3. 开发环境说明:**Qt Creator 11.0.2, Qt 5.15.18, MinGW 8.1.0 32-bit**
### 软件安装步骤
1. 下载软件安装包:
a. 项目右侧发行版选择对应的安装包
b. 通过项目网站的下载地址下载安装包
c. 通过网盘下载安装包
2. 安装/解压软件后,双击LabTool.exe即可运行软件
3. 软件开发平台为Win11 22H2 操作系统,v1版本可以在win7正常运行,v2版本未测试
## 软件使用说明
LabTool是惯性导航系统使用的数据采集开源软件,具有可编辑协议帧、波形动态刷新、姿态仪表显示、数据实时捕获等特点。下图给出了LabTool的软件界面,主窗口可分为数据协议与串口配置、功能按键、状态栏与数据显示几个部分。

### 数据帧协议配置
LabTool通过读取用户配置的帧格式脚本实现数据接收与解析,从接收到的串口数据得到导航模块的输出结果。可以用提供的高精度导航模块帧格式脚本实现数据读取、显示与保存。帧格式脚本如下:
```
Frame_Header,uint8(hex),0xEB,------
Frame_Header,uint8(hex),0x90,------
Time_Stamp,float,56.801,
bmi-wx,float,-0.2593994,
bmi-wy,float,0.289917,
bmi-wz,float,0.213623,
bmi-fx,float,0.03800366,
bmi-fy,float,0.2590659,
bmi-fz,float,0.9942307,
bmi-temp,float,36.875,
pitch,float,1.304596e+11,
roll,float,-3.269794e+21,
yaw,float,1.011178e+31,
CHKSUM,uint8,0,
```
脚本每一行分为四列,分别对应变量名称、变量类型、默认数据和标度因数,用户使用时无需更改,直接加载提供的脚本即可。此手册中提供链接下载的LabTool软件中默认帧格式脚本即为高精度导航模块脚本,后续固件升级后,需要同步更新相应的帧格式脚本。
“帧协议定制”部分可一分为二,用户仅需设置脚本操作部分的按键即可。点击“加载数据帧”,然后选中导航模块的数据帧脚本,再点击“确认数据帧”完成脚本加载。右侧帧格式与数据显示界面中会出现导航模块数据协议对应的数据包结构。

### 数据保存
LabTool具有数据保存功能,在接收数据过程中以二进制形式保存全部串口通讯数据,并将解析后的数据按照文本格式保存。二进制原始数据主要用于调试,解析后的文本文件数据可以使用C程序或Matlab读取,用于导航算法调试。
| 文件|文件名| 说明|
|---|---|---|
|二进制文件 |xxxx.bin| 串口接收到的原始数据|
|文本文件 |xxxx.txt| 解析后数据,按行存储|
### 数据可视化
LabTool具有数据可视化功能,在数据显示界面选中需要画图的数据后,点击“曲线显示”就能打开实时更新的折线图。软件可以同时绘制三幅折线图,每个图中包含三项数据。

数据显示界面的右侧是绘图数据选择界面,每个图可以选择三项数据。

### 自动时间对齐,便于数据处理
LabTool具有自动时间对齐功能,保存数据时GNSS数据和IMU数据的时间对齐,便于后续数据处理。因此在组合导航时直接判断GNSS对应数据是否为非零即可确定量测是否有效。也可以根据GNSS中的IMU时间戳,使用imugpssyn函数进行时间同步。
```
imugpssyn(imu(:,end), gps1s(:,7));
...
[kgps, dt] = imugpssyn(k0, k1, 'F');
if kgps>0
gpskm = gps1s(kgps,1:7);
...
```
## 文件目录说明
QT项目全部文件如下:
```
LabTool-V2
├──.gitignore
├──LabTool-V2.pro
├──LabTool-V2.pro.user
├──LabTool-V2.pro.user.2341684.4.8-pre1
├──LabTool.ico
├──LICENSE
├──main.cpp
├──mainwindow.cpp
├──mainwindow.h
├──mainwindow.ui
├──mydashboard.cpp
├──mydashboard.h
├──mydashboard.ui
├──mydatatype.cpp
├──mydatatype.h
├──gnss_parse.cpp
├──gnss_parse.h
├──ReadMe.md
├──res.qrc
│
├─doc
│ feiji.png
│
├─Help
│ help.cpp
│ help.h
│ help.ui
│
├─Icon
│ about.png
│ AIMCNT.jpg
│ clear.png
│ COM.png
│ cursor.png
│ curve.png
│ dashBoard.png
│ fangda.png
│ feiji.png
│ help.png
│ ma.jpg
│ protocol.png
│ Screenshot.png
│ ShowLegend.png
│ start.png
│ stop.png
│
├─myPlot
│ mycurveplot.cpp
│ mycurveplot.h
│ mycurveplot.ui
│ qcustomplot.cpp
│ qcustomplot.h
│
├─mySerialPort
│ myserialcombox.cpp
│ myserialcombox.h
│ myserialport.cpp
│ myserialport.h
│
└─myTableWidget
mycomboxdelegate.cpp
mycomboxdelegate.h
```
## 软件架构
## 使用到的开源程序
|序号|项目|链接|
|---|---|---|
|1|LabTool v1.0| [
](https://gitee.com/zhu_hong_bao/qt-serial-port) |
|2|NSIS| [
](https://github.com/kichik/nsis) |
|3 |"完美的"README模板 |[
]((https://github.com/shaojintian/Best_README_template/tree/master)) |
|4 |NMEA报文解析| [
]((https://gitee.com/tmrnic/inertial-navigation-code/tree/master/NMEAParse_C)) |
## 作者
e-mail: yangxiaokang495@163.com
知乎:[TMRNic](https://www.zhihu.com/people/qikitaka)
网站:[NavSpave](http://www.navspace.tech)
**LabTool v1.0作者:[求索er(Gitee)](https://gitee.com/zhu_hong_bao) **
## 版权说明
该项目签署了GPL-3.0授权许可,详情请参阅 [LICENSE.txt](https://gitee.com/tmrnic/lab-tool-v2/blob/main/LICENSE)
欢迎正常使用,可不要故意删除作者信息和来源。
[forks-shield]: https://gitee.com/tmrnic/lab-tool-v2/badge/fork.svg?theme=dark
[stars-shield]: https://gitee.com/tmrnic/lab-tool-v2/badge/star.svg?theme=dark
[author-shield]: https://img.shields.io/badge/Author-TMRNic-orange
[license-shield]: https://img.shields.io/badge/License-GPL3.0-blue
[version-shield]: https://img.shields.io/badge/version-v2.0-brightgreen