# Android-PSINSToolbox
**Repository Path**: heiwa0519/android-psinstoolbox
## Basic Information
- **Project Name**: Android-PSINSToolbox
- **Description**: Android手机采集IMU数据后,用严老师的PSNS工具箱(http://www.psins.org.cn/kydm)完成组合导航或者航姿解算。
虽然手机中的IMU精度较低,但是还是可以用手机平台实现完整的组合导航解算功能。对于组合导航算法、MEMS航姿算法学习有一定帮助。
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: https://zhuanlan.zhihu.com/p/401588028
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 20
- **Created**: 2021-11-19
- **Last Updated**: 2023-12-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Android-PSINSToolbox
(西北工业大学·自动化学院)
## 介绍
项目可实现Android设备上运动传感器以及GNSS数据读取,整理数据后使用PSINS Toolbox(C++)版本实现实时组合导航解算。虽然智能手机中的传感器精度较低,很难实现精确定位解算,获取有意义的导航结果,但是获取传感器数据较为容易,可以作为学习Android开发、IMU等传感器数据采集与处理,和PSINS工具箱学习的简单应用实例。
这一版本没有进行程序设计规划,在项目进行时,一直是想到什么就写什么,所以程序结构比较乱,代码没有精简优化,可读性不强。如有改进意见可以留言评论。
## 软件架构
程序主要功能都在MainActivity中实现,创建时就完成所有控件的初始化、为传感器和GNSS注册监听器。消息处理主要更新数据显示,在不同传感器更新后按照设置的间隔刷新数据显示内容。
手机中IMU的传感器精度较低,在获取数据后首先按固定时间进行数据平滑,然后再进行低通滤波,将滤波后的结果作为导航解算的输入值。
## 安装教程
直接下载网页右侧发行版安装,App需要获取定位权限,并保证手机定位打开,否则会可能出现闪退
部分手机可能存在没有IMU数据的情况
## 使用说明
### (1)二次开发说明
MainActivity中的IMUdataTask定时完成传感器数据平滑与异常值隔离,并根据导航状态进行解算。
MainActivity的最后几行是PSINS工具箱(C++)的函数接口,分别实现航姿算法初始化、航姿解算更新、KFApp初始化、KF参数设置、KF时间更新、KF量测更新。如有需要可以在native-lib.cpp中修改以上函数的实例。
### (2)数据更新
程序启动后会自动开始接收手机运动传感器数据,包括IMU、磁场强度、气压传感器和GNSS。所以手机需要打开系统精确位置开关,同时授权应用位置获取、文件读取等权限。由于手机硬件差异和厂商设置的不同,部分手机会读取不到IMU传感器数据,开发平台是小米10系列,所以小米手机使用应当没什么问题。
### (3)功能按键
底部有7个按键,但是因为是在程序调试过程中临时加上的,所以使用逻辑有些混乱。
[**KF参数设置**]
根据使用情况调整KF参数,或回复成默认参数;
[**开始航姿解算**]
利用角速度、加速度和磁场数据进行航姿解算,得到的姿态作为组合导航的初始姿态角;
[**组合导航**]
完成KF初始化,进行KF组合导航;
[**保存数据**]
保存传感器数据、导航数据与KF状态与协方差数据,组合导航开始后自动进行数据保存;
[**关于应用**]
显示应用说明、数据保存格式等;
[**打开文件**]
使用系统文件管理器,打开保存的数据(*Android11及以上版本无法打开,待优化*);
[**微信分享**]
调用微信分享API发送数据(*旧的函数无法使用,尚未完成*)。
## 测试结果
| 机型 |测试结果|
|-------------------|-----|
|xiaomi 10 pro |正常 |
|xiaomi 10 |正常 |
|xiaomi mix2s |正常 |
|xiaomi 6 |正常 |
|Honor |正常 |
## 参与贡献
杨小康 Android程序开发
杨 浩 软件测试