王莉,陳文宇,吳寶磊,張海天,盧熾杏,馮瑞
(航天工程大學,北京,101401)
中國航天目前正處于迅猛發展的時期,需要大量的人才投身航天事業、建功航天事業。為了向這些航天人致敬,推動航天文化的多元化傳播,激發廣大有志青年投身航天事業的志向,本文設計了航天主題創意宣傳機器人,希望通過機器人表演和宣講的形式勾起觀眾的興趣、通過推廣航天文化的創意設計為航天文化的傳承和發展注入新的活力,更好地向公眾展示這些英勇無畏的航天人的奉獻精神和航天精神,喚起更多人對航天人的尊敬和關注,讓航天事業在觀眾中的認知度和影響力得到進一步的擴大。以激勵廣大有志青年積極投身航天事業,也成為那群在背后默默奉獻、無私付出的航天人,為祖國的航天事業貢獻出自己的一份力量。 本文采用伺服舵機、STM32 單片機和 ESP32-A1S 處理器等材料制作了一個航天主題宣傳機器人,起到了宣傳航天文化的作用。
機器人外殼結構由鋁合金板構成,通過控制伺服電機來進行關節的轉動。機器人整體共15 個伺服電機,即15 個自由度,頭部1 個自由度,左右臂各自2 個自由度,左右下肢各5 個自由度。
2.1.1 外殼結構
小組通過定制鋁合金板來準備機器人外殼材料,而后通過在鋁合金板上打孔,用螺絲把伺服電機、鋁合金板連接起來,構成機器人的整體外殼結構。

圖1 航天主題創意宣傳機器人外殼結構圖
2.1.2 伺服舵機
機器人使用的是SH15-M 伺服舵機,SH15-M 舵機是一種小型舵機,尺寸為43.8mm×23mm×31.4mm。它的工作電壓范圍為8V~15V,重量約為48g。它的耗電低、質量輕、結構緊湊、價格便宜,適合在小型機器人上應用。

表1 舵機具體參數

表2 舵機功能介紹

表3 舵機協議、角度、ID編碼介紹
2.2.1 基于ESP32-A1S 的智能語音模塊
(1)語音模塊
智能語音模塊基于ESP32-A1S 處理器,集成了麥克風、聲卡、MP3 格式音頻編解碼器、TF 存儲卡插槽、音頻輸入接口、音頻輸出接口、揚聲器接口、網絡接口、藍牙。問答指令可以通過計算機傳輸到TF 卡中,隨后將TF 卡插入語音模塊上的存儲卡插槽,處理器通過讀取存TF 卡中的指令來進行問答準備。問題則通過麥克風輸入后,聲卡將語音信號轉換為數字信號,而后通過處理器中的語音識別算法,將其轉換成文本格式,再提取出文本格式的問題意圖和關鍵信息與知識庫中的數據進行匹配和檢索,找到最相關的答案,進行回答。
(2)外接設備
①外接喇叭:用于加大音量;

圖2 智能語言模塊問答流程圖

圖3 語言模塊及外接喇叭硬件圖
②外接麥克風:用于在開闊環境大廳下替代板載集成麥克風,其能夠自適應調節強度聲音和瞬間沖擊音,有效防止語言失真和衰減。

圖4 外接麥克風硬件圖
(3)實現功能
語音識別、離線智能問答、通過websocket 協議和http 協議后臺對接實現的在線智能問答。
(4) 模塊性能
語音模塊性能如表4 所示。

表4 語音模塊性能
2.2.2 控制主板
主板操控電機的控制板采用STM32 系列單片機,大部分元器件采用全表貼工藝。控制主板通過控制電機、驅動器和執行器來驅動仿生機器人的關節和肢體,使其執行各種運動。這包括前進、后退、旋轉、彎曲和伸展等動作;控制主板通常與傳感器接口,以接收來自各種傳感器的數據,如位置傳感器、速度傳感器、加速度傳感器和觸覺傳感器等。這些數據用于調整機器人的運動和行為,以適應不同的環境和條件??刂浦靼逋ǔR簿哂邪踩珯C制,以保護機器人免受潛在的傷害和損害。這可能包括過載保護、短路保護、溫度監控和其他安全措施。此外使用TF卡存儲動作數據,數據量大,可靠性強。
在控制主板上,還有一顆型號為CH340 的USB 轉串口芯片。在串口方式下,CH340 提供常用的MODEM 聯絡信號,用于為計算機擴展異步串口,或者將普通的串口設備直接升級到USB 總線。

圖5 CH340 芯片的使用場景模擬圖
為了方便對機器人的動作進行編寫和調整,我們編寫了一個Windows 窗口程序進行可視化編程。該程序基于.NET Framework 3.5 框架,是用C#語言開發的WPF 程序。我們在編寫代碼的過程中,使用Microsoft Visual Studio 2022 作為集成開發環境(IDE)。
連接機器人設備是與設備通信的第一步。以下是連接的主要步驟:
①檢查用戶是否選擇了串口;
②如果已存在打開的串口對象,關閉它并清除接收緩沖區;
③獲取用戶選擇的串口名稱,并更新界面狀態以顯示連接進度;
④創建新的串口對象并設置通信參數,如波特率、數據位等;
⑤打開串口;
⑥啟動后臺線程來處理數據讀取和發送操作。

圖6 機器人連接主要步驟流程圖

圖7 連接機器人設備窗口設計
制作數據是為了將動作數據、默認姿勢數據和選定的動作編號轉換為設備可下載和執行的字節數據數組。以下是制作數據的主要步驟:
①計算動作的數量,確定字節數組的長度;
②初始化數組和變量,包括標記每個動作是否需要下載的數組、統計動作編號出現次數的數組、存儲動作數據的字符串數組,以及最終生成的字節數據數組;
③遍歷輸入的動作數據,根據動作編號將動作數據分組,并統計每個編號的出現次數;
④生成字節數據,包括動作編號、是否循環、關節角度等信息;
⑤處理特殊情況,包括動作是否循環、循環的開始和結束等情況,以及處理姿勢數據中的負值,并將其轉換為字節表示;
⑥最后,將生成的字節數據存儲在數組中,并返回作為輸出。

圖8 制作數據的主要步驟圖
數據上傳到電腦涉及復雜的串口通信邏輯,包括發送指令、等待響應和報告上傳進度。數據上傳的主要步驟如圖9所示。

圖9 數據上傳的主要步驟圖

圖10 數據上傳窗口設計

圖11 可視化操作界面設計

圖12 機器人仿真編輯窗口設計
在程序的主界面中,設計了一個畫板,用于存放各種動作組件。在畫板中,可以插入單個動作、循環、連接線。
對于動作,可以對每個舵機位置、速度、延遲分別進行調整,且每個動作的音樂也可以進行自定義。
使用的類庫和類:
在應用程序中使用了以下主要類庫和類:
①System.ComponentModel:用于支持后臺線程工作流。
②System.IO.Ports:用于串口通信。
③System.Windows.Controls.Viewport3D:用于3D建模。
④System.Windows.Media.Media3D:用于3D 操作。
本文實現了航天主題創意宣傳機器人的設計與制作,基于 STM32 單片機和 ESP32-A1S 處理器實現了對機器人的控制,用C#語言開發的WPF 程序實現了對機器人的可視化操縱,完成了機器人設備的連接和機器人數據的下載、制作以及數據從機器人上傳到電腦的功能。