搜索
bottom↓
回复: 44
打印 上一主题 下一主题

捷联惯导对位置进行求解,漂移太大?附件提供卡尔曼滤波

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2013-4-27 22:34:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在不采用GPS卡尔曼组合滤波的情况下,有什么方法可以对惯性导航心痛进行经纬度和高度解算?只需要1分钟内有1m的精度都行。

我现在采用的方法:
1.采用论坛上常用的四元素法实时更新欧拉角(加速度计磁阻实时补偿陀螺仪);
2.通过欧拉角或者四元素求解出机体坐标系到当地地理坐标系的转换矩阵Cbn;
3.将加速度计测试出来的比力值,左乘转移矩阵,分解到当地地理坐标系下的比力值,并将D轴的加速度减去重力加速度值;
4.分别根据正北方的加速度、正东方的加速、重力方向的加速度值,2次积分求解得到经纬度和高度位置;

该方法的漂移太大了,10s能漂移30m,大神有做过位置导航的不?有没有更好的办法呢。

再次我给大家共享一个卡尔曼滤波程序,在STM32上成功运行,并取得一定的滤波效果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

2
发表于 2013-4-27 23:11:40 | 只看该作者
虽然我还没有弄到这个阶段,但是我有个假想:
是不是 四轴的四个电机之间的距离 或者方位也对这个漂移有影响呢?
期待 大神解答。

出105入79汤圆

3
发表于 2013-4-28 01:04:40 | 只看该作者
不可能的,捷连只能求解姿态,位置还是需要引入新的观察者:GPS,因为加速度积分误差太大

出0入0汤圆

4
发表于 2013-4-28 08:42:40 | 只看该作者
你可能感觉自己的要求不过分,但是我可以明确告诉你,1分钟漂移1m,用惯性来做简直是白日做梦。就算你用上GPS,如果不是RTK和差分,都没戏。

出0入0汤圆

5
 楼主| 发表于 2013-5-3 16:49:38 | 只看该作者
qwe2231695 发表于 2013-4-28 01:04
不可能的,捷连只能求解姿态,位置还是需要引入新的观察者:GPS,因为加速度积分误差太大 ...

我只追求短时间内的捷联位置求解,不超过5分钟的。气压计也可以对离海平面的高度进行补偿的,但是只能补偿单根轴,即地理坐标系的D轴!地理坐标系的N、E轴期待除了GPS的其它观测者?

出0入0汤圆

6
 楼主| 发表于 2013-5-3 16:54:54 | 只看该作者
asha 发表于 2013-4-28 08:42
你可能感觉自己的要求不过分,但是我可以明确告诉你,1分钟漂移1m,用惯性来做简直是白日做梦。就算你用上GP ...

多谢解答,1分钟漂移1m的精度确实很高,1分钟10m也可以接受的~我在想能不能通过更好的传感器来提高精度!现在正在调试直接输出模电电压的,加速度传感器:MMA7361、陀螺仪:3个ENC-03MB。这样可以利用cpu进行高速采集并通过软件滤波(如卡尔曼滤波)!从而不受数字量输出传感器I2C通信速度的影响

出0入0汤圆

7
发表于 2013-5-3 18:00:38 来自手机 | 只看该作者
楼主,你的这个卡尔曼怎么用的,我在程序里调用返回值怎么恒定为1呢

出0入0汤圆

8
发表于 2013-5-3 19:18:20 | 只看该作者
zb000000 发表于 2013-5-3 16:54
多谢解答,1分钟漂移1m的精度确实很高,1分钟10m也可以接受的~我在想能不能通过更好的传感器来提高精度! ...

你选的这几个传感器根本不行,就算用ADIS16355也达不到你的要求。我给你个数据,现在国内首家100W左右的惯导,纯惯性漂移是1小时一海里。 你看下你选的器件行么?还是选择价格GPS吧

出0入0汤圆

9
发表于 2013-5-3 19:19:30 | 只看该作者
nnnkey 发表于 2013-5-3 18:00
楼主,你的这个卡尔曼怎么用的,我在程序里调用返回值怎么恒定为1呢

哈哈,我做个广告。还是买我AHRS开发板吧,带卡尔曼滤波程序,完全提供源代码。 保证是完整版本,而且是真正的四状态量,3观测量的。 可以移植到其它系统

出0入0汤圆

10
 楼主| 发表于 2013-5-3 20:01:35 | 只看该作者
nnnkey 发表于 2013-5-3 18:00
楼主,你的这个卡尔曼怎么用的,我在程序里调用返回值怎么恒定为1呢

现在main函数中调用kalman初始化函数“KalMan_PramInit()”,然后用一个Timer固定一个5ms的周期(这个周期可以根据自己的cpu反应速度和传感器数据传输速度来调节)调用函数“float KalMan_Update(float *Z)”,该函数的输入参数“Z”是当前的测量值,返回值即是经过卡尔曼滤波后的值。里面影响最大就是Q和R两个调节参数,程序里面有注释

出0入0汤圆

11
 楼主| 发表于 2013-5-3 20:07:45 | 只看该作者
asha 发表于 2013-5-3 19:19
哈哈,我做个广告。还是买我AHRS开发板吧,带卡尔曼滤波程序,完全提供源代码。 保证是完整版本,而且是 ...

我的姿态解算出来的欧拉角精度也是1°。姿态解算程序采用德国人的“AHRS.c”程序即可,很好用。将陀螺仪作为测量值,将加速度计和磁阻作为补偿值对测量值进行一定的补偿,解算出来的姿态漂移很少

出0入0汤圆

12
 楼主| 发表于 2013-5-3 20:08:41 | 只看该作者
nnnkey 发表于 2013-5-3 18:00
楼主,你的这个卡尔曼怎么用的,我在程序里调用返回值怎么恒定为1呢

给你提供可德国人的AHRS姿态解算源码,未修改!
  1. /*
  2. * AHRS
  3. * Copyright 2010 S.O.H. Madgwick
  4. *
  5. * This program is free software: you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser Public License as
  7. * published by the Free Software Foundation, either version 3 of the
  8. * License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13. * Lesser Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser Public License
  16. * along with this program.  If not, see
  17. * <http://www.gnu.org/licenses/>.
  18. */
  19. // AHRS.c
  20. // S.O.H. Madgwick
  21. // 25th August 2010
  22. //
  23. // Quaternion implementation of the 'DCM filter' [Mayhony et al].  Incorporates the magnetic distortion
  24. // compensation algorithms from my filter [Madgwick] which eliminates the need for a reference
  25. // direction of flux (bx bz) to be predefined and limits the effect of magnetic distortions to yaw
  26. // axis only.
  27. //
  28. // User must define 'halfT' as the (sample period / 2), and the filter gains 'Kp' and 'Ki'.
  29. //
  30. // Global variables 'q0', 'q1', 'q2', 'q3' are the quaternion elements representing the estimated
  31. // orientation.  See my report for an overview of the use of quaternions in this application.
  32. //
  33. // User must call 'AHRSupdate()' every sample period and parse calibrated gyroscope ('gx', 'gy', 'gz'),
  34. // accelerometer ('ax', 'ay', 'ay') and magnetometer ('mx', 'my', 'mz') data.  Gyroscope units are
  35. // radians/second, accelerometer and magnetometer units are irrelevant as the vector is normalised.
  36. //

  37.                                                                                  
  38. #include "stm32f10x.h"                 
  39. #include "AHRS.h"
  40. #include "Positioning.h"       
  41. #include <math.h>                          
  42. #include <stdio.h>



  43. /* Private define ------------------------------------------------------------*/
  44. #define Kp 2.0f                        // proportional gain governs rate of convergence to accelerometer/magnetometer
  45. #define Ki 0.005f                // integral gain governs rate of convergence of gyroscope biases
  46. #define halfT 0.0025f                // half the sample period        : 0.005s/2=0.0025s

  47. #define ACCEL_1G 1000 //the acceleration of gravity is: 1000 mg

  48. /* Private variables ---------------------------------------------------------*/
  49. static float q0 = 1, q1 = 0, q2 = 0, q3 = 0;        // quaternion elements representing the estimated orientation
  50. static float exInt = 0, eyInt = 0, ezInt = 0;        // scaled integral error

  51. /* Public variables ----------------------------------------------------------*/
  52. EulerAngle_Type EulerAngle;        //unit: radian
  53. u8 InitEulerAngle_Finished = 0;

  54. float Magnetoresistor_mGauss_X = 0, Magnetoresistor_mGauss_Y = 0, Magnetoresistor_mGauss_Z = 0;//unit: milli-Gauss                                                                                                                                                                                                       
  55. float Accelerate_mg_X, Accelerate_mg_Y, Accelerate_mg_Z;//unit: mg                                                               
  56. float AngularRate_dps_X, AngularRate_dps_Y, AngularRate_dps_Z;//unit: dps: degree per second       

  57. int16_t Magnetoresistor_X, Magnetoresistor_Y, Magnetoresistor_Z;                                                                                                                                                                                                       
  58. uint16_t Accelerate_X = 0, Accelerate_Y = 0, Accelerate_Z = 0;                                                                                                                                                                                               
  59. uint16_t AngularRate_X = 0, AngularRate_Y = 0, AngularRate_Z = 0;

  60. u8 Quaternion_Calibration_ok = 0;

  61. /* Private macro -------------------------------------------------------------*/
  62. /* Private typedef -----------------------------------------------------------*/
  63. /* Private function prototypes -----------------------------------------------*/

  64. /*******************************************************************************
  65. * Function Name  : AHRSupdate
  66. * Description    : None
  67. * Input          : None
  68. * Output         : None
  69. * Return         : None
  70. *******************************************************************************/
  71. void AHRSupdate(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) {
  72.         float norm;
  73.         float hx, hy, hz, bx, bz;
  74.         float vx, vy, vz, wx, wy, wz;
  75.         float ex, ey, ez;

  76.         // auxiliary variables to reduce number of repeated operations
  77.         float q0q0 = q0*q0;
  78.         float q0q1 = q0*q1;
  79.         float q0q2 = q0*q2;
  80.         float q0q3 = q0*q3;
  81.         float q1q1 = q1*q1;
  82.         float q1q2 = q1*q2;
  83.         float q1q3 = q1*q3;
  84.         float q2q2 = q2*q2;   
  85.         float q2q3 = q2*q3;
  86.         float q3q3 = q3*q3;         
  87.        
  88.         // normalise the measurements
  89.         norm = sqrt(ax*ax + ay*ay + az*az);      
  90.         ax = ax / norm;
  91.         ay = ay / norm;
  92.         az = az / norm;
  93.         norm = sqrt(mx*mx + my*my + mz*mz);         
  94.         mx = mx / norm;
  95.         my = my / norm;
  96.         mz = mz / norm;         
  97.        
  98.         // compute reference direction of flux
  99.         hx = 2*mx*(0.5 - q2q2 - q3q3) + 2*my*(q1q2 - q0q3) + 2*mz*(q1q3 + q0q2);
  100.         hy = 2*mx*(q1q2 + q0q3) + 2*my*(0.5 - q1q1 - q3q3) + 2*mz*(q2q3 - q0q1);
  101.         hz = 2*mx*(q1q3 - q0q2) + 2*my*(q2q3 + q0q1) + 2*mz*(0.5 - q1q1 - q2q2);         
  102.         bx = sqrt((hx*hx) + (hy*hy));
  103.         bz = hz;        
  104.        
  105.         // estimated direction of gravity and flux (v and w)
  106.         vx = 2*(q1q3 - q0q2);
  107.         vy = 2*(q0q1 + q2q3);
  108.         vz = q0q0 - q1q1 - q2q2 + q3q3;
  109.         wx = 2*bx*(0.5 - q2q2 - q3q3) + 2*bz*(q1q3 - q0q2);
  110.         wy = 2*bx*(q1q2 - q0q3) + 2*bz*(q0q1 + q2q3);
  111.         wz = 2*bx*(q0q2 + q1q3) + 2*bz*(0.5 - q1q1 - q2q2);  
  112.        
  113.         // error is sum of cross product between reference direction of fields and direction measured by sensors
  114.         ex = (ay*vz - az*vy) + (my*wz - mz*wy);
  115.         ey = (az*vx - ax*vz) + (mz*wx - mx*wz);
  116.         ez = (ax*vy - ay*vx) + (mx*wy - my*wx);
  117.        
  118.         // integral error scaled integral gain
  119.         exInt = exInt + ex*Ki;
  120.         eyInt = eyInt + ey*Ki;
  121.         ezInt = ezInt + ez*Ki;
  122.        
  123.         // adjusted gyroscope measurements
  124.         gx = gx + Kp*ex + exInt;
  125.         gy = gy + Kp*ey + eyInt;
  126.         gz = gz + Kp*ez + ezInt;
  127.        
  128.         // integrate quaternion rate and normalise
  129.         q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
  130.         q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
  131.         q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
  132.         q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;  
  133.        
  134.         // normalise quaternion
  135.         norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
  136.         q0 = q0 / norm;
  137.         q1 = q1 / norm;
  138.         q2 = q2 / norm;
  139.         q3 = q3 / norm;
  140. }

  141. float clamp(float Value, float Min, float Max)
  142. {
  143.         if(Value > Max)
  144.         {
  145.                 return Max;
  146.         }else if(Value < Min)
  147.         {
  148.                 return Min;
  149.         }else
  150.         {
  151.                 return Value;
  152.         }
  153. }
复制代码

出0入0汤圆

13
 楼主| 发表于 2013-5-3 20:12:42 | 只看该作者
asha 发表于 2013-5-3 19:18
你选的这几个传感器根本不行,就算用ADIS16355也达不到你的要求。我给你个数据,现在国内首家100W左右的 ...

这个数据可太感谢了,我最近做的我头都大了,加速度和角速度出来数据漂移的太厉害了,我加了kalman,反应就比较慢,STM32F103的cpu浮点运算完全不行,蛋疼的很。我现在大概知道位置解算出来能到多少精度了,再次感谢哈。

出215入169汤圆

14
发表于 2013-5-3 21:39:08 | 只看该作者
zb000000 发表于 2013-5-3 20:12
这个数据可太感谢了,我最近做的我头都大了,加速度和角速度出来数据漂移的太厉害了,我加了kalman,反应 ...

10秒1米可能有戏。低档的MEMS陀螺,低动态问题不大,高动态的时候效果蛋疼。另外加气压计能明显减小偏差

LZ最好做一下零速修正,也就是假设移动速度为0,对系统建模,卡尔曼估计陀螺和加速度计零点。这样能得到比较好的精度。

加了零速修正,短时间精度能极大的提高。

出0入0汤圆

15
 楼主| 发表于 2013-5-3 21:46:55 | 只看该作者
asha 发表于 2013-5-3 19:18
你选的这几个传感器根本不行,就算用ADIS16355也达不到你的要求。我给你个数据,现在国内首家100W左右的 ...

您好,能留下您的联系方式吗,qq或手机都可以的!我的邮箱是:1102195634@qq.com

出0入0汤圆

16
 楼主| 发表于 2013-5-3 21:51:55 | 只看该作者
monkeynav 发表于 2013-5-3 21:39
10秒1米可能有戏。低档的MEMS陀螺,低动态问题不大,高动态的时候效果蛋疼。另外加气压计能明显减小偏差
...

1.正考虑把气压计加入来修正加速度计算离地平面的高度。
2.疑问:”对系统建模,卡尔曼估计陀螺和加速度计零点“,请问这个如何实现呢?我这一块是盲点

出0入0汤圆

17
发表于 2013-5-3 23:25:59 | 只看该作者
zb000000 发表于 2013-5-3 21:46
您好,能留下您的联系方式吗,qq或手机都可以的!我的邮箱是:

1487494416

出0入0汤圆

18
发表于 2013-5-3 23:26:46 | 只看该作者
monkeynav 发表于 2013-5-3 21:39
10秒1米可能有戏。低档的MEMS陀螺,低动态问题不大,高动态的时候效果蛋疼。另外加气压计能明显减小偏差
...

车载的用零速修正还行,飞行器没戏。

出0入0汤圆

19
 楼主| 发表于 2013-5-4 11:24:42 | 只看该作者
nnnkey 发表于 2013-5-3 18:00
楼主,你的这个卡尔曼怎么用的,我在程序里调用返回值怎么恒定为1呢

嗯,是的,单次滤波用的。如果要对3个参数进行单独滤波,则需要分别定义每个参数的卡尔曼参数变量!同样的卡尔曼参数则可以公用。然后分别做3个卡尔曼更新函数,里面的控制参数采用相应的控制参数(我没有权限发消息就在这儿回复哈)

出0入0汤圆

20
发表于 2013-5-4 11:43:33 来自手机 | 只看该作者
可不可以扩展卡尔曼参数的维数,不如把length改为3,每个参数变为三维的,这样行不行,我试的结果是错误的,算出来没有结果,现在不知道问题出在哪里

出0入0汤圆

21
发表于 2013-5-4 11:59:54 | 只看该作者
zb000000 发表于 2013-5-4 11:24
嗯,是的,单次滤波用的。如果要对3个参数进行单独滤波,则需要分别定义每个参数的卡尔曼参数变量!同样 ...

说个我的见解,你上传的那个卡尔曼如果维数大点用不了几分钟可能就发散了。

出0入0汤圆

22
 楼主| 发表于 2013-5-4 12:11:17 | 只看该作者
nnnkey 发表于 2013-5-4 11:43
可不可以扩展卡尔曼参数的维数,不如把length改为3,每个参数变为三维的,这样行不行,我试的结果是错误的 ...

那控制参数的维数也得变,比较麻烦

出0入0汤圆

23
 楼主| 发表于 2013-5-4 12:13:32 | 只看该作者
asha 发表于 2013-5-4 11:59
说个我的见解,你上传的那个卡尔曼如果维数大点用不了几分钟可能就发散了。  ...

嗯,只用于单维运算,效果还可以,主要是对传感器出来的数据直接进行滤波,不是为了传感器数据融合

出0入0汤圆

24
发表于 2013-5-4 17:42:13 | 只看该作者
zb000000 发表于 2013-5-4 12:13
嗯,只用于单维运算,效果还可以,主要是对传感器出来的数据直接进行滤波,不是为了传感器数据融合 ...

恩,差不多够用了。

出0入0汤圆

25
发表于 2013-5-4 17:42:53 | 只看该作者
nnnkey 发表于 2013-5-4 11:43
可不可以扩展卡尔曼参数的维数,不如把length改为3,每个参数变为三维的,这样行不行,我试的结果是错误的 ...

状态方程不支持,

出0入0汤圆

26
 楼主| 发表于 2013-5-5 22:16:53 | 只看该作者
本帖最后由 zb000000 于 2013-5-5 22:18 编辑
asha 发表于 2013-5-4 17:42
状态方程不支持,


我发现,传感器数据经过卡尔曼滤波后,再用AHRS程序互补滤波进行姿态解算,精度非常高的。见图
图中:磁阻X->欧拉角的翻滚角;   磁阻Y->欧拉角的俯仰角;


静止时的角度值:如图,可知角度静止的精度为:0.1度。(图中欧拉角的单位:1°/100=0.01°,即角度均放大了100倍)


运动过程中的欧拉角值,角度值也相对平稳。(图中欧拉角的单位:1°/100=0.01°,即角度均放大了100倍)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

27
发表于 2013-5-6 08:46:50 | 只看该作者
zb000000 发表于 2013-5-5 22:16
我发现,传感器数据经过卡尔曼滤波后,再用AHRS程序互补滤波进行姿态解算,精度非常高的。见图
图中:磁 ...

小动态问题不大,就怕大动态。

出0入0汤圆

28
发表于 2013-6-12 00:29:40 | 只看该作者
楼主有没有大动态范围试试阿

出0入0汤圆

29
发表于 2013-6-28 17:26:55 | 只看该作者
zb000000 发表于 2013-5-4 11:24
嗯,是的,单次滤波用的。如果要对3个参数进行单独滤波,则需要分别定义每个参数的卡尔曼参数变量!同样 ...

楼主,请问下,使用AHRS,不初始化四元数,会对后面的解算造成问题吗?

出0入0汤圆

30
发表于 2013-7-1 12:09:45 | 只看该作者
用惯导来计算经纬度 ,这个不现实吧。。。

出0入0汤圆

31
发表于 2013-7-1 13:20:24 | 只看该作者
顶楼主,顺便学习

出0入0汤圆

32
发表于 2013-7-19 21:12:01 | 只看该作者
顶楼主,好帖留名

出0入0汤圆

33
发表于 2013-7-22 21:38:15 | 只看该作者
好贴留名,早日实现

出0入0汤圆

34
发表于 2013-8-1 11:07:29 | 只看该作者
我现在零速的情况下,10秒都漂移0.5m....纠结。。。不知道楼主做到哪一步了?还有用什么传感器?

出0入0汤圆

35
发表于 2013-12-20 18:19:13 | 只看该作者
感谢分享,但是一直没有搞太明白卡尔曼滤波的具体实现步骤,特别是参数的确定,P,Q,R

出0入0汤圆

36
发表于 2014-4-17 10:15:03 | 只看该作者
楼主!你真是救命恩人啊!我是在校学生,在做这个的课题,也是stm32处理器上做的,能分享下你的位置代码吗?我现在快愁死了!呜呜。。。

出0入0汤圆

37
发表于 2014-4-17 10:15:21 | 只看该作者
楼主!你真是救命恩人啊!我是在校学生,在做这个的课题,也是stm32处理器上做的,能分享下你的位置代码吗?我现在快愁死了!呜呜。。。

出50入255汤圆

38
发表于 2014-5-8 00:49:42 | 只看该作者
不懂,先看看。

出0入0汤圆

39
发表于 2014-5-8 13:12:22 来自手机 | 只看该作者
本帖最后由 g921002 于 2014-5-8 13:24 编辑

基於樓主的代碼跟用的組件,基本上做出來的結果基本上是垃圾。
有理想是好事,但是不要無視理論基礎。

出0入0汤圆

40
发表于 2014-7-19 22:21:50 | 只看该作者
真是好东西啊

出0入0汤圆

41
发表于 2014-7-23 22:19:36 | 只看该作者
楼主算法稳定了吗,可否借鉴下QQ2252774555,谢了

出0入0汤圆

42
发表于 2015-4-13 13:53:41 | 只看该作者
刚要弄这个 感觉不错 学习了   

出0入0汤圆

43
发表于 2015-4-13 13:54:03 | 只看该作者
刚要弄这个 感觉不错 学习了   

出0入0汤圆

44
发表于 2015-4-22 15:20:32 | 只看该作者
谢谢分享,帮朋友下了一个

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-28 00:24

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

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