我正在开发一个Android应用程序来跟踪室内位置.我的手机是使用两个传感器的Google Nexus S,第一个是加速度计,第二个是陀螺仪.
我的想法是,从起始参考点(已知的GPS位置),使用2个传感器(用于运动的加速度计和用于方向的陀螺仪)在移动时跟踪手机.并在用户出发时显示在地图上.
但问题是我不知道如何将这两种传感器结合起来给我一个实际位置?
我在互联网上看过一些关于"kalman过滤器"的文章,经过一些研究后我发现那个过滤器对我来说非常复杂/太多了)特别是在java for Android(cpu杀手)中编码
有人有经验可以与我分享使用陀螺仪和加速度计的室内定位系统吗?
从今天早上起,我无法构建我的Android应用,因为我收到此错误
- 出了什么问题:任务执行失败':app:transformDexArchiveWithDexMergerForDebug'.
com.android.build.api.transform.TransformException:com.android.dex.DexException:多个dex文件定义Lcom/google/android/gms/internal/measurement/zzabn;
我已经尝试将Firebase版本相应地提升到15.0.2,但后来又出现了其他错误......
任务:app:processDebugGoogleServices找到com.google.android.gms:play-services-maps:15.0.0,但google-services插件需要15.0.2版.
com.google.android.gms:play-services-maps:15.0.2甚至还没有发布?
我有一个推动生产的构建,构建应用程序的最佳方法是什么?
最近我做了一些研究,使用加速度计+陀螺仪来使用那些传感器在没有GPS帮助的情况下跟踪智能手机(参见这篇文章) 基于陀螺仪和加速度计的室内定位系统
为此我需要我的方向(角度(俯仰,滚动等))所以这里到目前为止我所做的:
public void onSensorChanged(SensorEvent arg0) {
if (arg0.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
accel[0] = arg0.values[0];
accel[1] = arg0.values[1];
accel[2] = arg0.values[2];
pitch = Math.toDegrees(Math.atan2(accel[1], Math.sqrt(Math.pow(accel[2], 2) + Math.pow(accel[0], 2))));
tv2.setText("Pitch: " + pitch + "\n" + "Roll: " + roll);
} else if (arg0.sensor.getType() == Sensor.TYPE_GYROSCOPE )
{
if (timestamp != 0) {
final float dT = (arg0.timestamp - timestamp) * NS2S;
angle[0] += arg0.values[0] * dT;
filtered_angle[0] = (0.98f) * (filtered_angle[0] + arg0.values[0] * dT) + (0.02f)* (pitch); …Run Code Online (Sandbox Code Playgroud) 我正在使用Android设备获取标题(方位角或偏航角).
Android API使用Accelerometer值+ mganetic字段来计算矩阵旋转,然后从矩阵中提取方位角(也称为SensorManager.getOrientation(...))但结果非常不准确!特别是如果手机受到某些磁性物质的干扰.
然后我有陀螺仪,如果我整合了陀螺仪时间的价值,我就能得到一个实际的角度,但是像所有人都知道的那样:p,这可能会漂移... 10秒后甚至很难我'我没有移动10°漂移的角度......
所以在这里,我在一侧有accel + magneto的结果,它在磁场附近相当废话,另一方面我有陀螺的结果非常好,但随着时间的推移漂移......
所以我的问题是,是否有一种简单或聪明的方法将两个结果组合在一起以获得一种"稳健"的航向估算?我说很容易,因为我知道有卡尔曼滤波器..但即使是艰难的我读了理论50次我也不能得到一个该死的东西:).
谢谢!
我使用 MapTiler 创建了一个 MBtile 文件https://www.maptiler.com/
我可以使用 OpenStreetMap 很好地加载这个 MBtile
map.setTileSource(new XYTileSource("MyMap", 0, 18, 256, ".jpg", new String[] {}));
Run Code Online (Sandbox Code Playgroud)
但我无法使用谷歌地图加载它(使用我找到的唯一库,https://github.com/cocoahero/android-gmaps-addons)
有人知道更好的库来使用 Google 地图加载 Mbtiles 吗?