空鼠遥控器软件设计

空鼠遥控器的设计思路


前言

写这篇文章主要是因为自己想要研究下其中的姿态解算算法原理,才有下面这篇。
通常的姿态解算是用到四元数处理,然而我用到的是基本旋转变换和基坐标变换。


提示:以下是本篇文章正文内容,下面案例可供参考

一、空鼠遥控器简介

1.遥控器功能

如下图所示,遥控器里有个传感器,操作遥控器空中上下左右移动,遥控器里面的陀螺仪会给出相应的数据,之后通过无线传输给智能显示设备,使设备里的鼠标指针移动,达到空中体感操控鼠标移动的目的。
在这里插入图片描述

2.六轴陀螺仪

六轴陀螺仪,三轴加速度和三轴角速度,一般规格书里都会给出陀螺仪的正方向,如下图,是右手坐标系。在这里插入图片描述

陀螺仪测量的就是XYZ三个轴方向上的加速度以及绕着这三个轴转动的角速度。

二、姿态更新算法

1.算法前的分析

根据遥控器的功能需求,最后需求的结果是智能显示设备上鼠标指针的移动量,而这个移动量通过三维空间里的旋转角度得到,如下图,设定三维坐标系,Y轴水平指向显示设备,Z轴垂直指向天,X轴垂直与Y和Z轴的平面,方向符合右手定则,指向右侧。后面定义这个坐标系为R系 。

在这里插入图片描述
接下来给遥控器设定三维坐标系,由于陀螺仪IC贴合在遥控器上,遥控器的坐标轴与IC坐标轴重合,所以之下使用陀螺仪的三维系表示,如下图,后面定义这个坐标系为B系。
在这里插入图片描述
可以看出R系是不动的,而B系跟随手势变化而变化,陀螺仪直接输出的原始数据是根据B系来的的,所以最后的目地就是由在B系中的变化求在R系的变化。
在这里插入图片描述

2.算法基础知识

空间向量

坐标系上的点是可以用向量的形式表示。
例在一个二维坐标系上的一个点P, 并设定X、Y轴的单位向量ij,如下图以向量的形式表示。
在这里插入图片描述
ij是单位向量
矩阵形式:

那么三维坐标系的点P就表示为:

旋转矩阵

a、
首先是以二维坐标系分析,如下图。
在这里插入图片描述

坐标系上的一个点P绕原点逆时针旋转β角度到点P’,
点P的坐标可表示为:

点P’的坐标表示为:
在这里插入图片描述
可写成矩阵相乘的形式



由上式可以得出点P’的坐标可以由P左乘一个二阶矩阵得到,这个二阶矩阵就是变换矩阵,即在二维坐标中,点P绕点O逆时针(逆时针角度为正)转动β角度的变换矩阵为

下面看二维变换的另一个要点,如下图,

在这里插入图片描述
则点P’‘的坐标可以表示为点P先逆时针转动a角度到点P’

再由点P’逆时针转动b角度得到P’’



也可以直接由P逆时针转动c角度到P’’

通过矩阵的计算可得

由上面的结果可以得出,多个变换动作可以合成一个大的变换动作,一个变换动作也可以分解成多个小的变换动作。
b、
三维空间旋转矩阵的推倒与二维类似,如下图,点P在三维坐标系XYZ中绕Z轴以右手螺旋正方形旋转θ度。
在这里插入图片描述
先将点P的运动投影到XOY平面上,则绕Z轴旋转的θ度就是XOY平面上绕O点旋转的θ度,X、Y轴的坐标表示与二维平面一样

而绕Z轴运动,Z轴上的坐标是不变的,所以通过矩阵的计算可以简单得到P’的坐标:

则在三维空间中点P绕Z轴正方向旋转θ角度的旋转矩阵为:

同理,可得到,绕X轴正方向旋转ψ角度和绕Y轴旋转ω分别为:


根据上面二维变换的合成与分解,在三维空间的一个物体先绕X轴正方向旋转ψ,再绕Y轴旋转ω,最后再绕Z轴旋转θ后,可得到
在这里插入图片描述
计算后可得到一个三阶矩阵
在这里插入图片描述
设一个在三维坐标上的点绕XYZ轴旋转的旋转变换为

旋转矩阵

再结合上面计算的三阶矩阵,可以推出
在这里插入图片描述
由此可得出只要空间变换的旋转矩阵,就可由此矩阵得到绕XYZ轴运动的一个角度。

基向量变换

上节所讲的旋转矩阵都是基于在同一个坐标系下的,就以坐标的矩阵表达形式来看

矩阵里面的只是一个数字,是一个标量,要想由此确认坐标系里具体的位置是要有个具体的基向量,坐标的矩阵表示应该是

向量的表示更准确

假如这个基向量改变后,那么这个矩阵里数字也会改变,下面分析下这个怎么变。
还是先以二维空间分析,再过渡到三维中去,如下图,
在这里插入图片描述
由图中可看到,在b系由ij构成的坐标系中,有一个点P坐标为,

这个点P在由r系mn构成坐标系中的坐标为

下面分析下这两者的关系,为了好分析,可将r系转为我们熟悉的垂直水平的坐标轴,并将b系坐标轴去掉,只保留基向量,如下图
在这里插入图片描述
可以看出ij在r系中都可由对应的坐标表示出来,则点P

又由于基向量都是单位向量,且这里用到的变换只有旋转并无拉伸,所以b系中各个基向量在r系中的坐标都可以由该向量与r系中的mn夹角的余弦分量表示,则上式为
那么左边乘就是基变换矩阵。

同样的,在三维坐标系中,设r系基向量为ijk,b系基向量为mnp,那么r系到b系的基变换矩阵为

记从r坐标系变换到b坐标系的坐标变换为

基变换矩阵为

上面变换公式中等式两边同时乘上基变换矩阵的逆矩阵,由逆矩阵的定义可轻松得到从b系到r系的基变换矩阵为

3.开始算法

根据上面的分析,目的就是要求的R系的旋转矩阵,如下

而陀螺仪给出的是B系的旋转角度,所以需要对这个公式做出些变化。
根据之前讲的基变换,从R系到B系的表示为

然后在B系里做一个旋转变换

再由变换后的从B系转到R系,

最终得到R系中的坐标
在这里插入图片描述
上式红框中等价于R系中的变换矩阵,也就是将红框内的结果计算出来,再结合三阶矩阵的角度公式,即可得到对应的变换角度。
在这公式里的各矩阵都可有陀螺仪给出的原始数据经过算数处理求的。
在这里插入图片描述

三、补充

1、四元数

四元数这一部分不了解,要不然就用四元数去解了>_<|||。这里不讲四元数的基础概念,说下自己的理解,在之前的变换公式中,要求得角度变换就是要求旋转矩阵,而这个旋转矩阵用四元数表示,所以最终就是要确立这个四元数Q,但是我现在还不知到怎么去确定这个四元数Q。(T_T)

2、卡尔曼滤波

这一块我也不是很了解,因为我这套解法是利用到了重力加速度,所以在陀螺仪收到的加速度不等于重力加速度时,计算出来的结果就不正确,也就是说要在测量出来的数据与预测出的数据中间需要滤出一个正确的数据。

总结

上面数学推倒过程有不严谨的地方,这里并不是研究数学公式,而是讲下求解思路。我这套求解算法在运算的时候比较复杂,需要求叉积、矩阵相乘和矩阵逆,而且还要考虑角度范围的问题。
我自己写过一套程序处理,验证这套算法是可以解算出角度变化的,只不过实现的有点麻烦,以后有空会继续研究下四元数是怎么处理的。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
应用介绍: 蓝牙无线空中键鼠,能够同时实现传统的键盘和鼠标双功能。它的空中使用功能,可以将你从电脑、电视旁边彻底解放出来,只需要通过在空中挥动RC16空鼠,就迅速响应转换成在屏幕上的光标移动,使用3D陀螺仪完美结合,用户可以以360度随意精准操作。手持操作手感舒适、方便,完全避免了传统鼠标需要以静止的桌面为参照物操作或红外遥控器按键操作的弊端,让您躺着玩电脑、电视都不累,轻松休闲,完全 “掌”控你的电脑、电视娱乐 原理介绍: 飞思卡尔蓝牙飞鼠以Kinetis KL16单片机、加速度计、陀螺仪和电子罗盘为基础,并通过蓝牙与目标主机通信。使用了蓝牙 HID/HFP/SSP配置文件,并可以将鼠标和键盘的输入数据和传感器数据发送至目标主机。 它的关键特性如下: 6自由度/ 9自由度的鼠标和QWERTY键盘 操纵杆和6/9轴运动游戏 蓝牙连接: HID / HFP / SSP 红外遥控, 自学习 麦克风输入,头戴式耳机, 语音识别 指纹, 身份认证支持 近场通信, 快速蓝牙连接 无线充电(电路板上线圈为无线充电接收线圈) 飞思卡尔蓝牙飞鼠主要器件清单: 飞思卡尔 Kinetis MKL16Z256VLH4(MKL16Z256VLH4数据手册)(256KB FLASH / 32K RAM)(主控芯片) 飞思卡尔 MAG3110FCR2(MAG3110FCR2数据手册)(电子罗盘) 飞思卡尔 MMA8563FCR1(加速度计) 飞思卡尔 FXAS21000CQR1(FXAS21000CQR1数据手册)(陀螺仪) RDA5876A(RDA5876A数据手册),Compliant with Bluetooth 2.1 + EDR specification(蓝牙模块) 硬件系统框图: 软件架构: 附件内容包括: 源代码 飞思卡尔蓝牙飞鼠参考设计论文 bootloader工具软件以及CodeWarrior工程等内容 你可能感兴趣的项目设计: “空中鼠标”一款不用放在鼠标垫上的鼠标
时下智能语音交互市场火热,越来越多的设备都开始支持原场AI语音交互。例如:智能音箱,智能电视等等。但这类产品的识别率和误唤醒率还需要再不断的优化提升,以至于日常生活中人们还是离不开各式各样的遥控器。基于TDK 6-轴传感器ICM-40608和炬芯 BLE SOC ATB1103的智能语音遥控器解决方案实现真正的智能、万物互联。 遥控器方案整体硬件设计指南 基于Actions 炬芯的ATB110x SOC BLE语音遥控器已经大批量量产,搭配 6-轴运动传感器使其更加智能、拥有更高的市场竞争力; PCB板按功能模块分模拟信号部分(例如MIC IN走线)、射频信号部分(例如BLE及相关关键外围)、数字信号部分(例如TWI、UART、SPI等),电源部分(如芯片内部电源),模拟信号和射频信号容易受到干扰,布局时尽量远离数字信号电路和大电流电源电路。BLE的天线应远离喇叭(以及喇叭引线)、指示灯、频谱灯、按键等的排线。 数字、模拟元器件尽量远离并限定在各自的布线区域内。元器件周围留出电源和地走线的空间。数字元器件集中放置以减少走线长度。在IC的电源Pin放置0.1uF的去耦电容。晶振电路尽量靠近其驱动器件。 为利于系统散热,布局时发热量较高的器件尽量分开摆放,有EPAD的器件可以在地焊盘和器件周围的地多打过孔,可以达到更好的散热效果。 在设计许可的条件下,元器件的布局尽可能做到同类元器件按相同的方向排列,相同功率的模块集中在一起布置;相同封装的元器件等炬力放置,以便元件贴装、焊接和检测。 走线 RF走线 对于板载天线注意点如下: 1)板载天线面积尽量大,在匹配时带宽会更加宽,性能更佳; 2)匹配网络尽量靠近板载天线,如下图所示; 3)如果面积允许情况下靠近芯片端多预留一个TT型匹配网络,可根据情况进一步优化匹配; 4)针对两个走线的情况,在叠层选定后需计算相关的线宽和铺铜间距,因为板材有差异,注意和板厂沟通相关阻抗情况; 电源线: 1)根据印制线路板电流的大小,尽量加粗电源线的宽度,减少环路电阻。大电流的电源过孔推荐使用大于20-12mil的过孔,并打多个过孔连接。 2)电源线、底线的走向和数据传递的方向尽量保持一致,有助于增强抗噪声能力。 地线:1)模拟地、数字地、大功率器件的地在布线时分开,而最后都汇集到接地点上来,如:MIC会进行单独的AGND处理再连接到GND上。 2)接地线应尽量加粗。若接地线很细,则接地电位随电流的变化而变化,致使电子设备的信号电平不稳,抗噪声性能变差。因此应将接地线加粗,使它通过三倍于印制板上的允许电流。 TDK拥有最丰富的麦克风产品组合、基于运动传感器的光标控制的核心专利拥有者,适用于智能遥控器、智能电视和机顶盒的完整软件包(空鼠、手势、游戏控制); Air Motion软件方案 嵌入式软件:AirMotion Library (AML) 6-轴软件运行在遥控器端 提供空中相对指向 发送dx/dy给远端目标设备 支持基本的手势 支持无线接口 目标CPU:8051,ARM Cortex M0,M3,M4 AirMotionLib固件数据 基于ARM Cortex-M3平台验证 数据处理频率:100Hz 基于运动的功能 算法简介 AML算法获取手持遥控设备内的6轴运动传感器数据,在遥控设备端融合计算出远端被控制焦点在两纬平面的实时相对位置(dx, dy)。同时,为了保证良好的用户体验,AML算法对传感器数据做实时动态校准,设备横滚补偿。AML算法还可以支持常用的遥控手势识别,如左、右、上、下四方向的划动,以及顺时针和逆时针方向的快速旋转。 1、 API AIR MOTION库使用以下功能: •invn_algo_aml_init():每次处理(重新)启动时,必须调用此函数进行库初始化。•invn_algo_aml_process():每次有新的传感器值时,都必须调用此函数。该库被设计为以100Hz运行。 2、校准 陀螺仪偏移值可能会随着时间的推移而波动,具体取决于各种参数。 该库支持连续校准,实时计算陀螺仪偏移值。 每次调用invn_algo_aml_process()时,都会检查陀螺仪即时“静态”。 如果考虑设备静态,计算新的陀螺仪偏移值。 然后可以将遥控器视为已校准。 您可以检查'InvnAlgoAMLOutput.status'以跟踪校准状态。 'gyr_fsr'参数用于校准运动算法。 'acc_fsr'参数用于滚动补偿功能场景应用图产品实体图展示板照片方案方块图ICM-40608参数对比关键网络原理图核心技术优势TDK硬件和软件的优势 》终极用户体验 最好的声音质量 快速响应的空中指向 直观、高效的应用体验 》最低功耗的灵活方案 嵌入遥控器 可运动在远端设备(智能电视、机顶盒或者流媒体设备) 》低风
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值