我們能不能把仿生機器魚也賦予所謂的靈魂呢?
謝廣明,北京大學工學院教授。
那什麼群體最好?他們給了一個結論:如果這個群體中每個個體都自私,這個群體可能很快就演化沒了。反過來,每個人都很無私,結果也不好。最好的,更容易演化下去、生存下去的是什麼群體呢?是一個既有一些自私也有一些合作的群體。
那麼真正的生物、真正的魚群是這樣一種特點,機器魚可不可以也達到這種層面的仿生?
智能仿生機器魚
謝廣明
大家好,我叫謝廣明,來自北京大學。今天我講的題目叫《智能仿生機器魚》。
大家會問機器魚是什麼鬼?這也可以理解,因為大家經常接觸的都是機器人。咱們看到的很多大片,《我的機器人女友》《變形金剛》之類的,往往覺得機器人應該是人形的。這個也不怪大家。因為機器人是個外來詞,當時從外國來的時候沒翻譯好,翻譯成機器人了,大家都把重點落在人上。其實它應該是個機器。
機器人的種類很多,比如《戰狼2》裡面的無人機,它就屬於空中機器人。百度發布無人駕駛汽車,它是陸地機器人。還有水這種環境,所以我們就要發展水下機器人。我們這個機器魚就是像魚一樣的面向水下應用的一種機器。
大家會問你為什麼要研究像魚一樣的機器人呢?其實我們想一想,咱們地球是個水球,70%被水覆蓋。這個水世界的主宰是誰呢?其實是魚類,是魚最適應水環境。生物學家研究指出,魚至少在4億年前就出現了。經過不斷的淘汰,到現在我們人類命名的魚也超過了3萬多種,而且還不斷有新的物種被發現。
這些魚形態各異,它們有的適合在淺灘;有的可以深到幾萬米;有的機動靈活,游起來非常瀟洒;還有的可以長途奔襲游上萬公里。所以正是魚有這些優點,引起了我們科技工作者的注意。我們希望去模仿,以它們為師,去研究、製造將來像魚這樣的機器。
相比魚,機器魚的歷史就短了很多。從第一條機器魚誕生到現在,也就二三十年的光景。雖然時間短,但是我們這個技術發展得非常快。現在國內外同行發布的文章、專利等一些東西,加起來也不下幾十種了。
很多特點鮮明的魚或者咱們能想到的魚,基本都被作為仿造對象。比如這是世界上第一條仿生機器魚,它1994年誕生在美國麻省理工學院。這個魚大概有一米二長,游速最快可以達到每秒兩米。
中國的機器魚誕生也很快,大約在2000年前後,是北航和中科院自動化所聯合研發的微小型仿生機器魚。這個魚要比美國那條魚要小一些,身長大概有半米左右,游速也能夠達到每秒半米左右。
有一個很有意思的現象大家體會一下,美國人研究機器魚,它以金槍魚為仿生對象。咱們中國呢,是中華鯉魚。這也反映出各國人民不同的文化背景對魚的不同的偏好。
研究這種仿生機器魚有什麼好處呢?其實在研究仿生的機器魚之前,人們已經研發了很多水下的機器人,或者叫水下潛航器,水下航行器。名字有都很多,但它基本上都是以一種螺旋槳的方式來推進。人們在用這些機器人去做一些實際事情的時候,就感覺不盡人意。
什麼問題呢?我們歸結為三點。第一,螺旋槳推進的效率太低了,它可能頂多就是40%到60%這個程度,而魚基本上都要超過80%。利用效率高的話能量就節省,可以干更多事情。
第二,螺旋槳推進轉起彎來很費勁。它是一個很大的轉彎半徑,很不靈活,機動性很差。而真正的魚類幾乎可以原地轉彎,上下亂竄,非常靈活。
第三,在軍事背景上,螺旋槳旋轉很容易被水下聲納掃到、探測到,那你就被敵人發現了。這也是為什麼很多潛水艇到了工作地方之後,它要把所有的東西都關掉,保持靜默。魚沒有螺旋槳就沒有這個問題。
所以我們這些科技工作者就希望能夠把生物界的優點學過來,讓我們的水下機器人也具備這些優勢。其實不一定是把魚作為仿生對象,還有很多其他的都可以這麼做。
大家覺得這是個什麼機器?
GIF/989K
我們叫機器海豚。它在水裡不僅能夠像海豚一樣游,而且還能躍出水面。海豚和魚還不太一樣。咱們魚基本是左右擺動,而海豚是上下拍動的,我們叫背腹式運動。這個海豚做得非常棒,能夠躍出水面是相當不容易的。
下面這個可能容易看出一點,這是機器水母。它以水母為仿生對象,模擬水母在水中運動的過程。
GIF/1094K
由於有前面的鋪墊,大家看到這個肯定知道這是個機器魚。沒錯,這是日本某大學的一個研究成果。雖然大家看著很像,這魚做得很棒了,但是從我們研究的角度來講,這不是一個很好的研究成果。
為什麼呢?因為我們研究魚,不是說要把它的外表做得很像,是要追求它的功能。這個魚雖然外表很像,但它實際的內部結構設計得很不合理,一游起來效果很差,所以這種仿生就失去了意義。
就像咱們參觀蠟像館,很多名人的蠟像很逼真,但他們沒有其他用途,只能用來滿足你和你的偶像合個影,其他什麼幹不了。我們要做機器人,是真的希望把它能夠在水中運動和其他一些功能學過來,所以這種研究我們不認為是好的研究。
說了這麼多,我們現在把北京大學做的機器魚請上來。魚在哪裡?在這裡,可能有點刺眼沒看到。這個就是我們以中華錦鯉為仿生對象做的機器魚。
其實不是一開始就能做成這個樣子。我們一開始也是刻意先追求它運動起來像魚,而不是說外觀像魚。通過一代一代地去改進提高,這是最新的一代。
我們這個魚,真的是挑了一條外觀非常漂亮的錦鯉,把它低溫速凍給凍硬了,趕緊拿三維掃描把它外觀的數據測下來,構成這個數據模型。之後再用3D列印的技術,把它們整個列印出來,這樣就做了一個仿生的殼體。
但是我們首先要保證它游起來像魚,而不能只是追求外殼像魚。那麼咱們就看一看這個魚怎麼游的吧。
一開始我們在實驗室的小水池,頂多兩三米大,根本游不開,一些性能測不了。剛好我們比較幸運,北大有個未名湖,我們就把這個魚扔到未名湖裡游一游。現在大家一般都會養個寵物,實驗室沒這條件。養了寵物要去遛的,沒關係,我們去遛魚。所以去未名湖遛魚是我們實驗室的一個保留節目。
有一首歌叫作《未名湖是個海洋》,可能是一些北大人創作的一個校園歌曲,我們其實也希望我們的魚能夠游到真正的海洋。很快,我們的願望就實現了。
2012年,我們這個魚游到了北極。又過了兩年,我們的魚成功實現了南極的首航。當然了,有點小遺憾。這魚雖然是遊了,不是我親自帶著去的。因為這是國家科考的行動,是委託科考隊員把魚帶過去。所以說是我的機器魚代我去征服了世界的兩極。
下面我們就稍微地講一點科學知識。就是說這個魚看上去挺好的,它怎麼游起來的呢? 我們稍微講講原理和實現的方式。既然我們是以魚為導師,我們就先看魚是怎麼游的。
這是典型的一條鯉魚。大家可以看,上面有多的鰭肢,特別是尾鰭。咱們不搞複雜的,就以它的直游為例子來講。這個鯉魚要去直游的話,它是通過擺動身體後面這部分以及驅動尾鰭去實現的。它擺動之後就跟水相互作用,可以產生向前的推力,魚就游起來了,就這麼簡單。
說起來簡單,那怎麼拿物理的東西、拿機械的東西去實現呢?
首先要從硬體上去構造這樣的東西,要模擬魚的擺動,所以第一步我們要做這個硬體去實現。我們用三個電機加一些機械的連接件,讓它能夠鏈式地擺動。左邊這個圖就是我們的結構示意圖。右邊是我們真的拿機械框架和電機把這個魚給做出來了。
內部做好了之後,再配上控制電路,配上電池,然後再設計好外殼,做好防水,把它封在一起,魚就做完了。但是魚做完了不等於就能游,你還有很重要的一部分要做。做什麼呢?因為有很多個電機,電機到底怎麼擺它才能游起來呢?
這個還要做很精細的控制演算法的設計,我們這方面也是做了一些相關的演算法的研究。像我們展示的這個視頻,就是在模擬的過程中,我們用數字模擬的方式去復現一下,看能不能設計一個演算法實現這種擺動甚至轉彎。
GIF/189K
當模擬可以了,我們再把這個演算法加到真的機器魚上,魚就游起來了。但是細心的觀眾肯定會想到,這樣一個魚這麼擺動,肯定產生的力也只能在水平面上。換句話說,這魚只能在水平面游來游去,但實際的魚不是,實際的魚可以潛到海底,潛到水底。那怎麼辦呢?
其實我們也是這樣想的,我們希望找到一款新的仿生對象,做一款能夠上升下潛的魚,因為這樣才能更多地去做實際應用。這就到了我們的第二個研究,這個研究叫仿箱魨機器魚。
中華錦鯉大家很熟了,這個箱魨又是什麼鬼呢?我們看看視頻,先感性地認識一下箱魨。箱魨實際上分布非常廣泛,太平洋、印度洋、大西洋都有,它是在珊瑚礁這種很複雜的環境里生活。
GIF/743K
珊瑚礁的特點是什麼?枝枝叉叉很多,水流有時候很亂很急。但這魚很瀟洒,它通過胸鰭與尾鰭的配合,可以在這種複雜的環境下自由地游來游去,不會碰到自己、傷到自己,機動性非常好。
其次,咱們觀察這個魚的特點。這個魚真的是魚中的極品,它骨骼清奇。不像錦鯉是流線型的,箱魨的骨骼是內凹的,不是鼓著的。這很奇怪,但是這種奇怪的外形就被人注意到了。
賓士公司就參考它這個外形設計了一款概念車,期望這個車能夠更穩定地行進。箱魨在英文里就叫boxfish,盒子魚,因為它看著就是一個盒子。它的骨頭是硬的,把這個身體撐在那塊兒形成一個盒子。那像盒子的內凹的這種獨一無二的構型有什麼好處呢?
這是2015年從我們學術領域最頂級的期刊Nature上拷貝下來的一張圖片。專門的科學家研究結果指出,通過流體建模進行數值模擬、進行流體實驗,箱魨這樣一種奇特的外觀確實有助於它在複雜的水環境下更穩定。它有自穩的性質,等於水流來了之後能穩定住自己,那這個魚真是太棒了。
第三,它是個盒子。我們將來可以在裡面裝很多人為的一些感測器,或者執行操作的東西,那就可以更便於應用。所以我們認為這是一個最佳的仿生對象,我們應該仿它。這就是我們仿的結果。直游什麼的我們就不看了,我們看一看它三維中的後退、前滾翻、後滾翻、原地旋轉、橫滾。雖然還沒有真魚那麼靈活,但起碼一些基本的行為,三維空間的那種靈活性被實現了。
GIF/1668K
大家想不想看實物?咱們有請機器箱魨上場。
這個箱魨有點重,畢竟它的體量稍微大一點。我們第一步是保證它是內凹的,但這只是第一步。我們發現要想讓這個機器箱魨也在複雜的三維空間去靈活運動,光能自己動不行,因為箱魨自己也是這個問題。
它要知道前面有障礙物,它要躲開。怎麼躲開?它要能夠感知。如果有水流湍急,它要調整自己的姿態。怎麼調整?它要感知到這個流體的變化。那怎麼辦呢?其實我們不光學它的運動方式,還要學它怎麼感知到環境的方式,特別是怎麼感知水流,因為對機器人來講,感知是很重要的一個研究方向。
比如咱們傳統的加個攝像頭,這是做視覺的研究。還可以加聲納,是聽覺的研究。但是魚類有一個特殊的器官,叫側線系統。就在側面以及它的面部分布著一些組織器官,這些組織器官專門對水流產生感覺。
有這個感覺之後,它作用很大,不光是能感覺水流的變化,甚至能夠感覺到障礙物,感覺到敵人,感覺到食物。這是很重要的一個器官。因為大家想,魚生活在自然界,天黑了世界就看不見了。也可能會有很多干擾,那聽覺也用不了。但是它還有側線,這是個獨門秘笈。
我們就想,如果機器魚也有這個技術那多好,所以我們也在機器魚的側面和前面載入了一些壓傳陣列,去復現這個功能。現在我們復現的結果也是一樣的,能夠通過壓傳道把魚跟水流相對的方向、魚相對的流速測出來。
如果我們在前面再擺一條機器魚,它的擺動會產生一些渦,後面的魚就能感受到它和前面這條魚的相對的前後距離、左右距離,這樣的話我們也能夠做到這種模擬感知的能力。
還有一個研究是通信問題。因為要讓機器人做事情需要跟它交流,有時候是兩個機器人一塊做事情,它們之間也要交流。陸地上交流很好辦,現在無線網路很發達,機器人也可以通過這種無線網路在陸地上很好地交流。但是到水下就不行了。
水下通信一直是限制水下機器應用的一個很大的瓶頸,所以人們也開始嘗試一些傳統的比如光通信、聲納通信,但是效果都不是很理想。那既然我們是師法自然,就再看看自然界的魚怎麼通信,它怎麼跟它的夥伴交流呢?
我們發現有一種魚,它能夠自己改變身體的狀態,形成一個電場。這個電場雖然很微弱,但是通過這個電場,它就可以跟夥伴進行交流。我們能不能也讓機器魚有這個功能呢?所以我們也給機器魚設計了產生電場的電路。
我們設計了發射電極、接收電極,把它們加在魚的身上,就實現了兩條魚在水中的通信,這是我們剛剛發表的一個結果。
這個圖片就展示了我們這幾條機器魚,也是通過不斷地改進才到了今天這個狀況。一開始我們對外形不夠重視,但是發現其實要讓它游得好的話,外形很關鍵。
右下角這個圖還沒有實現。我們想將來做一個大點的,一米到兩米長的,這樣我們可以加入更多的負載,去做更多的實際應用。那機器魚到底都有什麼可應用的呢?其實這個回答是很顯然的。
現在人類過得很舒服,陸地上資源基本上耗光了,所以大家開始轉向水下,比如最近很熱的可燃冰。那個首席,也是我們北大的老師,他也找到我,說我們去探測可燃冰的時候,就需要這種小型的水下機器人去幫做一些操作,現有的那種大型水下機器人太笨拙了,不好用。
我們下面再舉幾個典型的例子。第一個,水下資源勘探或者水下科學考察。最近有個新聞熱點,兩個資深潛水員去一個水庫進行水下考古,結果不幸遇難了。當時失蹤之後就一直找不到,所以他們也聯繫到我們,讓我們這個機器魚也下去幫著找。
這就是一個問題。你派人下去,水火無情,可能就有危險。以後我們不用人下去,派機器魚下去就行了,我們帶著相應的設備,把相應的信號采上來就可以了。
再比如,大家都喜歡吃各種各樣的海鮮,吃是很好吃,但得之不易。像海參,它就是潛水員穿著很簡陋的潛水服,拿著個網兜,潛到幾十米的又冷又黑的水下迅速撿一些上來。不光是當時難受,這些人之後會得職業病,終身受罪。所以國家自然基金委剛剛舉辦完成了首屆水下抓取比賽項目,也是希望我們派機器人下去,來代替這些人,解放這些人。
還有個應用不得不提,就是軍事方面的。這個圖片是說美國人在測試這種軍事應用的水下機器魚。因為魚的隱蔽性高,以後設計一個機器偵查魚,悄悄游到岸邊,我們還在欣賞它呢,不知道它是來竊取我們情報的。所以這個應用領域非常廣泛。
如果將來這個技術成熟了,以後整個大洋里,除了有真的各種各樣的魚、海洋生物,也會有我們的機器魚、機器海豚、機器水母等仿生機器人。
到此為止,我就把機器魚的相關研究介紹完畢。這個魚也放下去吧,太重了,拿不動了。下面我再展開一個新的話題,這個話題跟魚還是很緊密。咱們先看圖片,這個圖片是一個國際水下攝影大賽的獲獎照片。它實際上就是拍到了幾百條甚至幾千條魚,它們自發地形成一個圓圈在那兒緩緩地遊動。
再看這個,可能是上萬條魚緊密地游到一起,形成一個很緊密的團簇。這些魚怎麼了,發瘋了還是閑得沒事了?不是,它的目的很明確,它們就是要生存。它們做這些行為不是為了好玩,是為了延續這個種群。
為什麼?因為每條魚很小,跟天敵對抗肯定對抗不過人家。可是如果緊密團在一起,可能就震懾住天敵了。再比如,集體去尋找食物,肯定比單個找到食物的概率高。
所有這一切都說明不光是單個魚可以做我們的老師,整個魚群也可以給我們啟發,也可以做我們的老師。這就促使我由原來的「個體仿生」進化到「群體仿生」。也就是說我們從單個魚怎麼游得好,感知得好,通信得好,還可以讓一群魚游得好。既然這是一位老師,我們看看這老師有什麼優秀的品質。
魚群的特點來總結一下:第一,這種形成魚群的魚,首先它的個體肯定很弱小,智商很低,能力很有限。第二,這一群魚在一起游,其實沒有一個統一的管理者或者領導,它們就是自發地就這麼遊了。我們可以想像一下,假設你有超能力,這群魚在游著,你突然讓其中一條魚瞬時消失,你會發現這個魚群根本不知道這條魚沒了,還是那麼逍遙地游來游去。
第三個特點,這些魚群小的幾十條,大的可能幾千條上萬條。但是每條魚它不用很累,不用知道其他魚的狀況。因為假如你是一條魚,咱們一群魚團簇著,像現在一樣。如果把其他的信息都告訴給你,你其實也處理不了,你也暈了。實際的魚也是這樣,它不需要知道整個全局怎麼樣,它只關心我周圍這幾個鄰居怎麼在游,做一個簡單的交互就可以了。
這麼簡單的特點,能力這麼低,但結果是什麼呢?它的整體能力非常強大。通過這種整體的方式,這個種群就延續下來了。
其實這就是現在很熱的人工智慧里的一個重要分支,叫群體智能。所謂群體智能就是說個體智能很低,但是它們通過相互協作,從整體層面上能迸發出很強的能力。這種智能也值得我們學習,值得我們研究。
下面介紹一個簡單的群體如何協同如何互動的模型。其實這個模型是一個計算機圖形學家提出來的,他提的目的是為了畫電腦動畫省事。因為有時候電腦動畫要表現一群鳥或者一群魚在遊動,如果大家都一樣,看著就會很假,不協調也不自然。
如果每個都畫,不僅累死,也畫不下來。所以他編了一個程序。他讓一些個體在空間中移動,在平面中移動,每個三角代表一個個體。規則很簡單:第一,我就看我周圍的鄰居,如果離它們太近了,那我就遠離一點;第二,如果太遠了,就近一點。
第三條也很簡單,我就看它們大概什麼方向,把我的方向取它們的平均方向。他一做之後,發現效果很好,咱們根本分辨不出來是真的鳥在飛還是動畫。
生物學家知道這個事後,把這個模型稍微進行了改進,改成一個三維空間的模型。然後調整群體之間不同參數的取值,通過計算機模擬,確實就仿出了我們在自然界中觀察到的一些魚群遊動的典型模態。像圓環、直行、雜亂的遊動等都展現出來了。非常有意思。
而我們呢,我們有魚,我們直接拿魚來做實驗不就得了嗎?所以這是我們的結果。
GIF/639K
因為現在做這種三條魚的實驗難度還是非常大的,我們還在進一步地把魚數增加。但是我們能夠拿這個機器魚初步地去驗證這種結果,這個魚確實可以像自然界的魚一樣形成機器魚效應。
實質上,以前的研究如果深想一下是有點問題的。因為它只是說我去觀察這個現象,根據這個現象我提煉了這三個規則,或者提煉了其他稍微繁複一點的規則。但是這個魚它就是一個生命,它是一個活生生的個體,它是一個生物。
作為生物來講,你怎麼知道它就是這麼想的,它就是按照這個規則去做的呢?特別是根據達爾文進化論,個體都是自私的,在資源有限的條件下,每個人都為自己著想。物競天擇,適者生存。你如果有食物,你不吃,別人就吃了,你讓給別人了,那你就存活不下去了。
但是達爾文的進化論它解釋不了現在的研究,解釋不了一個現象:雖然都是自私的,但是實際上生物界有很多利他的合作的現象出現。
這跟進化論稍微有點矛盾,所以後來吸引了很多生物學家、科學家研究這個事情到底是怎麼回事?最後他們發現,很多生物都是群體地生活。
那什麼群體最好?他們給了一個結論:如果這個群體中每個個體都自私,這個群體可能很快就演化沒了。反過來,如果這個群體每個人都很無私,結果發現也不好。最好的,更容易演化下去、生存下去的是什麼群體呢?是一個既有一些自私也有一些合作的群體。而且時段尺度上在變化,這個時段可能我自私一點,你利他一點,下一個時段可能我又利他一點,你又自私一點。
那麼真正的生物、真正的魚群是這樣一種特點,機器魚可不可以也達到這種層面的仿生?
我們不是傻乎乎地說魚,給你定個規則,你去游吧,能不能更深刻地把機器魚也賦予所謂的靈魂?我們正在研究這個課題。首先做的一個事情就是給這個機器魚編隊。
所謂機器魚編隊,就是我讓一些魚事先設定一個構型,比如一條直線 或者一個圓形,讓它們一開始位置隨機,然後大家相互配合,形成這個圓形。在沒做這個研究之前,我們從理論的角度講已經設計了控制律,可以從數學上嚴格證明只要這些機器魚執行我的控制律,肯定能夠實現這個編隊的。
現在這個魚不像原來一樣了,我把這個魚賦予自私的屬性。它執行這個編隊任務的時候,不是按照我事先規定的程序做,而是有一點私心。本來這次編隊它要走5米,但它只走3米,可以偷偷懶。
結果模擬效果出乎我的意料,大部分的情況下它們仍然能夠形成一個編隊。但同時我們計算所有魚在一起的總路程,對應於能量節省了很多,它真的有優勢。所以這個我們正在進行研究。
前面屬於基礎研究,我們還把這些研究用在了一些實際的應用任務中,比如協作推箱子,協作去偵察。然後我們就搞了一個水球比賽,通過競賽的形式促進技術的進步,同時也吸引一些青少年參與我們的項目。因為這個項目非常有趣,我希望更多的人去參與這個研究。
最後又回到這個圖片。大家剛才一開始看我們在未名湖遛魚,大家沒有留心一個現象,不光是魚的性能測試了,我們還發現很多真魚跟著我們的機器魚走。這很有意思,將來我不僅可以控制機器魚,我還可以控制真魚。
控制真魚有什麼用?首先大家都知道這個魔術,給魚編隊了。這肯定是魔術,據說有人是在魚下面貼磁鐵。這個方式魚肯定很難受,那我們如果用機器魚來做這個魔術就很簡單了。前面機器魚帶著,後面魚游著,這個編隊就形成了。
當然這種只是一個小兒科,我們更希望達到這樣一個境界:從「師法自然」過渡到「道法自然」。現在我們的研究以自然為師,學了一些東西,從個體仿生到群體仿生,目的是為了去征服自然、利用自然,開發自然的資源為我們所用。那我們在用這個資源的時候能不能境界更高一點?既然它是我們的老師,我們能不能更尊重它一點?
所謂道法自然是什麼意思呢?本身自然除了存在這些客觀的物質之外,它還有背後演化的客觀規律。我們去利用自然的時候,希望能夠更接近自然的規律去影響它、利用它。
比如現在咱們抓魚,一網下去,管它什麼魚呢,撈完再說。以後我們可以不再這麼捕了,我派機器金槍魚下去,專門把金槍魚引到一個地方,我們就抓這些魚,那多好。
咱們一席的主題是人文、科技和白日夢,我個人也有一個小夢想。很多人可能看過海洋館的動物表演,海豚跳起來,甚至頂著一個人游。我們是開心了,但是你想沒想過,這些動物開不開心?
有些研究者發現,這些動物由於經常表演得了憂鬱症,甚至自殺了。我們憑什麼把我們的快樂建在人家的痛苦之上?所以我的小夢想就是,將來我們去研發很多這種機器動物代替它們,把它們放歸自然。現在不知道能不能實現,但我會儘力。
謝謝。
TAG:一席 |