使用加速度传感器从3DVector获取速度
我想知道是否可以使用加速度计传感器计算手机的速度.我的意思是有人一次挥动电话,我可以测量用于执行此操作的速度或力量...或其他任何可以证明挥杆强大的功能:D在使用加速度计后一段时间(在VS和模拟器中)我认为它的起作用与我有所不同. 可以实现这样的目标吗? 解决方案 否,不准确. 尽管我的先前答案在这里是关于位置的,速度也相同.也许令人惊讶的是,正是陀螺酱使精度弄乱了. 根据您想做的事情,您可能会更好地使用 dtw . 整合线性加速度(加速度减去重力)应在很短的时间间隔内工作,尤其是如果您不需要准确的结果.您还必须假设一些初始速度.
8 2024-04-23
编程技术问答社区
如何将一个三维加速度转换为一个旋转?
我有一个程序,该程序在Windows Phone 7中使用加速度计,我需要检测设备的旋转是什么.我有X,Y,Z加速度,需要以某种方式确定手机的方向.如何实现? (旋转值应以度为单位) 解决方案 尽管我正在iPhone上工作,但基本上应该存在同样的问题.您的硬件需要一个陀螺仪传感器来描述旋转,尤其是与重力平行的旋转(我们称此为z,x是正确的,y是正确的).如果设备平放在桌子上,并且您围绕此Z轴旋转,则仅由离心力产生的微小加速度.因此您可以获取有关旋转的一些信息,但是您受到限制: 1)用户必须以特定方式固定设备才能正确检测旋转 2)即使您获得了45度的最佳案例,也很难获得所有三个维度.如果您只能在2个旋转方向上限制检测. ,您会更好. 3)您仅限于旋转或翻译,但是将旋转的检测与线性动作相结合非常困难. 结论:对于赛车游戏强制用户以一定角度将设备保持限制,限制了方向盘的Z旋转,例如电源幻灯片或其他. 其他解决方案 使用轴可能会令人困惑.我呆在x的方向以
0 2024-04-22
编程技术问答社区
unity3d-加速度计灵敏度
我正在unity3d 4.3中测试加速度计代码.我想做的是简单地更改iPad倾斜的对象角度,以像真实的现场一样伪造视图角度.一切正常,除了加速度计太敏感的事实外,我可以看到GameObject就像闪烁一样,即使我把它放在桌子上也是如此.我该如何使其降低敏感性,以便即使您用手握住,角度也会根据倾斜而改变,并且物体保持稳定? 这是我的代码: void Update () { Vector3 dir = Vector3.zero; dir.x = Mathf.Round(Input.acceleration.x * 1000.0f) / 1000.0f; dir.y = Mathf.Round(Input.acceleration.y * 1000.0f) / 1000.0f; dir.z = Mathf.Round(Input.acceleration.z * 1000.0f) / 1000.0f;
4 2024-04-21
编程技术问答社区
在windows phone 8.1中使用加速器传感器数据在画布上画线
我是根据设备移动的画布上的,我想根据移动运动在画布中绘制不同的字符. 当前它的工作正常字符. 如何在加速度计值中找到暂停.有逻辑吗?还要告诉我如何平滑加速度计值,以便用户可以在没有噪声的情况下绘制线路. 解决方案 我无助于加速器部件,但是对于数据中的噪声,这是一种使用 加权运动平均值 . 基础知识很简单: 找出您要用于平滑的当前之前有多少点 根据长度F.EX计算重量.如果长度为5,则重量= 1+2+3+4+5 = 15 迭代每个数据点从重量长度开始(您可以从1开始并将加权切成短 - 下方我将演示后一种方法) ) 对于点电流-5用1/15乘以1/15,对于电流-4与2/15等乘以.总和存储为该点的值,重复下一个值点 实时演示 下面是一个演示(输入完整页面以查看所有图形).我用JavaScript写了它,因此可以在答案中现场显示.我认为您将其转换为所使用的语言(尚未说明)应该几乎没有问题. 移动滑块以增加重量的点数.您可以通过多个通行
4 2024-04-17
编程技术问答社区
在Unity 3D中旋转物体
我可以使用以下代码使用加速度计旋转对象. transform.rotation = Quaternion.LookRotation(Input.acceleration.normalized, Vector3.up); 但是我想像屏幕一样旋转对象 - 0、90、180和360度.我该如何使用Unity 3D进行操作? 解决方案 您可以使用transform.rotation这样: transform.rotation = new Quaternion(rotx, roty, rotz, rotw); 或 您可以使用transform.Rotate这样: transform.Rotate(rotx, roty, rotz); quaternion的文档 transform.rotation.rotation.rotation.rotation.rotation.rotation.rotation 用加速度计输入旋转屏幕的示例:
12 2024-04-12
编程技术问答社区
加速器的最小和最大值范围及传感器数据转换
我有摩托罗拉的Moto G 16 GB设备.它具有LIS3DH 3轴加速度计. 用于读取最大和加速度计的最小值,我使用了此API. getMaximumRange() 但是,对于我的设备,我得到值 39.24 所以我虽然39.24/9.8 = 〜4.00 s我的范围是+/- 4G 但是,当我简单地读取x,y,z数据并将其存储在文件中时,并在将最大加速度加速到我的智能手机时查看值,然后将值显示为 76 m/sec2 这是什么意思? 我设备的这个错误吗? 如何以 +-2G值转换此值.我的算法希望以 +-2g格式的价值如何给予? 如何执行传感器数据值的剪切或下调? 解决方案 Moto G具有动态配置传感器.最初,它以4G模式配置.但是,当您对移动设备加速时,它会更改IT传感器模式并切换到8G,并且您仍然可以自动提供更多的加速度.一段时间后,它返回4G模式. 您可以在此范围更改上使用Sensocr精确度更改回调.
10 2024-04-09
编程技术问答社区
结合陀螺仪和加速器数据
我正在使用LEGO Mindstorm的NXT系统构建平衡机器人.我使用的是Hitechnic的两个传感器,第一个是加速度计,第二个是陀螺仪.我已经成功地从两个传感器和派生角度过滤了-90至90度之间的噪声,其中0度完全平衡. 我的下一个挑战是将两个传感器值组合在一起,以校正陀螺仪的漂移.下面是我从实际数据创建的示例图,以证明从陀螺仪的漂移: 我看到的最常用的方法是将这些传感器组合起来,岩石固体是使用卡尔曼滤波器.但是,我不是微积分专家,我真的不了解数学符号,但是我确实了解源代码中的数学. 我正在使用robotc(就像其他任何C衍生物一样),如果有人可以给我示例如何在c. 中给我实现这一目标的例子 谢谢您的帮助! 解决方案结果: 好吧,Kersny通过向我介绍互补过滤器来解决我的问题.这是一个说明我的结果的图: 结果#1 结果#2 您可以看到,滤波器漂移的滤波器校正并将两个信号结合到一个平滑信号中. 编辑:,由于我无论如何都要修复
0 2024-04-05
编程技术问答社区
如何制作一个BLE网状网络?
我一直想知道无线耳塞的工作方式并遇到了这张图像.我不知道如何复制以下图像中显示的内容并想学习如何做. 我的最终目标是能够将智能手机连接到设备,同时仍然能够播放音乐到蓝牙耳机.我读到 ble 4.1 网格,我不确定这是否会有所帮助. 我已经为多个设备传达的可能方式制作了图像,但是我没有足够的声誉来附加 XD .我会尽力形容它们. 1)所有设备都可以同时与智能手机进行通信. 2)所有设备连接到将数据传输到智能手机的集线器. 3)一个设备是集线器本身,并在发送自己的数据时将所有其他设备的数据传输. 4)彼此的设备中继信息,直到智能手机收到所需的数据为止. 5)另一种可能性是拥有一个网格结构,设备通过网络中将所有消息传递到所有消息,直到该消息的目的是为其接收. 我希望制定一个项目,在该项目中,我制作的蓝牙设备不会妨碍用户同时连接和使用其他蓝牙设备. 感谢您的阅读,我期待着所有答复. 图像1: 图像2: 图像3: 图像4: 解决方
4 2024-04-01
编程技术问答社区
在objective-c中把二进制的两补数据转换成整数
我有一些来自加速度计的二进制数据(TwoS补充),我需要将其转换为整数.是否有标准库功能,或者我需要编写自己的代码? 例如:我从ACCLELOMETER接收一个NSDATA对象,当转换为十六进制时,它看起来像这样: C0088001803F 是3个字节数据的3个块的串联: x = C008 y = 8001 z = 803F 仅关注X轴: hex = C008 decimal = 49160 binary = 1100000000001000 twos complement = -16376 是否有标准功能可以从二下的C008转换为-16376? 谢谢. 解决方案 类似: const int8_t* bytes = (const int8_t*) [nsDataObject bytes]; int32_t x = (bytes[0] >
2 2024-03-30
编程技术问答社区
iPhone上的Nike+ GPS如何在后台接收加速度计更新?
iOS 5的新的Nike+ GPS应用程序能够在后台处理加速度计(从而允许进行室内跑步机跟踪).这怎么可能?当我将应用程序放在后台时,它停止接收事件.我使用标准的UIACCELEREMEMEM API. 解决方案 为了为这个问题提供答案,即使它已经是自我回答的... "如果您使用较新的核心运动API,则可以在后台接收更新." 这是一个示例: - (void)startAccelerationCollection { [self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMAccelerometerData *data, NSError *error) { dispatch_async(dispatch_ge
4 2024-03-27
编程技术问答社区
背景中的计步器
我知道这已经被问到了100万次,但是为我弄清楚这是不可能的. 所以我需要构建一个计步器应用程序,如果他们将应用程序发送到背景超过10分钟,请继续进行计数步骤活动. 客户希望根本不使用GP,也不会播放无声音频,因为Apple可能会拒绝它. 有人对如何做到这一点吗? 客户端将Runtastic Matorpor应用程序作为参考,我一直在分析它,并且它不使用,也不使用位置,也没有在后台运行超过10分钟. 有线索吗?这样做真的不可能吗?有可能使Runtastic的人同意Apple使用一些秘密API在后台运行? 解决方案 我查看了Runtastic计时计,它在其Info.plist文件中具有以下内容: UIBackgroundModes audio external-accessory 基本上,他们可以执行音频技
2 2024-03-27
编程技术问答社区
检测设备方向
我需要检测Android设备的方向更改而不使用传感器数据手动播放,同时保持活动方向粘贴到某些方向 onConfigurationChange将无法正常工作,因为我的活动不会旋转. 使用传感器数据来检测方向变化,我认为作为轮子的发明,因为Android确实已经嵌入了算法的实现,以检测设备方向的变化.从另一方面,检测方向变化不是这样的简单检查. public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER || event.values.length
2 2024-03-21
编程技术问答社区
如何提高加速度计和罗盘传感器的精度?
我正在创建一个增强现实应用程序,该应用程序在手机面对关注点时只需视觉文字视图(WICH GPS位置存储在手机上).文本视图绘制在屏幕上的兴趣点位置. 它可以正常运行,问题是指南针和加速度计非常"变体",由于传感器的无知性,文本视图正在不断上下移动. 有一种解决方法吗? 解决方案 我们的问题是相同的.当我创建简单的增强现实项目时,我也有同样的问题.解决方案是使用指数平滑或移动平均功能.我建议指数平滑,因为它只需要存储一个先前的值.示例实现提供下面的可用: private float[] exponentialSmoothing( float[] input, float[] output, float alpha ) { if ( output == null ) return input; for ( int i=0; i
6 2024-03-19
编程技术问答社区
如何用CMMotionManager替换UIAccelerometer?
我是iOS开发的新手. 我遵循 ray wenderlich "> ray wenderlich 创建一个基于位置的AR应用程序.但是,本教程使用 ar art toolkit 尚未更新一段时间.自iOS 5以来,它使用的UIACCELEREMETER已经被弃用,因此,当我尝试在iPhone上运行它(iOS 7.0.4)时,Xcode表示有3个警告,并且所有警告都是由UIACCELERERMOMER引起的. 结果是,所有标记都停留在屏幕上方的中心,而倾斜度根本不起作用. 根据我的研究,我想我需要做的是使用cmmotionmanager而不是UIACCELEREMETER,但是正如我之前所说,我完全是iOS开发的新手,不知道如何替换它. 这是源代码.我添加了一些小功能,以便您可以手动添加Google数据库中不在的位置,但是我认为这些功能不会导致问题. 感谢您提前的帮助! 解决方案 尝试以下链接: https://www.inkling.com/read/learn
6 2024-03-19
编程技术问答社区
使用getRotationMatrix()和getOrientation()查找方向。
我试图在磁性北面方向从摄像机中指出矢量的方向.我的印象是我需要使用从getIrientation()返回的值,但我不确定它们代表什么.当我更改手机的方向时,我从getorientation()中获得的值不会可预测(旋转90度不会将值更改为90度).我需要知道getIrientation()返回的值是什么.到目前为止,我已经写了下面的内容: package com.example.orientation; 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; im
10 2024-03-19
编程技术问答社区
用Core Motion从加速度计数据中获取位移
我正在开发一个增强的现实应用程序(目前)希望在表面顶部显示一个简单的立方体,并能够在太空中移动(旋转和流离失所),以查看所有不同的位置角度.校准相机的问题在这里不适用,因为我要求用户将iPhone放在他想要放置的表面上,然后按下按钮重置态度. 通过陀螺仪和核心运动,找出相机旋转非常简单.我这样做: if (referenceAttitude != nil) { [attitude multiplyByInverseOfAttitude:referenceAttitude]; } CMRotationMatrix mat = attitude.rotationMatrix; GLfloat rotMat[] = { mat.m11, mat.m21, mat.m31, 0, mat.m12, mat.m22, mat.m32, 0, mat.m13, mat.m23, mat.m33, 0, 0, 0, 0, 1 }; glMultMat
8 2024-03-19
编程技术问答社区
了解FFT输出
我需要一些帮助了解DFT/FFT计算的输出. 我是一位经验丰富的软件工程师,需要解释一些智能手机加速度计读数,例如查找主要频率.不幸的是,我在十五年前的大部分大学EE课程中都睡了,但是过去几天我一直在阅读DFT和FFT(显然很少). 请,没有"去参加EE课"的答复.我实际上打算这样做,如果我的雇主付给我付款. :) 所以这是我的问题: 我以32 Hz捕获了一个信号.这是一个1秒的32点样本,我在Excel中绘制了图表. 我得到了一些用哥伦比亚大学的Java撰写(在遵循" )的帖子中遵循了建议. Java中的快速FFT "). 该程序的输出如下.我相信它正在运行现场FFT,因此它重新使用了输入和输出的相同缓冲区. Before: Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751
4 2024-03-19
编程技术问答社区
将加速度计数据推入一个数组
我在数组中的加速度计记录z轴数据时遇到困难. 我认为我可能会在一些基本的Java规则上失败,但这是我想做的: private ArrayList z = new ArrayList(); protected void onCreate(Bundle savedInstanceState) { SensorManager manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = manager .getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } public void onSensorChanged(SensorEvent event
10 2024-03-07
编程技术问答社区
如何正确初始化I2C stm32?
我想从ADXL345加速度计获取数据,但似乎我将其连接不正确. scl- pc6(带有10k电阻器) SDA-PC7(带有10K电阻器) sdo- gnd CS -VCC gnd -gnd 3.3V -VCC 这是我的代码: void I2CG_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_InitStructure; RCC_AHBPeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // I2CG clock enable RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2CG, ENABLE); RCC_
8 2024-03-03
编程技术问答社区