1. 程式人生 > >製造一輛無人駕駛車輛 Part2:全力加速

製造一輛無人駕駛車輛 Part2:全力加速

本文是我們的系列中的第二篇部落格文章,旨在指導您製作 1/16 比例的無人駕駛車輛。您還可收聽我們的 Twitch 網路直播以回顧這些部落格文章中討論過的概念。在跟隨我們操作之後,您可以將您自己的車輛帶進 re:Invent Robocar Rally 2017 的賽道,也可以使用我們提供的車輛。

在我們的第一篇部落格文章中,我們製作了一輛 Donkey car 並將導航伺服器部署到您的 Amazon EC2 例項上。在本篇部落格文章中,我們將佈置一個賽道並教您的車輛使用 Amazon EC2 Systems Manager 和 AWS IoT 進行駕駛。如果您已經關閉了 Donkey Server EC2 例項,現在請將它開啟並獲取其公共 IP 地址。獲取公共 IP 地址後,我們會將您的車連線到 EC2 Systems Manager 以遠端訪問它。之後,我們會將您的車連線到 AWS IoT 以跟蹤可用來與好友比較圈速的遙測資料。

賽道佈置

教您的車駕駛的第一步是佈置賽道。準備好賽道後,您需要駕駛您的車輛在賽道上跑第一圈以開始訓練其神經網路。我們要使用的車的速度相當快並且轉彎半徑不太大,因此您需要從沒有急彎的賽道開始。

除此之外,您佈置的賽道的大小受您的可用空間和您手頭的膠帶數的限制。您可在設計中盡情發揮創意,但要確保將各個角度的左轉和右轉考慮進去以便讓您的神經網路接觸多種不同的情況。請記住,您的車輛使用其前置攝像頭觀察您佈置的賽道,因此您需要確保能夠輕鬆區分膠帶與地面。

賽道設計提示和技巧

  • 與具有各種光亮和陰影水平的室外賽道相比,室內賽道提供的持續照明產生更好的效果。
  • 您的車通常具有最小 30 度的轉彎半徑,因此在設計拐角的彎度時應記住這一點。
  • 您可使用白色絲帶和藍色噴塗膠帶製作臨時賽道。
  • 您還可使用一條白線作為賽道。行為克隆方法將學習沿著線駕駛。
  • 無光表面膠帶的效果比光面膠帶的更好。

用於製作更持久的賽道的兩種選擇。

準備好賽道後,請開啟 EC2 Systems Manager 並激活您的車。

在 EC2 Systems Manager 上啟用裝置

EC2 Systems Manager 提供了各種對您的車非常有用的功能。Systems Manager 可幫助您自動執行功能,從而無需通過 SSH 連線到您的車上的 Raspberry Pi。Raspberry Pi 的設定過程簡單,首先是建立啟用、安裝代理和建立控制某些行為的文件開始。Systems Manager 支援您在不使用 SSH 的情況下執行命令,並且可充當純文字和加密金鑰值對的引數儲存。Systems Manager 還有助於確保本地導航正在執行並準備好在啟動時執行命令。我們將使用 Systems Manager 自動生成和下載安全地將遙測資料傳輸到 AWS IoT 服務所需的 AWS IoT 證書。

轉到 EC2 Console,然後按 Activations

選擇 create an activation。輸入您的 Activation Description。在本部落格文章中,我們將它命名為 DonkeyCar Activation。現在將限制保留為 1。設定未來的到期日期 (不超過 30 天) 並將裝置命名為 myDonkeyCar。選擇 Create Activation 後,您將收到 Activation CodeActivation ID

將這些內容記在某個安全的位置,因為您需要啟用程式碼和啟用 ID 才能將 Raspberry Pi 註冊到 EC2 Systems Manager。

使用執行 donkey 車輛的 Raspberry Pi 的 IP 地址,通過 SSH 連線到 Donkey。使用 Raspberry Pi 的 IP 地址執行此操作的命令如下所示。

ssh [email protected]

請注意,預設使用者名稱為“pi”,密碼為“raspberry”。建議您自行設定使用者名稱和密碼。

在裝置上,輸入以下命令列以安裝 EC2 Systems Manager 代理,然後啟動服務以便讓它與 Systems Manager 進行通訊。我們還將按此處所述的方式安裝 AWS CLI。

mkdir /tmp/ssm
sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
sudo service amazon-ssm-agent stop
sudo amazon-ssm-agent -register -code "code" -id "id" –region "us-east-1"
sudo service amazon-ssm-agent start
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

注意:如果您使用的是 Donkey Raspberry Pi 影象,還請執行以下命令以獲得穩定的計算機 ID。

sudo umount /etc/machine-id
sudo systemd-machine-id-setup

在服務啟動後,您將在 Managed Devices 下看到裝置。您可從 AWS 控制檯遠端訪問它。對於我們的裝置,我們還希望為其授予完整 SSM 許可權。轉到 IAM,然後按 Roles

搜尋 AmazonEC2RunCommandRoleforManagedInstances。我們希望將 AmazonSSMFullAccess 策略附加到此角色,從而使 Donkey Car 獲得對 EC2 Systems Manager 的完全訪問許可權。讓我們附加 AWSIoTConfigAccess,為我們的裝置提供預置安全 IoT 證書的許可權。

“摘要”頁面應如下所示:

開始駕駛

要開始,請使用執行 donkey 車輛的 Raspberry Pi 的 IP 地址,通過 SSH 連線到 Donkey。使用 Raspberry Pi 的 IP 地址執行此操作的命令如下所示。

ssh [email protected]

請注意,預設使用者名稱為“pi”,密碼為“raspberry”。建議您選擇更獨特的密碼。請記住此密碼,因為它是您與車輛互動的主要方式。

您還可以自動執行整個操作。讓我們建立一個 Systems Manager 文件以便為 Raspberry Pi 定義一些操作。我們將我們的文件命名為 RunCar。我們可將 Document Type 保留為 Command

我們可使用以下 JSON 定義基本更新 Pi 指令碼。要了解更多資訊,請轉到 Systems Manager 文件。將以下內容複製到 Content 中。按 Create Document

{
   "schemaVersion":"2.2",
   "description":"Run your Donkey Car",
   "mainSteps":[
      {
         "action":"aws:runShellScript",
         "name":"Runcar",
         "precondition":{
            "StringEquals":[
               "platformType",
               "Linux"
            ]
         },
         "inputs":{
            "runCommand":[
              "cd /home/pi",
	          ". env/bin/activate",
	          "cd d2",
              "python manage.py drive"
            ]
         }
      }
   ]
}

注意:當為現有文件建立新版本時,請確保將最新的版本設定為預設版本。

要執行此命令,請轉到 Run Command 並按 Run a Command

選擇 RunCar 並手動選擇要執行的 Raspberry Pi (託管例項具有字首“mi”)。這將從您在 Raspberry Pi 上建立的文件執行命令,無需使用 SSH 連線到 Raspberry Pi。

現在,連線到 Raspberry Pi 的 IP 地址,同時指定埠 8887。您可使用任何瀏覽器,但下一個部分將更有趣並且將在平板電腦或手機上產生更好的效果。

http://172.20.10.7:8887

您的瀏覽器應顯示類似於下面的頁面:

選擇“Vehicles”選項卡,然後選擇您的車輛。這會將您連線到控制面板。控制面板應如下所示:

您需要使用控制面板繞賽道手動駕駛車輛以開始訓練您的神經網路。在將車開進賽道之前,確保抽點時間學習如何控制油門和轉向角。

有多種控制模式,但我們喜歡通過遊戲手柄、遊戲杆或鍵盤控制元件來使用裝置傾斜模式。基於賽道的尺寸限制最大油門也很有用。在我們的測試中,我們發現發動車輛需要最大油門的 25%,但提高到 30% 會讓人更難手動控制車輛。也就是說,您的車輛可以學習開得更快。

當您做好準備後,將車輛連線到其蓄電池並選擇綠色的 Start Vehicle Button。如果一切正常,您將從攝像頭中看到包含響應角度和油門儀表以及響應控制元件的實時 POV 視訊源。花幾分鐘時間熟悉一下控制元件,然後前往賽道。請記住,您的車將學習您的行為。確保保持直線駕駛,不要轉任何急彎。您需要能夠跑完 10 個整圈而不出錯。

在佈置賽道並掌握基礎知識之後,您就可以開始訓練神經網路了。為此,請選擇 Start Recording。您的車現在將通過攝像頭捕獲 160×120 幀,儲存該影象並將關聯元資料 (如油門和轉向角) 捕獲到單獨的 JSON 檔案中。

如您所見,我們正在為您的神經網路開始學習使用包含對應轉向角和油門資料的樣本影象奠定基礎。當您的車獲取到更多資料時,它將開發一種模型來幫助自己看清道路並做出相應反應。

為了讓此模型具有一定的準確度或精確度,您需要駕駛車輛幾分鐘以收集至少幾千張影象。此模型需要接受充分的訓練才能收集足夠大的樣本集,並且可能需要連續正常駕駛 10-20 個整圈。

當您收集足夠大的訓練集後,您可選擇 Stop Vehicle 停止收集資料。現在,是時候將會話資料上傳到您的 EC2 例項上的深度學習框架以便為您的車輛開發模型了。您可使用 Raspberry Pi 上的計算能力訓練車輛,但在 EC2 例項上訓練會快很多。

要開始,請使用以下命令設定指向您的深度學習 EC2 例項 (您在上一篇文章中設定) 的 SSH 會話。這會從 Raspberry Pi 的 data 資料夾將您的資料複製並同步到深度學習例項。

注意:確保您的 Raspberry Pi 可通過乙太網 (公共 IP 地址) 從 Internet 進行連線。否則,您需要將 DonkeyKP pem 檔案複製到 Raspberry Pi 上並遠端同步其他方向 (從 Raspberry Pi 中遠端同步)。

ssh -i "DonkeyKP-us-east-1.pem" [email protected]
rsync [email protected]<your_pi_ip_address>:/d2/data/ ~/d2/data/

在資料同步完成後,您現在可以使用會話資料開始訓練。作為訓練成果,我們將建立一個要部署在 Raspberry Pi 上的模型

python ~/d2/manage.py train --model myfirstpilot

建立該模型後,您需要將它從例項下載到車輛的 Raspberry Pi。

rsync ~/d2/models/ [email protected]<your_ip_address>:~/d2/models/

注意:如果您要從 Raspberry Pi 中同步資料,請改用以下命令來下載資料和模型 (前提是您已將深度學習例項的 pem 檔案下載到裝置上)。

將資料從 Donkey Raspberry Pi 下載到深度學習例項上。

rsync -rva --progress -e "ssh -i /path/to/key/DonkeyKP-us-east-1.pem" /home/pi/d2/data/ [email protected]:~/d2/data/

使用我們之前向您展示的同一方式訓練深度學習例項中的模型。

將模型從深度學習例項下載到 Donkey Raspberry Pi 上:

rsync -rva --progress -e "ssh -i /path/to/key/DonkeyKP-us-east-1.pem" [email protected]:~/d2/models/ /home/pi/d2/models/

在模型位於 Raspberry Pi 上之後,您可使用該模型讓車輛自行駕駛。這可在不建立與 Raspberry Pi 的 SSH 連線的情況下實現。正如您之前所做的那樣,僅使用 Run Command。您可以像之前一樣建立文件,也可以使用以下命令。

在“Commands”內,選擇 AWS-RunShellScript 並在 commands 下鍵入以下命令。

. /home/pi/env/bin/activate 
python /home/pi/d2/manage.py drive --model myfirstpilot

既然您的模型已完成訓練,請回到平板電腦,重新整理瀏覽器,選擇您的車輛,然後選擇“Mode & Pilot”下的 Auto Angle。現在,確保 Donkey Car 已通電並位於賽道上。然後,將最大油門設定為 25% 並選擇 Start Vehicle。您仍能控制車輛的油門,但它已進入自行駕駛狀態。讓 Donkey Car 緩慢移動並觀察它在您的賽道上的行進情況。

當您的車輛在賽道上掉頭時,它將獲取更多資料,供您載入回模型中。您擁有的資料越多,車輛就駕駛得越好。

您還可使用 EC2 Systems Manager Parameter Store 儲存您的所有工作。

使用 Parameter Store 儲存配置資料和機密

EC2 Systems Manager 內有一個很有用的功能,名為 Parameter Store。它是儲存配置資料、機密、API 金鑰和密碼的絕佳位置,使您不必對程式碼內的值進行硬編碼。

我們不必在 our /home/pi/d2/manage.py 指令碼中對引數值進行硬編碼,而是可以將這些值儲存在 Parameter Store 內,從而可以輕鬆更改它們而無需使用 SSH 連線到深度學習例項或 Raspberry Pi。

例如,讓我們為 LEFT_PULSE 建立一個引數。 轉到 Parameters,選擇 Create Parameter。我們可將它設定為 441 (預設設定)。

建立該引數後,我們可通過以下方式引用它:使用 AWS CLI 和 get-parameters,或者使用 AWS 開發工具包。由於我們要修改 manage.py,我們需要使用 Systems Manager 的 boto3 SDK

您需要先通過在 Raspberry Pi 上執行以下命令,然後才能使用 boto3:

pip install boto3

在程式碼中,讓我們新增 boto3 import 並定義我們的 ssm 客戶端。

import boto3  
client = boto3.client('ssm', region_name='us-east-1')

get-parameter 方法資訊可在此處找到。

manage.py 程式碼內,不要呼叫 left_pulse=441,而是呼叫

left_pulse=int(client.get_parameter(Name='LEFT_PULSE’)['Parameter']['Value'])

在車輛執行良好後,您可使用 AWS IoT 跟蹤您的圈速並與好友比賽。

AWS IoT 設定

首先開啟 AWS 管理控制檯並選擇 AWS IoT 控制檯。通過使用 AWS IoT,我們將為我們的無人駕駛車輛設計一項車隊監控服務。

車隊監控服務的元件通過邏輯功能 (和 AWS 服務) 進行顏色編碼,以展示解決方案的每個元件的安全性、可擴充套件性以及是否完全基於使用情況。

您可以使用車隊監控服務跟蹤和比較圈速,但希望開發其自己的互聯車輛平臺的無人駕駛汽車製造商也可使用此架構。

這一切都始於您的車輛 (以綠色陰影顯示)。您的裝置已連線 Internet,這意味著它能夠將遙測資料流式傳輸到一個集中位置 (如 AWS IoT)。我們將在下一篇文章中討論遙測資料的收集。

為保證您車輛的安全,您需要從 AWS IoT 服務生成證書並將證書部署到您的車輛。通過使用證書,您的車輛可通過 MQTT 使用 TLSv1.2,從而能安全與 AWS IoT 服務進行通訊。MQTT 是一個極其輕量的協議,非常擅長應對低訊號網路,因此它可以解決連線可靠性難題。

建立證書的方法有兩種。您可以使用 AWS CLI 或 AWS IoT 控制檯建立它。

使用 AWS CLI 建立證書

我們將在 Systems Manager Document 內通過 AWS CLI 命令生成證書、公鑰、私鑰以及根證書 AWS IoT CA。

請按照本文開頭討論的過程建立另一個文件,並將它命名為 RegisterCar

{
   "schemaVersion":"2.2",
   "description":"Register and activate your Donkey Car with AWS IoT",
   "mainSteps":[
      {
         "action":"aws:runShellScript",
         "name":"IoTRaspberryPiIoTRaspberry Pi",
         "precondition":{
            "StringEquals":[
               "platformType",
               "Linux"
            ]
         },
         "inputs":{
            "runCommand":[
               "mkdir /home/pi/d2/creds",
               "cd /home/pi/d2/creds",
               "aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile donkeycar.cert.pem --public-key-outfile donkeycar.public.key --private-key-outfile donkeycar.private.key --region us-east-1",
               "curl https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem -o Public-Primary-Certification-Authority-G5.pem"
            ]

         }
      }
   ]
}

要應用此文件中所述的操作,請返回到 Run Command 並選擇使用選定例項執行 RegisterCar

使用 AWS IoT 控制檯建立證書

保證安全的另一種方法是使用一鍵式證書建立方法。為此,請從 AWS IoT 控制面板左側選擇“Security”。在右上角,選擇藍色的“Create”按鈕。

單擊 Create certificate 以從 AWS IoT 服務證書頒發機構 (CA) 自動生成證書、公鑰和私鑰。

下載各個檔案,然後將它們複製到 Raspberry Pi。確保您還下載根 AWS IoT CA。

然後單擊“Activate”以啟用要使用的證書。

接著單擊“Attach a policy”。

更多可選載入項

當管理大量 Raspberry Pi 時,請考慮使用標記。我們通過使用 add-tags-to-resourceAPI 操作來標記裝置。這使我們能夠通過 Specifying a Tag 而不是手動選擇例項來應用 Run Commands

 

此外,State Manager 可用於為您的車輛保持一致的配置。您可在啟動時使用特定軟體來引導 Raspberry Pi (如安裝 Donkey Car 儲存庫,連線到 AWS IoT 等)。

後續步驟

關注我們的系列中的下一篇部落格文章,在該文章中,我們會將 Donkey Car 配置到 AWS 以收集、分析和記錄我們的車輛遙測資料。

相關推薦

製造無人駕駛車輛 Part2全力加速

本文是我們的系列中的第二篇部落格文章,旨在指導您製作 1/16 比例的無人駕駛車輛。您還可收聽我們的 Twitch 網路直播以回顧這些部落格文章中討論過的概念。在跟隨我們操作之後,您可以將您自己的車輛帶進 re:Invent Robocar Rally 2017 的賽道,也可以使用我們提供的

無人駕駛入門1無人駕駛概覽

融合 起點 分別是 tail load 機器人 intro rap 發送 最近給大家分享了《百度Apollo無人駕駛入門課程下載》,我也學習了一些,把我做的筆記分享給大家。 第一課:無人駕駛概覽 課程主要介紹了無人駕駛車的關鍵部分以及Apollo的架構,帶大家入門無人駕

無人駕駛入門2高精度地圖

復雜 學習 地圖數據 規劃 進行 信息 智能手機 領導 思考 自從上次發布了《無人駕駛入門1:無人駕駛概覽》,就收到了不少的鼓勵和鞭策,包括前領導的肯定。那我們趕緊來學習第二課關於高精度地圖的課程吧。 第二課: 高精度地圖 課程簡介:了解高精度地圖的實現邏輯,這是 Apol

如何成為無人駕駛工程師

作者 | 劉少山 無人駕駛作為一項新興技術,落地為產品需要大量演算法、工程、產品貫通的AI全棧人才。筆者在最近一年招聘中發現,許多技術方向的同學對人工智慧既愛又畏懼,一方面覺得這是未來,另一方面又覺得很難而不敢觸碰。懂工程的同學做演算法時有很大的畏懼感,而專注演算法的同學又常常容易陷入某個演算法而缺

讀《無人駕駛車輛模型預測控制》

是北京理工大學的專案介紹文章整合的書。 有國家的基金支援的專案。 共七章 1,無人駕駛車輛與模型預測控制 4個系統組成: 任務決策     動態的,跟據環境資訊變化進行調整。 環境感知     車載感測器收集資訊

場完美的“秒殺”API加速的業務邏輯

作者:叢磊,白山雲科技合夥人兼工程副總裁 一天清晨,我被一個客戶電話驚醒,客戶異常焦急,尋問CDN能不能幫助他們解決“秒殺”的問題,他們昨天剛剛進行了“整點秒殺活動”,結果併發量過大,導致服務宕機,使用者投訴。為了理清思路,我問了對方三個問題:(1)服務宕

馭勢科技吳甘沙無人駕駛車已經不是你熟悉的那

人工智能 無人駕駛 作為與人工智能和人們出行息息相關的應用場景之一,自動駕駛汽車正在被越來越多的人所關註。然而,2018年3月19日,Uber無人車路測時撞死了違章通過馬路的行人,而當時車上其實有一名操作人員;隨後在3月29日的NVIDIA GTC 2018大會上,NVIDIA CEO黃仁勛宣布叫

從零開始的無人駕駛 02Vehicle Detection

在 CNN (Convolutional Neural Networks 卷積神經網路) 普遍運用之前,車輛檢測是通過使用條件隨機場或者SVM(支援向量機)來實現的。操作上分為兩步,先是從影象上提取特徵,然後基於特徵建立模型,判斷車輛位置。 template matching 模板匹配 對於影象上的每一塊

心理測試嬰兒車吧?測你最近會不會有好事!

阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。 對此,阿里表示,該文完全捏造事

無人駕駛系列】鐳射雷達(LiDAR)在無人駕駛技術中的應用

無人駕駛汽車的成功涉及高精地圖、實時定位以及障礙物檢測等多項技術,而這些技術都離不開光學雷達(LiDAR)。本文將深入解析光學雷達是如何被廣泛應用到無人車的各項技術中。文章首先介紹光學雷達的工作原理,包括如何通過鐳射掃描出點雲;然後詳細解釋光學雷達在無人駕駛技術中的應用,包括地圖繪製、定位以及障礙物

手把手教用matlab做無人駕駛(九)--專案1使用單目相機檢測車道線

現在介紹一個專案,這個專案跟優達學城的課程有點像,可以學習一下.。   不管是含有ADAS功能的車還是依賴於多種感測器設計的自動駕駛汽車,它們需要的感測器都包括超聲波、雷達、鐳射雷達和攝像頭。接下來的專案闡述的是用單目相機實現自動駕駛過程中一部分內容,實現的內容如下: 1

無人駕駛四 擴充套件卡爾曼濾波在目標車輛運動狀態識別中的運用(python程式)

# coding=utf-8 import numpy as np import numdifftools as nd import math dataset = [] # read the measurement data, use 0.0 to stand LI

無人駕駛汽車系統入門()——卡爾曼濾波與目標追蹤

前言:隨著深度學習近幾年來的突破性進展,無人駕駛汽車也在這些年開始不斷向商用化推進。很顯然,無人駕駛汽車已經不是遙不可及的“未來技術”了,未來10年

從零開始的無人駕駛 01Lanes Finding with Computer Vision

利用計算機視覺進行道路檢測,一般包括6部分:攝像頭校正(camera calibration)、影象失真校正(distortion correction)、色彩/梯度二值化(color/gradient threshold)、視角轉換 Perspective t

無人駕駛車輛檢測與跟蹤

整個專案原始碼:GitHub 整個專案資料集:車輛資料集、無車輛資料集 引言 本次分享主要介紹,如何對道路上的汽車進行識別與跟蹤。這裡我們實現一個簡單的demo。後續我們還會對前面的程式碼及功能進行重構,從而進一步豐富我們的功能。 專案軟體框

剛剛,華為重磅宣佈無人駕駛正式上高速!

https://www.toutiao.com/a6641136855456694787/   2018-12-31 20:43:41 作者:風清 來源:電商頭條 華為突然霸氣宣佈: 聯手奧迪,完成全國首例高速公路無人駕駛車路協同測試!  

預見未來無人駕駛百花齊放,商業化場景在哪?

關注網易智慧,聚焦AI大事件,讀懂下一個大時代!網易科技訊11月8日晚間訊息,第五屆網際網路大會

無人駕駛汽車系統入門(二十)——基於Frenet優化軌跡的無人車動作規劃方法

動作規劃動作在無人車規劃模組的最底層,它負責根據當前配置和目標配置生成一序列的動作,我們前面討論的三次樣條插值實際上只是一個簡單的路徑,而非我們最終能夠執行的軌跡,本文介紹一種基於Frenet座標系的優化軌跡動作規劃方法,該方法在高速情況下的高階車道保持和