自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 单线激光雷达驱动

开篇在基于lwip协议栈搭建好tcp或udp通讯后,我们就可以开始用板载网口与雷达通信了,目前先将接收到的雷达数据在udp接收回调函数中进行转存。一、雷达协议介绍雷达作为udp服务器端,发送广播信号到另一端,当平台设置好同一网段IP,并开启广播接收后,嵌入式端就能接收到udp广播数据报。其中,所使用的激光雷达数据包如下所示:由于先前设置了激光雷达的扫描频率为20Hz,且雷达扫描的角度为270°,雷达开发者将其分为8个块,每个块33.75°,在扫描频率20Hz情况下,每个块有144个点,且各个点分布

2021-06-07 16:28:47 1129 2

原创 嵌入式平台lwip协议栈的udp通讯搭建

开篇介绍上一节介绍了,在移植lwip协议栈到嵌入式平台后,成功搭建了tcp通讯;后续因为项目开发需要,为了简化tcp报文繁琐的解析过程,节省片上资源,更加专注于数据处理,我们选择牺牲一定的通讯严谨性来达到资源最优化,毕竟项目是属于本地局域网直连。两者区别:TCP与UDP一样,都是传输层的协议,但是提供的服务却不同。UDP为上层应用提供的是一种不可靠、无连接的服务,而TCP则提供一种面向连接、可靠的字节流传输服务,TCP让两个主机建立连接的关系,应用数据以数据流的形式进行传输,这与UDP是不一样的。U

2021-05-19 21:08:08 1065 4

原创 嵌入式平台lwip协议栈的tcp通讯搭建

开篇在配置好数据链路层和网络层后,接下来就是搭建tcp通讯了,在lwip协议栈中,有三种通讯方式,1.raw;2.Netconn;3.socket;本节先从raw_api开始,lwip协议栈提供了tcp.c/.h给用户使用。一、tcp块创建由于雷达是作为服务端的,因此我们要将开发板配置为客户端模式,主动对雷达发起链接。在上一节的基础上,所有东西正常后,我们启动了网卡,接下来做一个2秒的延时,等待网卡启动完成,然后我们可以开始搭建tcp了。首先,这里先创建tcp块,若创建成功,载入远程服务端的I

2021-05-13 17:37:34 891 2

原创 STM32H7+LAN8720A之ETH与LWIP配置问题(End)

开篇介绍由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。一、激光雷达3i-T1由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配

2021-04-12 16:36:26 11807 10

原创 李群与李代数以及Sophus基本应用

开篇介绍在上次博客中,我们介绍了三维世界中刚体运动的描述方式,包括旋转矩阵、旋转向量、欧拉角、四元数等若干种方式。其中重点介绍了旋转的表示,但是在SLAM中,除了表示之外,我们还要对它们进行估计和优化。因为在SLAM中位姿是未知的,而我们需要解决什么样的相机位姿最符合当前观测数据这样的问题。于是我们把他归结为一种典型的优化问题,求解最优的R\mathbf{R}R,t\mathbf{t}t,使得误差最小化。一、李群李代数基础在上次谈到的三维旋转矩阵和变换矩阵中,我们知道三维旋转矩阵构成了特殊正交群SO(

2021-03-29 18:39:38 796 4

原创 旋转向量与欧拉角、四元数的转换及Eigen实践

开篇介绍在之前了解到旋转向量与旋转矩阵、变换矩阵的关系后,我们进行了Eigen库上基本矩阵的操作实践。接下来本篇将介绍的是旋转向量与欧拉角、四元数之间的转换以及向量旋转在Eigen上的表达。一、旋转向量在上篇有了旋转矩阵和变换矩阵描述了向量的旋转后,我们发现假如一直沿用矩阵来表达向量旋转的话,会有几个明显的缺点:①旋转矩阵具有九个量,但是一次旋转具有三个自由度,变换矩阵用了十六个量表达了六个自由度的变换,显然这是一种冗余的表达方式。②旋转矩阵必须是正交矩阵且行列式为1。变换矩阵也是在旋转矩阵的基础上得

2021-03-21 22:12:31 1305 1

原创 Eigen之矩阵基本操作

开篇介绍在实际应用中,当要进行姿态解算时,必不可少的便是矩阵操作,这里我们引入Eigen这一矩阵操作库。Eigen是一个C++开源线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。本博客通过一些实例应用,演示Eigen下矩阵逆运算、伴随矩阵运算、行列式计算和特征值、特征向量的计算等等。一、旋转矩阵我们知道向量的内积可以描述向量之间的投影关系,而向量的外积,能表示向量的旋转。在欧氏变换中,首先来考虑旋转。我们设某个单位正交基(e1,e2,e3)(e_1,e_2,e_3)(e1​,e2

2021-03-18 22:07:36 3163

原创 g++编译器、cmake编译工具与Kdevelop的使用

开篇介绍纵观当下已有的室内外定位导航系统,大多数采用的是Ubuntu系统作为开发系统,在多线激光雷达、双目摄像头、姿态传感器和GPS等传感器获取到数据后进行前端视觉里程计、后端非线性优化、建图和回环检测等等工作,最后达到一定精确度的室内外定位导航系统。其中在后端优化等过程当中,常常很考验系统快速处理数据的能力,因此开始学习一下64位Ubuntu系统上处理后端数据的一些开发工具。一、g++编译器先在Ubuntu 18.04版本终端上安装g++编译器:安装成功后,我们就可以开始使用系统自带的vim编辑

2021-03-16 19:08:18 731 2

原创 局部变量之堆栈溢出问题

开篇介绍由于项目开发过程中用到了一款开源的伺服步进电机,步进电机的开源代码里面涉及了步进电机的编码器校正(或电机标定),并已经把编码器校正后的值存到了主控芯片stm32F030的后32Kflash里面。然而自身项目使用中需要知道步进电机的上机零点还有电机各个时刻所转的角度,因此,需要对电机的编码器校正值进行一个地址偏移处理,于是地址偏移的大小则是上机零点的编码器值。由于过程中涉及了大量的flash读写操作以及一些衍生的问题,由此产生了该篇博客,意在讨论一下嵌入式平台的Flash读写操作以及修改,还有局部变

2021-03-07 21:13:03 1744 4

原创 基于自适应对数映射方法的高对比度场景展现(论文及代码复现)

开篇介绍由于先前在课程当中听说了低照度视频增强算法及其应用,在课程结束后,我做了一个学习标记未完成,打算往后再深入。于是最近又开始重新搜刮此类文章,无意中找到了发表于2003年的一篇欧洲图形学协会的古董级别的期刊——《Adaptive Logarithmic Mapping For Displaying High Contrast Scenes》先从摘要上了解该文章的框架脉络:I.研究的问题:该文章提出了一种快速、高质量的色调映射算法,以用于在亮度值动态范围受限的设备上显示高对比度图像。II.算法上

2021-02-07 00:11:23 1032

原创 (End)STM32H7串口空闲中断接收+DMA调试(HAL库)

一、工具介绍由于项目开发原因要用到STM32H7系列的微控制器,为了缩短项目开发周期和提高效率,采用了ST官方的STM32CubeIDE进行开发,这个集成开发环境的特点主要有:1.从硬件电路设计开始为硬件工程师提供的各个管脚IO功能的映射及功能,方便硬件电路的设置与布局;2.可视化的硬件配置使得已经掌握单片机编程的使用者更加高效开发,只需注重于项目或系统自身功能部分的实现即可。但不得顺带提一下该开发平台的不友好性:区别于STM32官方的std标准库,可视化配置采用了ST自主封装的HAL库(或者有的称为L

2021-01-24 22:02:38 6937 2

原创 朴素贝叶斯法总结

一、前述朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入xxx,利用贝叶斯定理求出后验概率最大的输出yyy。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。二、朴素贝叶斯法介绍I.模型朴素贝叶斯法是典型的生成学习方法。生成方法由训练数据学习联合概率分布P(X,Y)P(X,Y)P(X,Y),然后求得后验概率分布P(Y∣X)P(Y|X)P(Y∣X)。具体来说,利用训练数据学习P

2020-10-28 22:31:14 646

原创 k近邻法学习总结

一、前述K近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。k近邻法不具有显示学习过程,其三个基本要素是:k值的选择、距离度量及分类决策规则。二、k近邻法介绍I.模型k近邻法中,当训练集、距离量度(如欧氏距离)、k值及分类决策规则(如多数表决)确定后,对于任何一个新的输入实例,它所属的类唯一地确定。这相当于根据上述要素将特征空间划分为一些子空间,确定子空间里的每个点所属的类。特征空间中,

2020-10-24 16:25:05 856

原创 感知机学习模型总结

一、前述感知机是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用随机梯度下降法对损失函数进行极小化,求得感知机模型。感知机学习算法分为原始形式和对偶形式。感知机是神经网络与支持向量机的基础。二、感知机介绍I.模型感知机模型可以由以下传递函数进行描述:f(x)=sign(w⋅x+b)f(x)=sign(w\cdot x+b)f(x)=sign(w⋅x+b)其中

2020-10-22 00:26:44 600

原创 空域变换之图像增强以及Matlab实现

图像增强之拉普拉斯算子的锐化处理一、前述在大致了解图像增强之拉普拉斯算子对图像的细节具有增强作用后(尤其是点、细线或线端点的增强),基于matlab编写脚本来实现掩模运算。本博客不具体介绍原理,具体可自行科普。二、思路与实现由于拉普拉斯算子对细点细线等灰度陡峭变换的边缘特别敏感,因此在进行拉普拉斯算子卷积前需先对图像进行均值滤波去除高频噪声。实现过程:用Matlab2017a创建脚本编写拉普拉斯算子掩模运算流程,网上随意搜集一张lenna图(实在找不到好的素材了):%read RGB compo

2020-10-10 19:33:56 1447 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除