1. 程式人生 > >ros入門之用catkin和rosmake建立和編譯功能包

ros入門之用catkin和rosmake建立和編譯功能包

初學ros機器人程式設計,從建立工作空間到編譯執行節點,由於linux也是初學,各種焦頭爛額,把這些最基礎的東西先總結下來,以備日後檢視。這是第一次寫部落格,倘若有諸多錯誤的地方,希望大家諒解並指出。寫這邊文章時,大部分是參考了下面幾篇博文:

1、在ros下建立工作空間:

mkdir -p catkin_ws/src  

cd src  

catkin_init_workspace  

cd ..  

catkin_make  

2、建立功能包
方法一:利用catkin建立package

cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

建立程式包的一般格式是catkin_create_pkg ,此命令的格式包括功能包名稱和依賴項,在上面示例中,依賴項包括std_msg、rospy和roscpp。
執行上面命令之後,在src資料夾下會生成一個與功能包名同名的資料夾,在該資料夾下有如下檔案(夾)

workspace_folder/
                 src/
                      package_name/   
                                include                   --資料夾
                                src                       --資料夾       
CMakeLists.txt package.xml

方法二:利用roscreate建立package

cd ~/catkin_ws/src
roscreate-pkg beginner_tutorials std_msgs rospy roscpp

同樣的,利用rosmake建立程式包的格式是roscreate-pkg ,此命令的格式也包括功能包名稱和依賴項。
執行上面命令之後,在src資料夾下會生成一個與功能包名同名的資料夾,在該資料夾下有如下檔案(夾)

workspace_folder/
                 src/
                      package_name/   
                                include                   --資料夾
                                src                       --資料夾       
                                CMakeLists.txt
                                manifest.xml 
                                mainpage.dox
                                Makefile

3、編譯功能包
方法一:利用catkin編譯
用catkin編譯的是上述第一種利用catkin建立的package,首先修改建立功能包時生成的CMakeLists.test檔案,用gedit開啟該檔案,
⑴新增以下語句來查詢新增的依賴包

find_package(catkin REQUIRED COMPONENTS
    sensor_msgs
    cv_bridge
    image_transport)
find_package(OpenCV 2 REQUIRED)
find_package(PLC REQUIRED)

⑵新增以下語句來新增參與編譯的節點程式

add_executable(node name src/node program)#新增可執行節點
target_link_libraries(node name ${catkin_LIBRARIES})#連結庫
add_dependencies(node name package name_generator_messages_cpp)#為可執行檔案新增對生成的訊息檔案的依賴,因為catkin把所有的package並行的編譯,所以如果你要使用其他catkin工作空間中其他package的訊息,你同樣也需要新增對他們各自生成的訊息檔案的依賴,感覺就是一個先匯入標頭檔案的過程。

除了可以在建立功能包時新增系統提供的依賴(catkin_create_pkg beginner_tutorials std_msgs rospy roscpp),也可以修改建立功能包時生成的package.xml檔案,以影象處理中所需用到的包為例,加入了以下指令來說明後面增加的依賴包

<run_depend>sensor_msgs</run_depend> 
<run_depend>image_transport</run_depend> 
<run_depend>cv_bridge</run_depend> 

利用catkin編譯的方法是:

#under workspace
catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

方法二:利用rosmake編譯
用rosmake編譯的是上述第二種利用roscreate建立的package,同樣的,在編譯之前,需要修改CMakeLists.txt檔案和manifest.xml檔案,不同的地方是在修改CMakeLists.txt檔案時需要加上如下語句來新增參與編譯的節點程式:

rosbuild_add_executable(node_name src/node_name.cpp)

注意:
ROS從indigo開始就不再把opencv作為系統依賴包而是作為一個第三方包引入,如果直接使用會在rosmake編譯階段報錯,no exist package “opencv2”,此時只需要在CMakeLists.txt中新增find_package(OpenCV 2 REQUIRED),然後在manifest.xml中不能新增依賴包,此處新增的為系統依賴包。
利用rosmkae編譯的方法是:

#under workspace
rosmake package_name

執行以上命令之後,如果編譯沒有出錯,在bin資料夾下可以看到生成的可執行檔案,可以直接執行./node_name來執行節點。
3、執行編譯完成之後的節點(不用launch,還不懂)

rosrun package_name node_name

注意:
1)建立功能包是在src目錄下,而編譯功能包是在workspace目錄下。
2)編譯之前要先確保添加了當前工作空間的path,檢視方法是:

echo $ROS_PACKAGE_PATH

新增方法是source setup.bash檔案

#under the path: workspace
source ./devel/setup.bash

3)執行節點之前要下roscore

相關推薦

ros入門catkinrosmake建立編譯功能

初學ros機器人程式設計,從建立工作空間到編譯執行節點,由於linux也是初學,各種焦頭爛額,把這些最基礎的東西先總結下來,以備日後檢視。這是第一次寫部落格,倘若有諸多錯誤的地方,希望大家諒解並指出。寫這邊文章時,大部分是參考了下面幾篇博文: 1、在ros

vsphere入門虛擬交換機創建並管理ESXI網絡

虛擬化 分布式交換機 標準交換機 楊書凡 esxi網絡管理 之前介紹了vSphere虛擬化平臺的ESXi和vCenter的部署方法。本篇博客主要介紹VMware vSphere的網絡管理,網絡是vSphere的基礎,所有ESXi的虛擬機都通過網絡來進行通信。通常在物理網絡中需要使用

Linux小小白入門教程(六):建立刪除資料夾

以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料

ROS入門基礎功能詳解(二)

前言:本部分主要介紹ros一些基礎功能的使用,包括建立和編譯工作空間,建立和編譯功能包,建立和編譯節點,建立和編譯訊息,建立和編譯服務以及建立launch檔案。 一、建立和編譯工作空間 1.檢視正在使用的工作空間: echo $ROS_PACKAGE_PATH -------------

資料結構筆記C++實現順序棧鏈式棧

這裡介紹兩種實現棧的方式:“順序棧”和“鏈式棧”,各有各的優缺點。 不管是“順序棧”還是“鏈式棧”,我們可以先定義一個棧的ADT(抽象資料型別),如下面的“stack.h” #ifndef STACK_H #define STACK_H const int

android簡單功能——sharedPreferences實現記住使用者名稱密碼

1.關於sharedPreferences:    SharedPreferences是Android系統中提供的一種使用鍵值對形式儲存資料的方式,特點是使用簡單方便,缺點是由於功能簡單,儲存的資料形式有限,只能用作簡單的資料儲存。由於SharedPreferences是一個

Java入門API的使用及String StringBuilder類的常見方法

API:學習JAVA幫助文件;使用步驟:1.開啟API文件;2.點選左上角顯示按鈕3.點選索引標籤,在輸入框內輸入你要學習的內容;學習一個新的類的步驟:1.看類的宣告:搞清楚這個類的一個修飾情況(繼承,實現)2.看類的說明:看這個類的功能描述;3.看類的構造方法摘要:瞭解建

Python語言學習講解十四:python純屬性取代getset方法

注:每週一到週五都會進行相關Python基礎知識更新,歡迎大家提寶貴的意見 一、從其他語言轉入python的開發者,一般可能在設計類的時候,在其中填寫get和set方法,用來獲取和設定類的成員屬性。

ROS入門helloROS(C++)

如何在ROS下寫一個簡單的helloWorld呢?首先要配置好基本的ROS程式設計環境,這個我就不說了,在ROS官網上有詳細的教程。然後進入ROS的工作空間,因為我的ROS版本用的時藍鯨機器人公司的映象版,所以進入的是cd ~/Doucments/ros/src再輸入catk

newdelete建立銷燬二維陣列

int** new_arry(int row, int col) {//建立arry【row】【col】 int**arry = (int**)new int*[row]; for (int i = 0;i < row;i++) { arry[i

使用jax-wsspring建立web容器共埠的webservice服務

本文介紹的webservice是建立在與spring整合的條件下【jdk自帶的webservices會佔用一個獨立的埠,通過這個方法配置不需要】 1、修改WEB.XML檔案,在spring的監聽器配置之後加上如下內容 <servlet> <servlet-name>JAXWS

Qt入門基礎篇 ( 二 ) :Qt項目建立編譯、運行發布過程解析

qt 5 對話 讓我 進度 qmake ctr deploy 設定 設置 轉載請註明出處:CN_Simo。 題解:   本篇內容主講Qt應用從創建到發布的整個過程,旨在幫助讀者能夠快速走進Qt的世界。   本來計劃是講解Qt源碼靜態編譯,如此的話讀者可能並不能清楚地知

10-Linux基礎入門(八)-文件目錄的屬性及權限戶與組時間戳基礎

log 信息 p s center 新浪 shell 使用 自己的 用戶配置 一、概述Linux是一個多用戶、多任務的操作系統,對於Linux系統來說,由於角色不同,權限和所完成的任務也不同。用戶的角色是通過UID和GID識別的,用戶的UID就相當於我們的身份證一樣,用戶名

VS2013/MFC程式設計入門七(對話方塊:建立對話方塊類新增控制元件變數)

前兩講中為大家講解了如何建立對話方塊資源。建立好對話方塊資源後要做的就是生成對話方塊類了。再宣告下,生成對話方塊類主要包括新建對話方塊類、新增控制元件變數和控制元件的訊息處理函式等。        因為給大家的例程Addition是基於對話方塊的程式,所以程式自動建立了

我的ROS學習路—建立catkin的工作空間

在ubuntu終端執行以下命令 1.  source /opt/ros/kinetic/setup.bash 2.  mkdir -p ~/catakin_ws/src   連續建立兩個目錄 3.  cd  ~/catakin_ws/src   進入目錄 4.  catk

R語言入門建立資料集——向量、矩陣、陣列、資料框列表

摘要 隨著大資料的火爆發展,適合資料分析及生成圖表的R語言也在“最受歡迎的程式語言”中上升到了17位。R語言的種種特性令其十分易於進行資料分析,並因其能通過簡短的程式碼生成一目瞭然的圖令眾多資料分析師垂涎三尺。進行資料分析的第一步是先拿到資料,本文就簡單描

C++語言new不用new建立類物件區別

起初剛學C++時,很不習慣用new,後來看老外的程式,發現幾乎都是使用new,想一想區別也不是太大,但是在大一點的專案設計中,有時候不使用new的確會帶來很多問題。當然這都是跟new的用法有關的。new建立類物件,使用完後需使用delete刪除,跟申請記憶體類似。所以,new有時候又不太適合,比如在頻繁呼

ROS入門_1.13 建立ROS訊息ROS服務

1. 訊息(msg)和服務(srv)介紹 訊息(msg): msg檔案就是一個描述ROS中所使用訊息型別的簡單文字。它們會被用來生成不同語言的原始碼。 服務(srv): 一個srv檔案描述一項服務。它包含兩個部分:請求和響應。 msg檔案存放在package的msg目錄下,srv檔案則存放在s

Android基礎Eclipse搭建Android開發環境建立第一個Android專案(Windows平臺)

一、搭建Android開發環境 準備工作:下載Eclipse、JDK、Android SDK、ADT外掛        1、安裝和配置JAVA開發環境:            ①把準備好的Eclipse和JDK安裝到本機上(最好安裝在全英文路徑下),並給JD

Ubuntu建立刪除

user ubuntu adduser nbsp add useradd use xxx 普通用戶 添加用戶: sudo adduser xxx 這樣的命令會在home目錄下添加一個帳號 sudo useradd xxx 僅僅是添加用戶, 不會在home目錄添加帳號 刪