ROS多個工作空間與環境變數

2021-09-12 12:05:41 字數 2603 閱讀 6212

建立多個工作空間

斷斷續續地學習ros和moveit做運動規劃,前段時間把理論推導整理完,現在來處理**,發現隨處都是坑,在這裡記錄下來,督促自己,可能的話幫助到他人也是一件好事。

// 新建乙個名為catkin_ws的工作空間

$ mkdir -p ~

/catkin_ws/src

$ cd ~

/catkin_ws/src

$ catkin_init_workspace

注意工作空間下一定要有乙個src資料夾,後面將包放在/src下。

// 編譯catkin_make工作空間

$ cd ~

/catkin_ws/

$ catkin_make

// 配置環境變數

$ source ~

/catkin_ws/devel/setup.bash

但是上述命令只是在當前終端裡面會生效,如果我們新開啟乙個終端的話,這個環境變數依然會找不到。

所以你也可以參考很多教程上的,寫到.bashrc

使用vim或者gedit開啟~/.bashrc(隱藏檔案,需要ctrl+h檢視)

在最後一行加上

// 配置環境變數

$ source ~

/catkin_ws/devel/setup.sh

或者更乾脆,直接

// 配置環境變數

$ echo "source ~/catkin_ws/devel/setup.sh"

>>~/

.bashrc

不管怎麼改,別忘了source一下

$ source ~

/.bashrc

這樣每次新開啟乙個終端都能載入環境變數

$ echo $ros_package_path
就可以看到剛才配置好的環境變數了。

剛開始git或複製別人的包進行實驗就行了,當需要建立自己的包的時候,使用catkin_creat_pkg命令,後面的依賴項一般有std_msgs,rospy,roscpp等等,當然也是可以修改的,在編譯包之後出現的package.xml中可以修改。

// 建立包

$ cd ~

/catkin_ws/src

$ catkin_create_pkg

[depend1]

[depend2]

[depend3]

建立包之後就可以寫程式了,放在新生成的包中。

建立好包之後就該編譯了,如果報錯,大概率是環境變數設定有問題,可能是忘了source或者是由於多個工作空間造成的環境變數混亂(後文會講到)。

// 建立包

$ cd ~

/catkin_ws

$ catkin_make

在學習ros過程中常常會新建工作區來測試**,由於ros在不同工作空間下允許存在同名功能包,在使用roslaunch等命令的時候,常常會疑惑到底呼叫的是**的包。

這裡有兩種辦法檢查:

檢視環境變數

$ echo $ros_package_path
使用roscd命令或rospack find

$ roscd  
$ rospack find  
通過測試,我們知道ros是根據環境變數中的先後順序查詢功能包。

但是,在測試過程中我發現了問題

當我在~/.bashrc檔案最後增加多個包的setup.sh位址,source後,環境變數並沒有按照我預想的變化

比如我有catkin_ws和test_ws兩個工作空間,在~/.bashrc後增加了兩行:

$ source ~

/catkin_ws/devel/setup.sh

$ source ~

/test_ws/devel/setup.sh

source後檢視環境變數,卻並沒有顯示我增加的兩行

檢視了roswiki和很多部落格,發現很多人都出現了這種情況1

,比如根據李太白lx的測試2

這種情況是由於兩個工作空間中有同名的包導致的

在roswiki中有詳細說明3

,由於有同名的包,會出現工作區覆蓋,造成環境變數意外的「混亂」。

根據roswiki上的說明,如果需要使用多個工作區,且多個工作區中有同名的包,建議在~/.bashrc檔案去掉所有工作區的source並手動配置setup.sh。

為了安全起見,建議catkin_make前,僅保持乙個活動的工作區,檢查環境變數是否指向自己需要的那個包。

ps.測試時,我甚至出現過~/.bashrc檔案中已清除所有ros工作區相關環境變數資訊,但在檢視環境變數時仍出現的情況。當出現環境變數異常時,可以手動清理環境變數

$ unset $ros_package_path
這樣,所有ros包相關的環境變數都被清除

建立ROS工作空間和新增環境變數

開啟乙個終端,先執行以下7行命令 1,mkdir p catkin ws src 2,cd catkin ws src 3,catkin init workspace 4,cd catkin ws 5,catkin make 6,source devel setup.bash 7,echo sour...

ROS 設定環境變數

catkin make source devel setup.bash 如果不設定,每次編譯後都需要上邊這兩步,按下面的步驟可省去一步。設定環境變數 在catkin ws目錄下,設定環境變數 source devel setup.bash 完成後 vim bashrc 在最下面加上 source 檢...

ROS中環境變數

ros自身工作空間的環境變數配置指令碼檔案setup.bash在 opt ros kinetic路徑下,我的ros版本是kinetic版本,所以此處是kinetic。我們建立的工作空間的環境變數配置指令碼檔案setup.bash就在上面我們說到的devel資料夾下。在 bashrc最後新增 ros空...