徐暢 賈天佚 喻志林 李小林 張長勇
(中國民航大學,電子信息與自動化學院,天津 300300)
近年來,人們的生態意識在不斷加強,森林覆蓋面積逐漸增加,鳥類的生存空間變得更大,鳥數量急劇增加;田野、樹木害蟲被農藥有效控制[1]。鳥類的食物來源減少,導致鳥類大肆啄食果品,為了減少損失,許多果區采用化學防治,物理防治,果實套袋的方法。相比于物理防治,化學防治與果實套袋的方法會對果品的品質有所影響。物理防治主要的手段是噪聲防治,通過一定頻率的聲波刺激鳥的聽覺神經從而達到驅鳥效果。噪聲防治具有科學、經濟、實用等優點,但傳統的噪聲防治需要解決供電問題,遇到惡劣天氣時,喇叭等大功率設備難以及時回收。本文研究的果園驅鳥車自身攜帶了大容量鋰電池,有效的解決了供電問題,通過鳥類識別技術可以做到精準驅鳥,并且通過北斗導航與激光雷達可以實現自主路徑規劃以及實時定位,方便回收。
本文研究的驅鳥車依靠的是ROS 操作系統。ROS 是一個有著悠久歷史和眾多貢獻者的大型軟件項目,是一個開放的機器人研究框架。ROS 是開源的,內部包含了一些機器人的主操作系統,二級操作系統,這些操作系統提供許多功能,包括硬件抽象描述、底層驅動管理、共享功能實現、程序之間的消息傳遞、分發管理,還提供了一些工具包和程序庫,用來捕獲、創建、編寫和運行更多的機器集成程序。ROS 開源環境內部架構包含多種編程語言,程序員可以使用多種編程語言進行開發。ROS 發展至今已有二十載的的歷史,已被大多數人接受,涵蓋了導航定位功能、路徑規劃、3D 對象識別、機器人多關節運動控制、機器智能學習[2]等。通過ROS 的開發,機器人甚至可以做到打籃球,人機交談等動作。騰訊、阿里巴巴、百度等互聯網公司都已紛紛加入ROS 平臺進行開發。截至目前,自主導航工程師、自動駕駛規劃算法工程師、機器人感覺開發工程師、系統平臺開發架構師等崗位,均要求具有一定的ROS 開發經驗以及相應的ROS 知識。由此,我們可以看到ROS 系統正在逐漸主導中國機器人行業的市場。
本文設計的智能小車,主要是實現自主循跡與識別警報功能,見圖1。

圖1 系統整體設計圖
自主循跡功能是由北斗+GPS 雙模芯片,二維激光雷達,樹莓派和STM32 單片機組成的上下位機共同實現的。首先通過北斗導航與二維激光雷達的測距掃描功能,運用Gmapping 法對周圍環境進行一個探測,并通過ROS 操作環境下的可視化程序Rviz 形成一個大致的封閉地圖。之后可以在Rviz 程序中設置多個點完成循跡路徑規劃,接著上下位機系統整合北斗衛星與二維激光雷達的數據確保機器人行走于正確的路線,并控制機器人的底盤動力系統。
識別警報功能是由K210 芯片、單目攝像頭、揚聲器、樹莓派與STM32 單片機組成的上下位機共同實現的。首先K210 識別出鳥類,接著K210 會進入語音警報函數,控制揚聲器發出警報,并向上下位機提供停車信號。上下位機接收到停車信號后控制機器人停止巡邏。K210 無法識別到鳥類后,跳出語音警報函數,揚聲器停止警報,并向上下位機提供啟動信號,上下位機接收到啟動信號后,機器人繼續巡邏。
北斗系統是我國建成并在逐步完善的一套擁有完全獨立自主技術的衛星導航系統,涵蓋了大范圍的頻段,但是應用在民用頻段的較少。為了確保巡邏機器人定位導航功能的正常運行,采用北斗+GPS 的雙模芯片。并且相比于北斗單模系統而言,北斗+GPS 雙模系統可使用的衛星數更多,定位精準,起到了冗余功能。對于成本而言,只需要對射頻接收器,端稍作不同的處理就可以支持不同的系統并不需要增加額外的成本。
目前市場上主流的雷達主要分為激光雷達和超聲波雷達,但在現實環境中聲音嘈雜,環境惡劣,容易對超聲波雷達所發出的聲波干擾,所以我們采取抗干擾能力強、方向性更好的激光雷達。
激光雷達以激光技術為信息源, 將由激光器所發送出來的脈沖激光,打在目標上并產生散射,其中部分光波則會反映在激光雷達的接收機上,若按照激光測距基本原理運算,則可得出由激光雷達至目標地點之間的一段距離,從而通過一系列計算得到相應的坐標。脈沖激光連續地激光掃描目標物體,它就能夠獲取在目標物體上所有目標點的數量,用此數加以圖像處理之后,就能獲得更準確的三維立體圖像了。它還能夠測定二個或許多的間距, 并估計其變化率以獲得速度。本文只需利用二維激光雷達構建一個平面的封閉環境圖。系統通過樹莓派去收集二維激光雷達的信息,做出相應的處理,并通過相應的軟件將處理到的信息可視化。
樹莓派的系統基于Linux。Windows 10 互聯網發布后,我們的PC 可以直接運行樹莓派,本文采用樹莓派4,通過LINUX 運行樹莓派。樹莓派以ARM 的微型主板為機械架構,內存條以SD 卡代替,主板四周有多個USB 接口和網口,可連接多個外部設備,同時擁有PWM 的電視輸出接口和HDMI 高清視頻輸出接口。將上述所有結構結合在ARM 主板上就形成了一臺微型電腦。
相比較傳統的C51 單片機,STM32 單片機運行速度更快,因其程序都是模塊化的,接口相對簡單。STM32MCU 融高功能、即時性、數字信號管理、低功率、低電流等為一體,并且保留了高集成性和設計過程簡單的優勢。采用工業國際標準的數據處理器, 以及大規模的軟硬件設計研發工具, 使STM32成為大量產品研發的不二之選。
本項目應用樹莓派作為上位機,給作為下位機的STM32單片機發送操作指令,STM32 單片機通過相應的傳感器及執行結構完成指令操作,并將狀態信息反饋給樹莓派。
為了解決汽車在轉向時,由于左、右轉向輪的轉向半徑不同所造成的左、右轉向輪轉角不同的問題,提出了阿克曼轉向機構(Ackermann steering)。根據阿克曼轉向機制,當車輛沿著曲線,曲柄的四個鏈接可以使外輪的轉向角比內側輪小大約3~6 度,使四個輪子轉向時的圓心交會于后輪中心軸延長線上的轉向中心,從而平穩的轉彎。由于阿克曼結構存在最小轉向半徑,不可原地轉向,本文研究的小車會通過一個圓弧運動實現轉向。
K210 是一款集機器視覺與機器聽覺能力于一體的系統級芯片(RSIC-V CPU)。使用三星(Samsung)超低功耗的28納米制程,擁有極好的穩定性、可靠性、低功耗性。為了使人工智能(AI)產品能夠在最短的時間內部署到用戶手中,K210旨在零門檻開發。通過MicroPython 編程,用戶可以輕松實現基于K210 的MCU 編程和各類AI 算法,如機器視覺、機器聽覺等。在本文里,用K210 去實現識別鳥類以及發出警報的操作。
北斗導航系統(BDS)是由空間部分,地面監控部分與用戶部分組成的[3]。空間部分空由35 顆衛星組成,包括5 顆靜止軌道衛星、27 顆中地球軌道衛星、3 顆傾斜同步軌道衛星。地面監控部分由主控站、監控站、注入站組成。用戶部分指設備中的BDS 接收機,在本文里使用BDS 接收機為北斗+GPS雙模芯片。
想要確定一個觀測點的位置,可以利用三維坐標距離公式x2+y2+z2=d2,通過3 顆衛星可以分別得到接收機距衛星的3組x,y,z 坐標,從而可以解得觀測點的位置,然而衛星與接收機之間還有時鐘誤差,所以實際上有x,y,z,δ(時鐘誤差)四個未知數,所以還需要再加上第四個衛星才能準確的解得觀測點的位置,方程式如下:

其中x,y,z 為三維空間坐標,c 為光速,δ 為接收機終差。
4.2.1 市面上是主要有兩種雷達定位模塊:一種是三角定位激光雷達,另一種是TOF 定位激光雷達。
4.2.2 三角定位激光雷達
激光器發射的激光,當照射到目標物品上后,反照光由線性的CCD (Charge Coupled Device)接受,因為激光器與探頭之間間隔著一段距離,所以根據光路,各個相距的目標物品也會成像到CCD 上各個的地方。根據三角公式并加以運算,得出與被測物體的間距。其原理圖如圖2 所示。其中A、B、C 分別代表激光器感知的三個位置信息,A'、B'、C'是經過三角測距成像后三點在CCD 上的成像位置。雷達中主要采用的是線性CCD,分為x、y 兩種方向用來捕獲平面圖像。

圖2 激光雷達三角測距原理
4.2.3 TOF 定位激光雷達
激光器發出一個激光脈沖,并由定時器記載下發射時間,而回返光經接收器接收,并由定時器記載下回返的時間。二時刻相減后就得出了光的“飛行時間”,而由于光速是固定的,所以當知道光速與時刻關系后很簡單地就能夠算出距離。其原理圖如圖3 所示。

圖3 激光雷達三角測距原理
4.2.4 由于本文激光雷達掃描的周圍環境,物理模型符合三角測距激光雷達的原理模型,本文采用三角測距激光雷達
激光雷達在描繪環境時, 每秒所可以進行的光點云觀測次數,也就是采樣率。在轉速一定的狀況下,采樣率就決定了雷達測距的準確率。采樣率越高,測距越精準。本文采用的雷達采樣率在20kHz 左右。
4.3.1 鳥類檢測模型的算法
不同的算法應用于不同的芯片,相比于普通的STM32 單片機,K210 更容易完成算法的實現,并且擁有更高的精準度,能準確完成鳥類的3D 檢測與鳥臉的2D 檢測。因此本文選擇了K210,而與其相關的算法主要有兩類:一類是為三D 點云所產品設計的的CNN-SEG 深入教學計算,另一類則是為二D 圖像所產品設計的YOLO-3D 深入教學計算[4]。CNN 算法雖然取得了較好的準確率,但是時耗過長,完全不能滿足本文對鳥類識別的實時性要求,因此本文選擇YOLO-3D 深度算法。
4.3.2 K210 單目攝像頭下的物體檢測神經網絡
本文中采用了YOLO-3D 算法,本文設計了K210 單目鏡頭下的物體監測神經網絡,進行單攝像頭下3D 監測并獲取由2D圖片分割的物體全部信號。最終完成的多任務輸出信息:鳥體檢測,通常包含了3D 框(以像素為單位)、鳥體尺寸(以米為單位)。鳥體3D 模型分割:鳥體輪廓線信息,相應特征之間的距離等等。
4.3.3 3D 模型參數的訓練預測
神經網絡如果直接估計3D 模型的9 維參數,會比較困難,特別是預測3D 模型中心點位置。于是,本文就通過幾何學來設計訓練預測。首先利用地面平行假設,可以降低所需要預測的3D 模型參數。4.3.3.1 假設3D 模型只沿著垂直于地面方向的坐標軸上有轉動,而在其他二個方向都沒有發生轉動,也即有yaw偏移角,那么其余的Pitch Roll 都是零。4.3.3.2 3D 模型中心高度與相機寬度相當,從而可簡化認為障礙物的高度Z=0。由圖四負四看出,我們現在有大量6 維或3D 信息,需要預測。4.3.3.3 對于3D 障礙物里的6 維度描述, 可選擇神經網絡來估計方差較小的參數。而yaw 轉角則相對易于預見,且與障礙物在圖中的方位關系不大,適宜通過物體檢測框架來練習與預測。在實踐中人們也已多次證實了此項。
4.3.4 K210 控制的語音警告系統
K210 是一塊系統級芯片,不僅可以與單目攝像頭配合實現鳥類識別功能,還可以控制揚聲器實現語音警報的功能。K210識別到鳥類后,會觸發語音警報函數,控制揚聲器發出警報。當鏡頭沒有檢測到鳥類時,會跳出語音警報函數,停止揚聲器工作。K210 里語音警報函數的對象是一個12s 的音頻。
4.3.5 自主巡邏的操作原理
ROS 開發環境:ROS 是一種用于編寫機器人軟件程序與控制機器人行為的高度靈活的開源環境。它包含豐富的操作工具、庫文件和相關協議,旨在簡化跨機器人平臺創建復雜機器人的過程。依照ubuntu 本身的驅動程序與激光雷達相結合后就可以測量周圍的環境并且可以通過圖形化監控程序Rviz 將其具體化[5],并且調用ubuntu 中的終端程序可以查看有關于雷達相關的發布方消息。
本文通過Rviz 將雷達掃描到的環境可視化,并在Rviz 中控制機器人運動建圖。建圖完成后,通過Rviz 在地圖設置多個巡航點。接著機器人將通過北斗導航與激光雷達導航,在規劃路徑循環前進,配合K210 可以實現本文的巡邏報警功能。