建立乙個ROS包

2022-04-10 15:23:41 字數 3347 閱讀 4761

先前筆者不知道catkin到底是個什麼東東,後來終於在官方**上找到了答案,原來catkin是ros的乙個官方的編譯構建系統,是原本的ros的編譯構建系統rosbuild的後繼者。catkin的**有點複雜,我們可以慢慢的講一下其中的淵源。ros**於willow garage這個公司,他們希望借助開源的力量,使ros發揚光大。而在英語中,willow的意思是柳樹,catkin是柳絮的意思,為了紀念的作用吧,因而為這個軟體命名為catkin。

這篇部落格的主要內容是介紹如何使用catkin建立乙個ros包。乙個catkin的包主要有以下幾部分組成:(1)必須包括乙個package.xml檔案,(2)必須包括乙個cmakelists.txt檔案,(3)在每乙個資料夾下只能有乙個包,且包不允許巢狀。乙個最簡單的包類似於如下的形式:

my_package/cmakelists.txt

package.xml

workspace_folder/        --workspace

src/ --source space

cmakelists.txt

-- '

toplevel

'

cmake file, provided by catkin

package_1

/
cmakelists.txt     

-- cmakelists.txt file for

package_1 package.xml

-- package manifest for

package_1

...package_n

/
cmakelists.txt     

-- cmakelists.txt file for

package_n package.xml -- package manifest for package_n

我們之前已經建立過乙個空的工作空間:catkin_ws,下面我們來看一下如何在乙個工作空間中建立乙個包。在建立乙個catkin包時需要使用catkin_create_pkg指令碼。

首先進入到目錄~/catkin_ws/src下,使用如下命令:

cd ~/catkin_ws/src

接著建立乙個名字為beginner_tutorials的包,它直接依賴於以下三個包:std_msgs,rospy以及roscpp,使用如下命令:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

在建立的beginner_tutorials資料夾下可以看到package.xml和cmakelists.txt。catkin_create_pkg要求您給出包的名字,及選擇性的給出所建立的包依賴於哪乙個包。他的使用方法如下:

catkin_create_pkg [depend1] [depend2] [depend3]

這樣,我們的乙個包就建立好了,我們可能會需要對包之間的依賴性做一下解釋。我們可以使用rospack命令來檢視包之間的依賴關係。檢視直接依賴關係:

rospack depends1 beginner_tutorials

可以看到,返回的結果正是我們使用catkin_create_pkg時,所使用的引數。我們還可以直接在beginner_tutorials包下的package.xml中檢視包的依賴關係。使用命令:

roscd beginner_tutorials

cat package.xml

結果如下:

...

catkin

roscpp

rospy

std_msgs...

在通常情況下,乙個包所依賴的包又會依賴許多其它的包,這稱為間接依賴。我們使用如下命令來檢視rospy依賴的包:

rospack depends1 rospy

返回結果如下:

genpy

rosgraph

rosgraph_msgs

roslib

std_msgs

乙個包可以有很多的間接依賴關係,我們可以使用命令:

rospack depends beginner_tutorials

來進行檢視。返回結果如下:

cpp_common

rostime

roscpp_traits

roscpp_serialization

genmsg

genpy

message_runtime

rosconsole

std_msgs

rosgraph_msgs

xmlrpcpp

roscpp

rosgraph

catkin

rospack

roslib

rospy

接下來配置您的package.xml包,我們將會乙個標籤乙個標籤的分析這個xml檔案。首先是description標籤:

the beginner_tutorials package

在這個標籤中的內容可以改變為任何的內容,不過一般是對這個包的乙個簡述,盡量簡單就行。

接下來是maintainer標籤:

"[email protected]

">user

這是乙個很重要的標籤,因為可以根據這個標籤知道它的維護者,另外標籤的email屬性也是必須的,可有多個maintainer標籤。

接下來是license標籤:

todo

在後面的使用中,一般我們將license修改為bsd。

接下來是依賴性的標籤:

catkin

roscpp

rospy

std_msgs

我們向裡面新增了run_depend:

roscpp

rospy

std_msgs

好了,經過以上的步驟,我們的package.xml已經配置好了。

注意:其中的這裡是注釋內容-->,乙個package.xml中其實沒有多少東西,大部分的都是注釋資訊。

總結:這部分主要講解了ros包的建立方法和包的依賴性的查詢,同時講解了包的清單檔案package.xml的各個標籤的意義。

03 建立乙個ROS的Package包

package包的基本要求 1 包必須包含乙個package.xml檔案。提供關於包的元資訊資料 2 包必須包含乙個cmakelists.txt檔案。提供cmake編譯的元資訊資料 3 每個目錄下只能有乙個程式包。這意味著在同乙個目錄下不能有巢狀的或者多個程式包存在 package包是在worksp...

建立乙個ROS節點

mkdir p catkin ws srccd catkin ws src現在使用catkin create pkg命令來建立乙個名為 beginner tutorials 的新程式包,這個程式包依賴於std msgs roscpp和rospy catkin create pkg beginner ...

04 編譯乙個ROS包

1 記得事先source你的環境配置 setup 檔案,在ubuntu中的操作指令如下 source opt ros groovy setup.bash 也可以在 bashrc配置檔案進行配置 2 catkin make 是乙個命令列工具,它簡化了catkin的標準工作流程。你可以認為catkin ...