# 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程序开发 杨 浩 软件测试