Processing 电子罗盘校准(以 MPU9250为例)
使用Processing 软件, 通过 arduino 输入 电子罗盘的数据,通过PC端进行校准,程序如下:
import processing.serial.*; Serial myPort;
ArrayList<Float> xList = new ArrayList<Float>();
ArrayList<Float> yList = new ArrayList<Float>();
ArrayList<Float> zList = new ArrayList<Float>(); float minX,maxX;
float minY,maxY;
float minZ,maxZ;
float moX,moY;
float count; void setup() {
size(600, 600, P3D);
myPort = new Serial(this,"COM5", 38400);
myPort.bufferUntil(10);
} void draw() {
background(100);
float midX = (minX+maxX)/2;
float midY = (minY+maxY)/2;
float midZ = (minZ+maxZ)/2;
if (mousePressed) {
moX= mouseX;
moY= mouseY;
} //camera(moX,moY, (height/2) / tan(PI/5), midX, midY,midZ, 0, 1, 0);
camera(moX,moY,(height/2) / tan(PI/5), width/2, height/2,0, 0, 1, 0);
translate(width/2, height/2, -100);
strokeWeight(2); // Default
stroke(255);
noFill(); //x
line(midX-100,midY,midZ,midX+100,midY,midZ);
//y
line(midX,midY+100,midZ,midX,midY-100,midZ);
//z
line(midX,midY,midZ-100,midX,midY,midZ+100); //box(200); for(int i = 0;i<xList.size();i++){
point(xList.get(i),yList.get(i),zList.get(i));
}
println(count);
println("midX:"+midX+","+"midY"+midY+","+"midZ:"+midZ); } void serialEvent (Serial myPort)
{ float mX = 0;
float mY = 0;
float mZ = 0;
String inString = myPort.readStringUntil(10); if (inString != null)
{
inString = trim(inString);
String[] list = split(inString, ',');
if(list.length ==4){
count = float(list[0]);
mX = float(list[1])/100;
mY = float(list[2])/100;
mZ = float(list[3])/100; //-------------------------
if(mX < minX){
minX = mX;
} if(mX > maxX){
maxX = mX;
} //----------------------------
if(mY < minY){
minY = mY;
} if(mY > maxY){
maxY = mY;
}
//----------------------------
if(mZ > maxZ){
maxZ = mZ;
}
if(mZ < minZ){
minZ = mZ;
} xList.add(mX);
yList.add(mY);
zList.add(mZ);
} }
}
arduino 代码如下:
int mx,my,mz;
:
:
: 略 Serial.print(count);
Serial.print(",");
Serial.print(mx); //Inclination X axis (as measured by accelerometer)
Serial.print(",");
Serial.print(my); //Inclination X axis (estimated / filtered)
Serial.print(",");
Serial.print(mz); //Inclination X axis (estimated / filtered) Serial.println("");
count++;
PC端获取的效果如下图:

最终坐标系完全落入球内表示校准成功.
视频:
Processing 电子罗盘校准(以 MPU9250为例)的更多相关文章
- arduino 串口实时绘图(以mpu9250为例)
兴趣之余,利用晚上的时间,做一些个人兴趣方面的开发. 之前没接触过 arduino, 无意之中买了个开发板做一些小开发, 这里利用python 读取 mpu9250 数据实时绘图. 下位机代码 C++ ...
- Storm 系列(一)基本概念
Storm 系列(一)基本概念 Apache Storm(http://storm.apache.org/)是由 Twitter 开源的分布式实时计算系统. Storm 可以非常容易并且可靠地处理无限 ...
- Image Processing and Analysis_8_Edge Detection:Statistical edge detection_ learning and evaluating edge cues——2003
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- Image Processing and Computer Vision_Review:Local Invariant Feature Detectors: A Survey——2007.11
翻译 局部不变特征探测器:一项调查 摘要 -在本次调查中,我们概述了不变兴趣点探测器,它们如何随着时间的推移而发展,它们如何工作,以及它们各自的优点和缺点.我们首先定义理想局部特征检测器的属性.接下来 ...
- 转债---Pregel: A System for Large-Scale Graph Processing(译)
转载:http://duanple.blog.163.com/blog/static/70971767201281610126277/ 作者:Grzegorz Malewicz, Matthew ...
- 【WP 8.1开发】电子罗盘
罗盘,估计也不用我过多介绍,学过初中物理的都知道,不管是指南针,还是指北针,其本质就是用来辨别方向的. 操作电子罗盘伟感器也不复杂,主要就是两个角度: 1.当前方向与磁北的夹角: 2.当前方向与地北的 ...
- DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
转自:http://www.360doc.com/content/14/0116/16/15528092_345730642.shtml 以及参考网络. 首先,我们先了解一下内存的大体结构工作流程,这 ...
- MapReduce的模式、算法和用例
英文原文:<MapReduce Patterns, Algorithms, and Use Cases> https://highlyscalable.wordpress.com/2012 ...
- [翻译]MapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on Large Clusters MapReduce:面向大型集群的简化数据处理 摘要 MapReduce既是一种编程模型 ...
随机推荐
- Android Handler 最佳的理解资料
- 对一个目录的文件从cp936转换成utf-8
打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...
- G - 小希的迷宫
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pract ...
- background-position
在学习网页"换肤"效果时:对background-position的理解更深了. 这是我使用的一整张图片:
- JSP基础——属性保存范围和request对象
JSP属性保存范围 JSP中提供了四种属性保存范围,分别为page,request,session及application. 1.page范围,指设置的属性只在当前页面有效.通过pageContext ...
- 技海拾贝 - Android
1. 前台Service - 介绍: http://blog.csdn.net/think_soft/article/details/7299438 - 代码实例: http://blog.csdn ...
- 记账类APP竞品分析-挖财与随手记
注:本文更新中. 一.概览 1. 产品名称及版本 l 挖财11.2.0.0 免费版(2016/9/6发布) l 随手记10.2.8免费版(2016/8/22发布) 2. 设备信息 设备型号:i ...
- 使用navigator.geolocation来获取用户的地理位置信息
使用navigator.geolocation来获取用户的地理位置信息 W3C 中新添加了一个名为 Geolocation的 API 规范,Geoloaction API的作用就是通过浏览器获取用户的 ...
- Ionic学习笔记三 Gulp在ionic中的使用
简介 Gulp是一个基于流的自动化构建器. 安装 npm config set registry http://registry.npm.taobao.org ---最好用国内源 npm instal ...
- ListView只允许展开其中一个item的方法
xml文件代码: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:an ...