AGV 导航方法总体设计与分析

导航方案设计 导航方法分为三个部分——路径规划、实时定位、轨迹纠正。

视觉定位模块

主要有三个工作任务:利用二维码定位对 AGV 初始位姿 进行矫正,保证 AGV 初始运动时其运动轨迹能够与道路平行;利用 ORBSLAM 定位能够实时的获得 AGV 在车库中的位姿;当 AGV 接近车位时,利 用二维码再次对 AGV 的位姿进行矫正,保证 AGV 能够准确的进入车位。定 位模块按照内容分一共分为两部分,二维码视觉定位和 ORB-SLAM 定位。 二维码视觉定位模块中,使用 ARToolKitPlus 库提供的二维码。在二维码识 别的过程中,利用模板匹配提高了 ID 识别的速度,在定位计算中利用 RPP 算法消除了局部最小值带来的错误解。ORB-SLAM 系统构建的是稀疏点云, 具有良好的实时性。在系统搭建的过程中使用跟踪法、局部地图、词袋法等, 多次优化保证了定位精度。同时系统加入了闭环检测,保证系统在大场景、 长时间建图定位的鲁棒性。

路径规划模块

为了提高定位模块的实时性,我们采用构建 ORB 特征的稀疏点云地图。 但稀疏点云地图不具备几个特征,不能像传统栅格地图可以进行路径规划。 为了解决这个问题,我们采用后台通信模式。后台根据施工图纸等信息建立 车库的全局栅格地图,在全局栅格地图中进行路径规划,将路径信息通过通 信的方式下发给定位导航层,对路径信息进行动作解析,得到相应的运动控 制命令。底层对运控命令的解析,得到电机转速从而实现动作反应。这种路 径规划模式存在一个新问题,全局地图要与 ORB 稀疏点云地图之间建立准 确的联系,确保定位信息、路径信息坐标系之间转换的正确性。所以在 AGV 执行导航任务前,借助二维码辅助信息完成建立坐标系关系的建立。对已知 世界坐标的二维码识别,获得 AGV 的初始位姿并对其进行矫正。确保 AGV 初始行走的初始轨迹平行坐标轴。在 SLAM 系统初始化完成时,通过记录当 帧中相机在二维码坐标系中的位姿,从而获得世界坐标系到稀疏点云坐标系 的变换矩阵。二维码在世界坐标系之中的姿态通过人工示教法获得。

轨迹纠正模块

将后台发过来的全局路径以坐标点对序列的形式下发过来,根据我们应用场景及相关算法 。对这些点对进行划分,将全局路径划分为各段直线的局部路径,并根据 局部路径信息进行动作解析得到速度控制命令。由于机械误差、路面不平等 多方面原因,小车不能严格的按我们预期的轨迹行进,会发生偏离。为了保 证 AGV 在运动过程中不偏离预期的轨迹路线,需要对轨迹进行纠正。利用 ORB-SLAM 视觉的实时定位信息与理想预期轨迹对比,根据理想位置和当前 位置可以得到 AGV 的轨迹偏离误差值,针对误差设计控制律使误差值收敛, 最终求解出小车的线速度和角速度使小车向理想轨迹靠拢。由于底层的一个 响应周期内可能完不成 AGV 轨迹跟踪控制预期的动作,在 AGV 运动的过程 中轨迹偏离误差值一直都存在并且随时间的成收敛趋势,所以理论上讲 AGV 在运动的过程中在不断逼近预期轨迹,其收敛效果与底层硬件反应,算法参数的选择有直接关系。在真实应用场景里,AGV 行进的路径都为直线,且在运动前通过二维码对 AGV 的姿态进行矫正,所以真实轨迹与理想轨迹之间 的误差值不会太大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket Day 01:入门案例

前言 欢迎来到WebSocket入门案例系列的第一天!在今天的博客中,我们将一起探索WebSocket的基础知识和使用方法。本系列将以一个简单的入门案例为基础,带领您逐步了解WebSocket的原理和用法。 一、什么是 WebSocket ? WebSocket是一种在Web应…

香港金融科技周VERTU CSO Sophie谈Web3.0的下一个风口 手机虚拟货币移动支付

10月31日,香港金融科技周正式拉开帷幕。这项香港金融科技界地年度盛事今年已经踏入了第八届,本届活动吸引超过数百位金融科技专业人士、创业者和行业领袖现场参与,线上参与观众超过10万人次。 在金融科技周的圆桌会议上,VERTU首席…

看门狗溢出实验(按键不停喂狗)

/*----------------------------------------------- 内容&#xff1a;通过按键喂狗防止溢出复位 看门狗演示程序 在16383个机器周期内必须至少喂狗一次 标准AT89s52单片机试验通过。 ------------------------------------------------*/ #include <reg5…

acwing算法基础之数据结构--并查集算法

目录 1 基础知识2 模板3 工程化 1 基础知识 并查集支持O(1)时间复杂度实现&#xff1a; 将两个集合合并。询问两个元素是否在一个集合中。 基本原理&#xff1a;每个集合用一颗树来表示。树根的编号就是整个集合的编号。每个结点存储它的父结点&#xff0c;p[x]表示x的父结点…

第十二章《搞懂算法:朴素贝叶斯是怎么回事》笔记

朴素贝叶斯是经典的机器学习算法&#xff0c;也是统计模型中的一个基本方法。它的基本思想是利用统计学中的条件概率来进行分类。它是一种有监督学习算法&#xff0c;其中“朴素”是指该算法基于样本特征之间相互独立这个“朴素”假设。朴素贝叶斯原理简单、容易实现&#xff0…

查询当前目录下指定大小的文件和跳过指定文件夹查文件夹大小

要筛选当前目录下大于500MB的文件并将它们记录在日志文件中&#xff0c;你可以使用以下步骤&#xff1a; 打开终端或命令提示符。使用以下命令列出当前目录下所有文件及其大小&#xff0c;并将结果重定向到一个文本文件中&#xff0c;例如filelist.txt&#xff1a; find . -t…

缓解缓存击穿的大杀器之---singleflight深入浅出

singleflight简单介绍 singlefight直译“单飞”&#xff0c;那顾名思义就是有一堆鸟&#xff0c;但是咱只让一只鸟单飞。。。&#x1f604; singleflight 提供了重复函数调用抑制机制&#xff0c;使用它可以避免同时进行相同的函数调用。第一个调用未完成时后续的重复调用会等…

【Unity细节】为什么UI移动了锚点,中心点和位置,运行的时候还是不在设置的位置当中

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

[MRCTF2020]你传你呢1

提示 只对php以及phtml文件之类的做了防护content-type.htaccess文件 这里就不整那么麻烦直接抓包测试 首先对后缀测试看过滤了哪些 (php php3 pht php5 phtml phps) 全部被ban了 到这里的后续思路通过上传一些配置文件把上传的图片都以php文件执行 尝试上传图片码, 直接上传成…

新大陆NVH200-AP(U)扫码枪在上位机软件开发中的应用

前言: 由于本次使用的是USB接口的扫码枪 1、先安装Nset软件,使用扫码枪扫描“启动设置条码”,然后扫描“USB CDC串口”条码 2、打开NSet软件,点击“刷新按钮” 就能找到扫码枪设备 3、设置条码后缀 点击“高级设置”,然后点击“数据编辑”,在“后缀”那里设置结束符…

spring boot中的多环境配置

1.切换环境 spring:profiles:include: devactive: dev的作用是为了启动某个环境&#xff0c;两个作用基本一致&#xff0c; 环境定义如下&#xff1a; spring:profiles: dev或者是查找application-dev.yml这个文件的所有配置 2.加载文件 spring:config:import:- optional:f…

逆向学习记录(2)windows常用基本操作及用环境变量配置上多个python版本

1、如何打开cmd 第一种方法&#xff1a;按下winr&#xff0c;运行cmd 第二种方法&#xff1a;进入一个目录&#xff0c;点击路径处&#xff08;显示蓝色背景&#xff09;&#xff0c;然后直接键盘输入cmd&#xff0c;回车&#xff0c;运行cmd并直接进入此目录。 2、命令dir&am…

C++入门新手村-文件读写知识讲解

文件读写知识讲解 C简单文件操作读文件读文本文件读二进制文件 写文件写文本文件写二进制文件 C简单文件操作 文本文件 文件以文本的ASCII码形式存储在计算机中二进制文件 文件以文本的二进制形式存储在计算机中&#xff0c;用户一般不能直接读懂它们 操作文件的三大类&#…

Spring Boot 配置主从数据库实现读写分离

一、前言 现在的 Web 应用大都是读多写少。除了缓存以外还可以通过数据库 “主从复制” 架构&#xff0c;把读请求路由到从数据库节点上&#xff0c;实现读写分离&#xff0c;从而大大提高应用的吞吐量。 通常&#xff0c;我们在 Spring Boot 中只会用到一个数据源&#xff0…

http进一步认识

好久不见各位&#xff0c;今天为大家带来http协议的进一步认识 文章目录 &#x1f440;http协议的认识&#x1f440;新的改变 &#x1f440;http协议的认识 http协议经历了三个版本的演化&#xff0c;HTTP0.9是第一个版本的协议&#xff0c;它的组成极其简单&#xff0c;只涉…

硬科技企业社区“曲率引擎”品牌正式发布

“曲率引擎”&#xff0c;是科幻作品中最硬核的加速系统&#xff0c;通过改变时空的曲率&#xff0c;可实现光速飞行甚至能够超越光速。11月3日&#xff0c;“曲率引擎&#xff08;warp drive&#xff09;”作为硬科技企业社区品牌&#xff0c;在2023全球硬科技创新大会上正式对…

Oracle(12)Managing Indexes

目录 目标&#xff1a; 一、基础知识 1、Classification ofindexes 索引的分类 2、B-Tree vs Bitmap 3、Creating Indexes: Guidelines 创建索引:准则 4、Offline Index Rebuild 脱机索引重建 5、RebuildingIndexes 重建索引 6、Online Index Rebuild 在线索引重建 7…

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案

目录 场景还原相关代码开发者工具 - 网络请求记录 问题排查定位改bug 总结 场景还原 我在前端使用axios接收后端xlsx表格文件流并下载&#xff0c;xlsx文件能够下载成功&#xff0c;但是打开却显示文件无法打开 相关代码 请求API封装:Content–Type以及responseType经核对均…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…