著名主持人白巖松曾在一本書中提到了一則小故事。在墨西哥,有一個離我們很遠卻又很近的寓言。一群人急匆匆地趕路,突然,一個人停了下來。旁邊的人很奇怪:為什麼不走了?停下的人一笑:走得太快,靈魂落在了後面,我要等等它。
走的太快,停下來,等一等靈魂。
是的,在今天這個「996」火遍各大媒體自媒體的時刻,有多少無奈,有多少跟風,又有多少炒作,或許只有時間能夠回答。
好長時間沒有更新長文了,我也已經離開無線通信算法、基帶信號處理器近兩年之久,目前在機器人領域不能說是入門,大概可以稱之為「剛走到門前的石板上面」。作為一個剛在石板上站立不久的門外漢,我也要停下來,思考一下,等一等被拋在後面的靈魂。停下來思考的好處,或許可以用機器人SLAM算法中的「迴環檢測(Close-Looping)」來解釋,那就是可以修正一下估計的路徑,更一下獲得地圖,讓自己走的更遠更準確。
由於專業及領域限制,難免存在偏差或謬誤的地方,還請各位前輩指點一二,筆者感激不盡。
題目叫做《一個公式,兩門學科,多種算法,無數款晶片》,公式就是1763年英國學者託馬斯·貝葉斯提出的「貝葉斯公式」,或者叫做「貝葉斯定理」。兩門學科當然指的就是筆者接觸過和剛走門前的無線通信基帶信號處理以及概率機器人。基於貝葉斯公式,這兩門學科衍生出了多種不同的算法,如最大後驗概率MAP、維特比以及GMapping、HectorSLAM、CartoGrapher等。針對不同的算法,為了加速算法處理、降低功耗以及提高效率,無數的學者和工程師又會針對性地設計相關的加速器、處理器和晶片。
為了不讓這邊停下來等待靈魂的小短文陷入枯燥乏味理論推導,筆者將遵循淺嘗輒止的原則進行敘述,且大多為白話。
這裡說的兩門學科就是無線通信和機器人。筆者有幸在博士期間參與了無線通信信道編解碼算法和ASIC實現。而在筆者參加工作以後,又幸運地切入到了智慧機器人領域。如果說無線通信,或者信號處理是基於香農在40年代發表的論文,那麼《概率機器人》則是機器人領域的經典之作,概率機器人學的經典著作,移動機器人學科的必讀書籍,對概率機器人學進行全面介紹,專注於算法,所有算法都基於貝葉斯理論。
寫到這裡讓我想起了賈伯斯在2005年史丹福大學畢業典禮上面的演講《求知若飢,虛心若愚》,裡面在介紹自己大學期間不經意誤入書法課的經歷,說起了「connecting the dots」,「你不能預先把點點滴滴串在一起;唯有未來回顧時,你才會明白那些點點滴滴是如何串在一起的。所以你得相信,你現在所體會的東西,將來多少會連接在一塊。」對我而言還真就這樣。大學期間接觸到了德州儀器的TMS320數位訊號處理器,沒想到後來讀博士竟然自己參與正向設計這些器件;讀博期間推導貝葉斯概率公式,沒想到工作以後還機緣巧合又重新用到,儘管不再是一名無線通信工程師。
通信解碼算法之一:最大後驗概率MAP
大多數情況下,最大後驗概率MAP解碼被視為最優的解碼算法,而當先驗概率相等時,MAP解碼與最大似然ML(Maximum Likelihood,ML)解碼等價。然而,最大似然ML解碼算法的複雜度與Turbo碼的編碼長度呈指數增長,對於LTE標準下的編碼長度來說,硬體實現幾乎是不可能的。
Turbo碼的解碼思想是,將解碼過程分為多步進行,也就是通常所說的多次迭代,在每次迭代中,分量解碼器均採用最優的MAP解碼算法;同時,分量解碼器在前後迭代中存在概率信息交互,最終使得解碼性能接近於最大似然ML解碼。
簡單點說,對於接收到的比特序列,或者準確的說概率信息,需要經過MAP解碼算法的判別準則,就是上面這個公式,判斷在接收到信息y的情況,發送信息為0還是為1;如果發送序列長度不等於1,那麼公式中的條件概率就是隨機變量的聯合條件概率。
還是回到貝葉斯公式,這裡公式的左值就是後驗概率,也就是接收到信息y的情況下,發送為信息x的概率;而先驗概率prior就是發送信息為0或者1的概率,在解碼最開始的時候假設二者是等概率出現,那就是都為50%,似然概率likelihood就是指發送信息為x的情況下接收信息為y的概率,而另外一個我們可以切切實實獲得的概率信息就是y,這是接收到的信息。
解碼算法實現的複雜性主要存在於兩個方面,信息之間的前後依賴關係和解碼算法的迭代性質。也就是說當前比特的概率信息更新依賴於上一時刻的狀態和度量;而且每多進行一次序列解碼,糾錯能力就越強,錯誤比特越少,這也是制約Turbo解碼器無法滿足5G高速路通信的需求的主要因素之一。
機器人算法之一:同步定位與地圖構建算法SLAM
SLAM(Simultaneous Localization and Mapping),同步定位與地圖構建,最早在機器人領域提出,它指的是:機器人從未知環境的未知地點出發,在運動過程中通過重複觀測到的環境特徵定位自身位置和姿態,再根據自身位置構建周圍環境的增量式地圖,從而達到同時定位和地圖構建的目的。由於SLAM的重要學術價值和應用價值,一直以來都被認為是實現全自主移動機器人的關鍵技術。
相比較於無線通信算法,機器人中用到的同步定位與地圖構建算法SLAM,則增加了背景信息,即z,這個信息一般都是通過傳感器獲得機器人周圍的環境信息,比如雷達傳感器獲得的距離信息,圖像傳感器獲得物體或者深度等信息。而u一般指的是控制信息,比如機器人的制動器。而x一般指的是機器人的狀態或者姿態。這裡與通信算法的關聯在於,當我們獲得傳感器信息的時候,其實用到的就是無線通信中的信道編解碼,需要從接收到的信息序列中解析出需要的距離信息等,其實這樣看來,機器人學科其實是可以包含無線通信的,或者說機器人學科是一本多學科交叉融合的學科門類。
而與無線通信算法一樣,為了簡化算法實現,SLAM算法同樣假設隨機變量之間的是一個馬爾可夫鏈。例如,當前時刻獲得的傳感器信息只和機器人當前時刻的狀態有關,而與之前的所有狀態都無關,這樣就可以極大地簡化概率公式的推導和機器人算法的實現。
通過藉助於貝葉斯準則、馬爾科夫簡化以及全概率公式等,就可以將複雜的機器人SLAM算法簡化成傳感器模型或者叫做感知模型,和運動模型,而且可以通過遞歸估計出機器人的運動軌跡和構建出機器人周圍的環境地圖。
如果說無線通信基帶算法處理的就是一個概率信息,那麼機器人所處的環境、所獲得的信息、所構建的地圖、所行走的路徑、甚至所發出的操作,都是概率信息,都是確定的。
無線通信中的解碼算法也有很多,基於最大後驗概率MAP的解碼算法也存在不同變種;而機器人SLAM算法則更加不可勝數,傳統的基於雷射雷達的2D、3D SLAM算法,以及基於視覺傳感器的SLAM算法,還有現在新興的基於神經網絡的SLAM算法,當然還有集合所有這些的多傳感器融合SLAM算法等。
關於算法這裡我也只能點到為止,希望可以起到拋磚引玉的作用,感興趣的同行可以查看相關的文獻和資料。那就說一說針對上面提到的算法高校研究人員和公司的工程師們研發的一些處理器晶片。
面向無線通信的基帶處理器,主要包括德州儀器的C6670系列,飛思卡爾(現在應該成為恩智浦NXP了)Maple系列,以及FPGA廠商Xilinx和Altera提供的處理器IP,CEVA公司的XC系列產品,當然還有高通和華為海思的基帶處理器。
而在學術界也存在很多優秀的基帶處理器設計,筆者之前所在的團隊,曾設計了一款面向4G LTE的基帶處理器晶片MaPU,相關成果發表在HPCA2016上面,該處理器也在2015年成功流片。
商用的基帶處理器晶片,可以說華為海思和高通佔據絕對的優勢,最近這兩天關於蘋果公司的頭條,已經足夠說明基帶處理器的重要性。高通在基帶晶片領域的技術能力強勢,行業地位領先。高通在協議棧和通訊專利方面積累豐富,專利話語權高。
高通驍龍系列晶片更將應用處理器(AP)和基帶處理器(BB)集成在同一SoC當中,在主流安卓手機的中高端晶片上受到廣泛採用。2017年全球基帶晶片市場份額分布大致如下:高通—53%;聯發科—16%;三星—12%;華為海思—7%;展訊和英特爾—12%。此外,高通已於2019年率先發布5G智慧型手機基帶晶片及配套解決方案,為全球通訊晶片領導廠商之一。
簡單說了一下無線通信處理器,而在機器人領域的處理器,則更多的也是集中在行業寡頭英偉達身上,儘管英特爾也有,華為也有,甚至有些創業公司(就像筆者目前所在的中科昊芯)也在做,但是與寡頭相比,還是存在很大的差距。
最具代表性的就是英偉達的NVIDIA:Drive PX Xavier,這是一款號稱性能最強的無人駕駛處理器。
Xavier擁有超過90億個電晶體,是迄今為止打造的最複雜的系統級晶片,凝聚著2000多名NVIDIA工程師為期四年的努力,研發投入高達20億美元。它基於了一個特別定製的8核CPU、一個全新的512核Volta GPU、一個全新深度學習加速器、全新計算機視覺加速器、以及全新8K HDR視頻處理器而打造。並且,藉助NVIDIA統一架構,所有早前NVIDIA DRIVE軟體開發工作都得以持續進行。它的技術細節非常複雜,但總體來說:DRIVE Xavier可提供更高的處理能力,運行功率更低,每秒可運行30萬億次計算,功耗卻僅為30瓦。能效比上一代架構高出15倍。(具體可以參考中科昊芯官方公眾號之前分享的一篇綜述昊芯出品 | 計算機視覺模組和處理器深度調研報告)
由於機器人涉及到的領域眾多,所以用於處理機器人相關算法的晶片也就五花八門、種類繁多、不一而足。這裡由於筆者能力有限,也只能做個引子,感興趣的同行可以繼續深入了解。
結語
還是回到這篇帖子的開始。希望每一位能夠看到這篇帖子的我們,在各奔前程的徵途中,能夠不時地停下匆忙的腳步,等一等,想一想,因為靈魂可能還在身後。