基于Matlab扩展卡尔曼滤波的GPS与DME组合无人机导航系统设计与实现
随着无人机(UAV)在农业监测、环境保护、物流运输、灾害救援等各个领域的广泛应用,精准且可靠的导航系统已成为提升无人机性能和任务执行能力的关键因素。传统的导航方法依赖于单一传感器,往往难以在复杂和动态的环境中提供足够的定位精度和鲁棒性。因此,融合多种传感器数据以实现高精度导航成为当前研究的热点方向。
本研究设计并实现了一种基于扩展卡尔曼滤波(Extended Kalman Filter, EKF)的GPS与DME组合无人机导航系统,旨在通过综合利用全球定位系统(GPS)、距离测量设备(DME)和惯性测量单元(Inertial Measurement Unit, IMU)提供的数据,实现对无人机位置和速度的精准估计。系统采用模块化的MATLAB代码结构,将状态预测与更新过程分离为独立的功能模块,提升了代码的可读性、可维护性和扩展性。
在状态预测模块中,EKF利用IMU提供的加速度数据结合无人机的运动模型,预测下一时刻的状态向量,包括位置和速度。随后,在测量更新模块中,系统分别处理来自GPS和DME的测量数据。GPS数据提供了三维位置的直接测量,而DME数据则通过测量无人机与已知参考点之间的距离,间接推断位置。通过融合这两种不同类型的测量数据,EKF能够有效地校正预测误差,提高导航系统的整体精度。
为了验证系统的性能,本研究在MATLAB环境下进行了100秒的模拟飞行仿真。仿真结果显示,该导航系统在模拟飞行结束时,最终位置误差达到了0.0903米,速度误差为0.0826米/秒,表现出优异的精度和稳定性。此外,研究过程中还进行了多项优化工作,包括:
(1)噪声矩阵的微调:通过调整过程噪声矩阵(Q)和测量噪声矩阵(R_gps、R_dme)的参数,使滤波器更好地适应实际传感器的噪声特性,进一步提升状态估计的准确性。
(2)测量频率的调整:优化GPS和DME数据的更新频率,平衡滤波器的响应速度与计算负担,确保系统在不同动态条件下均能保持高效的运行。
(3)多传感器数据融合:在现有的GPS和DME数据基础上,探索了将其他传感器(如视觉传感器、激光雷达LiDAR)数据集成到导航系统中的可能性,以期进一步提升系统的鲁棒性和精度。
通过这些优化,系统展示了在不同动态环境下的高度适应能力,能够有效应对无人机飞行过程中可能遇到的各种不确定性和干扰因素。研究结果表明,基于EKF的GPS与DME组合导航系统不仅在仿真环境中表现出色,也具备在实际应用中实现高精度导航的潜力。
本研究为无人机导航系统的开发提供了一种有效的方法和实用的参考,具有重要的应用价值。未来的工作将进一步探索更高级的滤波算法(如无迹卡尔曼滤波UKF)、多传感器融合技术以及在实际飞行环境中的验证与优化,以推动无人机导航技术的进一步发展和应用。
算法流程
运行效果
运行 drone_navigation_EKF.m
图1:无人机真实轨迹与估计轨迹的三维对比图
图示内容:
绿色实线:无人机的真实飞行轨迹。
蓝色虚线:通过EKF估计得到的无人机轨迹。
分析: 图1展示了无人机在三维空间中的真实轨迹与EKF估计轨迹的对比。从图中可以观察到,蓝色虚线轨迹与绿色实线轨迹高度重合,表明EKF在状态估计方面具有较高的准确性。尤其是在飞行的中后期,估计轨迹几乎完全跟随真实轨迹,说明滤波器能够有效地利用GPS和DME数据对无人机的位置进行校正和预测。
结论: 估计轨迹与真实轨迹的高度一致性验证了所设计的EKF导航系统在三维空间中具备良好的定位能力,能够实时、准确地跟踪无人机的运动状态。
图2:位置误差与速度误差随时间变化的曲线图
图示内容:
图2(a):位置误差(米)随时间(秒)的变化曲线。
图2(b):速度误差(米/秒)随时间(秒)的变化曲线。
分析:
图2(a)显示了无人机在整个仿真过程中位置误差的变化情况。初始阶段,由于初始估计的不确定性,位置误差较大。然而,随着时间的推移,位置误差迅速下降,并在后期趋于稳定,最终稳定在约0.0903米左右。
图2(b)展示了速度误差随时间的变化。起始阶段速度误差较高,但经过滤波器的不断更新和校正,速度误差逐渐降低,并最终稳定在约0.0826米/秒。这表明系统在估计无人机速度方面同样表现出色,能够有效地减少动态误差。
结论: 位置和速度误差随时间的显著下降趋势表明,EKF导航系统能够快速收敛至准确的状态估计,并在整个飞行过程中保持较低的估计误差,确保无人机导航的精确性和稳定性。
图3:位置协方差与速度协方差随时间变化的曲线图
图示内容:
图3(a):位置协方差(米²)随时间(秒)的变化曲线。
图3(b):速度协方差(米²/秒²)随时间(秒)的变化曲线。
分析:
图3(a)显示位置协方差随时间的变化趋势。初始阶段,协方差较大,反映出系统对初始状态的不确定性。随着GPS和DME测量数据的不断引入,协方差迅速减小,最终稳定在一个较低的水平,表明系统对位置估计的不确定性得到了有效的控制和降低。
图3(b)展示了速度协方差随时间的变化。速度协方差同样呈现出从较高值迅速下降的趋势,并在后期保持在较低的水平。这表明滤波器在估计速度时,不仅能够提供准确的估计值,还能够有效地量化估计的不确定性。
结论: 协方差的逐步减小和稳定表明EKF导航系统在处理传感器数据和进行状态估计时,能够有效地降低系统的不确定性,提高估计的可靠性。这对于无人机在复杂环境中的稳定飞行具有重要意义。
图4:GPS与DME测量残差分布直方图
图示内容:
图4(a):GPS测量残差的直方图。
图4(b):DME测量残差的直方图。
分析:
图4(a)展示了GPS测量残差的分布情况。残差主要集中在零附近,呈现出近似高斯分布的形态。这表明GPS测量的误差符合预期的统计特性,滤波器能够有效地处理GPS数据,确保测量残差的合理性。
图4(b)展示了DME测量残差的分布情况。同样,DME测量残差也集中在零附近,且分布较为对称。这说明滤波器在处理DME数据时,同样能够保持残差的高斯性,确保测量更新的有效性和准确性。
结论: GPS和DME测量残差的高斯分布特性验证了所设计的EKF滤波器在处理非线性测量时的有效性。残差的合理分布表明滤波器能够正确地整合不同传感器的数据,确保状态估计的准确性和鲁棒性。
图5:评估导航系统的最终误差指标
1.位置误差:0.1017 米
优良表现:在无人机导航系统中,0.1米(即10厘米)的定位误差被认为是相当优秀的,尤其是在室外环境中。对于许多应用场景,如农业监测、环境监测、物流运输和基础巡逻等,这样的精度已经能够满足任务需求。
应用需求对比:
(1)消费级无人机:大多数消费级无人机(如大疆的Phantom系列)依赖于GPS进行导航,其定位误差通常在几米到十米之间。因此,0.1米的误差显著优于市场上的常见水平。
(2)专业级应用:在需要更高精度的应用(如建筑测绘、精准农业、无人机对接等),通常需要厘米级甚至毫米级的定位精度。对于这些高精度需求,0.1米的误差可能仍需进一步降低。
结论:
对于大多数标准应用场景,0.1017米的定位误差已经非常优秀,展示了系统在准确定位无人机方面的强大能力。然而,对于高精度需求的专业应用,仍有进一步优化的空间。
2.速度误差:0.0826 米/秒
优良表现:0.08米/秒的速度误差在无人机导航中同样表现出色,特别是对于需要平稳飞行和精确速度控制的任务(如编队飞行、定点悬停、轨迹跟踪等)。
应用需求对比:
(1)常规应用:在大多数无人机应用中,速度误差在0.1米/秒以下被视为良好。你的系统达到了0.0826米/秒,显示出较高的速度估计精度。
(2)高动态应用:对于高速飞行或需要快速反应的任务,速度误差的进一步降低可以提升系统的响应能力和控制精度。
结论:
0.0826米/秒的速度误差表明系统在估计无人机速度方面具备较高的准确性和稳定性,能够支持多种需要精确速度控制的飞行任务。
3.指标综合分析
(1)位置与速度误差的平衡:在导航系统设计中,位置和速度误差往往需要权衡。系统在位置误差和速度误差之间取得了较好的平衡,既保证了定位的高精度,又保持了速度估计的稳定性。
(2)误差的可接受性:根据无人机的应用场景和任务需求,0.1017米的定位误差和0.0826米/秒的速度误差在大多数情况下都是可接受且优秀的。这些指标表明系统在仿真环境中表现出良好的性能,能够有效支持无人机的自主导航和控制。
相关文章:
基于Matlab扩展卡尔曼滤波的GPS与DME组合无人机导航系统设计与实现
随着无人机(UAV)在农业监测、环境保护、物流运输、灾害救援等各个领域的广泛应用,精准且可靠的导航系统已成为提升无人机性能和任务执行能力的关键因素。传统的导航方法依赖于单一传感器,往往难以在复杂和动态的环境中提供足够的定…...
GEOBench-VLM:专为地理空间任务设计的视觉-语言模型基准测试数据集
2024-11-29 ,由穆罕默德本扎耶德人工智能大学等机构创建了GEOBench-VLM数据集,目的评估视觉-语言模型(VLM)在地理空间任务中的表现。该数据集的推出填补了现有基准测试在地理空间应用中的空白,提供了超过10,000个经过人工验证的指…...
重邮+数字信号处理实验三:z变换及离散LTI系统的z域分析
实验目的: ( 1 )学会运用 Matlab 求离散时间信号的有理函数 z 变换的部分分式展开; ( 2 )学会运用 Matlab 分析离散时间系统的系统函数的零极点; ( 3 )学会运用 …...
跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
与Synchronized相比,可重入锁ReentrantLock在实现原理上存在显著差异。以下是对两者实现原理的详细比较: 一、基本机制 Synchronized: 是JVM基于监视器(Monitor)的实现,提供的内置锁。每个对象都有一个监…...
如何在 Cursor-AI 中配置 Conda 虚拟环境
如何在 CursorAI 中配置 Conda 虚拟环境并使用快捷键 引言 在数据科学和机器学习的开发过程中,使用虚拟环境来管理项目的依赖库是非常重要的。Conda 是一个常用的环境管理工具,它可以帮助我们创建和管理虚拟环境。在这篇博客中,我将介绍如何…...
carsim2020安装记录
step1:双击carsim安装包,进行正常安装, 参考连接:carsim安装流程 这里注意如何破解,踩了一晚上坑 step2:破解d 大体步骤为: 将param目录以及生成MSCLIC_SSQ.lic文件以及MADLIC_SSQ.lic文件,将这两个文件…...
前端开发底层逻辑全解析
前端开发就像是构建一座数字大厦的外表装饰与交互系统,而理解其底层逻辑则是打好坚实基础的关键。今天,我们就来深入剖析前端开发的底层逻辑。 一、浏览器的工作机制:幕后的魔法手 当我们在浏览器中打开一个网页时,一系列复杂的操…...
WSL2下如何部署CosyVoice并开启API服务
环境: WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 问题描述: WSL下如何部署CosyVoice并开启API服务 解决方案: CosyVoice 下载不顺的时候,最好提前开科学 一、部署 1.拉取源码 git clone –recursive https://github.com/FunAudioLLM/CosyVoice.gitwsl下拉取 gi…...
操作系统Lesson8 - 同步互斥机制和编程方法
文章目录 忙等互斥与睡眠唤醒如何解决设立临界区 忙等互斥屏蔽中断可行性对单核处理系统上,最简单 锁变量严格轮询法Peterson算法问题代码:两个人互相谦让,造成死锁。解决方案 TSL指令 忙等互斥与睡眠唤醒 为了解决多个进程之间的操作不会相…...
OSGeo4W64和qtcreator环境配置
OSGeo4W64 release 64位,放在哪个盘都行 随便找个msvc64编译器 完整demo:OSGeo4W64和qtcreator 分享文件:osg4w64和qt.7z 链接:https://pan.xunlei.com/s/VODV85IkEKqQO88_QWNO_Be0A1# 提取码:8k8f 复制这段内容后打开…...
Ubuntu22部署MySQL5.7详细教程
Ubuntu22部署MySQL5.7详细教程 一、下载MySQL安装包二、安装MySQL三、启动MySQL 检查状态登录MySQL 四、开启远程访问功能 1、允许其他主机通过root访问数据库2、修改配置文件,允许其他IP通过自定义端口访问 五、使用Navicat连接数据库 默认情况下,Ubun…...
http和https分别是什么?区别是什么?
HTTP和HTTPS是两种常见的网络协议,用于在Web上进行数据传输。以下是它们的简要解释和主要区别: HTTP(Hypertext Transfer Protocol) HTTP是一种应用层协议,用于在Web上传输数据。它是互联网上应用最为广泛的一种网络…...
文件IO——01
1. 认识文件 1)文件概念 “文件”是一个广义的概念,可以代表很多东西 操作系统里,会把很多的硬件设备和软件资源抽象成“文件”,统一管理 但是大部分情况下的文件,都是指硬盘的文件(文件相当于是对“硬…...
23种设计模式之装饰模式
目录 1. 简介2. 代码2.1 ABatterCake (抽象组件)2.2 BatterCake (具体组件)2.3 ADecorator (抽象装饰者)2.4 EggDecorator (具体装饰者)2.5 SausageDecorator(具体装饰者…...
Ubuntu22.04系统源码编译OpenCV 4.10.0(包含opencv_contrib)
因项目需要使用不同版本的OpenCV,而本地的Ubuntu22.04系统装了ROS2自带OpenCV 4.5.4的版本,于是编译一个OpenCV 4.10.0(带opencv_contrib)版本,给特定的项目使用,这就不用换个设备后重新安装OpenCV 了&…...
《OpenCV:视觉世界的魔法钥匙》
《OpenCV:视觉世界的魔法钥匙》 一、OpenCV 是什么1. 起源与发展支持2. 特点与优势3. 编程语言支持 二、OpenCV 的发展历程1. 重要版本发布时间线2. 版本更新内容 三、OpenCV 的主要功能1. 图像处理2. 特征提取3. 目标检测4. 运动分析5. 人脸识别6. 其他功能 四、Op…...
Day7 苍穹外卖项目 缓存菜品、SpringCache框架、缓存套餐、添加购物车、查看购物车、清空购物车
目录 1.缓存菜品 1.1 问题说明 1.2 实现思路 1.3 代码开发 1.3.1 加入缓存 1.3.2 清除缓存 1.3.2.1 新增菜品优化 1.3.2.2 菜品批量删除优化 1.3.2.3 修改菜品优化 1.3.2.4 菜品起售停售优化 1.4 功能测试 1.4.1 加入缓存 1.4.2 菜品修改 1.5 代码提交 2.缓存套餐 2.1 Spring C…...
华为路由策略和策略路由学习笔记
控制网络流量可达性 思考:如何控制网络流量可达性? 解决方案一:可通过修改路由条目(即对接收和发布的路由进行过滤)来控制流量可达性,这种方式称为路由策略。 解决方案二:可直接通过依据用户制定的策略进行转发,且该策略优于路由…...
网上图书购物管理系统|Java|SSM|VUE| 前后端分离
【一】可以提供远程部署安装,包扩环境 【二】提供软件相关的安装包 【三】如果需要提供java入门资料可咨询 【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、M…...
杂发单的单据类型一个参数的逻辑
【核准中可改】被产线滥用了。它们可以这样做,开立一张杂发单,打印出来交领导层签名。单据要交财务做核算的。然后去修改杂发单的材料。以为可以瞒天过海。2个仓库,一个中掉坑里,一个发现了它们的拙劣的手段,上报之后没…...
AUTOSAR CP中基于通信模块(COM)的Transformer-R24的规范导读
该文档是关于 AUTOSAR CP中基于通信模块(COM)的Transformer的规范说明,主要内容包括引言、相关文档、约束与假设、功能规范、API 规范、配置规范等,旨在为汽车电子系统开发中基于 COM 的Transformer提供全面的技术规范和指导。 一…...
yarn : 无法加载文件 C:\Users\L\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁
关于执行安装yarn命令后执行yarn -v报错: 先确认执行安装yarn命令是否有误 # 安装yarn npm install yarn -g 终端输入set-ExecutionPolicy RemoteSigned 当然如果yarn -v仍然执行失败,考虑使用管理员方式运行IDEA, 注:如上操作…...
证明直纹面是可展曲面沿着直母线,曲面的切平面不变
目录 证明直纹面是可展曲面的当且仅当沿着直母线,曲面的切平面不变 证明直纹面是可展曲面的当且仅当沿着直母线,曲面的切平面不变 直纹面是可展曲面当且仅当沿着直母线,曲面的切平面不变. 证明:设直纹面 S S S的参数式为 r ( u …...
一种将png图像批量转换为RGB格式的方法
1.前言 大家在做2D图像分类的时候,代码经常要求图像是RGB格式。有时候我们的图像并不是RGB,尤其是处理病理图像切分的pach的时候,这时候就需要批量进行格式转换了。好了,直接上代码: import os from PIL import Image…...
Python 中的继承机制是什么样的?
Python的继承机制允许一个类(子类)继承另一个类(父类或基类)的属性和方法。 通过继承,可以实现代码复用,同时也能让代码结构更加清晰、易于维护。 Python支持单继承和多继承,并且有丰富的特性…...
MyBatis注解开发(一)
目录 使用注解完成CRUD 1. SqlMapConfig.xml配置文件 2. UserDao接口方法和注解的编写 3. UserTest测试方法的编写 注解方式比较简单,但是实际开发不推荐使用注解,使用配置文件的方式,不需要改源代码。 Insert:添加 Update:修改 Delete:删…...
挑战用React封装100个组件【010】
Hello,大家好,今天我挑战的组件是这样的! 今天这个组件是一个打卡成功,或者获得徽章后的组件。点击按钮后,会弹出礼花。项目中的勋章是我通过AI生成的,还是很厉害的哈!稍微抠图直接使用。最后面…...
深入浅出:Go语言中的错误处理
深入浅出:Go语言中的错误处理 引言 在任何编程语言中,错误处理都是一个至关重要的方面。它不仅影响程序的稳定性和可靠性,还决定了用户体验的质量。Go语言以其简洁明了的语法和强大的并发模型而著称,但其错误处理机制同样值得关…...
Spire.doc 合并word,复制word
之前使用的poi来实现这个功能,然后发现在复制chart时,边框样式无法修改,于是就使用了spire.doc 1. 引入依赖 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https…...
《Java核心技术I》线程局部变量
线程局部变量 ThreadLocal辅助类为各个线程提供各自的实例。 public static final THreadLocal dateFormat ThreadLocal.withInitial(()->new SimpleDateFormat("yyyy-MM-dd")); 要访问具体的格式化方法,可以调用: String dateStamp d…...
C++实现排序算法:冒泡排序
目录 前言 冒泡排序性质 C代码实现冒泡排序 冒泡图解 第一趟排序 第二趟排序 第三趟排序 排序结果 结语 前言 冒泡排序的基本思想是通过从前往后(从后往前)两两比较,若为逆序(即arr[i] < arr[i 1])则交换…...
智慧银行反欺诈大数据管控平台方案(八)
智慧银行反欺诈大数据管控平台的核心理念,在于通过整合先进的大数据技术、算法模型和人工智能技术,构建一个全面、智能、动态的反欺诈管理框架,以实现对金融交易的全方位监控、欺诈行为的精准识别和高效处理。这一理念强调数据驱动决策&#…...
阿里云通义千问:全面解析智能云服务先锋
一、技术架构与基础 模型构建基石 采用大规模语料库训练,涵盖多领域知识,如科学、历史、文学等,确保知识储备丰富多样。运用先进的神经网络架构,深度优化模型结构,提高信息处理效率与准确性。持续的语料更新机制&…...
Qt 设置QLineEdit控件placeholderText颜色
Qt 会根据QLineEdit控件显示文本的颜色自动设置placeholderText颜色,如果想自定义placeholderText颜色,可以通过以下方法。 在样式文件中增加以下设置: QLineEdit#lineEdit_userName, QLineEdit#lineEdit_password{border: none;padding: 6…...
opencv光流法推测物体的运动
光流法是计算机视觉中的一种技术,用于估计图像中相邻帧之间的像素位移或运动。它是一种用于追踪图像中物体运动的技术,可以在视频中检测并测量物体的运动轨迹。基本上,光流意味着计算像素的移动向量作为物体在两个相邻图像之间的位移差。光流…...
Vue指令(一)--v-html、v-show、v-if、v-else、v-else-if、v-on、v-bind、v-for、v-model
目录 (一)初识指令和内容渲染指令v-html 1.v-html 案例: 官网的API文档 (二)条件渲染指令v-show和v-if 1. v-show 2. v-if (三)条件渲染指令v-else和v-else-if 案例 (四…...
Elixir GenServer
GenServer 是一个用来实现客户端-服务器模式中服务器的行为模块。 GenServer 是一个普通的 Elixir 进程,同其他 Elixir 进程一样,它可以用来保存状态、异步执行代码等。使用这个模块来实现通用服务器进程(GenServer)的优势在于&a…...
第八节、Bresenham直线插补【51单片机-TB6600驱动器-步进电机教程】
摘要:前面章节主要介绍单个电机控制,本节内容介绍两个电机完成直线插补运动 一、 Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发,最初用于计算机显示直线,它确定应该选择的n维光栅的点&#…...
JDK1.8
JDK1.8 1. Lamdba表达式 Lambda表达式是什么? Lambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使java语…...
【jvm】讲讲jvm中的gc
目录 1. 说明2. 主要算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法3. 主要回收器3.1 Serial GC3.2 Parallel GC3.3 CMS(Concurrent Mark-Sweep)GC3.4 G1(Garbage-First)GC 4. 触发条件4.1 Minor GC(Young GC&am…...
Oracle 用户管理模式下的恢复案例-不完全恢复
1. 不完全恢复的几种常用方法 01. recover database using backup controlfile 如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉 oracle,不要以 controlfile 中的 scn 作为恢复的终点; 02. recover database until …...
Leetcode经典题4--查找数组中的多数元素+Boyer-Moore 投票算法
题目描述: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 输入输出示例 输入:nums [2,2,1,1,1,2,2] 输出…...
ubuntu20.04 如何使用 perf 性能分析工具 以及 hotspot 性能分析可视化工具?
官方文档:https://perfwiki.github.io/main/ 如何安装:https://askubuntu.com/questions/50145/how-to-install-perf-monitoring-tool 首先是安装 perf: sudo apt-get install linux-tools-common sudo apt-get install linux-tools-generic sudo apt-…...
Scala-隐式转换
系统自动完成的:把一种类型的数据转成了另一种类型的数据。 不是所有的类型都可以执行隐式转换 函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型 //张三的函数def getAge():Double{8.5}//函数名:tranform 不重要//函…...
基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP
前景分析 受众广泛:漫画的受众群体广泛,不仅限于青少年,还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大,未来漫画软件创业可以考虑全球市场的拓展。 市场需求大:数字化阅读趋势下&…...
租赁小程序的优势与应用场景解析
内容概要 租赁小程序,听起来是不是很酷?其实,它就是一个让你可以方便地租借各种高成本但用得不频繁的商品的平台。想象一下,当你需要租一件派对用的华丽小礼服,或是想体验一下超酷的运动器材,租赁小程序就…...
CC-Link IEFB转Modbus TCP协议网关(技术分享)
一,设备主要功能 捷米特JM-CCLKIE-TCP网关实现连接到CC-Link IE Field Basic总线中做为从站使用,连接到Modbus TCP总线中做为主站或从站使用。 应用广泛:捷米特JM-CCLKIE-TCP广泛应用于支持Modbus TCP接口的上位机、变频器、仪表、马保等等…...
开发手札:Win+Mac下工程多开联调
最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本,进入测试流程了。为了方便自测,需要用unity将一个工程打开多次,分别是Win/IOS/Android版本,进行多角色联调。 在Win开发机上,以Windows版本为主版…...
SSM报错:表现层方法应该返回字符串,但是返回页面
在进行SSM项目时,后端表现层应该返回给前端字符串,但是却跳转页面 1.首先检查是否使用ResponseBody注解 ResponseBody注解 作用:将java对象转为json格式的数据。将controller的方法返回的对象通过适当的转换器转换为指定的格式之后࿰…...
Unity中使用Sqlite存储本地数据
sqlite-net sqlite下载页 我的环境:win11、unity团结1.3.4 1.下载sqlite-net,将SQLite.cs脚本导入Unity 2.下载各平台依赖项,如dll、aar等。导入Unity并设置 3.简单列子,打包测试 using System; using System.IO; using SQLi…...