耿龍 陳荻瑩 韓天野 徐禎 張楊 田英愛

摘 ? 要:在科技迅速發展的新時代,機器人不斷影響著人類的工作和生活,未來有望成為影響全球經濟發展的關鍵因素。在機器人的工作中,良好的操作系統能讓機器人在使用過程中更加靈活、多變。文章預期設計一種以手勢控制為突破口,通過Arduino實現操作形式和多變的手勢操縱,讓機器人的能力進一步提升,以增加樂趣并提高工作效率。
關鍵詞:Arduino;機器人;手勢控制器
以VEX機器人為例,現今VEX機器人主要是以手柄為操控方式,但在實踐中卻發現,手柄的操作方式過于機械化,機器人缺乏靈動性因此,本團隊希望設計一種以手勢控制為基礎的操作平臺,利用手勢靈活與多變性提升機器人的靈活度,使之有更高效的工作效率。本項目重點在于完成手勢控制器相關程序的設計與實現,Arduino可用于開發交互式物體,接受來自各類開關或傳感器的輸入,并能控制各種燈光、馬達和其他物理輸出裝置,利用Arduino IDE跨平臺、開源的優勢實現通過手勢控制器發出命令控制機器的目標。
1 ? ?項目原理
1.1 ?Arduino介紹
Arduino是一款電子原型平臺,不僅對初學者特別友好,所有東西都是開源的,而且具有便捷、靈活、方便上手的優點。此外,作為一個成熟的平臺,其包含了各種型號的Arduino板以及用于編程的Arduino IDE,其中的硬件部分Arduino電路板可以用來做電路連接;軟件部分Arduino IDE,則是計算機的程序開發環境,其組合使得軟件與硬件能夠更安全、便捷地連接到一起[1]。
Arduino可以通過各式各樣的傳感器去感知外界環境,并且獲得控制器的控制,通過控制燈光、馬達或其他的裝置去改變運行狀態。電路板上的微控制器可以通過Arduino編程語言來編寫所需的程序,進而將其編譯成二進制文件,最終燒錄進微控制器,實現軟件與硬件的結合。
2 ? ?系統總體組成架構方案設計
2.1 ?硬件描述
手勢控制器是感知操作人手勢的變化并將對應信號傳輸給機器人,最終使其運動的配件,是在Arduino UNO控制板的基礎上改進而來的,搭載了5個滑動電阻,用于感測手指的運動狀態,并搭載了陀螺儀和傾角傳感器,用于精確感測整個手掌的運動狀態[2]。
手勢控制器以單片機為核心,型號為ATmega328P。選擇單片機是因為其有眾多優點:第一,體積比較小,內部芯片作為計算機系統,結構簡單、功能完善,使用起來十分方便,可以模塊化應用,與控制器十分契合。第二,較高的集成度,可靠性比較強,即使處于長時間的工作狀態也不會發生故障。第三,在應用時低電壓、低能耗。第四,對數據的處理能力和運算能力較強,可以在各種環境中應用,且有著較強的控制能力。還內置了陀螺儀加速度傳感器,使其能夠檢測控制器的傾角,擴展手勢設計的維度,不再限制于單調的手指控制。單片機上還有5個滑動電位器,由于電位器一般是薄膜(碳膜)電阻,體積和功率都很小,因此十分適合用來感知手指動作。
機器車使用的是履帶式鋁合金小車,履帶使小車有更好的抓地力,且有著不錯的靈活性。小車使用的開發板是STM32嵌入式單片機,型號為STM32F103RBT6,優點是高性能、低成本、低功耗,內置藍牙模塊,使其能與手套連接,二次開發等多種接口也讓項目開發更加便利。
現有的WiFi控制是同一路由網絡下的、上位機對下位機的遠程操控,但是上位機端的軟件開發和下位機與路由的連接較為困難。針對這個問題,文章選用了匹配較容易、軟件開發難度較低的藍牙模塊作為無線傳輸模塊,進行控制系統研究。通信使用基于藍牙4.0協議的HC-08藍牙模塊,可以和對應的HC-08藍牙模塊達成主從機通信,快速進行信號的傳輸通信[3]。
2.2 ?軟件描述
本設計,主要就手勢控制器對小車的操控部分進行了設計與實現,Arduino開發板測試程序主要在Arduino IDE上執行。部分功能大致思想如下。
前進操作<1>:
if 手心朝下 && 食指張開 && 其余四指緊握
if 手掌傾斜角度 < 30
小車向前直行;
else if 手掌向右傾斜角度 > 30 && 手掌向右傾斜角度 < 60
小車原地順時針旋轉(慢速);
else if 手掌向右傾斜角度 > 60 && 手掌向右傾斜角度 < 90
小車原地順時針旋轉(快速);
else if 手掌向左傾斜角度 > 30 && 手掌向左傾斜角度 < 60
小車原地逆時針旋轉(慢速);
else if 手掌向左傾斜角度 > 60 && 手掌向左傾斜角度 < 90
小車原地逆時針旋轉(快速);
else
小車原地不動;
后退操作:
if 手心朝上
if 五指緊握
小車向后直行;
else if 大拇指張開 && 其余四指緊握
小車原地逆時針旋轉;
else if 大拇指張開 && 食指張開 && 其余三指緊握
小車原地順時針旋轉;
else
小車原地不動;
3 ? ?實驗結果
(1)理論可實現手勢。已實現功能如表1所示。
(2)測試數據。手勢識別準確率如表2所示。
(3)Data。將測量值映射到500~2 500,握緊手時為500,張開時為2 500。手指返回角度的存儲如表3所示。
(4)RadianY_last 最終獲得的Y軸傾角,如圖1所示。
(5)手勢操控現存問題。首先,使用滑動變阻器感知手勢變化,不能確保完成對精度有較大要求的操作。其次,在實際操作中會因操作人的不同而產生不同的使用感受,如手套佩戴感覺不合適等。最后,使用藍牙進行信號的通信,遙控距離受限。
4 ? ?結語
本項目基于Arduino開發板結合手勢設計,完成了以手勢控制為基礎的操作系統,根據設計需求,可以通過該操作系統利用手勢控制機器車的移動。在擁有多種組合手勢的前提下,用戶可根據自己的喜好來設計手勢對應的動作,并且該控制器使用單手操作,避免雙手操作帶來的不必要麻煩,使得用戶在使用中感受到方便,同時提高了用戶的參與感,增加了使用的樂趣。針對不同行業的不同需求,該控制器可以重新設計,從而衍生更多的功能,有著很大的發展空間。
[參考文獻]
[1]宋楠,韓廣義.Arduino開發從零開始學:學電子的都玩這個[M].北京:清華大學出版社,2014.
[2]托尼·奧爾森.Arduino可穿戴設備開發[M].胡訓強,譯.北京:機械工業出版社,2016.
[3]陳呂洲.Arduino程序設計基礎[M].北京:北京航空航天大學出版社,2015.
Abstract:In the new era of rapid development of science and technology, robots continue to affect peoples work and life, and are expected to become a key factor of the global economic development in future. In the work of robots, a good operating system can make the robot more flexible in the use process. This paper expects to design an operation form that takes gesture control as a breakthrough and realizes through Arduino. Through the changeable gesture control, the ability of robots can be further promoted to improve the fun or work efficiency.
Key words:Arduino; robot; gesture controller