ROS中階筆記(十一):ROS 2.0html
ROS已經走過十個年頭,伴隨着機器人技術的大發展,ROS也獲得了極大的推廣和應用。儘管ROS還存在很多侷限性,但沒法掩蓋ROS的鋒芒,社區內的功能包仍是呈指數級逐年上漲,爲機器人開發帶來了巨大的便利。很多開發者和研究機構還針對ROS的侷限性進行了改良,但這些局部功能的改善每每很難帶來總體性能的提高,機器人開發者對新一-代ROS的呼聲愈來愈大,ROS2.0的消息也不絕於耳。node
終於在ROSCon 2014上,正式公佈了新一代ROS的設計架構(Next-generation ROS:Building on DDS),2015年8月 第一個ROS2.0的alpha版本落地,2016年12月19日,ROS2.0的beta版本正式發佈,2017年12月8日,萬衆矚目的ROS2.0終於發佈了第一個正式版——Ardent Apalone。衆多新技術和新概念應用到了新一代的ROS之中,不只帶來了總體架構的顛覆,更是加強了ROS2.0的綜合性能。python
一、架構的顛覆編程
二、API的從新設計windows
三、編譯系統的升級api
DDS,Data Distribution Service,即數據分發服務bash
typedef struct RMW_PUBLIC_TYPE rmw_qos_profile_t { enum rmw_qos_history_policy_t history; size_t depth; enum rmw_qos_reliability_policy_t reliability; enum rmw_qos_durability_policy_t durability; }rmw_qos_profile_t;
一、功能
ament是一種元編譯系統,用來構建組成應用程序的多個獨立功能包,catkin編譯系統進一步演化的版本。微信
二、組成網絡
ament還處於開發中,目前並不穩定,也不提供並行構建的能力,未來應該會加入數據結構
一、CMake centric catkin
系統以CMake爲中心,因此只包含python代碼的功能包也須要由CMake進行處理,可是CMake並不支持Python setuptools中的全部功能,並且也很難在Window上進行移植。
二、Devel space
在catkin系統構建完成後,會在工做目錄下生成一個devel文件夾,裏邊是編譯好的功能包,以及環境變量的設置等等,基本上等同於ROS安裝完成後的目錄結構和做用。可是相信不少初學者由於devel中的環境變量而苦惱過,這確實爲用戶帶來了一些沒必要要的麻煩。
三、catkin_simple catkin_simple
是一個用於改善用戶catkin體驗的工具包,能夠減小複雜的CMake代碼,可是會存在不穩定的狀況。ament也是實現了相似的功能,可是可靠性更強。
四、Building within a single CMake context
使用catkin_make命令能夠一次性編譯工做空間中的全部功能包,雖然方便,但若是存在相同命名的功能包時,會編譯失敗,ament在這方面也進行了改善。
ROS2只支持Ubuntu 16.04以上的系統
由於ROS2更新迭代快,根據時效性,看官網安裝。另外對於ROS的實時性沒有特別要求,建議用ROS1。
官網:https://index.ros.org/doc/ros2/Installation/Crystal/Linux-Install-Binary/#system-requirements
分別打開兩個終端運行如下命令:
$ ros2 run demo_nodes_cpp talker $ ros2 run demo_nodes_cpp listener
一、建立工做空間
$ mkdir-p ~/ros2_ ws/src $ cd ~/ros2_ ws/src
二、建立功能包
手動建立:my_package/ CMakeLists.txt package.xml
三、編譯(以ament爲例)
$ ament build
微信公衆號:喵哥解說 公衆號介紹:主要研究機器學習、計算機視覺、深度學習、ROS等相關內容,分享學習過程當中的學習筆記和心得!期待您的關注,歡迎一塊兒學習交流進步!同時還有1200G的Python視頻和書籍資料等你領取!!!