我正在开发 Wii Motionplus,我已经使用 WiimoteLib 库提取了原始值.但是,当我对其进行标准化时,我得到的随机值与实际发生的情况不符. 这就是我正在规范化的方式: 校准 Motionplus(即找到对应于零的原始值;我通过将其保持静止一段时间来做到这一点) 对于随后读取的每个原始值,我从中减去零值以获得“相对"原始值. 然后,我使用 http://wiibrew.org/wiki/Wiimote/缩放这个值Extension_Controllers(检查 yaw_fast、pitch_fast 等),其中使用度量计算数值(原始值 8192 对应于 595 度/秒) 我将所有这些值随时间相加(离散积分),以获得 wiimote wrt 初始方向的角度. 但是,当我计算它并将其绘制在图表上时,其中一个轴的阶跃变化不会反映在图表中.我尝试使用数字罗盘与其进行比较,但虽然罗盘正确反映了值,但 wii 值完全不同(甚至模式也不相同)
以下是关于 sensor 的编程技术问答
我正在尝试使用 Raspberry Pi 2 Model B+通过 MCP3304 (5v VDD) 从光电二极管读取关于 IR 强度的模拟数据根据外部刺激,连续三次以约 10kHz 的速率(读数之间为 0.1 ms,或速率为 10 ksps)每秒一次,平均这些值,然后将它们与当前日期时间一起写入文本文件.光电二极管只是将数据读取到放大器,然后将其馈入 MCP3304,后者通过 SPI 将数据馈入 RPi.(实质上:RPi 接收数字输入,通过 MCP3304 和在线信号放大器从光电二极管触发三个连续样本.这三个样本存储在内存中,平均,然后与现有 CSV 的日期时间戳一起写入磁盘文本文件.)这一切都在 Python 2.7 上. 就目前而言,我正在获取
目前我正在实施一种头部跟踪解决方案,该解决方案从 2 个不同的来源获取偏航和俯仰;一个陀螺仪和一个磁场传感器. 我将这两个值都传递到了我的程序中,现在我正在尝试确定保持陀螺仪精度的最佳方法以及固定发射器 mf 传感器的无损特性.目前我正在使用 newYaw = currentGyroYaw + 0.05*(difference between) 将陀螺仪缓慢拖动到 mf 上,但它有一些相当恒定的运动. 有人建议我尝试使用卡尔曼滤波器,但我整天都在查找有关它的资源,但似乎无法弄清楚如何将它应用到我的场景中;以及在我的情况下所有的值是什么. 如果有人可以帮助计算步骤和计算,我将需要获取 2 个偏航/俯仰值并生成一个新的更准确的设置,我们将不胜感激.谢谢. 解决方案 基本上,这种技术称为传感器融合.是的,您可以使用基于卡尔曼滤波器的传感器融合.请阅读此 https://home.wlu.edu/~levys/kalman_tutorial/kalman_14.html
我正在编写一个 Android 应用程序,它需要知道后置摄像头相对于地平线的角度,而不是相对于它的最后位置.我为指南针和加速度计阅读的所有定义都没有说我可以做到这一点.有没有可能做到这一点? 解决方案 你应该使用加速度计. 这个想法如下,在静态相机中,作用在相机上的唯一力(由加速度计看到)是重力.这应该可以告诉你哪个方向是“向下".然后你需要做的是计算相机所面对的方向(这是一个常数,取决于你的加速度计的方向)和重力方向之间的角度. 点积(http://en.wikipedia.org/wiki/Dot_product)两个向量中的一个应该给你向量的余弦(如果两个向量是单位向量),那么使用 arccos 你应该能够得到以弧度为单位的角度. 因为根据定义,(真)水平线是向下 90º(pi/2 弧度),您应该从点积的结果中减去 pi/2,结果应该在 -pi/2 和 +pi/之间2. -x 的结果意味着相机“朝下"并与地平线成 x 角.+x 的结果意味着相机“向上
我正在开发一个需要连续处理加速值的应用程序一段时间(约一小时) - 是的,我真的很想这样做.处理涉及从时刻执行一些计算并更新UI.在(前景)内收集加速度 - 如果用户最小化应用程序,则应发生收集加速度. 我的问题是:实现这一点的最合适模式是什么.我不希望处理使应用程序UI无响应. 现在我在UI线程中收集加速度数据(在服务中).收集的数据比传递给某些计算的类,并基于它们广播意图,该意图在主活动中注册以更新UI. 我应该在服务中的工作线程中收集加速度数据吗? (这是可能的)? 或者我应该在另一个线程中进行处理吗? (如果没有挨饿UI/加速度收集线程或处理线程,则如何是这样做的最佳方法. 谢谢! 解决方案 尝试ASYNCTASK public class AsyncTaskTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceSta
我们正在寻找 InfluxDB 来存储大量流式测量(1-2 tera-samples).此外,我们还希望能够存储与测量相对应的音频和视频流(不是全部,而是很多).至少对我来说这是有道理的,因为它都是时基数据.但我在网上没有看到任何关于此的讨论. 我想视频数据可以分解成帧.并且音频数据可以分解为 100 毫秒的音频帧. 有没有人试过这个?有什么建议吗?干杯.凯文 解决方案 大多数时间序列数据库都针对存储浮点值进行了优化,偶尔会出现字符串.存储超过 1KB 的 BLOB 对于 InfluxDB 来说可能不是一个好的用例,尽管我们还没有对更大的二进制数据进行过多的性能测试. 也就是说,我不太了解您的用例.看起来更像是您需要索引音频和视频,而不是存储和分析时间序列数据.TSDB 不仅针对以时间为主轴的事物进行了优化,还针对聚合这些值和寻找随时间的变化进行了优化.您的用例似乎不涉及任何聚合或模式搜索,只是一个简单的按时间查找表. 我认为 NoSQL 数据库同样适用于此,或者
我有一个应用,感应设备的运动,如果移动设备,请提高警报.目前我正在使用加速度计.但我无法正常调整它.即使是小运动也会导致警报提高. 所以我的问题是哪种传感器适合任务?以及各种其他工作可用? 请帮助家伙.. 抱歉蹩脚的问题,我以为我可以在同样的问题中获得关于他人的发展经验的一些答案, 无论如何,这就是我所做的, 我在这个答案中使用了这个代码 猜测问题是通过过滤传感器数据,我的方法只是将漂浮物转换为INTS,使小数部分将被截断.但它不起作用.. 但上面的链接中的代码更好地使用了一些小型更改. 感谢您的建议.. 解决方案 只使用陀螺仪. 如果有人移动设备,他们一定会稍微倾斜. 检查陀螺仪是否有任何戏剧性的变化. http://developer.android.com/指南/主题/传感器/SENSORS_MOTION.HTML#SENSORS-MOTION-GYRO
我已经启用了我的应用程序中的邻近Wakelock,当接近传感器检测到某些东西时,它会关闭屏幕.但是当屏幕恢复时出现问题 - 它进入锁定屏幕,而不是我的应用程序.无论屏幕关闭的时间如何发生这种情况(即使传感器在几秒钟后被清除).这是我使用的代码: int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32; mProximityWakeLock = pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG); if(!mProximityWakeLock.isHeld()){ mProximityWakeLock.acquire(); } 有没有办法纠正该行为? 解决方案 如果不是安全的,则可以解除锁定屏幕,使用: getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 您可以在创建时调用
我使用sensor.type_orientation来确定设备的当前角度,但在API版本8上弃用了type_orientation.在SensorManager手册中,它是指Goodorientation函数才能使用type_orientation. 以下是手册: http://developer.android.com/reference/android/hardware/sensormanager.html#getorientation(float [],float []) 这是我的旧代码: public void onSensorChanged(SensorEvent event) { Log.d("debug","Sensor Changed"); if (event.sensor.getType()==Sensor.TYPE_ORIENTATION) { Log.d("debug",Float.toStr
我希望通过以下方法获得手机的当前方向: 通过getRotationMatrix()和getOrientation()获取初始方向(方位角). 增加陀螺仪读数随时间的集成,以获得当前方向. 电话方向: 手机的x-y平面与地面平面固定.即,在"发短信"的方向上. "getOrientation()"返回: Android API允许我轻松获得方向,即方位角,音高,滚动,从getOrientation()中滚动. 请注意此方法始终返回其范围内的值: [0, -PI] 和 [o, PI] . 我的问题: 由于陀螺仪读数的集成,由dR表示,可能非常大,因此当我做CurrentOrientation += dR时,CurrentOrientation可能超过 [0, -PI] 和 [o, PI] 范围. 需要哪些操作,以便我始终可以获得[0, -PI]和[o, PI]范围内的当前方向? 我在python中尝试过以下几点,但我非常怀疑它的正确性
有谁知道用于传感器的“标准化"Java API,它与 Java ME 密切相关,就像 JSR 256 一样? 我正在编写一个 Java 库,用于与由几种不同类型的传感器(主要是温度、湿度、GPS 等简单的东西)组成的传感器网络进行交互. 到目前为止,我已经推出了自己的界面,用户必须针对此编写应用程序.我想改变这种方法并实现一个“标准"API,以便实现与我的库没有那么紧密的联系. 我查看了 JSR 256,但这确实不是一个很好的解决方案,因为它适用于 Java ME,而且我的库主要由运行完整 Java SE 的 Android 设备或笔记本电脑使用. 解决方案 确实,Oracle 现在传播了消息,Java 8 需要某种形式的 SE Sensor API. 在 Java 8 之后添加到 OpenJDK:http://openjdk.java.net/projects/迪奥/适用于 Java ME 和 SE(嵌入式).
是可以知道手机指向哪个方向,同时看着相机预览,或者您必须让手机平板平板电脑. 感谢 解决方案 是 - 以下代码应该执行作业 public class Test extends Activity implements SensorEventListener{ public static float swRoll; public static float swPitch; public static float swAzimuth; public static SensorManager mSensorManager; public static Sensor accelerometer; public static Sensor magnetometer; public static float[] mAccelerometer = null; public static float[] mGeomagnetic = null; public void o
我觉得很难获得有关哪些Android手机有陀螺仪的任何综合信息,或者是否有Android手机均有完全.我读过一些(特别是三星)手机型号,具有至少一个6轴加速度计,但我也读到这与真正的陀螺仪不同. 所以我的问题是: 哪些Android手机有陀螺仪? (应该可以使用Android API的 Sensor.TYPE_GYROSCOPE ,它自API 3以来可用, 哪些Android手机有一个6轴加速度计? 对链接,规格等等的任何引用都非常感谢,当然当然会得到奖励. : - ) 谢谢你的帮助! 解决方案 自从我最近使用陀螺仪数据(稳定的罗盘),我试图用这些设备收集列表.这根本不是一个详尽的清单,但到目前为止,这是我所拥有的: * 手机: htc sensation htc sensation xl htc evo 3d htc一个s htc一个x 华为Ascend P1 华为Ascend x(U9000) 华为荣誉(U8860) Lg
我正在使用MATLAB的Arduino控制器构建一个系统在传感器数据中读取,触发实时馈送摄像机以捕获用于实时图像处理的图像.基于这些结果,通过控制器"经过一些所需延迟之后"进一步处理.现在我面临的问题是我无法读取传感器数据,直到上一级的最后一步完成.我希望能够连续读取传感器数据并进入图像的图像,即使在基于先前图像的最后处理阶段仍在执行(由于提供的延迟).感谢您的任何建议/帮助.对不起,如果我的英语不好,我希望我很清楚. 解决方案 您要求在异步模式下执行MATLAB代码.由于这可能很难使用MatlabPool生成的并行进程(例如Parfor),您可以考虑将代码写入 mpi .通过MPI,您可以在合并/定时可以通过主进程控制的同时在每个从过程上分配要在每个从过程上运行的代码行.
嗨,这里有一个有趣的问题! 我有这个服务: public class SensorService extends Service implements SensorEventListener { private static final String TAG = "MyService"; private MyServiceBinder myServiceBinder = new MyServiceBinder(); private SensorManager mSensorManager; ........... private PowerManager.WakeLock wl; private Handler mPeriodicEventHandler; //Per interrompere la trasformata a tempo private int PERIODIC_EVENT_TIMEOUT = 5000; private int x=0
我正在开发一个应用程序,该应用程序将使用磁力计数据进行交互,从手机移动磁铁.这工作正常(足够),但似乎当我将磁铁移动太靠近手机时,发生明显的滞后,并且这些消息吐出到日志: 标记消息 AK8973 HRET = AKSC_HOF_DSS_START AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_REQUEST AK8973 HRET = AKSC_HOF_DSS_COMPLETE 这也可以例如在市场上提供的"Compass 3D"中的应用.移动耳机与电话直接
我正在尝试为我的LG P990开发一个光传感器应用程序来检测激光(不要问为什么). 代码如下所示: package soma.de.Light; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;
加速度计UPDATE事件从未触发,返回true,当闪存应用程序在Android Web浏览器中运行时. 如何使其工作? this.accelerometer = new Accelerometer(); accelerometer.addEventListener(AccelerometerEvent.UPDATE, onAccelerometerUpdate); ref: http://blogs.adobe.com/cantrell/archives/2010/04/simple_accelerometer_example.html ref: http://help.adobe.com/en_us/flashplatform/reference/actionscript/3/flash/sensors/accelerometer.html#issupported 我的设备是三星Galaxy s. 它确实在Android上作
我正在使用一个 ti sensortag ,当我的手机不在范围内通过蓝牙le连接时,我希望它能够存储数据.目前,传感器仅当设备在无线范围内时传输数据. 通过在Sensortag上访问固件,似乎即使手机不在范围内,也应该可以使其存储数据,然后在设备可用时传输它.我正在使用iPhone,使用他们的示例代码.我也可以使用Android代码,如果有人认为这会更好. 是否可以告诉固件在本地记录此数据?如果是这样,需要通过蓝牙le传输什么命令?如果没有,可以修改固件是否支持此功能? 解决方案 我有相同的问题,并希望在未连接iPhone时记录数据.我通过修改Sensortag固件来解决数据来解决数据记录.基本上我实现了使用额外的特征记录的新服务(如启动/停止,重置,日志间隔,读取开始,读取结束,数据). 但是我告诉你,这种实现需要一些修改和测试.您还需要IAR编译器和SDK从TI开始入门.我仅实现了温度和湿度测井.我对其他传感器数据不感兴趣.