• <span id="ycodp"></span>
    <span id="ycodp"><small id="ycodp"></small></span>
    1. <label id="ycodp"></label>
      <rt id="ycodp"><tr id="ycodp"><strike id="ycodp"></strike></tr></rt>
      <i id="ycodp"><strong id="ycodp"><ul id="ycodp"></ul></strong></i>
    2. 幫助中心

      這里有最新的使用文檔和教程

      < 返回

      ROS的工作空間overlay機制

      2023-04-27 20:37 作者:31IDC 閱讀量:2769 所屬分類:Linux系統

      ROS的工作空間overlay機制

       

      官方的介紹請見,Overlaying with catkin workspaces,以下系自己理解,有誤請指正。

      Overlaying refers to building and using a ROS package from source on top of an existing version of that same package. In this way your new or modified version of the package "overlays" the installed one.

      覆蓋是指在同一個包的現有版本之上從源代碼構建和使用 ROS 包。這樣,您的新版本或修改版本的軟件包“覆蓋”了已安裝的版本。

      簡單來說,就是允許存在不同版本的ROS Package。

      單層覆蓋

      通常情況下,使用apt安裝的ROS二進制包會在/opt/ros/<distro>/下,不能進行源碼更改。此時需要修改功能,只能從源碼重新編譯。

      catkin_ws為例,使用

       
      $catkin_make

      會打印

      -- This workspace overlays: /opt/ros/noetic

      /opt/ros/noetic中的ROS包會被catkin_ws中的同名包覆蓋掉,下次使用ros相關工具調用使用的就是catkin_ws中源碼編譯的版本。

      多層覆蓋

      涉及到多工作空間時,會在.bashrc中添加source ${workspace}/devel/setup.bash。可能會有同名包出現在多個工作空間,且各不相同。首先推薦是,按照工程劃分工作空間,每次只source某一個工作空間,這樣不容易出問題。

      如果非要同時source多個工作空間,那么順序上,在.bashrc中排在后面的工作空間會覆蓋掉前面的工作空間。

       
      source /opt/ros/noetic/setup.bash
       
      source ~/1_ws/devel/setup.bash #工作空間1
       
      source ~/2_ws/devel/setup.bash #工作空間2
       
      source ~/3_ws/devel/setup.bash #工作空間3
       
       
       
      #如果出現同名包,rosrun時會使用工作空間3的
       
       

      在環境變量上,前面的會覆蓋掉后面的

       
      $echo $ROS_PACKAGE_PATH
       
      /home/user/catkin_ws/src:/opt/ros/noetic/share

      容易出的問題

      寫在前面,如果而非要多層覆蓋,那么建議按順序修改編譯。如果出現問題,首先查找多個工作空間下的同名包是否被依賴,根據實際需要修改.bashrc中的工作空間順序,調整覆蓋順序,重新按順序編譯一般可以解決

      按順序多層覆蓋,同時不按順序修改和編譯,容易導致同名依賴出現問題。根據舉例

       
      1_ws/
       
      src/
       
      package_1
       
      package_2 # depends on package_a
       
      devel/
       
      ...
       
      2_ws/
       
      src/
       
      package_1
       
      devel/
       
      ...

      先有1_wspackage_2依賴package_1,正常編譯。新增2_ws,其中刪減了某個頭文件的package_1覆蓋1_ws中的package_1。此時package_2依賴的是1_ws中的還是2_ws中的?

      這時新搞一個工作空間,再次依賴package_1,依賴的是那個?

      如果再有一個package_3,同時依賴package_2package_1,分別依賴的是哪個?

      這時候再修改編譯pacakge_1package_2呢,對pacakge_3的有什么影響?

      我反正是不知道。混亂的情況有無數種,我們不需要理清混亂的規律,從源頭好好規劃避免混亂才是解決問題的方式。

      31IDC - 12 年深耕海外 IDC 高端資源

      主站蜘蛛池模板: 亚洲综合偷自成人网第页色| 久久久久亚洲AV综合波多野结衣| 色爱区综合激情五月综合色| 色偷偷亚洲第一综合| 99久久国产综合精品麻豆| 伊人狠狠色丁香综合尤物| 亚洲综合久久一本伊伊区| 亚洲 自拍 另类小说综合图区| 亚洲欧洲日产国产综合网| 六月婷婷综合激情| 久久婷婷五夜综合色频| 国产香蕉久久精品综合网| 色婷婷综合久久久久中文字幕| 综合激情五月综合激情五月激情1 综合久久国产九一剧情麻豆 | 一本色道久久综合一区| 色欲久久久天天天综合网 | 国产成人亚洲综合色影视| 亚洲综合av一区二区三区不卡| 香蕉国产综合久久猫咪| 国产综合无码一区二区色蜜蜜| 97久久天天综合色天天综合色hd| 久久综合久久鬼色| 伊人婷婷综合缴情亚洲五月| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 成人综合久久精品色婷婷| 久久―日本道色综合久久| 国产成人精品综合久久久久| 国产性天天综合网| 九九综合VA免费看| 丁香亚洲综合五月天婷婷| 狠狠色综合久久久久尤物| 香蕉99久久国产综合精品宅男自| 国产成人综合久久精品红| 色综合天天综合网| 成人伊人青草久久综合网破解版| 伊人色综合久久天天五月婷| 五月婷婷综合免费| 色综合久久天天综合绕观看| 色综合久久精品亚洲国产| 图片区精品综合自拍| 国产成人综合色视频精品|