getPower()返回传感器在使用时使用的mA功率:
现在,我需要计算传感器配准使用了多少电池.
getPower()返回的值是否表示mAH(每小时mA)或其他?如果是,是否有办法获得电池mAH以计算传感器使用的电池百分比?
关于从加速度计数据中去除噪声,其他传感器数据,计算时空状态以及在Android和其他设备中使用卡尔曼滤波器存在很多问题.
显然,最简单的方法是在Android上实现JKalman过滤器,以便为汽车提供稳定的移动设备.
但是看看JKalman代码包中的示例实现,它并没有说太多,它实际上与其他Kalman实现非常不同.
他们像这样实例化一个卡尔曼类:
JKalman kalman = new JKalman(4, 2);
Run Code Online (Sandbox Code Playgroud)
根据定义在哪里
public JKalman(int dynam_params, int measure_params) throws Exception {
this(dynam_params, measure_params, 0);
}
Run Code Online (Sandbox Code Playgroud)
dynam_params是"测量向量维数"和measure_params是"状态向量维数".
如何将Android中读取的传感器数据映射到这些?
下面是加速度计的数据,每500ms采样一次.在其他听众中,有来自陀螺仪和指南针的数据.我该如何将这些数据转换为输入到卡尔曼?
@Override
public void onSensorChanged(SensorEvent event) {
actualTime = System.currentTimeMillis();
if(actualTime - lastUpdateAcc < 500)
return;
else{
lastUpdateAcc = actualTime;
//update myPosition
TextView tv = (TextView)findViewById(R.id.textView3);
tv.setText(String.format("X: %8.4f -- Y: %8.4f -- Z: %8.4f",
event.values[0], event.values[1], event.values[2]));
//draw on the screen
//draw new path, if one exists
} …Run Code Online (Sandbox Code Playgroud) 什么是无线测量两个物体(计算机,智能手机或专用设备)之间距离的最佳方法,这两个物体相距几米,精度达到~10厘米?这可能通过在WLan,蓝牙或GPS上进行捎带吗?
经过几个小时的搜索,我很困惑,所以我现在告诉我学到了什么,所以如果我错了请纠正我:
光传感器:周围光线
磁传感器:我可以到达北方的位置.
加速度传感器:重力XYZ,地球重力或任何加速度.
接近传感器:就像停车传感器一样.
方向传感器:告诉XYZ度形成其轴.
我已经尝试过那些传感器使用Android市场上的一些应用程序,比如"我的传感器",我可以确认,如果你将手机在桌子上方旋转,加速计传感器感觉不到.方向传感器似乎抓住了所有的动作.现在我可以得出结论,罗盘应用程序使用磁传感器来查看北方的位置,然后使用方向传感器来了解您使用设备的位置,对吧?
在纵向和横向模式之间切换使用"加速计传感器"并检查哪个轴上的地球重力.
Q1:所以如果一切正常,什么是"陀螺仪"?和"方向传感器"一样吗?
Q2:大多数设备都可以使用方向传感器吗?
问题3:方向传感器的其他用途是什么?
问题4:为什么大多数网站甚至维基百科都说方向传感器==加速计传感器?
-Rami
[编辑:删除了所有提到的Android版本 - 所有版本的android都存在此问题]
背景:当屏幕关闭时,许多Android手机不会通过在屏幕关闭时调用onSensorChanged()来为Accelerometer读数的应用程序提供更新.此行为在SO上进行了讨论,并在此处进一步说明 http://code.google.com/p/android/issues/detail?id=3708
在某些手机(Nexus S,Droid X2,...)上,加速度计值仅在值发生重大变化时提供.例如,坐在桌子上,每分钟可能有一次或零次更新
为了生成跨手机型号的强大代码,我如何区分每个屏幕缺少更新事件,以及每次非移动缺少更新?我应该维护手机型号的数据库吗?
我正在做一个关于室内定位的项目.我使用了NS2和一个名为Senelex的matlab GUI来查找节点的原始位置和估计位置.现在我想使用卡尔曼滤波器来估计节点/目标的位置.
例如:
如果我将目标的速度视为常数,我如何使用估计的或节点的原始位置的确定值来提供卡尔曼滤波器的输入.
以下是节点的估计位置和原始位置.
ori = [6.62650602409639 194.444444444445;
6.62650602409639 10.6837606837607;
192.168674698795 7.83475783475797;
192.168674698795 191.595441595442;
70.4819277108434 171.652421652422;
129.518072289157 168.803418803419;
24.6987951807229 144.586894586895;
42.7710843373494 79.0598290598291];
est = [6.62650602409639 194.444444444445;
6.62650602409639 10.6837606837607;
192.168674698795 7.83475783475797;
192.168674698795 191.595441595442;
70.7600705547484 171.847603055024;
129.443055817301 168.734648868329;
25.01956026761 144.890243978875;
42.6058125534278 79.1446327727804];
Run Code Online (Sandbox Code Playgroud)
如何使用这些作为卡尔曼滤波器的输入并使用卡尔曼滤波器估算目标?
我现在正在尝试创建一个监控振动的应用程序.我使用加速计完成工作,当记录的加速度超过一定阈值时,我将其称为触发器.当有触发器时,我想在触发时将加速度,磁场,光级数据(来自不同的传感器)记录到文件中.
现在的问题是:我可以从单个传感器获取数据,但无法找到如何同时从多个传感器获取数据的方法.例如:我可以设置一个sensorlistener来监控加速度计的变化,当我记录加速度数据时,我是否也可以在同一时间从其他传感器获取数据?
提前致谢.
我正在为我的Android应用程序使用传感器.我用一行代码注册传感器:
mySensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_NORMAL);
Run Code Online (Sandbox Code Playgroud)
我已经引入了一行代码来取消注册侦听器,因此它不会一直运行:
mySensorManager.unregisterListener(this);
Run Code Online (Sandbox Code Playgroud)
到目前为止它工作,但我需要在应用程序恢复时再次注册它.我需要知道我的sensorManager是否有一个注册的监听器,所以我可以再次注册或skit它.这样的事情可以做到吗?:
if (mySensorManager.getRegisteredListenerList == null){ registerListener() } else { .. }
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序来连接基于蓝牙的多传感器(SensorDrone).它总共包含大约15个传感器,所有这些传感器都可以使用芯片制造商创建的第三方闭源库与Android设备进行通信.
第三方库要求我实现一个自定义Java EventListener,它包含每个传感器的函数,当它的数据准备好使用时会被触发:
DroneEventListener droneEventListener = new DroneEventListener() {
@Override
public void temperatureMeasured(EventObject arg0) {
readTemperatureFromDrone();
}
@Override
public void pressureMeasured(EventObject arg0) { /*...*/ }
// Etc...
@Override
public void disconnectEvent(EventObject arg0) {
// Let the user know the bluetooth connection was lost
}
@Override
public void connectEvent(EventObject arg0) {
// Let the user know the device was connected
}
};
Run Code Online (Sandbox Code Playgroud)
但是,我希望与另一个名为funf的库合作,以获取Android内置传感器的信息.该库非常适合收集内置Android传感器和外部传感器的数据.它通过允许您创建自定义" 探测 "实现来实现此目的.但是,探针(通过库和惯例的建议)一次只能用于一个传感器.
所以,我的问题是这个; 有可能以某种方式将DroneEventListener()类细分为特定的传感器吗?之后,我可以轻松地为多传感器上的每个传感器创建自定义探头.
我意识到尝试细分抽象类可能是不好的做法,因为它在概念上是开发人员的合同.但是,我认为让这个代码与预先存在的,可靠且维护良好的库(funf)一起工作的温和黑客将是值得的.
或者,是否有任何其他创造性的解决方案,允许我使用制造商的库与funf?
我已经决定使用"细分"这个词语对我来说很清楚.我本质上意味着当我使用的只有一个时,我不想实现20个空白的方法.所选答案精确地解释了如何做到这一点.
我正在使用TI SensorTag,我希望它能够在我的手机不在范围内时通过蓝牙LE连接来存储数据.目前,传感器仅在设备处于无线范围内时才传输数据.
通过访问SensorTag上的固件,即使手机不在范围内,也可以使其存储数据,然后在设备可用时进行传输.我正在使用iPhone,使用他们的示例代码访问它.我也可以使用Android代码,如果有人认为它会更好.
是否可以告诉固件在本地记录此数据?如果是这样,需要通过蓝牙LE传输哪些命令?如果没有,是否可以修改固件以支持此功能?
sensor ×10
android ×7
java ×2
distance ×1
gyroscope ×1
ios ×1
listener ×1
magnetometer ×1
math ×1
matlab ×1
orientation ×1
physics ×1
registration ×1