怎樣寫一個相似ROS的易用的android機器人框架(1)

ROS是一個運行在ubuntu上的機器人操做系統。 ROS採用進程間通訊的方式,將機器人各個功能模塊分離,讓負責算法專一於算法,負責傳感器的專一於數據採集,負責UI交互的專一於界面顯示,模塊之間的耦合是鬆散的,移除模塊或者加入新的模塊都不會影響現有模塊的運行。ROS的功能模塊能夠叫作節點。節點之間採用 sub/pub 方式傳遞不一樣類型的消息,整個系統維護一個特殊的 Master節點,Master節點由MasterServer維護,負責全部其餘節點之間的消息轉發。ROS是個分佈式操做系統,普通節點能夠和 Master 節點運行在同一主板上,已能夠運行在另外的主板上,只有兩個主板實現網絡通信就行。 ROS系統包含了不少實現機器人相關的算法的軟件包,如機械臂運動空間計算,SLAM地圖等android

不過惋惜的是,ROS的軟件包大都是C++寫的,要不就是Python實現得,要編譯ROS系統,須要在ubuntu系統使用cmake工具鏈,在嵌入式平臺特別是android平臺成功的經驗很少,並且如今未實如今安卓主板上運行MasterServer,ROS系統的MasterServer仍然須要運做在ubuntu主板上。c++

本文將試圖構建一個相似ROS系統的的android軟件框架,已便可以開發已android平臺爲主系統的機器人軟件git

須要實現的目標:

  1. 模擬實現ROS系統的節點通信機制,節點代碼能夠在本進程,獨立進程,甚至在非主控主板上(若是系統有多塊主板的話)運行。
  2. 機器人任務管理。現實中存在這樣的場景,用戶每每命令機器人作不少工做,有些工做要獨佔一些執行元件,這樣不太的指令就會衝突。機器人任務管理就是對機器人接收到的任務指令進行統一的排列和調度管理,新的任務到來時,當前不過重要的任務能夠暫存起來,釋放資源(如執行部件的使用權限)給新任務執行,等新任務結束後,再恢復暫存的任務繼續執行。
  3. 與下位機MCU的通信。我設計的是MCU支持USB總線的,MCU控制馬達,舵機,紅外,超聲波等傳感器和執行部件,利用一個支持USB OTG 功能的手機做爲主機,同時利用手機內部的重力傳感器和麥克風,揚聲器,屏幕構成一個完整的機器人系統
  4. Lua編寫機器人控制邏輯代碼。Lua是簡單易懂的,輕量級的腳本語言,在遊戲腳本開發甚至簡單的單片機系統都能用,用Lua開發機器人的好處是:簡單,快捷(不須要編譯,現寫現運行),支持熱更新
  5. 簡單的機器人UI界面。顯示機器人虛擬人形象。實現語音交互。
  6. 機器人通用算法。機械臂運動空間解算,簡單的自平衡PID控制。須要一些c++的數學矩陣庫的支持

關於項目

  • 我將在開源中國開放代碼,歡迎各位指正 EasyRobot源碼
  • 項目以Kotlin語言開發,沒學過的同窗能夠先網上找資料預習一下,語法很像swift和go應該很容易看懂的,不用擔憂,由於Kotlin能夠與Java共存的,後期會加入一下C和Java還有Lua的代碼

怎樣寫一個相似ROS的易用的android機器人框架(2)算法

相關文章
相關標籤/搜索