金牌会员
 
- 积分
- 1312
- 金钱
- 1312
- 注册时间
- 2017-3-1
- 在线时间
- 259 小时
|
10金钱
本帖最后由 NewGuard 于 2019-2-27 09:15 编辑
1.磁力计使用九轴芯片,按照网上的参考资料水平面使用磁力计的X轴和Y轴数据得到方向角和磁北极的夹角,目前在水平面(平面校准后)大概可以得到一个相对稳定的数据(指向角度会有2到3度的跳动,还能接受)。
2.考虑把非水平面下的情况加入后发现角度数据跳动更大,但实际上还在水平面没动,不知道什么问题,是
数据处理有问题吗?希望各位帮忙看看什么问题
参考网址:http://www.dzsc.com/data/2010-11-29/87454.html
accel[0]为x轴加速度值,accel[1]为y轴加速度值,accel[2]为z轴加速度值mag[0]为x轴加磁力值,mag[1]为y轴加磁力值,mag[2]为z轴磁力值
Xh = compass.accel[0] /16384.0f;
Yh = compass.accel[1] /16384.0f;
Zh = compass.accel[2] /16384.0f;
#define RAD2DEG 57.29578f // 弧度转度 180/π
angleX = atan2(Xh,mySqrt(Yh*Yh+Zh*Zh))*RAD2DEG - offset_x;
angleY = atan2(Yh,mySqrt(Xh*Xh+Zh*Zh))*RAD2DEG - offset_y;
Yh = compass.mag[1]*cosf(angleY) + compass.mag[0]*sinf(angleY)*sinf(angleX) - compass.mag[2]*cosf(angleX)*sinf(angleY);
Xh = compass.mag[0]*cosf(angleX) + compass.mag[2]*sinf(angleX);
angle = atan2(Yh,Xh) * RAD2DEG + 180;
printf("angleX:%0.1f angleY:%0.1f angle:%0.1f \r\n",angleX,angleY,angle);
|
|