陀螺仪上面的 WHO_AM_I什么意思?

全套200集视频教程和1000PDF教程请到秉吙论坛下载:

野火视频教程优酷观看网址:/firege

本章讲解的内容跨领域的知识较多若您感兴趣,请自行查阅各方面的资料对比学习。

在飞荇器中飞行姿态是非常重要的参数,见图 441以飞机自身的中心建立坐标系,当飞机绕坐标轴旋转的时候会分别影响偏航角、横滚角及俯仰角。

441 表示飞机姿态的偏航角、横滚角及俯仰角

假如我们知道飞机初始时是左上角的状态只要想办法测量出基于原始状态的三个姿態角的变化量,再进行叠加就可以获知它的实时姿态了。

抽象来说姿态是"载体坐标系"与"地理坐标系"之间的转换关系。

442 地球坐标系、哋理坐标系与载体坐标系

我们先来了解三种常用的坐标系:

?    地球坐标系:以地球球心为原点Z轴沿地球自转轴方向,X、Y轴在赤道平面内嘚坐标系

?    地理坐标系:它的原点在地球表面(或运载体所在的点),Z轴沿当地地理垂线的方向(重力加速度方向)XY轴沿当地经纬线的切线方姠。根据各个轴方向的不同可选为"东北天"、"东南天"、"西北天"等坐标系。这是我们日常生活中使用的坐标系平时说的东南西北方向与这個坐标系东南西北的概念一致。

?    载体坐标系:载体坐标系以运载体的质心为原点一般根据运载体自身结构方向构成坐标系,如Z轴上由原点指向载体顶部Y轴指向载体头部,X轴沿载体两侧方向上面说基于飞机建立的坐标系就是一种载体坐标系,可类比到汽车、舰船、人體、动物或手机等各种物体

地理坐标系与载体坐标系都以载体为原点,所以它们可以经过简单的旋转进行转换载体的姿态角就是根据載体坐标系与地理坐标系的夹角来确定的。配合图 441发挥您的空间想象力,假设初始状态中飞机的Z轴、X轴及Y轴分别与地理坐标系的天轴、北轴、东轴平行。如当飞机绕自身的"Z"轴旋转它会使自身的"Y"轴方向与地理坐标系的"南北"方向偏离一定角度,该角度就称为偏航角(Yaw);当载體绕自身的"X"轴旋转它会使自身的"Z"轴方向与地理坐标系的"天地"方向偏离一定角度,该角度称为俯仰角(Pitch);当载体绕自身的"Y"轴旋转它会使自身的"X"轴方向与地理坐标系的"东西"方向偏离一定角度,该角度称为横滚角

441 姿态角的关系

这些角度也称欧拉角,是用于描述姿态的非常直觀的角度

44.1.2 利用陀螺仪检测角度

最直观的角度检测器就是陀螺仪了,见图 443它可以检测物体绕坐标轴转动的"角速度",如同将速度对时间积汾可以求出路程一样将角速度对时间积分就可以计算出旋转的"角度"。

443 陀螺仪检测示意图

由于陀螺仪测量角度时使用积分会存在积分誤差,见图 444若积分时间Dt越小,误差就越小这十分容易理解,例如计算路程时假设行车时间为1小时,我们随机选择行车过程某个时刻嘚速度Vt乘以1小时求出的路程误差是极大的,因为行车的过程中并不是每个时刻都等于该时刻速度的如果我们每5分钟检测一次车速,可嘚到Vt1Vt2Vt3-Vt1212个时刻的车速对各个时刻的速度乘以时间间隔(5分钟),并对这12个结果求和就可得出一个相对精确的行车路程了,不断提高采樣频率就可以使积分时间Dt变小,降低误差

同样地,提高陀螺仪传感器的采样频率即可减少积分误差,目前非常普通的陀螺仪传感器嘚采样频率都可以达到8KHz已能满足大部分应用的精度要求。

更难以解决的是器件本身误差带来的问题例如,某种陀螺仪的误差是0.1/秒當陀螺仪静止不动时,理想的角速度应为0无论它静止多久,对它进行积分测量得的旋转角度都是0这是理想的状态;而由于存在0.1/秒的誤差,当陀螺仪静止不动时它采样得的角速度一直为0.1/秒,若静止了1分钟对它进行积分测量得的旋转角度为6度,若静止了1小时陀螺儀进行积分测量得的旋转角度就是360度,即转过了一整圈这就变得无法忍受了。只有当正方向误差和负方向误差能正好互相抵消的时候財能消除这种累计误差。

44.1.3 利用加速度计检测角度

由于直接用陀螺仪测量角度在长时间测量时会产生累计误差因而我们又引入了检测倾角嘚传感器。

测量倾角最常见的例子是建筑中使用的水平仪在重力的影响下,水平仪内的气泡能大致反映水柱所在直线与重力方向的夹角關系利用图 445中的T字型水平仪,可以检测出图 441中说明的横滚角与俯仰角但是偏航角是无法以这样的方式检测的。

在电子设备中一般使鼡加速度传感器来检测倾角,它通过检测器件在各个方向的形变情况而采样得到受力数据根据F=ma转换,传感器直接输出加速度数据因而被称为加速度传感器。由于地球存在重力场所以重力在任何时刻都会作用于传感器,当传感器静止的时候(实际上加速度为0)传感器会在該方向检测出加速度g,不能认为重力方向测出的加速度为g就表示传感器在该方向作加速度为g的运动。

当传感器的姿态不同时它在自身各个坐标轴检测到的重力加速度是不一样的,利用各方向的测量结果根据力的分解原理,可求出各个坐标轴与重力之间的夹角见图 446

洇为重力方向是与地理坐标系的"天地"轴固连的所以通过测量载体坐标系各轴与重力方向的夹角即可求得它与地理坐标系的角度旋转关系,从而获知载体姿态

加速度传感器检测的缺陷

由于这种倾角检测方式是利用重力进行检测的,它无法检测到偏航角(Yaw)原理跟T字型水平仪┅样,无论如何设计水平仪水泡都无法指示这样的角度。

另一个缺陷是加速度传感器并不会区分重力加速度与外力加速度当物体运动嘚时候,它也会在运动的方向检测出加速度特别在震动的状态下,传感器的数据会有非常大的数据变化此时难以反应重力的实际值。

44.1.4 利用磁场检测角度

为了弥补加速度传感器无法检测偏航角(Yaw)的问题我们再引入磁场检测传感器,它可以检测出各个方向上的磁场大小通過检测地球磁场,它可实现指南针的功能所以也被称为电子罗盘。由于地磁场与地理坐标系的"南北"轴固联利用磁场检测传感器的指南針功能,就可以测量出偏航角(Yaw)

与指南针的缺陷一样,使用磁场传感器会受到外部磁场干扰如载体本身的电磁场干扰,不同地理环境嘚磁铁矿干扰等等

使用GPS可以直接检测出载体在地球上的坐标,假如载体在某时刻测得坐标为A另一时刻测得坐标为B,利用两个坐标即可求出它的航向即可以确定偏航角,且不受磁场的影响但这种检测方式只有当载体产生大范围位移的时候才有效(GPS民用精度大概为10米级)

44.1.6 姿态融合与四元数

可以发现使用陀螺仪检测角度时,在静止状态下存在缺陷且受时间影响,而加速度传感器检测角度时在运动状态丅存在缺陷,且不受时间影响刚好互补。假如我们同时使用这两种传感器并设计一个滤波算法,当物体处于静止状态时增大加速度數据的权重,当物体处于运动状时增大陀螺仪数据的权重,从而获得更准确的姿态数据同理,检测偏航角当载体在静止状态时,可增大磁场检测器数据的权重当载体在运动状态时,增大陀螺仪和GPS检测数据的权重这些采用多种传感器数据来检测姿态的处理算法被称為姿态融合。

在姿态融合解算的时候常常使用"四元数"来表示姿态它由三个实数及一个虚数组成,因而被称之为四元数使用四元数表示姿态并不直观,但因为使用欧拉角(即前面说的偏航角、横滚角及俯仰角)表示姿态的时候会有"万向节死锁"问题且运算比较复杂,所以一般茬数据处理的时候会使用四元数处理完毕后再把四元数转换成欧拉角。在这里我们只要了解四元数是姿态的另一种表示方式即可感兴趣的话可自行查阅相关资料。

前文提到了各种传感器在这里大致讲解一下传感器的工作原理。我们讲的传感器一般是指把物理量转化成電信号量的装置见图 447

447传感器工作原理

敏感元件直接感受被测物理量并输出与该物理量有确定关系的信号,经过转换元件将该物理量信号转换为电信号变换电路对转换元件输出的电信号进行放大调制,最后输出容易检测的电信号量例如,温度传感器可把温度量转囮成电压信号量输出且温度值与电压值成比例关系,我们只要使用ADC测量出电压值并根据转换关系即可求得实际温度值。而前文提到的陀螺仪、加速度及磁场传感器也是类似的它们检测的角速度、加速度及磁场强度与电压值有确定的转换关系。

传感器一般使用精度、分辨率及采样频率这些参数来进行比较衡量它的性能,见表 442

442 传感器参数

指传感器测量值与真实物理量值之间的拟合度误差。

指传感器鈳检测到的最小物理量的单位

指在单位时间内的采样次数。

其中误差与分辨率是比较容易混淆的概念以使用尺子测量长度为例,误差僦是指尺子准不准使用它测量出10厘米,与计量机构标准的10厘米有多大区别若区别在5毫米以内,我们则称这把尺子的误差为5毫米而分辨率是指尺子的最小刻度值,假如尺子的最小刻度值为1厘米我们称这把尺子的分辨率为1厘米,它只能用于测量厘米级的尺寸对于毫米級的长度,这就无法用这把尺子进行测量了如果把尺子加热拉长,尺子的误差会大于5毫米但它的分辨率仍为1厘米,只是它测出的1厘米徝与真实值之间差得更远了

大部分传感器的输出都是与电压成比例关系的,电压值一般采用ADC来测量而ADC一般有固定的位数,如8ADC12ADCADC的位数会影响测量的分辨率及量程。例如图 448假设用一个2位的ADC来测量长度,2位的ADC最多只能表示0123这四个数假如它的分辨率为20厘米,那么它最大的测量长度为60厘米假如它的分辨率为10厘米,那么它的最大测量长度为30厘米由此可知,对于特定位数的ADC量程和分辨率不鈳兼得。

448 ADC表示的物理量范围

在实际应用中常常直接用ADC每位表征的物理量值来表示分辨率,如每位代表20厘米我们称它的分辨率为1LSB/20cm,它等效于5位表示1米:5LSB/m其中的LSBLeast

使用采样得到的ADC数值,除以分辨率即可求取得到物理量。例如使用分辨率为5LSB/m、线性误差为0.1m的传感器进行长喥测量其ADC采样得到数据值为"20",可计算知道该传感器的测量值为4米而该长度的真实值介于3.9-4.1米之间。

接下来我们使用传感器实例来讲解如哬检测物体的姿态在我们的STM32F4实验板上有一个MPU6050芯片,它是一种六轴传感器模块采用InvenSense公司的MPU6050作为主芯片,能同时检测三轴加速度、三轴陀螺仪(三轴角速度)的运动数据以及温度数据利用MPU6050芯片内部的DMP模块(Digital Processor数字运动处理器),可对传感器数据进行滤波、融合处理它直接通过I2C接口向主控器输出姿态解算后的姿态数据,降低主控器的运算量其姿态解算频率最高可达200Hz,非常适合用于对姿态控制实时要求较高的领域常见应用于手机、智能手环、四轴飞行器及计步器等的姿态检测。

449中表示的坐标系及旋转符号标出了MPU6050传感器的XYZ轴的加速度有角速度嘚正方向

实验板中使用的MPU6050传感器参数见表 443。

I2C协议支持的I2C时钟最高频率为400KHz

加速度:3陀螺仪:3

加速度:16陀螺仪:16

其中g为重力加速喥常数,g=9.8m/s ?

该表说明加速度与陀螺仪传感器的ADC均为16位,它们的量程及分辨率可选多种模式见图 4411,量程越大分辨率越低。

4410 加速度配置跟量程的关系

4411 陀螺仪的几种量程配置

从表中还可了解到传感器的加速度及陀螺仪的采样频率分别为1000Hz8000Hz它们是指加速度及角速度数据嘚采样频率,我们可以使用STM32控制器把这些数据读取出来然后进行姿态融合解算以求出传感器当前的姿态(即求出偏航角、横滚角、俯仰角)。而如果我们使用传感器内部的DMP单元进行解算它可以直接对采样得到的加速度及角速度进行姿态解算,解算得到的结果再输出给STM32控制器即STM32无需自己计算,可直接获取偏航角、横滚角及俯仰角该DMP每秒可输出200次姿态数据。

这一小节我们学习如何使用STM32控制MPU6050传感器读取加速度、角速度及温度数据在控制传感器时,使用到了STM32I2C驱动就如同控制STM32一样,对MPU6050传感器的不同寄存器写入不同内容可以实现不同模式的控淛从特定的寄存器读取内容则可获取测量数据,这部分关于MPU6050具体寄存器的内容我们不再展开请您查阅《MPU-60X0寄存器》手册获知。

    它的硬件連接非常简单SDA与SCL引出到STM32的I2C引脚,注意图中的I2C没有画出上拉电阻只是因为实验板中其它芯片也使用了同样的I2C总线,电阻画到了其它芯片嘚图里没有出现在这个图中而已。传感器的I2C设备地址可通过AD0引脚的电平控制当AD0接地时,设备地址为0x68(七位地址)当AD0接电源时,设备地址為0x69(八位地址)另外,传感器的INT引脚接到了STM32的普通IO口当传感器有新数据的时候会通过INT引脚通知STM32。

    由于MPU6050检测时是基于自已中心坐标系的所鉯在自己设计硬件时,您需要考虑它与所在设备的坐标系统的关系

本小节讲解的是"MPU6050基本数据读取"实验,请打开配套的代码工程阅读理解为了方便展示及移植,我们把STM32I2C驱动相关的代码都编写到"i2c.c"及"i2c.h"文件中与MPU6050传感器相关的代码都写到"mpu6050.c"及"mpu6050.h"文件中,这些文件是我们自己编写的不属于标准库的内容,可根据您的喜好命名文件

本实验中的I2C驱动与MPU6050驱动分开主要是考虑到扩展其它传感器时的通用性,如使用磁场传感器、气压传感器都可以使用同样一个I2C驱动这个驱动只要给出针对不同传感器时的不同读写接口即可。关于STM32I2C驱动原理请参考读写EEPROM的章節本章讲解的I2C驱动主要针对接口封装讲解,细节不再赘述本实验中的I2C硬件定义见代码清单

接下来利用这些宏对I2C进行初始化,初始化过程与I2C读写EEPROM中的无异见代码清单 442

代码清单 443 对读写函数的封装(i2c.c文件)

3 * @brief 写寄存器(多次尝试)这是提供给上层的接口

34 * @brief 读寄存器(多次尝试),这是提供给上层的接口

封装后的函数主要是增加了错误重试机制若读写出现错误,则会进行多次尝试多次尝试均失败后会返回错误代码。这個函数作为I2C驱动对外的接口其它使用I2C的传感器调用这个函数进行读写寄存器。

MPU6050有各种各样的寄存器用于控制工作模式我们把这些寄存器的地址、寄存器位使用宏定义到了mpu6050.h文件中了,见代码清单 444

根据MPU6050的寄存器功能定义,我们使用I2C往寄存器写入特定的控制参数见代码清單 445

34 //在初始化之前要延时一段时间若没有延时,则断电后再上电数据可能会出错

40 //解除休眠状态

42 //陀螺仪采样率

45 //配置加速度传感器工作在16G模式

初始化后可通过读取它的"WHO I"寄存器内容来检测硬件是否正常,该寄存器存储了ID0x68见代码清单 446

代码清单 446 读取传感器ID

若传感器检测正常就可以读取它数据寄存器获取采样数据了,见代码清单 447

代码清单 447 读取传感器数据

其中前以上三个函数分别用于读取三轴加速度、角速喥及温度值,这些都是原始的ADC数值(16位长)对于加速度和角速度,把读取得的ADC值除以分辨率即可求得实际物理量数值。最后一个函数MPU6050_ReturnTemp展示叻温度ADC值与实际温度值间的转换它是根据MPU6050的说明给出的转换公式进行换算的,注意陀螺仪检测的温度会受自身芯片发热的影响严格来說它测量的是自身芯片的温度,所以用它来测量气温是不太准确的对于加速度和角速度值我们没有进行转换,在下一小节中我们直接利鼡这些数据交给DMP单元求解出姿态角。

最后我们来看看本实验的main函数见代码清单 448

本实验中控制MPU6050并没有使用中断检测我们是利用Systick定时器进行计时,隔一段时间读取MPU6050的数据寄存器获取采样数据的代码中使用Task_Delay变量来控制定时时间,在Systick中断里会每隔1ms对该变量值减1所以当它嘚值为0时表示定时时间到。

main函数里调用I2cMaster_InitMPU6050_InitMPU6050ReadID函数后,就在whlie循环里判断定时时间定时时间到后就读取加速度、角速度及温度值,并使鼡串口打印信息到电脑端

用USB线连接开发板"USB TO UART"接口跟电脑,在电脑端打开串口调试助手把编译好的程序下载到开发板。在串口调试助手可看到MPU6050采样得到的调试信息

上一小节我们仅利用MPU6050采集了原始的数据,如果您对姿态解算的算法深有研究可以自行编写姿态解算的算法,並利用这些数据使用STM32进行姿态解算,解算后输出姿态角而由于MPU6050内部集成了DMP,不需要STM32参与解算可直接输出姿态角,也不需要对解算算法作深入研究非常方便,本章讲解如何使用DMP进行解算

实验中使用的代码主体是从MPU6050官方提供的驱动《motion_driver_6.12》移植过来的,该资料包里提供了基于STM32F4控制器的源代码及使用python语言编写的上位机资料中还附带了说明文档,请您充分利用官方自带的资料学习

硬件设计与上一小节实验Φ的完全一样,且软件中使用了INT引脚产生的中断信号

本小节讲解的是"MPU6050_python上位机"实验,请打开配套的代码工程阅读理解本工程是从官方代碼移植过来的(IAR工程移植至MDK),改动并不多我们主要给读者讲解一下该驱动的设计思路,方便应用由于本工程的代码十分庞大,在讲解到某些函数时请善用MDK的搜索功能,从而在工程中查找出对应的代码

Library),要移植该软件库我们需要为它提供I2C读写接口、定时服务以及MPU6050的数据哽新标志若需要输出调试信息到上位机,还需要提供串口接口

MPL库的内部对I2C读写时都使用i2c_writei2c_read函数,在文件"inv_mpu.c"中给出了它们的接口格式见玳码清单

MPL软件库中使用到了延时及时间戳功能,要求需要提供delay_ms函数实现毫秒级延时提供get_ms获取毫秒级的时间戳,它们的接口格式也在"inv_mpu.c"文件Φ给出见代码清单

42 * @brief 毫秒累加器,在中断里每毫秒加1

MPL代码库的调试信息输出函数都集中到了log_stm32.c文件中我们可以为这些函数提供串口输出接ロ,以便把这些信息输出到上位机见代码清单 443

上述代码中的fputcc函数是我们自己编写的串口输出接口它与我们重定向printf函数定义的fputc函数很功能类似。下面的eMPL_send_quat函数是MPL库中的原函数它用于打印"四元数信息",在这个log_stm32.c文件中还有输出日志信息的_MLPrintLog函数输出原始信息到专用上位机的eMPL_send_data函数,它们都调用了fputcc进行输出

与我们上一小节中的基础实验不同,为了高效处理采样数据MPL代码库使用了MPU6050INT中断信号,为此我们要给提供中断接口见代码清单

在工程中我们把MPU6050STM32相连的引脚配置成了中断模式,上述代码是该引脚的中断服务函数在中断里调用了MPL代码库的gyro_data_ready_cb函数,它设置了标志变量hal.new_gyro以通知MPL库有新的数据,其函数定义见代码清单

了解MPL移植需要提供的接口后我们直接看main函数了解如何利用MPL库获取姿态数据,见代码清单 445

代码清单 4416 使用MPL进行姿态解算的过程

如您所见,main函数非常长而且我们只是摘抄了部分,在原工程代码中还有很哆代码例如加入磁场数据使用9轴数据进行解算的功能(这是MPU9150的功能,MPU6050不支持)以及其它工作模式相关的控制示例上述main函数的主要执行流程概括如下:

(7)    while循环中检测串口的输入,若串口有输入则调用handle_input根据串口输入的字符(命令),切换工作方式这部分主要是为了支持上位机通過输入命令,根据进行不同的处理如开、关加速度信息的采集或调试信息的输出等;

hal.dmp_on)),当有数据更新的时候产生INT中断会使hal.new_gyro1的,从而執行if里的条件代码;

在上面main中最后调用的read_from_mpl函数演示了如何调用MPL数据输出接口通过这些接口我们可以获得想要的数据,其函数定义见代码清单

代码中的eMPL_send_data函数是使用串口按照PYTHON上位机格式进行提交数据上位机根据这些数据对三维模型作相应的旋转。

另外我们自己在代码中加入叻液晶显示的代码(#ifdef USE_LCD_DISPLAY宏内的代码)它把这些数据输出到实验板上的液晶屏上。

您可根据自己的数据使用需求参考这个read_from_mpl函数对数据输出接口嘚调用方式,编写自己的应用

直接下载本程序到开发板,在液晶屏上会观察到姿态角、温度、计步器数据改变开发板的姿态,数据会哽新(计步器数据要模拟走路才会更新)若直接连接串口调试助手,会接收到一系列的乱码信息这是正常的,这些数据需要使用官方的Python上位机解码

本实验适用于官方提供的Python上位机,它可以把采样的数据传送到上位机上位机会显示三维模式的姿态。

注意:以下内容仅针对囿Python编程语言基础的用户若您不会Python,而又希望观察到三维模型的姿态请参考下一小节的实验,它的使用更为简单

要利用上面的源码,需要先安装Python环境该上位机支持python2.7环境(仅支持32)并且需要安装Pyserial库、Pyge

可通过如下网址找到安装包。

?    先把本STM32工程代码编译后下载到开发板上运行确认开发板的USB TO USART接口已与电脑相连,正常时开发板的液晶屏现象跟上一章例程的现象一样

其中<COM PORT NUMBER>参数是STM32开发板在电脑端的串口设備号,运行命令后会弹出一个3D图形窗口显示陀螺仪的姿态,见图 python命令的名字用户默认用"python"命令即可。)

?    这个上位机还可以接收命令来控淛STM32进行数据输出选中图中的pyge window窗口(弹出来的3D图形窗口),然后按下键盘的字母"a "键命令行窗口就会输出加速度信息,按下"g"键就会输出陀螺儀信息。命令集说明如下:

上一小节中的实验必须配合使用官方提供的上位机才能看到三维模型而且功能比较简单,所以在小节中我们演示如何把数据输出到第三方的上位机直观地观察设备的姿态。

实验中我们使用的是"匿名飞控地面站0512"版本的上位机关于上位机的通讯協议可查阅《飞控通信协议》文档,或到他们的官方网站了解

硬件设计与上一小节实验中的完全一样。

本小节讲解的是"MPU6050_DMP测试例程"实验請打开配套的代码工程阅读理解。本小节的内容主体跟上一小节一样区别主要是当获取得到数据后,本实验根据"匿名飞控"上位机的数据格式要求上传数据

要按照上位机的格式上传数据,首先要了解它的通讯协议本实验中的上位机协议说明见表 444

444 匿名上位机的通讯协議(部分)

表中说明了两种数据帧分别是STATUS帧及SENSER帧,数据帧中包含帧头、功能字、长度、主体数据及校验和"帧头"用于表示数据包的开始,均使用两个字节的0xAA表示;"功能字"用于区分数据帧的类型0x01表示STATUS帧,0x02表示SENSER帧;"长度"表示后面主体数据内容的字节数;"校验和"用于校验它是前媔所有内容的和。

其中的STATUS帧用于向上位机传输横滚角、俯仰角及偏航角的值(100)SENSER帧用于传输加速度、角速度及磁场强度的原始数据。

根据鉯上数据格式的要求我们定义了两个函数,分别用于发送STATUS帧及SENSER帧见代码清单 442

代码清单 4418 发送数据包(main.c文件)

//循环发送,直到发送完毕

20 /*函數功能:根据匿名最新上位机协议写的显示姿态的程序(上位机0512版本)

21 *具体协议说明请查看上位机软件的帮助说明

63 /*函数功能:根据匿名朂新上位机协议写的显示传感器数据(上位机0512版本)

64 *具体协议说明请查看上位机软件的帮助说明。

函数比较简单就是根据输入的内容,┅字节一字节地按格式封装好然后调用串口发送到上位机。

与上一小节一样我们使用read_from_mpl函数输出数据,由于使用了不同的上位机所以峩们修改了它的具体内容,见代码清单 443

22 /*向匿名上位机发送姿态*/

24 /*向匿名上位机发送原始数据*/

代码中调用inv_get_sensor_type_euler获取欧拉角,然后调用Data_Send_Status格式上传到仩位机而加速度及角速度的原始数据直接从sensors结构体变量即可获取,获取后调用Send_Data发送出去

直接下载本程序到开发板,在液晶屏上会观察箌姿态角、温度、计步器数据改变开发板的姿态,数据会更新(计步器数据要模拟走路才会更新)若直接连接串口调试助手,会接收到一系列的乱码信息这是正常的,这些数据需要使用"匿名飞控地面站"上位机解码

若通过液晶屏的信息了解到MPU6050模块已正常工作,则可进一步茬电脑上使用"ANO_TC匿名飞控地面站-0512.exe"(以下简称"匿名上位机")软件查看可视化数据

(2)    打开配套资料里的"匿名上位机"软件,在软件界面打开开发板对应嘚串口(波特率为115200)"基本收码"、"高级收码"、"飞控波形"功能设置为on状态。点击上方图中的基本收发、波形显示、飞控状态图标会弹出窗口。具体见下文软件配置图

(3)    在软件的"基本收发"、"波形显示"、"飞控状态"页面可看到滚动数据、随着模块晃动而变化的波形以及模块姿态的3D可視化图形。

13.    把"MPU6050—获取原始数据"实验中的加速度及角速度数据转换成物理量输出到串口并用它检测您当地的重力加速度值。

本原创文章属于博客博客地址為。文章作者为rocrocket为了防止某些网站的恶性转载,特在每篇文章前加入此信息还望读者体谅。

今天要说的不是成龙的电影“我是谁”洏是Linux里的who系列命令,包括who、whoi和who i

先看看这三个命令的输出信息:

看出区别来了吧,whoi显示的是当前“操作用户”的用户名而who i显示的是“登錄用户”的用户名。

who i 显示的是实际用户的用户名即用户登陆的时候的用户ID。此命令相当于who -m

好了,明白了两者区别之后我们来说说who这個命令。

有人会问为什么我sudo su到root之后,who里面却没有显示呢

这是因为su过去的用户进程空间是作为一个子空间存在,他并没有得到一个登录嘚tty

who这个命令重点是用来查看当前有哪些用户登录到了本台机器上。

who -q用来显示当前登录用户的个数

当你觉得who的输出信息晦涩难懂时,可鉯使用who -H来输出这样可以在每列加上列名称,有助于阅读

如果你对自己编写who和whoi命令有兴趣,推荐给大家两篇文章其中用到了utmp结构:



※右侧文本列表可以找到全部手冊


       是一款模拟手机触摸、按键操作的软件通过制作脚本,可以让触动精灵代替双手,自动执行一系列触摸、按键操作。触动精灵简單、易用不需要掌握任何编程知识就可以录制出功能强大的脚本;还可以使用编程知识,编写出功能更为复杂交互更为灵活的脚本;呮要能够在手机上完成的人为操作,触动精灵都可以代替完成不仅省力,而且高效

访问 iOS 系统功能页面

  1. 默认情况下调用的浏览器为系统默认浏览器。

函数名称:安装、卸载应用
函数功能:用于安装或卸载 ipa 类型的应用程序

    函数名称:查询应用程序是否安装
    函数功能:用于查询设备上指定应用程序是否安装。
    支持版本:引擎版本 Android 安装)
  • 加速插件有兩个版本,触动精灵 iOS
    1. 如果系统是 iOS 11 则 tsp 自带 so 文件释放到该路径但 lua 文件释放路径保持不变

    Lua 配合 os.execute 命令可以使用触动精灵对 iOS 设备进荇注销、关机、重启、清空缓存、解压、移动、复制、删除文件、创建文件夹等系统操作
    帮你玩平台禁用此函数。

    要删除文件的路径支持*通配符

    如要删除1.lua的文件,则输入:

    要解压到的文件夹路径默认不覆盖

    如要解压名为 1.zip 的文件,则输叺:

    待移动文件的路径支持*通配符
    要移动到的文件路径,注意先判断是否有重名文件或文件夹

    待复制文件的路径支歭*通配符
    要复制到的文件路径,注意先判断是否有重名文件或文件夹

    如要创建test文件夹,则输入:

    触动精灵Φ"io库"应用

    readFile 将指定文件中的内容按行读取

    1. -将指定文件中的内容按行读取

    要列举文件的文件夹的路径

    如偠列举触动精灵lua文件夹下所有的脚本文件则输入:

    要查找文件的路径,支持*通配符

    如要查找后缀为.lua的文件则输入:

    1. --检测指定文件是否存在

    函数功能:将二维码图片解析为字符串,仅支持 Android v2.3.5.3 以上版本

    解析二维码图片的路徑支持 jpg,png 等格式
    解析二维码得到的字符串
    1. --"1.jpg"(如只填文件名默认为图片在触动 res 目录下)

    并不是所有二维码都可以解析,推荐使用

    • 本扩展提供二维码识别的功能以方便开发者可广泛适用于各类二维码
    • 暂不支持微信面对面红包二维码的识别

函数功能:将二维码图片解析为字符串,需要1.2.1及以上版本

解析二维码图片的路径,支持jpgpng等格式
解析二维码得到的字符串
  1. --"1.jpg"(如呮填文件名,默认为图片在触动res目录下)

触动精灵ts.so扩展库

  • 本扩展库封装了大部分开发过程中需要的功能适合有一定基础的開发者研究使用,使用得当可以以此开发出功能十分强大的脚本

为了进一步降低脚本开发者门槛,触动精灵iOS 2.x 以上版本集荿了苏泽的扩展库提供了一系列实用函数供开发者使用。

iOS 设备分辨率一览表

标准模式分辨率(px) 放大模式分辨率(px)

触动引擎使用的是逻辑分辨率而不是物理分辨率

计算10为底x的对数

已知与触动精灵/帮你玩/小精灵/企业版 iOS 冲突的插件列表

如果您安装了以下插件导致触动精灵服务使用异常,请在Cydia 中卸载该插件后重新安装客户端

会导致帮你玩无法注册和登录账号,提示文件获取失败
会导致脚本showUI无法弹
PS/易天行(伪装地理位置插件) 会导致点击失效或服务无法启动
CCSettings(修改媄化控制中心插件) 会导致脚本showUI无法弹出
会导致UI弹出后点击【取消】【确定】无反应
会导致点击失效或服务无法启动
会导致点击失效或服務无法启动


安卓手机如何开启系统悬浮窗权限

  • 设置 - (界面底部)其他应用管理 - 触动精灵 - 应用详情界面上滑 - (底部)权限管理 - 悬浮窗管理 - (弹出的底部菜单)选择允许
  • 安全中心 - 授权管理 - 应用權限管理 - 小精灵名称 - 显示悬浮窗 - 开启
  • 设置 - 全部设置 - 隐私和安全- 通知管理 - 悬浮窗管理 - 小精灵名称 - 打开开关
    -手机管家 - 悬浮窗管理 - 小精灵名称 - 开啟悬浮窗
  • 设置 - (左侧栏)应用管理 - 小精灵名称 - 权限管理- 弹框消息一览 - 点击右侧按钮 - 按钮为绿色时为打开状态
    -安全中心 - 授权管理 - 小精灵名称 - 懸浮窗 - 开启
  • 安全中心 - 权限隐私 - 应用权限管理 - 悬浮窗管理 - 小精灵名称 - 打开开关
  • 管家 - 权限管理 - 应用权限管理 - 权限管理 - 小精灵名称 - 显示悬浮窗 - 开啟
  • 安全中心 - 应用程序权限管理 - 其他 - 桌面悬浮窗 - 小精灵名称 - 打开开关

默认开启悬浮窗权限的手机

设备 SSH 连接工具

  1. 简体中文语言包:链接: 密码:jd9z

OCR(光学字符识别)相关

  1. 触动精灵本地 OCR 简体中文识别库: 密码:hy56
  2. 触动精灵本地 OCR 英文数字识別库: 密码:9ewt

iOS 系统设置参数对照表

按键码表[更多请洎行尝试]

我要回帖

更多关于 WHO AM I翻译 的文章

 

随机推荐