自动驾驶-定位概述

news2024/9/22 9:29:35

假设有一张全球的高精度地图,定位的任务是确定车辆在这张高精度地图上的位置。gps精度在1到3米,由于不能完全信任gps,必须找到另一种方法来准确的确定车辆在地图上的位置。

最常用的方法是将所看到的内容和地图上显示的内容进行比较

车辆坐标系和地图坐标系可能均取决于手机导航系统中的设置。

无人驾驶软件必须将传感器的测量值从车辆坐标系转换到地图坐标系,

image-20240718220017203

解决转换问题是定位问题的关键步骤

GNSS 全球导航卫星系统 RTK实时运动定位

image-20240718220504097

三角测量

任何时间大约有30颗GPS卫星在外层空间运行,各自距离地球约2万公里。如果没有遮蔽物,接收器每次应至少检测到四颗GPS卫星

每颗卫星都配备了高精度的原子钟。

为进一步减少误差,我们可以使用实时运动定位,RTK涉及在地面上建立几个基站。每个基站都知道自己精确的地面实况位置,每个基站也通过GPS测量自己的位置。已知的地面实况位置与通过GPS测量位置之间的误差,然后将这个误差传递给其他GPS接收器,以供其调整自身的位置计算

image-20240718221724125

image-20240718222132474

惯性导航定位

image-20240718222527823

我们可以使用加速度,初始速度和初始位置来计算汽车在任何时间点的车速和位置。

我们该如何测量加速度。需要一个名为三轴加速计的传感器。

有三种不同类型的三轴加速度计,采用不同的方法,但是共同目标是精确测量加速度。然而加速度本身不足以计算我们的速度和位置。

加速度计根据车辆的坐标系记录测量结果。我们需要知道如何将这些测量值转换为全局坐标系。这种转换需要另一个名为陀螺仪的传感器。

image-20240718223317216

陀螺仪的三个外部平衡环一直在旋转,但是旋转轴始终固定在世界坐标系中。我们计算车辆在坐标系中的位置是通过测量旋转轴和三个外部平衡环的相对位置来计算的。

加速度计和陀螺仪是惯性测量单元的主要组件,IMU的一个重要特征在于他以高频率更新。频率可以达到1000Hz,所以IMU可以提供接近实时的位置信息。缺点是其运动误差随时间增加而增加。我们只能依赖惯性单元在很短的时间范围内进行定位。

但是我们可以结合GPS和IMU来定位汽车。一方面IMU弥补了GPS更新频率较低的缺陷。另一方面GPS纠正了IMU的运动误差。但是即使结合也不能完全解决定位问题。

激光雷达定位

利用激光雷达,可以通过点云匹配来对汽车进行定位。该方法将来自激光雷达传感器的检测数据,与预先存在的高精度地图连续匹配。通过这种比较可获知汽车在高精度地图上的全球位置和行驶方向。

有许多算法用于点云匹配,如ICP迭代(iterative closest point)最近点,对于第一次扫描中的每个点,我们需要找到另一次扫描中最接近的匹配点。最终会收集到许多匹配点对。把每对点之间的距离误差相加计算平均距离误差。

目标是通过点云旋转和平移来最大限度降低这一平均距离误差,我们就可以在传感器扫描和地图之间找到匹配。我们将通过传感器扫描到的车辆位置转换为全球地图上的位置。

滤波算法是另一种LIDAR定位方法。滤波算法可以消除冗余信息,并在地图上找到最可能的车辆位置。

apollo使用了直方图滤波算法Histogram filter,也称为误差平方和算法(或SSD)sum of squared difference

将通过传感器扫描的点云滑过地图上的每个位置,在每个位置,计算扫描的点与高精度地图上的对应点之间的误差或距离,然后对误差的平方求和。求得的和越小,扫描结果与地图之间的匹配越好。

image-20240718225942137

卡尔曼滤波是另一种LiDAR定位方法。卡尔曼滤波是一种算法,用于根据我们在过去的状态和新的传感器测量结果来预测我们当前的状态。具体来说,卡尔曼使用了预测更新周期。

首先根据之前的状态和对移动距离和方向的估计,来估计或预测我们的新位置,当然运动估计并不完美,需要通过使用传感器测量我们的位置并加以纠正。一旦用传感器测量了我们的新位置,我们可以使用概率规则将不完美的传感器测量结果与我们现有的位置预测结合起来,我们会永远遵循这个预测更新周期。

先预测我们的新位置,然后用传感器测量我们的位置,LIDAR定位的主要优势在于稳健性

视觉定位

摄像头便宜且种类繁多,通过图像实现精确定位非常困难,摄像头数据通常与来自其他传感器的数据相结合以准确定位车辆。

image-20240719104906720

粒子滤波,使用粒子或点来估计最可能的位置。可以使用相同的粒子滤波原理对车道线进行拍照,使用拍摄的图像来确定车辆在道路中的位置。可以将摄像头图像与地图进行比较

apollo定位

使用基于gps,imu和激光雷达,高精度地图的多传感器融合定位系统,利用了不同传感器的互补优势。也提高了稳定性和准确性

image-20240719110142062

融合框架通过卡尔曼滤波将这些输出结合在一起,卡尔曼滤波建立在两步预测测量周期之上, apollo中,惯性导航解决方案,用于卡尔曼滤波的预测步骤,GNSS和LIDAR定位用于卡尔曼滤波的测量结果更新步骤。

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

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

相关文章

C#医学影像管理系统源码(VS2013)

目录 一、概述 二、系统功能 系统维护 工作站 三、功能介绍 影像采集 统计模块 专业阅片 采集诊断报告 报告管理 一、概述 医学影像存储与传输系统(PACS)是一种集成了影像存储、传输、管理和诊断功能的系统。它基于数字化成像技术、计算机技术和…

探索二进制翻译,openKylin成功在RISC-V平台运行X86架构软件!

众所周知,在新的指令集架构发展初期,往往采用兼容其他架构软件的方法来拓展自身生态体系,如苹果公司的Rosetta 2和微软的Arm64EC,都是将X86架构软件运行在ARM架构的系统之上。 RISC-V作为一个新兴的指令集架构,亟需软…

css技巧混合模式

看上面这个神奇的效果,文字在黑色背景里面显示为白色,而在白色的背景里面显示为黑色,这就是文字智能适配背景。 看到这样的需求,大多数人第一时间想到的是,文字元素有两个,是完全重叠的两层,一…

Pycharm 报错 Environment location directory is not empty 解

删除项目中ven文件夹(已存在的),然后再添加新的ven虚拟环境就可以了

链表面试练习习题(Java)

1. 思路: 创建两个链表,一个用来记录小于x的结点,一个用来记录大于等于x的结点,然后遍历完原链表后,将小于x的链表和大于等于x的链表进行拼接即可 public class Partition { public ListNode partition(ListNode pH…

【JVM】JVM调优练习-随笔

JVM实战笔记-随笔 前言字节码如何查看字节码文件jclasslibJavapArthasArthurs监控面板Arthus查看字节码信息 内存调优内存溢出的常见场景解决内存溢出发现问题Top命令VisualVMArthas使用案例 Prometheus Grafana案例 堆内存情况对比内存泄漏的原因:代码中的内存泄漏并发请求问…

自动化测试中如何应对网页弹窗的挑战!

在自动化测试中,网页弹窗的出现常常成为测试流程中的一个难点。无论是警告框、确认框、提示框,还是更复杂的模态对话框,都可能中断测试脚本的正常执行,导致测试结果的不确定性。本文将探讨几种有效的方法来应对网页弹窗的挑战&…

IDEA中内敛局部变量对话窗是什么?

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

【Hive SQL 每日一题】找出各个商品销售额的中位数

文章目录 测试数据需求说明需求实现方法1 —— 升序计算法方法2 —— 正反排序法 补充 测试数据 -- 创建 orders 表 DROP TABLE IF EXISTS orders; CREATE TABLE orders (order_id INT,product_id INT,order_date STRING,amount DOUBLE );-- 插入 orders 数据 INSERT INTO ord…

【Linux】Linux环境设置环境变量操作步骤

Linux环境设置环境变量操作步骤 在一些开发过程中本地调试经常需要依赖环境变量的参数,但是怎么设置对小白来说有点困难,今天就介绍下具体的操作步骤,跟着实战去学习,更好的检验自己的技术水平,做技术还是那句话&…

HTML+JS+CSS计算练习

可填 题目数量 数字范围 计算符号 题目做完后会弹窗提示正确率、用时 效果图 源代码在图片后面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

读AI新生:破解人机共存密码笔记18读后总结与感想兼导读

1. 基本信息 读AI新生&#xff1a;破解人机共存密码 斯图尔特罗素 著 中信出版社,2020年8月出版 1.1. 读薄率 书籍总字数301千字&#xff0c;笔记总字数44614字。 读薄率44614301000≈14.8% 1.2. 读厚方向 千脑智能 脑机穿越 未来呼啸而来 虚拟人 AI3.0 新机器人 …

月亮和Pandas -- 开源项目的挑战与机遇

毛姆的《月亮和六便士》讲述了这样一个故事&#xff0c;一个富有的英国股票经纪人&#xff0c;思特里克兰德&#xff0c;为了追求艺术和美&#xff0c;放弃自己的生活和家庭&#xff0c;来到巴黎&#xff0c;以艺术家的身份过着贫穷却目中无人的充足的生活&#xff0c;最终留下…

芯科科技第五届物联网开发者大会走进世界各地,巡回开启注册

中国&#xff0c;北京 – 2024年7月18日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;今日宣布&#xff0c;其2024年Works With开发者大会现正开放注册…

一文带你摸清SaaS服务与开源知识库的区别

在当今数字化转型的浪潮中&#xff0c;SaaS服务与开源知识库作为推动行业进步的两股重要力量&#xff0c;在多个方面展现出显著的区别。SaaS以其即用即付的便捷性、持续更新维护的优势&#xff0c;成为现代企业提升效率的首选&#xff1b;而开源知识库则凭借开放共享、自由定制…

SpringMVC注解全解析:构建高效Web应用的终极指南 (上)

SpringMVC 是一个强大的 Web 框架&#xff0c;广泛应用于 Java Web 开发中。它通过注解简化了配置&#xff0c;增强了代码的可读性。本文将全面解析 SpringMVC 中常用的注解及其用法&#xff0c;帮助你构建高效的 Web 应用。 一. MVC介绍 MVC 是 Model View Controller 的缩写…

项目实用linux 操作详解-轻松玩转linux

我之前写过完整的linux系统详解介绍&#xff1a; LInux操作详解一&#xff1a;vmware安装linux系统以及网络配置 LInux操作详解二&#xff1a;linux的目录结构 LInux操作详解三&#xff1a;linux实际操作及远程登录 LInux操作详解四&#xff1a;linux的vi和vim编辑器 LInux操作…

LeetCode 3112.访问消失节点的最少时间:单源最短路的Dijkstra算法

【LetMeFly】3112.访问消失节点的最少时间&#xff1a;单源最短路的Dijkstra算法 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-time-to-visit-disappearing-nodes/ 给你一个二维数组 edges 表示一个 n 个点的无向图&#xff0c;其中 edges[i] [ui, vi, l…

【JavaEE】CAS原理实现 + 常见应用

本文基于jdk8 参考&#xff1a; 黑马程序员深入学习Java并发编程&#xff0c;JUC并发编程全套教程_哔哩哔哩_bilibili CAS原理 CAS&#xff1a;比较和交换(设置) Compare And Swap(Set)。当A的值为5的时候&#xff0c;给A设置值为10。这里涉及到的比较和设置值的操作是原子的…

SAP代理商哲讯智能携手合肥企业,共塑SAP系统开发新篇章

在数字化转型的浪潮中&#xff0c;SAP开发作为企业信息化建设的重要一环&#xff0c;对于提升企业的运营效率和市场竞争力具有至关重要的作用。合肥&#xff0c;作为中国东部地区的重要城市之一&#xff0c;拥有众多企业正积极探索SAP开发的可能性。哲讯智能科技有限公司&#…