當前位置:
首頁 > 最新 > Comma.ai 開發了一款駕駛助理 openpilot,它是如何工作的?

Comma.ai 開發了一款駕駛助理 openpilot,它是如何工作的?

300 + 明星創業公司,3000 + 行業人士齊聚全球人工智慧與機器人峰會 GAIR 2017,一同見證 AI 浪潮之巔!目前僅剩少量余票,有需要的朋友抓緊了。

雷鋒網按:近日,「神奇小子」George Hotz 創辦的自動駕駛初創公司 Comma.ai 在 Medium 撰文分享了其開發的一款開源駕駛助理 openpilot。

據雷鋒網了解,Comma.ai 發布的第一款產品 Comma One 因為無法證明其安全性,一個月後被美國公路交通安全管理局叫停。隨後 Hotz 轉換思路,將 Comma.ai 的自動駕駛軟體進行開源,甚至還提供了一份硬體組裝指南,指導極客用戶自己動手打造一個即插即用的輔助駕駛套件。

openpilot 便是這一思路下的產物。具體來說,openpilot 能實現對油門、剎車和方向的自主控制,控制時長最高可達 6 分鐘(使用時駕駛員請注意觀察路況)。我們來看看 openpilot 是如何工作的,也希望業內的行家來評判這種方式是否靠譜。

使用中的 openpilot

如何與汽車交流?

現在的市售車輛中,大多數都是通過多條控制器區域網路(CAN)匯流排將車輛的多個模組連接在一起的。其中一條 CAN 匯流排會連接在汽車自診系統(OBD-II)上,其他的則大多數被隱藏在車輛內部面板之下。

圖 1:panda

openpilot 可以用 NEO 或 panda 作為 CAN 的介面。由於 openpilot 採用開源設計,因此它還能支持 OpenXC、Kvaser 或者 CANBus Triple。

在 openpilot 最先支持的本田思域和 ILX 兩款車上,所有的通訊只需要兩條 CAN 匯流排就能完成,一條是車輛 CAN 匯流排,一條則為雷達 CAN 匯流排。不過,其他車輛可能會有所不同。

汽車能說哪國語言?

其實 CAN 是一種非常簡單的協議,只靠一條匯流排,任何設備都能給區域網路上的其他設備發送信息。信息內會含有標識符,標準的 CAN 協議識別符長度為 11 比特,擴展版則為 29 比特。一條信息最長為 8 位元組。

標準的 CAN 信息

標識符會決定如何解析信息,而 DBC 文件是指定解析方法的標準方式。下面這段代碼就是從參與測試本田思域的 DBC 文件中截取出來的,從中我們可以看出轉向控制包是如何解析的:

BO_ 228 STEERING_CONTROL: 5 ADAS

SG_ STEER_TORQUE_REQUEST : 231@0+ (1,0) [01] "" EPS

SG_ CHECKSUM : 394@0+ (1,0) [015] "" EPS

SG_ COUNTER : 332@0+ (1,0) [03] "" EPS

這段代碼第一行的信息標識符是 228 或 0xE4,其他四行則展示了將四個欄位打包填充進 5 位元組信息的方法。

如果想看到更多解析 CAN 信息的代碼,可以在 GitHub 上搜索 can_parser.py 和 dbc.py。

如何完成精確的轉向?

恐怕你已經注意到,轉向控制包並未指定車輪轉向的精確方位,它控制的是傳導到車輪上的扭矩。這確實是許多車輛轉向時的控制方式,不過這裡還需要額外加入一些控制項來打造閉環控制系統。此外,CAN 匯流排上也已經整合了車輛的轉向角度。

BO_ 330 STEERING_SENSORS: 8 EPS

SG_ STEER_ANGLE : 716@0- (-0.1,0) [-500500] 「deg」 NEO

這樣一來,預定角度、當前角度和扭矩控制都齊全了,很適合打造 PID 迴路。不過,由於扭矩較小,因此只使用 PI 迴路就行。

如果想看到更多 PI 迴路的執行方法,可以在 GitHub 上搜索 latcontrol.py。

ROS 2.0

說了這麼多,我們也該談談 openpilot 的架構。

初看下來,它與 ROS(機器人操作系統)非常相似,不過後者 有些臃腫,而且自定義的消息傳遞系統和輸入系統也不招人喜歡。

在 openpilot 上,開發者用了 ZMQ 發布 / 訂閱模型來處理信息傳遞,輸入上則用到了 cap』n proto。有趣的是,ROS 進化到 2.0 時代後,也會用到相同的解決方案。

車輛抽象層

在設計指出,研發人員就希望 openpilot 能與不同的車輛進行 「交流」。如果想了解車輛抽象層的相關代碼,可以到 GitHub 上搜索 car.capnp。

自適應巡航(縱向)

在 openpilot 中,開發者將油門 / 剎車與轉向進行了分離。縱向控制上與傳統車輛無異,這裡也沒有用到神經網路。

開發者還在 GitHub 上公布了 radard.py 的相關代碼,它可以用來解析車輛雷達傳來的信息。同時,它還與視覺系統進行了基本的融合,最高可以回傳兩輛前車的位置信息。

有了這些信息,自適應巡航系統就能決定行駛時車速的高低了。

視覺系統(橫向)

visiond 負責控制神經網路,不過由於商業模式的原因,這部分採用閉源設計,但 API 是開源的。

struct ModelData {

frameId @0 :UInt32;

path @1 :PathData;

leftLane @2 :PathData;

rightLane @3 :PathData;

lead @4 :LeadData;

...

藉助視覺系統,openpilot 可以順利完成路線規劃,同時對左右車道和前車的方位,它也能了如指掌。

藉助 pathplanner.py 代碼,各種路線選擇被整合到了一起,隨後它會完成最佳方案的選擇。同時,latcontrol.py 代碼還會為車輛設定路途中的目標點,隨後汽車會跟著這些目標點前行。當然,現在這套系統還有很大的進步空間,未來會加入更多複雜的控制策略。

整合

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

順豐獲國內首個無人機物流飛行權;工信部:今日起手機預裝app必須可卸載
阿里無人超市很黑科技,但要開到家門口還略早
福特在華首秀輔助駕駛技術:能將通勤時間縮短20分鐘
深圳地鐵設女性優先車廂引強烈爭議,AI能做點什麼?
深度 | Y Combinator成長史

TAG:雷鋒網 |

您可能感興趣

Tyler, the Creator 駕駛 Tesla Model X 車禍後毫髮無傷
Anthony Levandowski又回來了:攜Kache.ai重返自動駕駛舞台
自動駕駛的棘手難題:how safe is safe enough
《Avengers: Infinity War》預告中的 Hulkbuster 究竟由誰駕駛?
Perceptive Automata加入Renovo的Aware生態系統 為自動駕駛車輛預測人類行為
打造自動駕駛大腦:看 Paper Reading直播,拿 Momenta 頂級 offer
Ford整合自動駕駛業務與資源,成立Ford Autonomous Vehicles
《直升飛機模擬器(Helicopter Flight Simulator)》上線Steam 模擬駕駛救援類遊戲
自動駕駛無人機 Hover 的第 2 代產品開始在 Kickstarter 眾籌
蘋果收購自動駕駛公司Drive.ai,Apple Car要來?
讓無人駕駛船駛入開闊水面:Velodyne Lidar在Maritime RobotX挑戰賽中為下一代自動駕駛船開發人員提供支持
自動駕駛電動汽車如何自己充電?Electrify America合作Stable提出方案
Google收購客服機器人公司Onward、LG和Robotis開發自動駕駛機器人、MicaSense新感測器Altum
世界智能駕駛挑戰賽:AutoCore受邀代表Autoware Foundation參賽
Jaguar Land Rover開發有眼睛的自動駕駛無人車
對抗Uber?Lyft聯手Magna研發無人駕駛
Starsky Robotics能憑攝像頭玩轉自動駕駛嗎?
Applied Information部署混合CV技術 使駕駛更安全更高效
Velodyne CQO Mircea Gradu:自動駕駛的安全離不開標準,也需要激光雷達
輾轉特斯拉、Cruise、Otto和Uber,Drew Gray加入無人駕駛創企Voyage擔任CTO