一.卡尔曼滤波九轴融合算法stm32尝试 1.Kalman滤波文件[.h已经封装为结构体] /* Copyright (C) 2012 Kristian Lauszus, TKJ Electronics-> All rights reserved-> This software may be distributed and modified under the terms of the GNU General Public License version 2 (GPL2) as publish…
Google Cardboard的九轴融合算法 --基于李群的扩展卡尔曼滤波 极品巧克力 前言 九轴融合算法是指通过融合IMU中的加速度计(三轴).陀螺仪(三轴).磁场计(三轴),来获取物体姿态的方法.它是开发VR头显中的一个至关重要的部分.VR头显必须要实时准确地获取用户头部的姿态,然后在屏幕上渲染出在对应的姿态所应该要看到的画面,才能让用户在VR世界里获得沉浸感. 因为人眼是非常精密的器官,如果渲染出来的画面稍微有一点点的延时或者偏差,人眼都能察觉出来,导致用户头晕想吐,再也不相信VR了.所…
目录 1. 概述 2. 实现 2.1. 准备 2.2. 核心 2.2.1. 均值坐标(Mean-Value Coordinates) 2.2.2. ROI边界栅格化 2.2.3. 核心实现 2.2.4. 实现中的问题 3. 效果 3.1. 使用过程 3.2. 效率 4. 参考 1. 概述 泊松融合是图像融合处理效果最好的算法,其来自于2004年Siggraph的经典paper:<Poisson Image Editing>.以这篇文章为发端,很多大神提出了一系列的优化算法.2009年, Zee…
目录 1. 概述 2. 实现 2.1. 原理 2.2. 核心代码 2.3. 第二种优化 3. 结果 1. 概述 我在之前的文章<基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现>中,根据<Coordinates for Instant Image Cloning>这篇论文,详细论述了图像融合中泊松融合算法的优化算法--均值坐标(Mean-Value Coordinates)融合算法的具体实现.其实在这篇论文中,还提出了两种优化实现,能够进一步提升…
文章目录 什么是 OSAL? 源码安装 Linux 上OSAL的移植 STM32上OSAL的移植 关键点 测试代码 结语 附件 什么是 OSAL? 今天同学忽然问我有没有搞过OSAL,忽然间一头雾水,于是在搜索引擎上找到了答案,发现这是一个十分实用的东西. OSAL(operating system abstraction layer),操作系统抽象层,是一种以实现多任务为核心的系统资源管理机制,实现了类似RTOS的某些功能,但并不能称之为真正意义上的RTOS,因为其本身还不支持任务的挂起,任务…
作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ 操控无人机,需要知道下一刻飞机的方向.速度不断修正,才能精准控制.回避各种风险. 这是一个状态估计问题 如下图所描绘的,在 k 个(一个或多个)时间点上, 基于初始的状态信息 一系列观测数据 给定控制输入 以及系统的运动和观测模型,力求预测系统在每一时刻的真实状态 图 1.1: 状态估计问题示意图…
1:基于泊松方程的图像融合方法,利用偏微分方程实现了不同图像上区域的无缝融合.比较经典的文章: P. Pérez, M. Gangnet, A. Blake. Poisson image editing. ACM Transactions on Graphics (SIGGRAPH’03), 22(3):313-318, 2003. 下载地址(paper+matlab代码): 泊松融合 2:泊松融合的一个基本介绍          http://blog.sina.com.cn/s/blog_4…
有些小车车身比较长,如果是一个激光雷达,顾前不顾后,有比较大的视野盲区,这对小车导航定位避障来说都是一个问题,比如AGV小车, 所有想在小车前后各加一个雷达,那问题是ROS的建图或者定位导航都只是支持一个雷达,这个时候就需要我们做2个雷达的融合了. 方法比较简单:我的思路是先将两个激光雷达获得的laser_scan转成point_cloud也就是点云,利用pcl库将两个点云拼接在一起,然后在把拼接后的点云重新转成laser_scan. 这样ros里面建图导航都可以用了. 关键点是要把两个激光雷达…
最近在研究体感游戏,到目前为止实现了基于51单片机的MPU6050数据采集.利用蓝牙模块将数据传输到上位机,并利用C#自制串口数据高速采集软件,并且将数据通过自制的折线图绘制模块可视化地展示出来等功能.本文将主要对实现这意见单系统中遇到的问题做一个小结——其中包括: 1.基于51的MPU6050模块通信简介(入门级) 2.陀螺仪数据采集与传输及帧格式介绍(小技巧) 3.基于C#的串口接收函数(C#基本知识) 4.多线程数据池解决高速串口实时性问题(难点) 5.折线图可视化模块(程序员基本功) 关…
3D相关开发 [direct-X] 1.direct-X最小框架 [OpenGL] 1.环境搭建及最小系统 [OpenGL] 2.企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [51单片机] 1602液晶显示控制代码 [51单片机] 1602液晶显示控制代码2 [51单片机] 定时器1 [51单片机] 定时器2-计数示例 [51单片机] 定时器3-计时示例 [51单片机] 中断1-中断整体介绍 [51单片机] TFT2.4彩屏1 [文字显示 画矩形] [51单片机] TFT…
姿态角(Euler角)pitch yaw roll飞行器的姿态角并不是指哪个角度,是三个角度的统称.它们是:俯仰.滚转.偏航.你可以想象是飞机围绕XYZ三个轴分别转动形成的夹角. 地面坐标系(earth-surface inertial reference frame)Sg--------OXgYgZg<ignore_js_op> ①在地面上选一点Og②使Xg轴在水平面内并指向某一方向③Zg轴垂直于地面并指向地心(重力方向)④Yg轴在水平面内垂直于Xg轴,其指向按右手定则确定 机体坐标系(Ai…
最近因项目需要,做一个数据采集的单片机平台.需要移植 FatFs .现在把最后成果贴上来. 1.摘要 在 STM32 单片机上,成功移植 FatFs 0.12b,使用的 Nand Flash 芯片为 K9F2G08 . 特点: 系统配合 FatFs 实现了坏块管理,硬件ECC,软件 ECC 纠错 2.代码分析 2.1.擦写均衡分析 在create_chain 函数中实现,每次分配都由当前scl 指向的 free cluster 开始,逐块检查,是否有可用 cluster 存在.如果没有则取下一块…
融合方式概述 同SLAM发展过程类似,视觉融合IMU问题也可以分成基于滤波和基于优化两大类. 同时按照是否把图像特征信息加入状态向量来进行分类,可以分为松耦合和紧耦合两大类. 一.基于滤波的融合算法 1.1 松耦合 松耦合将视觉传感器和 IMU 作为两个单独的模块,两个模块均可以计算得到位姿信息,然后一般通过 EKF 进行融合. 可参考的算法有ethz的Stephen Weiss的ssf和msf 1.2 紧耦合 紧耦合则是指将视觉和 IMU 得到的中间数据通过一个优化滤波器进行处理,紧耦合需要把…
进击的五月,继上期<使用Air724UG制作简易贪吃蛇>教程之后,@打盹的消防车 又为大家带来基于STM32的潘多拉LuatOS移植全新教程: 为什么使用潘多拉作为教程呢? STM32不能没有通讯,那就选IoT开发板--潘多拉显然没什么短板,很适合入门使用.当然,其他STM32也可以参照本教程来做. 文中同样涉及一些其他平台的移植思路,所以想移植LuatOS都可以看一看. @ 目录 Luat OS架构分析 LuatOS架构图 LuatOS文件目录 LuatOS移植思路 Msgbus(消息队列)…
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过机器人大脑处理并输出反馈和执行动作.本章节涉及到的传感器有激光雷达.IMU.轮式里程计.麦克风.音响.摄像头,和用于处理信息的嵌入式主板.关于传感器的ROS驱动程序开发和在机器人上的使用在后面的章节会展开,本章节重点对机器人传感器和嵌入式主板进行讲解,主要内容: 1.ydlidar-x4激光雷达 2…
MPU6050: Pitch,Roll,Yaw旋转方向遵循右手定则 pith角  –绕Y轴(俯仰)  范围:±90°  ,与旋转方向相反转是增大   -- 抬头为正,低头为负 roll角  –绕X轴(横滚)  范围:±180° ,与旋转方向相反转是增大  -- 右滚为正,左滚为负 yaw角   –绕z轴(偏航)  范围:±180° ,与旋转方向相反转是增大  --右偏为正,左偏为负    飞机与MPU6050姿态角的关系:            DMP:输出四个数(四元数),经公式转换后得到姿态…
Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than they. Our study of the works of the ancients enables us to give fresh life to their finer ideas, and rescue them from time’s oblivion and man’s neglect.…
From Wikipedia, the free encyclopedia 来自维基百科,免费的百科Sensor fusion is combining of sensory data or data derived from disparate sources such that the resulting information has less uncertainty than would be possible when these sources were used individua…
相机IMU融合四部曲(二):误差状态四元数详细解读 极品巧克力 前言 上一篇文章,<D-LG-EKF详细解读>中,讲了理论上的SE3上相机和IMU融合的思想.但是,还没有涉及到实际的操作,以及实际操作中会遇到的一些问题.所以,本文开始讲实际操作,包括,在相机和IMU融合的过程中,IMU速度的计算,加速度计和陀螺仪的使用,偏移的处理,重力的滤波等. 本文的主要参考文献为John sola的<Quaternion kinematics for the error state Kalman&g…
相机IMU融合四部曲(一):D-LG-EKF详细解读 极品巧克力 前言 前两篇文章<Google Cardbord的九轴融合算法>,<Madgwick算法详细解读>,讨论的都是在SO3上的传感器融合,即,输出的只是纯旋转的姿态.只有旋转,而没有位移,也就是目前的一些普通的VR盒子的效果. 而<相机IMU融合四部曲>要讨论的是,在SE3上面的传感器融合,在既有旋转又有位移的情况下,该如何对多传感器进行融合.也就是,工程实践中的,如何把基于相机算出来的位姿,与IMU的位姿融…
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的方法.基于前后端的方法.且介绍了几个SensorFusion方法,总结比较全面.并且文中给出了代码的下载链接,比较方便. 原文链接:Visual SLAM算法笔记 摘抄部分,如有不适,请联系删除或者移步原文链接 一.Visual-Inertial Odometry算法笔记 名字缩写太多,我有点凌乱了…
导读 高德定位业务包括云上定位和端上定位两大模块.其中,云上定位主要解决Wifi指纹库.AGPS定位.轨迹挖掘和聚类等问题:端上定位解决手机端和车机端的实时定位问题.近年来,随着定位业务的发展,用户对在城市峡谷(高楼.高架等)的定位精度提出了更高的要求. 特别是车机端定位,由于定位设备安装在车上,一方面,它可以搭载更丰富的定位传感器来解决特殊场景的问题,另一方面,各个传感器之间相互固连,有利于高精度的算法设计.这两点为车机端进一步提高导航精度的提供了可能. 城市峡谷一直是车机端定位的痛点.原因是…
我把之前在学习和工作中使用STM32进行嵌入式开发的经验和教程等相关整理到这里,方便查阅学习,如果能帮助到您,请帮忙点个赞: 本文的宗旨 STM32 只是一个硬件平台,同样地他可以换成MSP430,NXP的RT等等,除了对硬件平台特性的掌握,另外扩展开的是对基础外设原理,各种传感器,各种接口基本原理和各种通讯协议的掌握,这时候就需要基础的电路知识理论,包括传感器技术,信号系统等等,另外裸机编程需要有一定软件架构思想,这时候需要数据结构/设计模式作为辅助,如果需要RTOS,需要掌握基本的操作系统的…
摄像头与毫米波雷达(Radar)融合 Input: (1)图像视频分辨率(整型int) (2)图像视频格式 (RGB,YUV,MP4等) (3)毫米波雷达点云信息(点云坐标位置x,y,浮点型float) (4)摄像头标定参数(中心位置(x,y)和5个畸变 系数(2径向,2切向,1棱向),浮点型float) (5)摄像头初始化参数(摄像头初始位置和三个坐标方向 的旋转角度,车辆宽度高度车速等等,浮点型float) Output: (1)利用kalman滤波融合后的摄像头与毫米波雷达 点云信息(点云…
在<Android Studio增加NDK代码编译支持--Mac环境>和<Mac平台下Opencv开发环境搭建>两篇文章中,介绍了如何使用NDK环境和Opencv环境搭建与测试使用,现在,在PC端对图像处理算法测试没问题后,该在移动端进行功能移植了,ios平台的很简单,直接把类库拷进工程就行了,android的稍微麻烦点,这里就以android平台为例说明移植步骤. 为了更好的模块移植,这里使用Android源码的make文件写法:*.mk,Android源码是一个很大的工程,它的…
本来看了一天的分类器方面的代码,乱乱的,索性再把最基础的概念拿过来,现总结一下机器学习的算法吧! 1.机器学习算法简述 按照不同的分类标准,可以把机器学习的算法做不同的分类. 1.1 从机器学习问题角度分类 我们先从机器学习问题本身分类的角度来看,我们可以分成下列类型的算法: 监督学习算法 机器学习中有一大部分的问题属于『监督学习』的范畴,简单口语化地说明,这类问题中,给定的训练样本中,每个样本的输入x都对应一个确定的结果y,我们需要训练出一个模型(数学上看是一个x→y的映射关系f),在未知的样…
课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.决策树(Decision Tree).口袋(Bagging),自适应增强(AdaBoost) Bagging和AdaBoost算法再分类的时候,是让所有的弱分类器同时发挥作用.它们之间的区别每个弱分离器是否对后来的blending生成G有相同的权重. Decision Tree是一种有条件的融合算法,每次只能根据条件让某个分类器发挥作用. 二.基本决策树算法 1.用递…
本文为原创文章,转载请注明出处,http://www.cnblogs.com/ycwang16/p/5999034.html 前面介绍了Bayes滤波方法,我们接下来详细说说Kalman滤波器.虽然Kalman滤波器已经被广泛使用,也有很多的教程,但我们在Bayes滤波器的框架上,来深入理解Kalman滤波器的设计,对理解采用Gaussian模型来近似状态分布的多高斯滤波器(Guassian Multi-Hyperthesis-Filter)等都有帮助. 一. 背景知识回顾 1.1 Bayes滤…
作者:桂. 时间:2017-02-26  19:54:26 链接:http://www.cnblogs.com/xingshansi/articles/6445625.html 声明:转载请注明出处,谢谢. 前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码.全文主要分六个部分展开: 1)简单示例.通过简单的例子,引出PCA算法: 2)理论推导.主要介绍PCA算法的理论推导以及对应的数学含义: 3)算法…
昨天才更新了两篇博客,今天又要更新了,并不是我垃圾产,只不过这些在上个月就已经写好了,只是因为比赛忙,一直腾不出时间整理出来发表而已,但是做完一件事情总感觉不写一博文总结一下就少点什么,所以之后的一段时间里我会把我这学期学到的一些东西陆续整理出来发表,给自己一个总结交代. 将彩色图像转化为灰度的方法有两种,一个是令RGB三个分量的数值相等,输出后便可以得到灰度图像,另一种是转化为YCbCr格式,将Y分量提取出来,YCbCr格式中的Y分量表示的是图像的亮度和浓度所以只输出Y分量,得到的图像就是灰度…