Autoware內容學習與初步探索(一)

0. 簡介

之前作者主要是基于ROS2,CyberRT還有AutoSar等中間件完成搭建的。有一說一,這種從頭開發當然有從頭開發的好處,但是如果說絕大多數的公司還是基于現成的Apollo以及Autoware來完成的。這些現成的框架中也有很多非常好的方法。目前作者打算抽一些時間來整理這部分資料,并根據自己學習內容進行介紹。

目前使用的主流的無人駕駛開源項目框架,主要是Autoware和百度的Apollo。百度Apollo的版本迭代十分迅速,起初的幾個版本也是基于ROS1開發的,但由于ROS的局限性(主要是其機制所造成的無人系統響應時間相對較慢等問題,不適用于高速無人駕駛),Apollo貌似從3.5開始就棄用ROS1改用自己研發的CyberRT中間件了,但Apollo也有一定的局限性,比如需要購買百度提供的高精度地圖服務等,Apollo在SLAM定位建圖這方面開放性不是很高。如果你對自己移動平臺行駛速度的要求不是很高,僅僅是在小片公共區域(類似廠區、園林等)實現自動駕駛,Autoware足夠滿足使用需求。博主是做園林環衛機器人的,所以主要在用Autoware框架,Apollo只了解一點點。目前,Autoware已經推出了基于ROS2的 Autoware.Auto,感興趣的朋友可以看一下。


1. Autoware自動駕駛框架介紹

Autoware.AI是世界上第一個用于自動駕駛技術的“All-in-One”開源軟件。它ROS1操作系統,并在Apache2.0許可下使用。主要包含以下模塊:

  • 定位(Localization ):通過結合GNSS和IMU傳感器的3D地圖和3D地圖、SLAM算法來實現定位。
  • 檢測(Detection ):通過傳感器融合算法和深度神經網絡使用攝像機和激光雷達完成檢測。
  • 預測和規劃(Prediction and Planning ):基于概率機器人模型和基于規則的系統,部分還使用深度神經網絡。
  • 控制(Control):Autoware向車輛輸出的是速度和角速度的扭曲量。盡管控制量的主要部分通常位于車輛的線控控制器中,但這些是Control的一部分。

在這里插入圖片描述

2. Apollo和Autoware的異同

2.1 硬件區別

以NXP的二代藍盒子為硬件基礎,這兩個自動駕駛軟件開源平臺最大的區別在于底層,最上層的應用模塊差別不大。硬件系統方面,Apollo推薦64位x86指令集的CPU加英偉達GPU架構。Autoware主要使用英偉達的AGX Xavier或PX2,也就是推薦ARM的V8指令集架構CPU。當然,也支持64位x86指令集的CPU加英偉達GPU架構。

在這里插入圖片描述

2.2 框架區別

Autoware的框架主要包含感知(Perception)、決策(Planning)兩個部分,感知部分包含定位(Localization)、檢測(Detection)、預測(Prediction)三個模塊,決策包含全局運動規劃(Mission)、局部運動規劃(Motion)兩個模塊

在這里插入圖片描述

相比Autoware,Apollo的框架更加豐富和復雜,整個框架包括云服務平臺、開源軟件平臺、參考硬件平臺和參考軟件平臺四部分。

云服務平臺包括:

  • 高精地圖服務:高精度地圖是實現無人駕駛汽車高精度定位、路徑導航、路徑規劃的基礎;

  • 仿真引擎:通過海量實際路況及自動駕駛場景數據,促進自動駕駛系統的開發快速迭代進行;

  • 數據平臺:包括傳感器數據、車輛行駛數據等;安全:數據安全、通信安全、服務安全;

  • OTA:空中下載技術(Over-the-Air Technology)是遠程升級系統的必備技能;

  • DuerOS:百度的語音交互平臺,未來可通過語音與車實現交互。


開源軟件平臺是Apollo自動駕駛系統的核心部分,包括功能模塊、運行框架和實時操作系統三部分。功能模塊可細分為:

  • 地圖引擎:運行高精度地圖;
  • 定位模塊:通過GPS、V-SLAM、L-SLAM、里程計等多種定位源融合,結合高精度地圖,實現精準定位;
  • 感知:通過激光雷達、毫米波雷達、攝像頭,精確感知車輛周圍的環境路況,包括車輛、行人、交通標志等等;
  • 規劃:主要包括路徑規劃、運動障礙物的預測等;
  • 控制:實現控制車輛的轉向、油門、剎車等操作;End-to-End:基于深度學習的橫向和縱向駕駛模型;
  • HMI:人機交互模塊。

硬件平臺主要是無人駕駛系統的計算硬件和各種傳感器硬件,包括GPS/IMU、攝像頭、激光雷達、毫米波雷達、HMI設備、黑盒子等。

車輛平臺,可實現線控轉向、線控油門和線控制動等線控功能。

2.3 中間件區別

相比Ros,CyberRT增加了Component組件,組件之間通過 Cyber channel 通信。Cyber RT 中用Message實現模塊間通信,其實現基于 protobuf。同時,CyberRT也支持異步計算任務,優化線程使用與系統資源分配,同時支持定義模塊拓撲結構的配置文件


3. Autoware安裝

下面我們就來看一下Autoware的安裝, Autoware 官網給出了兩種安裝方式:源碼編譯安裝Source Build 和 Docker 方式,使用 Docker 方式更為簡單。

3.1 安裝OpenCV(以 4.0.0 為例)

Ubuntu 18.04 安裝 OpenCV 網上的教程比較多,就不寫具體的步驟了,推薦幾個不錯的:

Ubuntu 18.04安裝OpenCV4.0和環境配置
OpenCV+Ubuntu18.04環境搭建
ubuntu18.04 安裝opencv4.2
注意,如果使用 anaconda 管理 python 環境的話,也要將編譯好的 opencv 庫鏈接到 anaconda 下的 site-packages 目錄下。

3.2 安裝Qt(以 5.12.0為例)

…詳情請參照古月居

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/12103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12103.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java的抽象類和接口】

1. 抽象類 1.1 抽象類概念 在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果 一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。 以上代碼中…

Leaflet系列——【一】初識Leaflet與Leaflet視圖操作

初識Leaflet(vue3 ) 前言:當你熟悉了openlayer、mapbox、cesium等一些GIS框架之后,對于我們開發來說其實他們的本質就是往瓦片上面疊加圖層、【點、線、面、瓦片、geoJson、熱力圖、圖片、svg等等】都是一層層的Layer圖層&#xf…

MySQL中的多表設計

由于業務之間的相互關聯,所以各個表結構之間也存在著各種聯系 基本分為三種: 一對多 多對多 一對一 外鍵語法 create table 表名( 字段名 數據類型, ... [constraint] 外鍵名稱 foreign key (外鍵字段名&#…

銀川項目外包找邦芒 助力企業減壓增效

銀川邦芒人力項目外包,是指企業將原本由自身承擔的具有基礎性、共性、非核心的IT業務和基于IT的業務流程,委托給專業的外部服務提供商來執行的一種經濟活動。這種全方位的企業用工解決方案,旨在幫助企業優化資源配置、降低成本、提升效率&…

相同的隨機種子CPU和GPU上torch.nn.init.xavier_normal_結果并不一致

相同的隨機種子CPU和GPU上torch.nn.init.xavier_normal_結果并不一致 一.測試代碼二.輸出 在訓練pytorch模型時,相同的隨機種子,不同的服務器上loss并不一樣,通過調試發現這二個平臺的權值也不一樣.單獨測試torch.nn.init.xavier_normal_,發現也不一樣.如果都放在CPU上則二臺服…

Ceph集群擴容及數據再均衡原理分析

用戶文件在Ceph RADOS中存儲、定位過程大概包括:用戶文件切割成對象、對象映射到PG、PG分組PGP、PG映射到OSD。這些過程中,可能涉及了大量概念和變量,而其實它們大部分是通過HASH、CRUSH等算法計算出來的,初始參數可能也就只有這么…

sql實踐

1.從excel導入數據 在excel導入數據時要先在數據庫中創建對應的數據庫表 CREATE TABLE your_table_name (crawl_datetime DATE,url CHAR(255),company_name CHAR(255),company_size CHAR(255),company_type CHAR(255),job_type CHAR(255),job_name CHAR(255),edu CHAR(255),e…

暗區突圍TWITCH掉寶關聯帳號不了 無法關聯帳號 關聯不上

Twitch,作為全球知名的游戲直播平臺,常常攜手熱門游戲如《暗區突圍》舉辦互動活動,為玩家帶來獨特的參與體驗。在這個過程中,“綁定關聯”成為了連接直播觀眾與游戲世界的橋梁。簡單來說,Twitch綁定關聯《暗區突圍》指…

leetcode——鏈表的中間節點

876. 鏈表的中間結點 - 力扣(LeetCode) 鏈表的中間節點是一個簡單的鏈表OJ。我們要返回中間節點有兩種情況:節點數為奇數和節點數是偶數。如果是奇數則直接返回中間節點,如果是偶數則返回第二個中間節點。 這道題的解題思路是&a…

OpenAI 發布了免費的 GPT-4o,國內大模型還有哪些機會?

大家好,我是程序員X小鹿,前互聯網大廠程序員,自由職業2年,也一名 AIGC 愛好者,持續分享更多前沿的「AI 工具」和「AI副業玩法」,歡迎一起交流~ 這是今天在某乎看到一個問題:OpenAI 發完 GPT-4o&…

關閉 Visual Studio Code 項目中 的eslint的語法校驗 lintOnSave: false;; 項目運行起來之后 自動打開瀏覽器 端口

1、在 vue.config.js 配置 一個屬性 lintOnSave: false 2、配置兩個屬性 open: true, // 自動打開瀏覽器 port: 3000 // 端口 port 端口號根據自己的項目實際開發來 配置

Lumina-T2X 一個使用 DiT 架構的內容生成模型,可通過文本生成圖像、視頻、多視角 3D 對象和音頻剪輯。

Lumina-T2X 是一個新的內容生成系列模型,統一使用 DiT 架構。通過文本生成圖像、視頻、多視角 3D 對象和音頻剪輯。 可以在大幅提高生成質量的前提下大幅減少訓練成本,而且同一個架構支持不同的內容生成。圖像質量相當不錯。 由 50 億參數的 Flag-DiT …

structured concurrency

1. 基于 c executions的異步實現 - 從理論到實踐 - 知乎 (zhihu.com)

kubeadm部署k8s v1.30

k8s 1.30主要新功能 kubelet 重啟后穩健的 VolumeManager 重建(SIG Storage) 防止在卷還原過程中未經授權的卷模式轉換(SIG Storage) Pod 調度可用性(SIG Scheduling) PodTopologySpread 中的最小域數&a…

VitePress變成可視化了

VitePressSimple 非技術人員搭建博客的門檻又降低了,這個開源項目把VitePress變成可視化了。 要搭建博客、教程網站,VitePress是門檻最低的方案之一,唯一和技術有關的就是會用到編輯器來操作。 現在好了,VitePressSimple直接把Vit…

Java 枚舉的使用與反射應用

文章目錄 一、定義方式1.1 簡單定義1.2 帶參數定義 二、反射應用1. 反射獲取枚舉常量2. 反射獲取枚舉屬性3. 動態調用枚舉方法4. 動態設置枚舉屬性5. 判斷枚舉類型6. 反射獲取枚舉信息 單例模式:枚舉類型是一種有限實例的類,枚舉常量在定義時就被限定為一…

解決在云服務器上無法使用QQ郵箱發送郵件的問題

最近在做測試demo的時候發現,在本地可以使用qq郵箱的服務來進行郵件的發送,但是把項目部署到云服務器上就沒辦法發送郵件,并且報錯是連接超時: 向xxxxxqq.com用戶發送綁定郵箱驗證碼異常:Mail server connection fail…

leetcode234-Palindrome Linked List

題目 給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為回文鏈表 。如果是,返回 true ;否則,返回 false 。 示例 1: 輸入:head [1,2,2,1] 輸出:true 分析 可以用快慢指針的方式找到鏈表的…

自用代碼生成器代碼

代碼生成器 pom.xml文件中 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【軟件測試】自動化測試 Selenium 篇(一)

一、什么是自動化測試 1、自動化測試介紹 自動化測試指軟件測試的自動化&#xff0c;在預設狀態下運行應用程序或者系統&#xff0c;預設條件包括正常和異常&#xff0c;最后評估運行結果。將人為驅動的測試行為轉化為機器執行的過程。 自動化就相當于將人工測試手段進行轉換…