東南大學成賢學院 陳永圣 周龍翔 馬尹琪
經歷了新冠疫情,我們發(fā)現(xiàn)社區(qū)服務中存在著明顯不足。所以我們想通過機器人來解決其中的一些問題,即設計一款可以實現(xiàn)一些社區(qū)服務的機器人。本篇研究文章先是敘述了研究的背景,闡明了研究的可行性與創(chuàng)新性——我們著重介紹了運動控制和溫度測量及附加拓展功能的原理以及語音交互技術在機器人上的實現(xiàn)過程。實驗采用的機器人為turtlebot2,基于ROS系統(tǒng)去完成頂端的操作——最后能實現(xiàn)社區(qū)服務這一全面的功能。
2020年初突如其來的新冠疫情如放大鏡一般顯現(xiàn)出日常生活中社區(qū)服務存在的問題,病毒的強傳染性讓抗疫期間的社區(qū)服務變得困難重重,以及還有外界天氣等因素的影響,社區(qū)服務成了一大問題,即社區(qū)服務缺少人力與及時性。同時,老年化現(xiàn)在愈發(fā)地嚴重,社區(qū)服務就顯得十分重要。
就這樣,如何設計一款在社區(qū)服務中發(fā)揮作用的機器人成了我們研究的課題。
基于Turtlebot2機器人為載體,利用ROS系統(tǒng)去集成一系列的功能,目的是構造出社區(qū)服務機器人能夠在實際生活中能夠替代人做一些工作以及避免一些隱患。
ROS是一種有高度靈活性的機器人軟件編寫架構,提供了一種發(fā)布-訂閱式的通信框架用以簡單、快速地構建分布式計算系;ROS提供了大量的工具組合方式用以配置、啟動、自檢、調試、可視化、登錄、測試、終止分布式計算系統(tǒng);ROS提供了廣泛的文件庫實現(xiàn)以機動性、操作控制、感知為主的機器人功能;ROS系統(tǒng)的支持與發(fā)展依靠著一個強有力的社區(qū)。豐富的功能及其強大的技術支持,使得ROS在項目研究中占據(jù)主要地位。
運動控制模塊主要是在Linux及Python的基礎上去對ROS系統(tǒng)進行編程命令控制。模塊分布圖如圖1所示。
圖1 模塊分布圖
運動控制的視覺基礎是SLAM算法,動作基礎是Kobuki移動機器人。應用SLAM算法、RGBD相機和RVIZ等仿真工具軟件,控制和完善機器人的運動路徑及其運動細節(jié)。機器人每個部分的工作數(shù)據(jù)由其對應的節(jié)點發(fā)布、訂閱,數(shù)據(jù)的具體內容與格式可以自行設定。運用RVIZ等仿真軟件與官方提供的Stage模型,鍵入操作指令來控制機器人在目標地圖中運動,建立基本的地圖模型后便可在仿真軟件下進行模擬導航。導航所用的Gapping功能包同樣可用于地圖的創(chuàng)建。ROS系統(tǒng)中Gmapping功能包與SLAM算法共同作業(yè),建立一套完整的導航包工具,完成在目標點之間的自主路徑規(guī)劃的導航工作。圖2所示為ROS系統(tǒng)中導航包的相關節(jié)點示意圖。
圖2 ROS整體導航包的布局圖
語音交互模塊我們項目團隊則是利用了訊飛語音的一個開源的數(shù)據(jù)庫,借助訊飛已有的語音技術來做二次開發(fā)。語音交互也是基于我們之前的運動控制模塊,對運用的場景場地進行建模后,我們在程序之中設置定點位置的坐標,每個位置點設置了對應的響應指令,借助電腦的麥克風捕捉到聲音指令,接著識別里面的觸發(fā)命令的關鍵詞,識別成功后就開始按著建模的地圖進行運動到達目標點,到達后turtlebot2機器人會發(fā)出響應來表明已經到達目的地。
第一步機器人位置的初始化,首先編寫腳本來進行初始化位置,然后加入到啟動rviz的launch文件中,再啟動launch文件測試結果,這樣的測試避免了人工擺放產生的隨機誤差。第二步是對科大訊飛SDK的使用,測試語音的合成。首先試驗由訊飛開放平臺發(fā)布的samples樣例程序,檢驗語音包是否可以正常使用,其次修改程序中的代碼,添加回調函數(shù)使其處于監(jiān)聽狀態(tài),無須主動喚醒,最后便是在程序中添加導航點的坐標及其相應的觸發(fā)指令。第三步測試語音合成的情況。程序中可以定義合成聲音的屬性,方便我們去設置更為親民的語音;同時檢測坐標位置,當機器人運動到目的地時,程序自動合成語音提示目標點已到達,確保良好的使用體驗。
每個模塊的通信皆是基于ROS系統(tǒng)的節(jié)點間通訊,編寫相應的節(jié)點,發(fā)布消息,訂閱目標節(jié)點發(fā)布的消息,程序以此為判斷依據(jù),從而做出相應的動作?;诖?,我們完成了對于語音交互功能的制作,并且由于訊飛SDK包的使用,在語音識別與合成方面的質量得到保證。
溫度測量模塊我們運用了GY-906-DAA(醫(yī)用級)傳感器,溫度傳感器使用的芯片為MLX90614。我們在樹莓派里運行測溫程序,可以用C++或者Python去實現(xiàn)程序編寫。實現(xiàn)對1m以內的物體進行測溫同時測出環(huán)境的溫度,可將處理之后的數(shù)據(jù)在終端顯示,也可以上傳至云端。
拓展功能的主體也是樹莓派,外接所需的傳感器并編寫Python或者C++程序,實現(xiàn)機器人的拓展功能,豐富其所能提供的社區(qū)服務。使用DHT11傳感器測量環(huán)境的溫濕度,使用HX711模塊用于檢測機器人的載重。以上傳感器便是機器人的附加編寫Python或者C++代碼,具體的代碼可以參考網(wǎng)上的博客或者相關的書籍。
在整個項目設計制作過程中,碎片化學習相關知識給我們帶來了很多樂趣。如何在ROS系統(tǒng)下編寫相關節(jié)點,并試驗代碼,實現(xiàn)我們想要的功能,一步步地實現(xiàn)我們的目標,每一個成功都給我們帶來了莫大的喜悅。
更重要的是,我們如何去不斷優(yōu)化。在實踐過程中,我們水平有限,覺得在各個模塊中都有優(yōu)化的空間,例如我們在語音交互模塊中可以增添一個喚醒節(jié)功能所需的器件,實現(xiàn)附加功能還需對樹莓派進行GPIO口的設置以及點,用于觸發(fā)指令的功能,減輕機器人工作能耗。