當前位置:
首頁 > 科技 > 利用ROS和Web,讓機器人更智能

利用ROS和Web,讓機器人更智能

對於機器人設計廠商來講,他們在極力尋求更好的軟硬體解決方案,所以有人自然想到將ROS和Web相結合從而得到更好的機器人解決方案。或許有人會問:為什麼要在機器人技術中使用Node.js 和Web?它們各自有什麼特點?先看Node.js,其具有高性能 (JIT)特性,性能高於Python語言,從而使系統在同一機器人硬體平台上可實現更多功能;另外,Node.js擁有強大的生態系統和社區支持,是Github*上最流行的語言,而且擁有世界上最大的包分發系統——npm。Node.js設計時易於部署和調試,適合應用於web 界面。再看Web技術,它是遠程控制和儀錶板的最佳選擇,可以進行狀態檢查、運動控制、姿勢可視化、視頻流等工作,而且可以在任何瀏覽器里運行,易於嵌入,擁有海量資源。

基於兩者各自的優勢,工程師要考慮的是如何將web引入到ROS中?首先,RWT* 已經將ROS 1.0 APIs 在web中暴露,但在2017年年中之前還沒有針對ROS 2.0的解決方案,因此OTC的Web團隊開發了一套新模塊應用於ROS 2.0。當然我們還需要考慮這是不是在web中暴露ROS API 的最佳方式呢? 比如:服務;另一種做法是Node.js web 伺服器,就是在務器中暴露ROS API,這種方式靈活而有效,web頁面中只保留業務邏輯(RaaS)。其實工程師也不必害怕,因為web伺服器在 Node.js中只不過需要幾行代碼,並且前端和後端具有同樣的技術棧,因此更易於調試。

ROS2.0路線圖

我們目前取得的兩個成果是GitHub RWT 的兩個軟體包,其中一個是rclnodejs (github repo),它是一個ROS 2.0的Node.js 客戶端,它可以提供快速、便捷而強大的ROS 2.0的JavaScript介面;另一個是ros2-web-bridge (github repo),能夠實現在web頁面中調用ROS 2.0 API ,且與 roslibjs*兼容。下面我們來看看這兩個模塊各自的工作原理。

如上圖所示,其展示了rclnodejs軟體架構設計,其原則是對rcl層薄封裝,從而快速而輕鬆地適應變化。軟體介面採用事件驅動和非阻塞(Promise/Event)模式 ,使得程序可以擁有高並發特性;另外包本身無需重新編譯即可使用新的ROS消息,一切都在運行過程中處理。如此一來,用戶就能夠輕鬆、有效地編寫 ROS 應用。

如上圖所示,展示ros2-web-bridge 是如何將ROS 2.0引入到瀏覽器中。其與ROS 1.0 bridge (rosbridge_suite)現有的JSON消息協議 兼容,從而現有的 Web Tools 可以直接使用,例如 :2D/3D 可視化。保持開發的快速簡單,用戶友好的調試。如此一來,RWT ROS 1.0組件便可與 ROS 2.0透明兼容。

除了Node.js,C++ 和 Python也是ROS開發中常用的兩種語言,我們不妨將三者進行性能對比:發布一條ROS消息,測量所用的時間和內存。當運行次數增加時,趨勢趨於穩定,其它類型的測試中也能觀察到同樣的趨勢,兩種趨勢都與語言常識相符。可以看出,Node.js 的速度2倍於Python,但是在運行時會消耗更多內存。

在Turtlebot* 3 + ROS 2.0應用案例中,採用了Intel RealSense 相機和Intel Atom的Up Board* ,用一個web應用作為遠程控制,可以看出roslibjs + ros2-web-bridge易於創建強大的UI,可運行於任何瀏覽器中,其源代碼在github上,ROS 2.0 的消息類型是geometry_msgs/msg/Twist。

在機器人領域,英特爾還做出了很多其它貢獻,包括推出面向ROS 2.0的AI/ML/CV軟體;通過Movidius NCS提供專用 AI 硬體;用RealSense深度相機,以3D的方式感知世界;採用改進的ROS MoveIt*實現更佳的操縱;以及對ROS 2.0 導航的重新設計。我們相信隨著硬體和軟體的不斷發展,機器人會變得越來越智能。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 鎂客網 的精彩文章:

被謝耳朵一直嘲笑的MIT,這次發明了黑鏡中的「恐怖機器」
特斯拉定製AI晶元明年推出;Uber或明年IPO

TAG:鎂客網 |