ROS 1和ROS 2在建立專案工作空間上有一些差異,主要體現在(編譯系統) 和(環境配置) 上。
#以下說明了差異之處:
1•編譯系統:
◦ROS 1的編譯系統使用CMake,但ROS 2除了CMake之外,也支援其他的編譯系統。
◦在ROS 1中,包含Python程式碼的ROS套件只能使用setup.py檔案中的部分功能子集,因為setup.py檔案是以CMake的自定義邏輯處理的。
ROS 2則可以完整運用setup.py檔案,例如entry points,因為Python套件可以透過python3 setup.py install呼叫。
◦ROS 1允許多個packages在單一個CMake狀況下編譯,但ROS 2僅支援獨立的編譯,也就是說,每個package都單獨編譯。
2•環境配置:
◦在ROS 1中,使用編譯完成的ROS packages前,必須透過source指令使用編譯工具產生的腳本來配置運行環境。
◦在ROS 2中,環境配置分成套件特定腳本(package-specific scripts)及工作區特定腳本(workspace-specific scripts)。
每個package都具備了讓各自在編譯後可運作的腳本。
編譯工具僅呼叫工作區特定腳本,再讓該腳本來呼叫套件特定腳本。
3•Devel Space:
◦ROS 1支援devel space,package可以在沒有安裝的情形下編譯,並在搭配source space的devel space中運作。
◦ROS 2在編譯後必須先安裝才能使用,並以軟連結(symlinks)取代安裝步驟中的複製操作。
4•資源查找:
◦ROS 1基於ROS_PACKAGE_PATH來查找檔案系統中的資源(packages, messages, plugins等),當ROS_PACKAGE_PATH太大時會造成系統效能低落。
◦ROS 2的資源會在編譯時生成索引,並在執行時有效地查詢。
總體來說,ROS 2在編譯和環境配置上更加模組化和靈活,並且改善了資源查找的效率
沒有留言:
張貼留言