搜索
bottom↓
回复: 23

请问反三角函数计算的查表法应该怎么写?用加速度计估计姿态角的时候不知道怎么去优化

[复制链接]

出0入0汤圆

发表于 2011-6-20 09:52:48 | 显示全部楼层 |阅读模式
用加速度推算出姿态角度的时候,需要用到反正切。atan
现在我是直接调用math.h里的atan()
工作周期4MS,调用了两次。cpu占用率马上从12%飙到18%
可能因为我的单片机速度很快,虽然对系统不是很影响…但是还是觉得应该有更好的方法去优化它。
于是想到查表法,三角函数的查表法很容易理解,那么反三角函数的查表法应该怎么写呢?想了很久都没有头绪,不是太复杂就是精度低
我的32KB ROM才用了十几KB。
要求精度0.5到0.1度,能达到么?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-6-20 10:47:09 | 显示全部楼层
分段,线性逼近

出0入0汤圆

发表于 2011-6-20 11:17:24 | 显示全部楼层
直接查表的话,0.1度分辨率大概需要4K ROM




// atan2s16.h
#ifndef __ATAN2S16_H__
#define __ATAN2S16_H__

typedef signed short  INT16S;
typedef unsigned int  INT32U;

INT16S atan2s16(INT16S y, INT16S x);

#endif


// atan2s16.c
#include "atan2s16.h"

const INT32U atan2buf[] = {
0x00000000,0x00000065,0x000000C9,0x0000012E,0x00000192,0x000001F7,0x0000025B,0x000002C0,
0x00000324,0x00000389,0x000003ED,0x00000452,0x000004B7,0x0000051B,0x00000580,0x000005E4,
0x00000649,0x000006AD,0x00000712,0x00000777,0x000007DB,0x00000840,0x000008A5,0x00000909,
0x0000096E,0x000009D3,0x00000A37,0x00000A9C,0x00000B01,0x00000B65,0x00000BCA,0x00000C2F,
0x00000C94,0x00000CF8,0x00000D5D,0x00000DC2,0x00000E27,0x00000E8C,0x00000EF1,0x00000F55,
0x00000FBA,0x0000101F,0x00001084,0x000010E9,0x0000114E,0x000011B3,0x00001218,0x0000127D,
0x000012E2,0x00001347,0x000013AC,0x00001412,0x00001477,0x000014DC,0x00001541,0x000015A6,
0x0000160C,0x00001671,0x000016D6,0x0000173C,0x000017A1,0x00001806,0x0000186C,0x000018D1,
0x00001937,0x0000199C,0x00001A02,0x00001A67,0x00001ACD,0x00001B33,0x00001B98,0x00001BFE,
0x00001C64,0x00001CCA,0x00001D2F,0x00001D95,0x00001DFB,0x00001E61,0x00001EC7,0x00001F2D,
0x00001F93,0x00001FF9,0x0000205F,0x000020C5,0x0000212C,0x00002192,0x000021F8,0x0000225E,
0x000022C5,0x0000232B,0x00002392,0x000023F8,0x0000245F,0x000024C5,0x0000252C,0x00002593,
0x000025F9,0x00002660,0x000026C7,0x0000272E,0x00002795,0x000027FC,0x00002863,0x000028CA,
0x00002931,0x00002998,0x000029FF,0x00002A66,0x00002ACE,0x00002B35,0x00002B9D,0x00002C04,
0x00002C6C,0x00002CD3,0x00002D3B,0x00002DA2,0x00002E0A,0x00002E72,0x00002EDA,0x00002F42,
0x00002FAA,0x00003012,0x0000307A,0x000030E2,0x0000314A,0x000031B3,0x0000321B,0x00003283,
0x000032EC,0x00003354,0x000033BD,0x00003426,0x0000348E,0x000034F7,0x00003560,0x000035C9,
0x00003632,0x0000369B,0x00003704,0x0000376D,0x000037D7,0x00003840,0x000038AA,0x00003913,
0x0000397D,0x000039E6,0x00003A50,0x00003ABA,0x00003B24,0x00003B8E,0x00003BF8,0x00003C62,
0x00003CCC,0x00003D36,0x00003DA0,0x00003E0B,0x00003E75,0x00003EE0,0x00003F4A,0x00003FB5,
0x00004020,0x0000408B,0x000040F6,0x00004161,0x000041CC,0x00004237,0x000042A2,0x0000430E,
0x00004379,0x000043E5,0x00004451,0x000044BC,0x00004528,0x00004594,0x00004600,0x0000466C,
0x000046D8,0x00004745,0x000047B1,0x0000481D,0x0000488A,0x000048F7,0x00004963,0x000049D0,
0x00004A3D,0x00004AAA,0x00004B17,0x00004B84,0x00004BF2,0x00004C5F,0x00004CCD,0x00004D3A,
0x00004DA8,0x00004E16,0x00004E84,0x00004EF2,0x00004F60,0x00004FCE,0x0000503D,0x000050AB,
0x0000511A,0x00005188,0x000051F7,0x00005266,0x000052D5,0x00005344,0x000053B3,0x00005423,
0x00005492,0x00005502,0x00005571,0x000055E1,0x00005651,0x000056C1,0x00005731,0x000057A1,
0x00005812,0x00005882,0x000058F3,0x00005964,0x000059D5,0x00005A46,0x00005AB7,0x00005B28,
0x00005B99,0x00005C0B,0x00005C7C,0x00005CEE,0x00005D60,0x00005DD2,0x00005E44,0x00005EB6,
0x00005F28,0x00005F9B,0x0000600E,0x00006080,0x000060F3,0x00006166,0x000061D9,0x0000624D,
0x000062C0,0x00006334,0x000063A7,0x0000641B,0x0000648F,0x00006503,0x00006577,0x000065EC,
0x00006660,0x000066D5,0x0000674A,0x000067BF,0x00006834,0x000068A9,0x0000691F,0x00006994,
0x00006A0A,0x00006A80,0x00006AF6,0x00006B6C,0x00006BE2,0x00006C59,0x00006CCF,0x00006D46,
0x00006DBD,0x00006E34,0x00006EAB,0x00006F23,0x00006F9A,0x00007012,0x0000708A,0x00007102,
0x0000717A,0x000071F2,0x0000726B,0x000072E4,0x0000735D,0x000073D6,0x0000744F,0x000074C8,
0x00007542,0x000075BB,0x00007635,0x000076AF,0x0000772A,0x000077A4,0x0000781F,0x00007899,
0x00007914,0x0000798F,0x00007A0B,0x00007A86,0x00007B02,0x00007B7E,0x00007BFA,0x00007C76,
0x00007CF2,0x00007D6F,0x00007DEC,0x00007E68,0x00007EE6,0x00007F63,0x00007FE0,0x0000805E,
0x000080DC,0x0000815A,0x000081D8,0x00008257,0x000082D6,0x00008355,0x000083D4,0x00008453,
0x000084D2,0x00008552,0x000085D2,0x00008652,0x000086D2,0x00008753,0x000087D4,0x00008855,
0x000088D6,0x00008957,0x000089D9,0x00008A5A,0x00008ADC,0x00008B5F,0x00008BE1,0x00008C64,
0x00008CE7,0x00008D6A,0x00008DED,0x00008E71,0x00008EF4,0x00008F78,0x00008FFD,0x00009081,
0x00009106,0x0000918B,0x00009210,0x00009295,0x0000931B,0x000093A1,0x00009427,0x000094AD,
0x00009534,0x000095BA,0x00009641,0x000096C9,0x00009750,0x000097D8,0x00009860,0x000098E8,
0x00009971,0x000099FA,0x00009A83,0x00009B0C,0x00009B95,0x00009C1F,0x00009CA9,0x00009D34,
0x00009DBE,0x00009E49,0x00009ED4,0x00009F5F,0x00009FEB,0x0000A077,0x0000A103,0x0000A190,
0x0000A21C,0x0000A2A9,0x0000A336,0x0000A3C4,0x0000A452,0x0000A4E0,0x0000A56E,0x0000A5FD,
0x0000A68C,0x0000A71B,0x0000A7AB,0x0000A83A,0x0000A8CA,0x0000A95B,0x0000A9EC,0x0000AA7C,
0x0000AB0E,0x0000AB9F,0x0000AC31,0x0000ACC3,0x0000AD56,0x0000ADE9,0x0000AE7C,0x0000AF0F,
0x0000AFA3,0x0000B037,0x0000B0CB,0x0000B160,0x0000B1F5,0x0000B28A,0x0000B320,0x0000B3B5,
0x0000B44C,0x0000B4E2,0x0000B579,0x0000B610,0x0000B6A8,0x0000B740,0x0000B7D8,0x0000B870,
0x0000B909,0x0000B9A3,0x0000BA3C,0x0000BAD6,0x0000BB70,0x0000BC0B,0x0000BCA6,0x0000BD41,
0x0000BDDD,0x0000BE79,0x0000BF15,0x0000BFB2,0x0000C04F,0x0000C0EC,0x0000C18A,0x0000C228,
0x0000C2C7,0x0000C366,0x0000C405,0x0000C4A5,0x0000C545,0x0000C5E5,0x0000C686,0x0000C727,
0x0000C7C9,0x0000C86B,0x0000C90D,0x0000C9B0,0x0000CA53,0x0000CAF6,0x0000CB9A,0x0000CC3F,
0x0000CCE3,0x0000CD89,0x0000CE2E,0x0000CED4,0x0000CF7A,0x0000D021,0x0000D0C8,0x0000D170,
0x0000D218,0x0000D2C0,0x0000D369,0x0000D413,0x0000D4BC,0x0000D567,0x0000D611,0x0000D6BC,
0x0000D768,0x0000D814,0x0000D8C0,0x0000D96D,0x0000DA1A,0x0000DAC8,0x0000DB76,0x0000DC25,
0x0000DCD4,0x0000DD83,0x0000DE33,0x0000DEE4,0x0000DF95,0x0000E046,0x0000E0F8,0x0000E1AB,
0x0000E25E,0x0000E311,0x0000E3C5,0x0000E479,0x0000E52E,0x0000E5E3,0x0000E699,0x0000E750,
0x0000E806,0x0000E8BE,0x0000E976,0x0000EA2E,0x0000EAE7,0x0000EBA0,0x0000EC5A,0x0000ED15,
0x0000EDD0,0x0000EE8B,0x0000EF47,0x0000F004,0x0000F0C1,0x0000F17F,0x0000F23D,0x0000F2FC,
0x0000F3BB,0x0000F47B,0x0000F53C,0x0000F5FD,0x0000F6BF,0x0000F781,0x0000F844,0x0000F907,
0x0000F9CB,0x0000FA8F,0x0000FB55,0x0000FC1A,0x0000FCE1,0x0000FDA8,0x0000FE6F,0x0000FF37,
0x00010000,0x000100C9,0x00010193,0x0001025E,0x00010329,0x000103F5,0x000104C2,0x0001058F,
0x0001065D,0x0001072B,0x000107FA,0x000108CA,0x0001099A,0x00010A6B,0x00010B3D,0x00010C10,
0x00010CE3,0x00010DB6,0x00010E8B,0x00010F60,0x00011036,0x0001110C,0x000111E4,0x000112BC,
0x00011394,0x0001146E,0x00011548,0x00011623,0x000116FE,0x000117DA,0x000118B8,0x00011995,
0x00011A74,0x00011B53,0x00011C33,0x00011D14,0x00011DF6,0x00011ED8,0x00011FBB,0x0001209F,
0x00012184,0x00012269,0x00012350,0x00012437,0x0001251F,0x00012607,0x000126F1,0x000127DB,
0x000128C6,0x000129B2,0x00012A9F,0x00012B8D,0x00012C7C,0x00012D6B,0x00012E5C,0x00012F4D,
0x0001303F,0x00013132,0x00013226,0x0001331A,0x00013410,0x00013507,0x000135FE,0x000136F7,
0x000137F0,0x000138EA,0x000139E5,0x00013AE1,0x00013BDF,0x00013CDD,0x00013DDC,0x00013EDC,
0x00013FDD,0x000140DF,0x000141E2,0x000142E6,0x000143EB,0x000144F0,0x000145F8,0x00014700,
0x00014809,0x00014913,0x00014A1E,0x00014B2A,0x00014C37,0x00014D46,0x00014E55,0x00014F66,
0x00015077,0x0001518A,0x0001529E,0x000153B3,0x000154C9,0x000155E0,0x000156F9,0x00015812,
0x0001592D,0x00015A49,0x00015B66,0x00015C84,0x00015DA4,0x00015EC4,0x00015FE6,0x00016109,
0x0001622E,0x00016353,0x0001647A,0x000165A2,0x000166CC,0x000167F6,0x00016922,0x00016A4F,
0x00016B7E,0x00016CAE,0x00016DDF,0x00016F12,0x00017045,0x0001717B,0x000172B1,0x000173E9,
0x00017523,0x0001765E,0x0001779A,0x000178D7,0x00017A17,0x00017B57,0x00017C99,0x00017DDD,
0x00017F22,0x00018068,0x000181B0,0x000182F9,0x00018444,0x00018591,0x000186DF,0x0001882F,
0x00018980,0x00018AD3,0x00018C27,0x00018D7D,0x00018ED5,0x0001902F,0x0001918A,0x000192E6,
0x00019445,0x000195A5,0x00019707,0x0001986A,0x000199CF,0x00019B36,0x00019C9F,0x00019E0A,
0x00019F76,0x0001A0E4,0x0001A254,0x0001A3C6,0x0001A53A,0x0001A6B0,0x0001A827,0x0001A9A1,
0x0001AB1C,0x0001AC9A,0x0001AE19,0x0001AF9A,0x0001B11D,0x0001B2A3,0x0001B42A,0x0001B5B3,
0x0001B73F,0x0001B8CC,0x0001BA5C,0x0001BBEE,0x0001BD82,0x0001BF18,0x0001C0B0,0x0001C24B,
0x0001C3E7,0x0001C586,0x0001C727,0x0001C8CB,0x0001CA71,0x0001CC19,0x0001CDC3,0x0001CF70,
0x0001D11F,0x0001D2D1,0x0001D485,0x0001D63B,0x0001D7F4,0x0001D9B0,0x0001DB6E,0x0001DD2E,
0x0001DEF1,0x0001E0B7,0x0001E27F,0x0001E44A,0x0001E618,0x0001E7E8,0x0001E9BB,0x0001EB91,
0x0001ED6A,0x0001EF45,0x0001F123,0x0001F304,0x0001F4E8,0x0001F6CF,0x0001F8B9,0x0001FAA6,
0x0001FC96,0x0001FE88,0x0002007E,0x00020277,0x00020473,0x00020673,0x00020875,0x00020A7B,
0x00020C84,0x00020E90,0x0002109F,0x000212B2,0x000214C9,0x000216E2,0x000218FF,0x00021B20,
0x00021D44,0x00021F6C,0x00022197,0x000223C6,0x000225F9,0x0002282F,0x00022A69,0x00022CA7,
0x00022EE9,0x0002312F,0x00023378,0x000235C6,0x00023818,0x00023A6D,0x00023CC7,0x00023F25,
0x00024187,0x000243ED,0x00024658,0x000248C7,0x00024B3A,0x00024DB2,0x0002502E,0x000252AF,
0x00025534,0x000257BE,0x00025A4D,0x00025CE0,0x00025F78,0x00026215,0x000264B7,0x0002675E,
0x00026A0A,0x00026CBB,0x00026F71,0x0002722C,0x000274ED,0x000277B3,0x00027A7E,0x00027D4F,
0x00028026,0x00028302,0x000285E3,0x000288CB,0x00028BB8,0x00028EAB,0x000291A4,0x000294A3,
0x000297A8,0x00029AB3,0x00029DC4,0x0002A0DC,0x0002A3FB,0x0002A71F,0x0002AA4B,0x0002AD7D,
0x0002B0B5,0x0002B3F5,0x0002B73B,0x0002BA89,0x0002BDDD,0x0002C139,0x0002C49C,0x0002C807,
0x0002CB79,0x0002CEF2,0x0002D274,0x0002D5FD,0x0002D98E,0x0002DD27,0x0002E0C8,0x0002E471,
0x0002E823,0x0002EBDD,0x0002EFA0,0x0002F36C,0x0002F740,0x0002FB1D,0x0002FF04,0x000302F3,
0x000306EC,0x00030AEF,0x00030EFB,0x00031311,0x00031730,0x00031B5A,0x00031F8E,0x000323CD,
0x00032816,0x00032C69,0x000330C8,0x00033531,0x000339A6,0x00033E26,0x000342B1,0x00034748,
0x00034BEB,0x0003509A,0x00035556,0x00035A1D,0x00035EF2,0x000363D3,0x000368C2,0x00036DBD,
0x000372C6,0x000377DD,0x00037D02,0x00038235,0x00038776,0x00038CC6,0x00039225,0x00039793,
0x00039D11,0x0003A29E,0x0003A83B,0x0003ADE8,0x0003B3A6,0x0003B974,0x0003BF54,0x0003C545,
0x0003CB48,0x0003D15C,0x0003D784,0x0003DDBD,0x0003E40A,0x0003EA6A,0x0003F0DE,0x0003F766,
0x0003FE02,0x000404B4,0x00040B7A,0x00041256,0x00041949,0x00042051,0x00042771,0x00042EA8,
0x000435F7,0x00043D5E,0x000444DE,0x00044C78,0x0004542B,0x00045BF9,0x000463E1,0x00046BE5,
0x00047405,0x00047C42,0x0004849B,0x00048D13,0x000495A9,0x00049E5E,0x0004A733,0x0004B029,
0x0004B940,0x0004C279,0x0004CBD4,0x0004D553,0x0004DEF6,0x0004E8BF,0x0004F2AD,0x0004FCC3,
0x00050700,0x00051166,0x00051BF5,0x000526B0,0x00053196,0x00053CA8,0x000547E9,0x00055359,
0x00055EF9,0x00056ACB,0x000576CF,0x00058307,0x00058F75,0x00059C19,0x0005A8F6,0x0005B60C,
0x0005C35D,0x0005D0EC,0x0005DEB8,0x0005ECC5,0x0005FB14,0x000609A7,0x0006187F,0x0006279F,
0x00063709,0x000646BF,0x000656C4,0x00066718,0x000677C0,0x000688BD,0x00069A12,0x0006ABC2,
0x0006BDD0,0x0006D03E,0x0006E310,0x0006F649,0x000709EC,0x00071DFC,0x0007327E,0x00074776,
0x00075CE6,0x000772D4,0x00078944,0x0007A03A,0x0007B7BB,0x0007CFCD,0x0007E873,0x000801B5,
0x00081B98,0x00083621,0x00085158,0x00086D43,0x000889E9,0x0008A752,0x0008C586,0x0008E48C,
0x0009046E,0x00092535,0x000946EB,0x0009699A,0x00098D4D,0x0009B20F,0x0009D7EE,0x0009FEF7,
0x000A2736,0x000A50BC,0x000A7B97,0x000AA7D9,0x000AD593,0x000B04DA,0x000B35C0,0x000B685C,
0x000B9CC6,0x000BD317,0x000C0B69,0x000C45DA,0x000C828A,0x000CC199,0x000D032C,0x000D476C,
0x000D8E82,0x000DD89D,0x000E25EF,0x000E76B0,0x000ECB1B,0x000F2371,0x000F7FFA,0x000FE106,
0x001046EA,0x0010B206,0x001122C3,0x00119997,0x00121703,0x00129B97,0x001327F6,0x0013BCD5,
0x00145B00,0x0015035D,0x0015B6F1,0x001676E5,0x0017448D,0x0018216E,0x00190F4A,0x001A102B,
0x001B2672,0x001C54E8,0x001D9EDA,0x001F0835,0x002095AF,0x00224CFD,0x00243517,0x0026569A,
0x0028BC49,0x002B73C6,0x002E8E9A,0x003223B0,0x0036519A,0x003B4205,0x00412F4C,0x00486DB7,
0x00517BB6,0x005D1FF3,0x006CA58F,0x0082608E,0x00A2F8FD,0x00D94C4B,0x0145F2C4,0x028BE5EC,
};

INT16S atan2s16(INT16S y, INT16S x)
{
        INT16S i;
        INT32U z;

        if(x == 0)
    {
        if (y == 0) i = 0;
        else        i = 1023;
    }
    else
    {
        z = ((y < 0) ? (0 - y) : (y)) * 65536u / ((x < 0) ? (0 - x) : (x));
        i = 0;
        if (atan2buf[i + 512] <= z) i += 512;
        if (atan2buf[i + 256] <= z) i += 256;
        if (atan2buf[i + 128] <= z) i += 128;
        if (atan2buf[i + 64] <= z) i += 64;
        if (atan2buf[i + 32] <= z) i += 32;
        if (atan2buf[i + 16] <= z) i += 16;
        if (atan2buf[i + 8] <= z) i += 8;
        if (atan2buf[i + 4] <= z) i += 4;
        if (atan2buf[i + 2] <= z) i += 2;
        if (atan2buf[i + 1] <= z) i += 1;
    }
    i = i * 900 / 1024;

    if (y < 0)
    {
        if (x < 0) return  i - 1800;
        else       return -i;
    }
    else
    {
        if (x < 0) return -i + 1800;
        else       return  i;
    }
}


在 Lm3s1138 上测试,主频50M,MDK3.50 编译,不优化

atan2()    用时最多59微秒
atan2f()   用时最多28微秒
atan2s16() 用时最多4微秒

Lm3s1138和STM32的FLASH结构不同,虽然只工作在50M,但用时可能比STM32还要少

出0入0汤圆

发表于 2011-6-20 11:21:23 | 显示全部楼层
/***************************************************************************************
** 名    称: atan2
** 参    数: a: 正弦值,b: 余弦值
** 返    回: 角度(-127 ~ 127)
** 描    述: 反正切
**
***************************************************************************************/
signed char atan2(signed char x,signed char y)
{
    unsigned char code myangle[] =
    {
     /* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 */
        0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45
    };
    bit nx = (x < 0),ny = (y < 0),cb;
    if(x < 0)
        x = -x;
    if(y < 0)
        y = -y;
    if(x < y)
        x = 90 - myangle[x * 64 / y];//余切值*64
    else
        x = myangle[y * 64 / x];//正切值*64
    if(nx)
    {
        if(180 - x > 127)
            x = 127;
        else
            x = 180 - x;
    }
    if(ny)
        x = -x;
    return x;
}

我的是这样做的,精度低点,要精度高的话可以把表建的大一些.
因为对称的关系,只需要建0-45°的表,用正切值*256做查表的索引.
45°-90°时用余切*256做差表索引,然后再用90°去减查表出来的数据.
然后根据x,y的符号确定象限.
要更高的精度可以用正切值*512或*1024做查表的索引,建立0-512或0-1024对应0-45°的对应关系表.
不知道这种方法符不符合楼主的要求.

出0入0汤圆

 楼主| 发表于 2011-6-20 13:40:23 | 显示全部楼层
回复【2楼】Clinging  哆拉C梦
直接查表的话,0.1度分辨率大概需要4k rom
-----------------------------------------------------------------------

按我用的单片机4KB ROM 有肯定够了。主要是考虑到加速度计计算太高的精度没有意义,AD转换出来的值也没那么高精度。0.X度已经足够了。
还需要用的地方是磁阻的计算,GPS坐标和航向的计算,都不需要太高的精度。用math.h浪费了。

回复【3楼】autopass  
-----------------------------------------------------------------------

感谢您的共享...写得很好啊~这是我想要的~总之谢谢你啦~



还有就是大葱帮找到的一片翻译的文章
计算反正切,正余弦,开平方的文章,写得真的不错,查表和逼近。
我都转成PDF了,原网址 http://ericlulu.blog.163.com/blog/static/17727406820108891427131/

我贴出来给大家看看

点击此处下载 ourdev_650496KU6Z29.pdf(文件大小:135K) (原文件名:三角函数快速算法(反正切,正余弦,开平方).pdf)
点击此处下载 ourdev_650497U68QNI.pdf(文件大小:346K) (原文件名:三角函数逼近快速算法.pdf)
点击此处下载 ourdev_650498NA7PH9.pdf(文件大小:232K) (原文件名:平方根快速算法.pdf)
点击此处下载 ourdev_650499YZO45V.pdf(文件大小:148K) (原文件名:平方根快速算法2.pdf)

出0入0汤圆

发表于 2011-6-24 10:02:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-24 10:41:23 | 显示全部楼层
好东东。

出0入0汤圆

发表于 2011-8-24 16:10:46 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-11-1 21:29:52 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-11-1 21:29:53 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-11-1 21:53:32 | 显示全部楼层
good

出0入0汤圆

发表于 2011-11-1 22:04:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-2 17:54:49 | 显示全部楼层
可以用泰勒级数去展开。
精度和速度需要权衡优化一下了。

出0入0汤圆

发表于 2011-12-9 16:10:04 | 显示全部楼层
因為正切值可以無限大,
所以反正切的查表及泰勒展開收斂不是一致性,基本上最好要限定使用的範圍,否則精度可能不易控制

出0入0汤圆

发表于 2011-12-11 10:33:28 | 显示全部楼层
使用泰勒级数去展开吧,试过展开5个级数,做5个乘加就可以,定点运算,精度达0.1%度。

出0入0汤圆

发表于 2011-12-11 13:45:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-12 10:23:01 | 显示全部楼层
我一直觉得用加速度计求倾角得用反正弦呢?

出0入0汤圆

 楼主| 发表于 2011-12-12 18:24:08 | 显示全部楼层
回复【16楼】htjgdw  
-----------------------------------------------------------------------

acc_angle.fPitch = my_asin(acc.x / my_sqrt(acc.y * acc.y + acc.z * acc.z + acc.x * acc.x));

这一句

acc_angle.fPitch = my_atan(my_sqrt(acc.y * acc.y + acc.z * acc.z), acc.x);

结果是一样的

具体怎么理解,我没有仔细看。你可以推到一下。

出0入0汤圆

发表于 2012-9-6 10:12:44 | 显示全部楼层
非常感谢,正需要,过来学习一下

出0入0汤圆

发表于 2013-11-26 12:57:23 | 显示全部楼层
相当有帮助,下来试试

出0入0汤圆

发表于 2015-9-17 23:44:57 | 显示全部楼层
正需要,顶一下!!!

出0入0汤圆

发表于 2016-2-27 13:27:04 | 显示全部楼层
正需要,收好了,谢谢楼主

出0入0汤圆

发表于 2016-3-2 13:43:31 | 显示全部楼层
32K已经被用了十几K了,还是省着用吧

出0入0汤圆

发表于 2016-3-6 09:20:50 | 显示全部楼层
MARK谢谢分享,,,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 11:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表