當前位置:首頁 > 汽車電子 > 汽車電子
[導讀]自動駕駛汽車依靠人工智能、視覺計算、雷達、監(jiān)控裝置和全球定位系統(tǒng)協(xié)同合作,讓電腦可以在沒有任何人類主動的操作下,自動安全地操作機動車輛。

自動駕駛汽車依靠人工智能、視覺計算、雷達、監(jiān)控裝置和全球定位系統(tǒng)協(xié)同合作,讓電腦可以在沒有任何人類主動的操作下,自動安全地操作機動車輛。

Voyage是汽車自動駕駛領域內的一家專業(yè)公司,他們想要實現(xiàn)的終極目標是:對于世界上的任何一個人,他都可以隨時隨地召喚一輛汽車直接開到他的家門口,并將他安全地送達到目的地,而且價格也非常便宜。對于Voyage來說,他們將不可避免地給乘客提供汽車關鍵功能的控制權,因為總有一天開車的將不再是我們人類,而這一天馬上就要到來了。

CAN總線介紹

一臺現(xiàn)代化汽車擁有大量的控制系統(tǒng),這些控制系統(tǒng)的作用與Web應用中各種微服務的作用是非常相似的。對于一臺電動汽車來說,它擁有安全氣囊、自動剎車系統(tǒng)、電動助力轉向系統(tǒng)、音響系統(tǒng)、電動車門、后視鏡調整系統(tǒng)、以及電池與充電系統(tǒng)等等。這些系統(tǒng)需要相互通信并獲取其他系統(tǒng)的運行狀態(tài)。1983年, 博世公司 (德國一家從事汽車與智能交通技術的公司)的一個團隊開始嘗試通過研究CAN(Controller Area Network-控制器區(qū)域網絡)總線來解決這一復雜的問題。

你可以把CAN總線當作一個簡單的網絡,汽車中的任何一個系統(tǒng)都可以通過這個網絡來監(jiān)聽或發(fā)送命令,它可以將汽車中那些復雜的組件以一種“優(yōu)雅”的方式組合起來,并給我們的汽車提供各種各樣的現(xiàn)代化功能。

下圖為一輛1988年款的寶馬8系,這也是全球第一臺采用了CAN總線的汽車:

 

自動駕駛汽車與CAN總線

近些年來,隨著自動駕駛汽車的快速發(fā)展,CAN總線的概念也得到了普及。為什么呢?因為自動駕駛汽車領域內的絕大多數(shù)公司都不會從零開始設計和制造自家的汽車,而且他們還需要想辦法通過編程的方式來控制汽車。

通過對汽車CAN總線進行逆向工程分析,工程師將可以通過軟件來向汽車發(fā)送控制命令。比如說,最常用的控制命令有旋轉方向盤、加速(踩油門)和制動(踩剎車)。

通過使用類似LIDAR(激光雷達)這樣的傳感器,汽車將能夠“看到”或“感受到”它所處的外部環(huán)境。汽車內的電腦可以根據傳感器傳回的數(shù)據來決定向汽車發(fā)送怎樣的控制命令,比如說將方向盤旋轉多少度、加速到多少邁、或者是否應該立即踩剎車等等。

下圖為LIDAR技術的動態(tài)演示圖:

 

實際上,并不是每一臺汽車都可以成為自動駕駛汽車。

CAN總線

自從1994年開始,CAN已經成為了美國汽車和輕型卡車中的一種標準了,但是直到2008年它才成為一種強制標準。它主要使用了兩條線:CAN high(CANH)和CAN low(CANL)。CAN使用的是差分信號,這意味著當信號傳輸進來時,CAN會提升一條線路的電壓,并等量降低另一條線路的電壓。一般來說,只有對噪聲容錯較高的環(huán)境才會使用差分信號,例如汽車系統(tǒng)或工業(yè)制造領域。

下圖顯示的是示波器中觀察到的原始CAN信號:

 

這也就意味著,通過CAN總線傳輸?shù)臄?shù)據包并非標準化的數(shù)據包,每一個CAN總線數(shù)據包都包含下面這四個關鍵元素:

1.仲裁ID(Arbitration ID):仲裁ID是一種廣播消息,代表的是需要進行數(shù)據通信的設備ID,不過一臺設備可以發(fā)送多個仲裁ID。如果兩個CAN數(shù)據包同時在總線上進行發(fā)送,那么仲裁ID較小的那個數(shù)據包將優(yōu)先傳輸;

2.標識符擴展(IDE):對于標準CAN來說,這部分數(shù)據永遠為o;

3.數(shù)據長度碼(DLC):它代表數(shù)據的長度,范圍從0到8字節(jié)不等;

4.數(shù)據(Data):需要傳輸?shù)臄?shù)據,標準CAN總線數(shù)據包可攜帶的數(shù)據大小最多為8字節(jié),但某些系統(tǒng)會將數(shù)據包強制填充至8個字節(jié);

標準CAN數(shù)據包的格式

 

CAN框架

為了能夠控制汽車空調系統(tǒng)的開啟和關閉,我們首先需要找到正確的CAN總線(因為一輛汽車有很多CAN總線)。福特Fusion至少有四條總線(廠商記錄),其中有三條為高速CAN(500 kbps),還有一條為中速CAN(125 kbps)。

OBD-II端口暴露了其中的兩條總線:HS1和HS2,但這臺汽車上這兩條總線有防火墻的保護,因此不允許我們向其發(fā)送欺騙指令。在Alan(Voyage員工)的幫助下,我們解決了這個問題并成功拿到了HS1、HS2、HS3和MS的訪問權。注:OBD-II端口后面有一個名叫Gateway Module的設備,所有的總線最終都要將數(shù)據傳輸?shù)竭@個設備中,這就是我們的解決方案。

 

由于空調系統(tǒng)可以通過汽車多媒體接口(SYNC)來進行調整,因此我們直接將目標鎖定在了MS總線身上。

但是我們怎樣才能讓我們的計算機去讀寫CAN數(shù)據包呢?答案就是 SocketCAN ,它是一套開源CAN驅動,而且也是 Linux內核 中的一種網絡棧。

現(xiàn)在,我們可以將汽車上的三條線路(GND、MSCANH和MSCANL)連接到Kvaser Leaf Light HSv2或CANable上,然后通過一臺擁有最新版Linux內核的計算機將這些總線當作一種網絡設備來進行加載和讀取。

modprobe can

modprobe kvaser_usb

ip link set can0 type can bitrate 1250000

ifconfig can0 up

加載完成之后,我們可以使用命令candump can0,然后開始查看CAN的數(shù)據流量:

 

但是,我們這樣去監(jiān)控總線的數(shù)據流量,就相當于用眼睛來觀察聲音信號的振幅一樣,我們不僅很難弄清楚總線到底在傳輸什么數(shù)據,而且也很難發(fā)現(xiàn)其中的模式或規(guī)律。因此,我們需要像分析聲音頻率一樣來分析這個問題,我們可以調用cansniffer.和cansniffer來查看相應的ID,然后主要分析CAN框架的數(shù)據區(qū)域中具體發(fā)生了哪些變化。我們通過研究后發(fā)現(xiàn),我們可以利用特定的ID來過濾掉那些我們不需要的數(shù)據,然后只留下與我們問題相關的那些數(shù)據。

下面我們對MS總線調用cansniffer命令。我們只留下了CAN id 355、356和358的相關數(shù)據,并過濾掉了其他無效內容。與此同時,按下了汽車中的溫度調節(jié)按鈕,我們可以看到數(shù)據下方出現(xiàn)了001C00000000,它代表的就是我們按下調節(jié)按鈕的操作。

下一步就是將汽車的空調系統(tǒng)與我們運行于汽車內的PC進行連接,PC運行的是Robot操作系統(tǒng)(ROS)。幸運的是我們使用了SocketCAN,因為它有一個模塊可以方便我們的操作,即socketcan_bridge可以將我們的CAN框架轉換成一種ROS可接受的消息格式。

下面演示的是整個解碼過程:

if frame.id == 0x356:

raw_data = unpack('BBBBBBBB', frame.data)

fan_speed = raw_data[1] / 4

driver_temp = parse_temperature(raw_data[2:4])

passenger_temp = parse_temperature(raw_data[4:6])

解碼后的數(shù)據保存在CelsiusReport.msg之中:

bool auto

bool system_on

bool unit_on

bool dual

bool max_cool

bool max_defrost

bool recirculation

bool head_fan

bool feet_fan

bool front_defrost

bool rear_defrost

string driver_temp

string passenger_te

在按下了汽車內所有的相關按鈕之后,我們得到了下面這個清單列表:

CONTROL_CODES = {

'ac_toggle': 0x5C,

'ac_unit_toggle': 0x14,

'max_ac_toggle': 0x38,

'recirculation_toggle': 0x3C,

'dual_temperature_toggle': 0x18,

'passenger_temp_up': 0x24,

'passenger_temp_down': 0x28,

'driver_temp_up': 0x1C,

'driver_temp_down': 0x20,

'auto': 0x34,

'wheel_heat_toggle': 0x78,

'defrost_max_toggle': 0x64,

'defrost_toggle': 0x4C,

'rear_defrost_toggle': 0x58,

'body_fan_toggle': 0x04,

'feet_fan_toggle': 0x0C,

'fan_up': 0x2C,

'fan_down': 0x30,

}

現(xiàn)在,我們就可以直接向ROS節(jié)點發(fā)送字符串數(shù)據,然后通過它來將我們發(fā)送的信息轉換成汽車可以識別的特殊代碼:

rostopic pub /celsius_control celsius/CelsiusControl ac_toggle

分析結果

我們現(xiàn)在可以向CAN總線發(fā)送相應的CAN控制代碼了,這些代碼與我們按下汽車物理實體按鈕時所發(fā)出的總線控制命令是一樣的。這也就意味著,我們可以遠程改變汽車的車內溫度了。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉