iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Software Development

ROS進階學習筆記系列 第 11

Day 11 - 編譯工具 catkin v.s colcon

  • 分享至 

  • xImage
  •  

哇!不知不覺已經寫完1/3了,社畜如我,這10天來下班->(運動)->回家寫鐵人賽,感覺生活變充實了許多呢XD
前幾天講完了package.xmlCMakeList.txt,今天理所當然的就是要講他們兩個撰寫的目的:為了能夠成功編譯package囉! 目前ROS1.0主要使用的編譯器是catkin,ROS2.0使用的則是colcon,因為筆者目前接觸到的專案兩者都有,就來稍微比較一下兩者之間的差異吧!

catkin

使用catkin編譯的方法很簡單,就是在workspace的初始目錄下catkin_make:

$ catkin_make

這個步驟其實等於包含了cmake和make,前面會先讀取package.xml和CMakeList.txt建立編譯的規則(cmake的部分),之後再開始進行編譯(make的部分),編完之後會建立devel/,build/和install/資料夾(若沒有install的規則就不會有install的),分別放置編好的程式檔和環境變數。
catkin_make另外可以下的參數有:

  • 如果要加install,就要下catkin_make install
  • 選擇多執行緒編譯: 跟make一樣,可以下catkin_make -j2
  • 編譯單一package: catkin_make_isolated --make-args package_name
  • catkin build:跟catkin_make很像,不過是將每個package獨立編譯,防止package之間有喇在一起造成問題的情形,比較像是建立多個catkin_make_isolated
    比較常用的就這些吧,還有需要用的可以查官網文件

*** 小提醒: 若在編譯此workspace之前有先source 其他的workspace,在編譯的時候會一併加入此workspace的環境變數中,若兩個workspace內有package喇到,會以之前編的為優先尋找的目標,所以蠻危險的,筆者被陰了好幾次QQQQ

colcon

ROS2.0改用colcon 當作編譯器,但由於近來許多專案在進行migration去ROS2.0,所以也有不少專案是使用colcon 編譯的,為了相容性,不過筆者我使用起來沒有感覺到跟catkin有太大的差異,因此簡單記錄一下,colcon編譯的命令也很簡單,一樣在workspace下:

$ colcon build

比較不一樣的是,編譯完以後會建立的資料夾,devel被刪去了,環境變數會被加在install內(setup.bash)。
參數有一個最重要的:

$ colcon build --packages-select <name-of-pkg>

也就是單一編譯特定package,這個功能筆者太常用了,但是每次要用都會記成select-package,所以一定要記在這XDDD

Reference

http://wiki.ros.org/catkin
https://catkin-tools.readthedocs.io/en/latest/index.html
https://huangwang.github.io/2019/06/06/ROS%E7%BC%96%E8%AF%91%E5%91%BD%E4%BB%A4catkin%E7%AE%80%E6%9E%90/
https://answers.ros.org/question/243192/catkin_make-vs-catkin-build/
https://colcon.readthedocs.io/en/released/reference/verb/build.html
https://design.ros2.org/articles/build_tool.html


上一篇
Day 10 - ROS中的CMakeList.txt (2)
下一篇
Day 12 - 大型專案共用ros master
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言