倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿

2023-05-16

倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿

地磁场和磁传感器

地磁场可以用于获取方位信息。以北半球为例,地磁场方向不是与地面水平,而是与水平方向有一定的倾角(指向地面),称为磁倾角(Inclination)。同时,地磁场的方向也与地理的北方不同,两者的夹角称为磁偏角(Declination)。地磁场的磁感应强度大约在30~70uT,与所在地有关。

image-20220501121622003

例如,根据下面这个网站,上海的磁偏角约为-6°,磁倾角约为47°,磁感应强度49.1uT(水平方向33uT,垂直方向36uT)。

World Magnetic Model Calculator (bgs.ac.uk)

(在后面的介绍中忽略磁倾角,假设磁北就是地理北。一般可以通过当地经纬度查询到磁偏角并加以换算)

地磁传感器,一般有XY两轴或者XYZ三轴,大部分基于霍尔效应或是磁阻效应,用于手机、无人机等,实现电子罗盘功能。例如,两轴磁传感器可以通过测量XY两个方向上的磁感应强度,通过简单的计算获得设备的朝向。假设磁传感器的XY平面保持水平,X轴读数hx,Y轴读数hy,则设备的X轴方向与磁北的夹角为 θ = a t a n 2 ( h y h x ) \theta=atan2(\frac{h_y}{h_x}) θ=atan2(hxhy),θ范围是(-180°,180°]。

image-20220430215127955

hxhyθ
+00
++(0,90°)
0+90°
-+(90°,180°)
-0180°
--(-180°,-90°)
0--90°
+-(-90°,0)

2D和3D的旋转

某个位置地磁场的方向是相对恒定的,而磁传感器的姿态却是变化的,因此磁传感器每个方向的读数与姿态有关。如下图,对于MPU-6500,磁传感器的姿态可以使用绕着XYZ三个轴的旋转来表示,以逆时针旋转(从x轴的箭头看箭尾)为正。

image-20220501092013495

例如,绕着Z轴旋转,Z轴读数不变,仅改变X轴和Y轴的读数。

image-20220501093007620

原读数:
v 0 = [ h x , h y ] T = [ H c o s θ , H s i n θ ] T v0=[h_x,h_y]^T=[Hcos\theta, Hsin\theta]^T v0=[hx,hy]T=[Hcosθ,Hsinθ]T
根据示意图,XY逆时针旋转 δ \delta δ后的读数:
v ′ = [ h x ′ , h y ′ ] T = [ H c o s ( θ − δ ) , H s i n ( θ − δ ) ] T = [ H c o s θ c o s δ + H s i n θ s i n δ , H s i n θ c o s δ − H c o s θ s i n δ ] v'=[h_x',h_y']^T=[Hcos(\theta - \delta),Hsin(\theta - \delta)]^T=[Hcos\theta cos\delta+Hsin\theta sin\delta, Hsin\theta cos\delta - Hcos\theta sin\delta] v=[hx,hy]T=[Hcos(θδ),Hsin(θδ)]T=[Hcosθcosδ+Hsinθsinδ,HsinθcosδHcosθsinδ]
这种旋转可以用矩阵表示:
v ′ = [ c o s δ s i n δ − s i n δ c o s δ ] [ H c o s θ H s i n θ ] = R z 2 d ( δ ) v 0 v' = \left[ \begin{matrix} cos\delta & sin\delta \\ -sin\delta & cos\delta \end{matrix} \right] \left[ \begin{matrix} Hcos\theta \\ Hsin\theta \end{matrix} \right] = R_{z2d}(\delta)v_0 v=[cosδsinδsinδcosδ][HcosθHsinθ]=Rz2d(δ)v0

然后把Z轴补上,变成一个3x3的矩阵(因为Z轴读数不变,所以只有3,3的元素是1,其他都是0):
R z ( ψ ) = [ c o s ψ s i n ψ 0 − s i n ψ c o s ψ 0 0 0 1 ] R_z(\psi)= \left[ \begin{matrix} cos\psi & sin\psi & 0\\ -sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right] Rz(ψ)=cosψsinψ0sinψcosψ0001
同理,围绕X轴和Y轴旋转,对应的矩阵为:
R x ( ϕ ) = [ 1 0 0 0 c o s ϕ s i n ϕ 0 − s i n ϕ c o s ϕ ] ,    R y ( θ ) = [ c o s θ 0 − s i n θ 0 1 0 s i n θ 0 c o s θ ] R_x(\phi)= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\phi & sin\phi\\ 0 & -sin\phi & cos\phi \end{matrix} \right], \; R_y(\theta)= \left[ \begin{matrix} cos\theta & 0 & -sin\theta \\ 0 & 1 & 0 \\ sin\theta & 0 & cos\theta \end{matrix} \right] Rx(ϕ)=1000cosϕsinϕ0sinϕcosϕ,Ry(θ)=cosθ0sinθ010sinθ0cosθ

注意 R y ( θ ) R_y(\theta) Ry(θ) s i n θ sin\theta sinθ符号与其他两个矩阵不同,这与坐标轴设置有关,这里对应于上图MPU6500。

对于三轴磁传感器,定义一个初始位置:XY平面平行于水平面,同时X轴与地磁场方向重合。此时读数为: h 0 = [ H c o s I , 0 , H s i n I ] T h_0=[HcosI,0,HsinI]^T h0=[HcosI,0,HsinI]TI是磁倾角。

  1. 如果只有Z轴的旋转,则读数变为:
    h r z = R z ( ψ ) h 0 = h r z = R z ( ψ ) h 0 = [ c o s ψ s i n ψ 0 − s i n ψ c o s ψ 0 0 0 1 ] [ H c o s I 0 H s i n I ] = [ H c o s I c o s ψ − H c o s I s i n ψ H s i n I ] h_{rz}=R_z(\psi)h_0= h_{rz}=R_z(\psi)h_0= \left[ \begin{matrix} cos\psi & sin\psi & 0\\ -sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} HcosI\\ 0 \\ HsinI \end{matrix} \right] = \left[ \begin{matrix} HcosIcos\psi \\ -HcosIsin\psi \\ HsinI \end{matrix} \right] hrz=Rz(ψ)h0=hrz=Rz(ψ)h0=cosψsinψ0sinψcosψ0001HcosI0HsinI=HcosIcosψHcosIsinψHsinI
    此时可以直接用 ψ = a t a n ( − h y h x ) \psi = atan(\frac{-h_y}{h_x}) ψ=atan(hxhy)获得方位角。

  2. 如果XYZ轴都有旋转,则读数变为:
    h r x y z = R x ( ϕ ) R y ( θ ) R z ( ψ ) h 0 = R x ( ϕ ) R y ( θ ) h r z h_{rxyz}=R_x(\phi)R_y(\theta)R_z(\psi)h_0=R_x(\phi)R_y(\theta)h_{rz} hrxyz=Rx(ϕ)Ry(θ)Rz(ψ)h0=Rx(ϕ)Ry(θ)hrz
    此时需要进行倾斜补偿,即基于读数 h r x y z h_{rxyz} hrxyz,还原为仅有Z轴旋转的读数 h r z h_{rz} hrz,然后同样可以获得方位角。

倾斜补偿

原理

进行倾斜补偿,需要对X轴和Y轴反向转动,按之前的记号,X轴转动 ( − ϕ ) (-\phi) (ϕ),Y轴转动 ( − θ ) (-\theta) (θ)
h r z = [ h x 0 , h y 0 , h z 0 ] = [ h x , h y , h z ] = R y ( − θ ) R x ( − ϕ ) h r x y z = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] h r x y z = [ c o s θ s i n θ s i n ϕ s i n θ c o s ϕ 0 c o s ϕ − s i n ϕ − s i n θ c o s θ s i n ϕ c o s θ c o s ϕ ] [ h x h y h z ] h_{rz} =[h_{x0},h_{y0},h_{z0}]= [h_x,h_y,h_z]=R_y(-\theta)R_x(-\phi)h_{rxyz} \\ = \left[ \begin{matrix} cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{matrix} \right] \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\phi & -sin\phi\\ 0 & sin\phi & cos\phi \end{matrix} \right] h_{rxyz} \\ = \left[ \begin{matrix} cos\theta & sin\theta sin\phi & sin\theta cos\phi \\ 0 & cos\phi & -sin\phi\\ -sin\theta & cos\theta sin\phi & cos\theta cos\phi \end{matrix} \right] \left[ \begin{matrix} h_x \\ h_y \\ h_z \end{matrix} \right] hrz=[hx0,hy0,hz0]=[hx,hy,hz]=Ry(θ)Rx(ϕ)hrxyz=cosθ0sinθ010sinθ0cosθ1000cosϕsinϕ0sinϕcosϕhrxyz=cosθ0sinθsinθsinϕcosϕcosθsinϕsinθcosϕsinϕcosθcosϕhxhyhz
其中, [ h x , h y , h z ] T [h_x,h_y,h_z]^T [hx,hy,hz]T是实际读数。

因此,考虑倾斜补偿后,方位角变为:
ψ = a t a n ( − h y 0 h x 0 ) = a t a n ( h y s i n ϕ − h x c o s ϕ h x c o s θ + h y s i n θ s i n ϕ + h z s i n θ c o s ϕ ) \psi = atan\left( \frac{-h_{y0}}{h_{x0}}\right)=atan \left( \frac{ h_y sin\phi- h_xcos\phi}{h_xcos\theta + h_ysin\theta sin\phi + h_z sin\theta cos\phi} \right) ψ=atan(hx0hy0)=atan(hxcosθ+hysinθsinϕ+hzsinθcosϕhysinϕhxcosϕ)
所以,基于当前 ϕ \phi ϕ θ \theta θ的信息,就可以进行倾斜补偿。

使用加速度传感器获得角度信息

根据三轴加速度传感器的读数可以获得所需的角度信息。注意在读数时,加速度传感器没有其他方向上的加速,只受到重力影响。

假设初始状态下,加速度传感器的XY轴平行于水平面,Z轴与重力方向相同,则初始状态的读数: a 0 = [ 0 , 0 , g ] T a_0=[0,0,g]^T a0=[0,0,g]T

可以看出,围绕Z轴旋转对读数没有影响,即: R z ( ψ ) a 0 = a 0 R_z(\psi)a_0=a_0 Rz(ψ)a0=a0

在分别围绕XY两轴旋转后,
a r x y z = R x ( ϕ ) R y ( θ ) R z ( ψ ) a 0 = R x ( ϕ ) R y ( θ ) a 0 a_{rxyz}=R_x(\phi)R_y(\theta)R_z(\psi)a_0=R_x(\phi)R_y(\theta)a_{0} arxyz=Rx(ϕ)Ry(θ)Rz(ψ)a0=Rx(ϕ)Ry(θ)a0

同样,在XY两轴反向旋转后,理论上,读数应和初始位置的读数相同:
R y ( − θ ) R x ( − ϕ ) a r x y z = [ c o s θ s i n θ s i n ϕ s i n θ c o s ϕ 0 c o s ϕ − s i n ϕ − s i n θ c o s θ s i n ϕ c o s θ c o s ϕ ] [ a x a y a z ] = [ 0 0 g ] R_y(-\theta)R_x(-\phi)a_{rxyz} = \left[ \begin{matrix} cos\theta & sin\theta sin\phi & sin\theta cos\phi \\ 0 & cos\phi & -sin\phi\\ -sin\theta & cos\theta sin\phi & cos\theta cos\phi \end{matrix} \right] \left[ \begin{matrix} a_x\\ a_y \\ a_z \end{matrix} \right] =\left[ \begin{matrix} 0 \\ 0 \\ g \end{matrix} \right] Ry(θ)Rx(ϕ)arxyz=cosθ0sinθsinθsinϕcosϕcosθsinϕsinθcosϕsinϕcosθcosϕaxayaz=00g

因此有:
a x c o s θ + a y s i n θ s i n ϕ + a z s i n θ c o s ϕ = 0 a y c o s ϕ − a z s i n ϕ = 0 a_xcos\theta + a_ysin\theta sin\phi +a_z sin\theta cos\phi =0 \\ a_ycos \phi - a_z sin\phi = 0 axcosθ+aysinθsinϕ+azsinθcosϕ=0aycosϕazsinϕ=0
从而计算两个角度:
ϕ = a t a n ( a y a z ) θ = a t a n ( − a x a y s i n ϕ + a z c o s ϕ ) \phi = atan\left( \frac{a_y}{a_z}\right) \\ \theta = atan \left( \frac{-a_x}{a_ysin\phi + a_zcos\phi}\right) ϕ=atan(azay)θ=atan(aysinϕ+azcosϕax)

总结

  • 地磁场和磁传感器
  • 电子罗盘基本原理
  • 通过加速度传感器获得角度信息,进行倾斜补偿

目前是假设这些传感器的测量值是完全准确的。但实际上会有各种测量误差, 需要进行校准,后面继续补充。

参考资料

  • NXP的应用手册AN4246、AN4247、AN4248,解释得比较清楚 (https://www.nxp.com/docs/en/application-note/AN4248.pdf)

  • 很多三轴(磁、加速度、陀螺仪)、六轴(一般是加速度+陀螺仪,少量加速度+磁)、九轴(磁+加速度+陀螺仪)的传感器,可以看下应用手册

例如,ISM303DAC集成了三轴加速度传感器和三轴磁传感器,便于实现电子罗盘。
image-20220501121937778

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿 的相关文章

  • 系统复制-快速重装系统

    ubuntu 直接把安装好常用软件和环境的系统打包成镜像 xff0c 用systemback安装 xff0c 便捷很多 之前那种 xff0c ubuntu安装都要好久 xff0c 少说也得20分钟吧 xff0c 之前就是等 xff0c 等它
  • 机器人 控制领域

    机器人 控制领域好像没太有很新很有用的工作 xff0c 还是依据Dynamic Model的Motion Planning更接近于任务层 其实 xff0c 感觉自己喜欢的不是控制 而是motion xff0c motion control
  • 树莓派电压过低 串口数据错误增多

    调试过程中 xff0c 树莓派串口读单片机上传的数据 的程序突然一堆checksum error 换一块满电的LiPo电池就大幅减少了报错 一开始猜测原因 可能是电压过低导致CPU运行慢了 xff08 可能叫做 降频 xff09 xff0c
  • 机器人知识体系

    纲 机电力算控感 知识体系体系各元素特点体系的建立和完善 机电力算控感 知识体系 机械 电子电气 力学 xff08 静力学与动力学分析 流体力学 材料力学等 xff09 计算 xff08 通用计算机和嵌入式计算机 xff09 控制理论 感知
  • OpenCV之imwrite()等基本操作

    参考 xff1a Opencv之imwrite 函数的用处 imwrite 函数用来保存图片 opencv3中的imwrite函数是用来输出图像到文件 xff0c 其声明如下 xff1a CV EXPORTS W bool imwrite
  • 麦克纳姆轮全向移动原理

    什么是麦克纳姆轮 在竞赛机器人和特殊工种机器人中 xff0c 全向移动经常是一个必需的功能 全向移动 意味着可以在平面内做出任意方向平移同时自转的动作 为了实现全向移动 xff0c 一般机器人会使用 全向轮 xff08 Omni Wheel
  • 卡尔曼滤波(KF)与扩展卡尔曼滤波(EKF)的一种理解思路及相应推导(1)

    前言 xff1a 从上个世纪卡尔曼滤波理论被提出 xff0c 卡尔曼滤波在控制论与信息论的连接上做出了卓越的贡献 为了得出准确的下一时刻状态真值 xff0c 我们常常使用卡尔曼滤波 扩展卡尔曼滤波 无迹卡尔曼滤波 粒子滤波等等方法 xff0
  • Qt Cmake添加*.qrc资源文件

    cmake minimum required VERSION 3 5 project Test LANGUAGES CXX 这里 file GLOB RECURSE QRC SOURCE FILES CMAKE CURRENT SOURCE
  • IOS 加载本地HTML

    web qtt以 folder形式添加到项目中 xff0c 注意是蓝色的颜色 创建swift项目 xff0c 写入如下代码 span class token comment span span class token comment Vie
  • C#实现:将十进制数转换为十六进制(含完整源码)

    C 实现 将十进制数转换为十六进制 含完整源码 在C 中 我们可以使用基础数据类型来存储整数值 如int long等 而十进制数是我们最常用的数制 但有些场景下需要将其转换为其它进制 如十六进制 本文将介绍如何使用C 来实现将十进制数转换为
  • 怎样用串口发送结构体-简单协议的封包和解包

    先说解决方案 xff0c 细节和实现代码都放在正文 下位机 xff1a 把结构体拆分成8位的整型数据 xff0c 加上数据包头和包尾 xff0c 然后按顺序单个单个地发出 xff1b 上位机 xff1a 把串口里的数据读取出来 xff0c
  • 计算机网络学习笔记——IP Header Checksum(校验和)的计算方法

    从TCP IP协议看到IP数据报 xff0c 看到Checksum的算法描述 xff0c 不甚了了 The checksum field is the 16 bit one s complement of the one s complem
  • 在Ubuntu18.04中更新指定python版本以及pip

    在Ubuntu18 04中更新指定python版本以及pip 更新指定python版本 xff08 eg python3 8 xff09 xff1a 参考 教你Ubuntu安装python3 7 xff0c 并更新python默认指向 xf
  • 【MATLAB数学建模编程实战】遗传算法求解最短路径(附代码及运行效果)

    欢迎关注 xff0c 本专栏主要更新MATLAB仿真 界面 基础编程 画图 算法 矩阵处理等操作 xff0c 拥有丰富的实例练习代码 xff0c 欢迎订阅该专栏 xff01 xff08 等该专栏建设成熟后将开始收费 xff0c 快快上车吧
  • stm32HAL库 串口接收不定长数据(DMA传输)

    相信大家很多初学者都会遇到串口接收不定长数据的情况 对于初学者可能看着有点难理解 xff0c 多看几遍就好 xff0c 亲测能用 话不多说上菜上菜 xff01 xff01 xff01 xff01 此代码是本人在具体工程应用 xff0c 实测
  • Flask - after_request 和 before_request

    目录 特殊的装饰器多个中间件怎么执行的 特殊的装饰器 64 app before request 在视图函数执行前执行 64 app after request 在视图函数执行后执行 span class token keyword fro
  • VScode 占用cpu风扇狂转, C/C++ IntelliSense Server for Visual Studio Code cpptools.exe占用cpu 30%

    点击下面那个红框中的东西 xff0c 然后选择暂停分析 cpu占用立马降下来了
  • 学习C++中遇到的各种问题

    拷贝构造函数到底是个是什么东西 xff1f 到底什么时候用const xff1f amp 是写在前还是写在后 xff1f 有区别 xff1f 为什么在析构函数中加了delete程序就会卡死 xff1f size t是个什么东西 xff1f
  • 【3D目标检测】稀疏卷积

    稀疏卷积实现部分 先说说实现部分 xff0c 对原理感兴趣的往后看 1 稀疏数据生成 这里的思路主要是先利用np meshgrid和np stack创建出稀疏数据补全后shape大小的点云坐标 xff0c 然后随机取前num points个
  • Unity3D之物体跟随鼠标移动和旋转

    void FixedUpdate if Input GetMouseButton 0 Vector3 aimPos 61 Camera main ScreenToWorldPoint new Vector3 Input mousePosit

随机推荐

  • 【寒武纪】视觉算法MLU220硬件适配(1)

    1 xff0c 环境搭建 xff1a MLU220快速上手指南 寒武纪开发者社区 安装硬件驱动和软件工具链 xff0c 也可以直接使用寒武纪官方开发平台 xff1a 寒武纪开发平台 本地开发安装完工具需要进行一些配置 xff1a 安装后配置
  • 【自动驾驶】second模型训练

    1 xff0c 数据组织 xff1a 训练验证数据生成 xff1a python create data py nuscenes data prep data path 61 NUSCENES TRAINVAL DATASET ROOT v
  • OpenMP入门

    OpenMP 是 Open MultiProcessing 的缩写 可以在 Visual Studio 或者 gcc 中使用 Hello World 把下面的代码保存为 omp cc include lt iostream gt inclu
  • 【蒸馏】PointDistiller: Structured Knowledge DistillationTowards Efficient and Compact 3D Detection

    简述 方法的细节 fT和f S 教师检测器和学生检测器中的特征编码层 AT和AS 抽取的待蒸馏体素或重要性得分最高的点的特征 CT和CS 教师和学生检测特征的通道数 GT和GS 教师和学生检测器的图形特征 该方法基于预先定义的重要度评分 x
  • 【自动驾驶】多传感器感知技术解析

    1 传感器 自动驾驶中的传感器主要用到激光雷达 xff0c 毫米波雷达 xff0c 摄像头 xff0c 超声波 xff0c 优缺点如下 xff1a 1 xff09 激光雷达的测距精度 测距范围及对温度和光照的适应性很强 xff0c 缺点线束
  • 【自动驾驶】单目3D检测M3D-RPN解析与paddle复现

    1 简介 作者提出了一种单个的端到端区域建议网络用于多类别3D目标检测 2D和3D检测任务各自的目标是最终对一个对象的所有实例进行分类 xff0c 而它们在定位目标的维数上是不同的 直观地说 xff0c 我们期望能够利用2D检测的强大功能来
  • 【模型压缩】实例分析量化原理

    1 从定点模型训练来分析量化原理 xff1a 定点模型训练是一个迁移训练的过程 xff1a 在浮点网络的相应位置插入定点化处理节点 xff08 相 当于激活函数 xff09 xff0c 然后在这个经过定点化的计算图上重新训练神经网络 以全连
  • 【3D视觉】深度摄像头与3D重建

    1 xff0c Kinect 是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字 大家在上图可以看到 xff0c Kinect两端有两个3D深度摄像头 xff0c 左边那个发射红外线 xff0c 右边那个是一个红外线感应
  • 【3D视觉】realsense D435三维重建

    1 xff0c 硬件 xff1a realsense D435 驱动及SDK开发包安装 GitHub IntelRealSense librealsense Intel RealSense SDK 下载最新驱动 安装后打开 Intel Re
  • ssh: connect to host 10.112.1.5 port 10083: Connection refused

    ssh connect to host 10 112 1 5 port 10083 Connection refused 1 查看已知端口占用情况 我们想知道10083端口的使用情况 xff0c 或者说被谁占用了 xff0c 命令如下 xf
  • Unity之将Texture保存成png

    using UnityEngine using System Collections using System IO public class SaveToPng MonoBehaviour public Shader outShader
  • 基于容器训练OpenPCdet

    基于容器训练OpenPCdet 1 先拉取一个运行的镜像 docker pull djiajun1206 pcdet pytorch1 6 2 基于镜像创建一个容器 nvidia docker run it name pcdet privi
  • 【CUDA入门笔记】概述

    1 xff0c CUDA架构 xff08 1 xff09 一个GPU包含多个多核处理器 xff1b xff08 2 xff09 一个多核处理器包含多个线程处理器 xff08 3 xff09 线程处理器是最基本的计算单元 xff0c 有自己的
  • 【CUDA入门笔记】CUDA内核与线程配置

    1 CUDA核函数 在GPU上调用的函数成为CUDA核函数 Kernel function xff0c 核函数会被GPU上的多个线程执行 每个线程都会执行核函数里的代码 xff0c 当然由于线程编号的不同 xff0c 执行的代码路径可能会有
  • 【CUDA入门笔记】GPU存储结构模型(1)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 【CUDA入门笔记】GPU存储结构模型(2)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 基于多二维码识别的无人机运动真值获取

    基于多二维码识别的三维运动真值获取 1 背景介绍2 原理2 1 二维码基础2 2图像预处理2 3 定位标轮廓提取2 4 多二维码鲁棒识别 3 运行结果3 1对单张图片进行多二维码识别3 2 获取一系列静止图片的轨迹3 3 相机做圆周运动的轨
  • c++实现简单http服务器

    http基于tcp协议的应用层协议 xff0c 说白了就是写死的自定义协议 xff0c 代码实现了简单的get请求 xff0c 打开服务后 xff0c 可以通过网站访问本地资源 xff0c 适合新手学习的简单代码 xff0c 有助于理解ge
  • 基于NRF24L01的CAN数据透传

    闲谈 xff1a 闲来无聊 xff0c 恰好公司又经常用CAN数据的传输 xff0c 自己觉得要是用无线传送多好 xff0c 然后 xff0c 就是一个奇想 xff0c 就想做一个无线数据的透传 xff0c 恰好身边又有NRF24L01 那
  • 倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿

    倾斜补偿的电子罗盘 1 xff1a 地磁场 xff0c 磁传感器 xff0c 倾斜补偿 地磁场和磁传感器 地磁场可以用于获取方位信息 以北半球为例 xff0c 地磁场方向不是与地面水平 xff0c 而是与水平方向有一定的倾角 xff08 指