ROS 構建系統

2021-08-16 12:41:50 字數 2365 閱讀 3513

序言

ros使用catkin構建系統,可以輕鬆使用與ros相關的構建、功能包管理和功能包之間的依賴關係。它實際上是一種cmake(cross platform make),可以跨平台使用,使用cmakelists.txt描述。

1、建立功能包

命令:

$ catkin_create_pkg [功能包名稱][依賴功能包1][依賴功能包n]
include 	 → include 目錄

src → 源**目錄

cmakelists.txt → 構建配置檔案

package.xml → 功能包配置檔案

2、修改功能包配置檔案

package.xml是ros必要的配置檔案,它包含功能包資訊,包括功能包名稱、作者、許可證和依賴功能包。

開啟package.xml文件,你會看到如下的資訊

<?xml version="1.0"?>

my_first_ros_pkg

0.0.0

the my_first_ros_pkg package

gong

todo

catkin

roscpp

std_msgs

roscpp

std_msgs

roscpp

std_msgs

對每個語句進行說明<****>與是一對,其中的內容為針對這部分的說明。

有些地方講的還是有些模糊,如build_depend和build_export_depend

是傻傻分不清楚,可以參考官方文件。

3、構建配置檔案

ros在功能包目錄中的cmakelist.txt檔案中描述構建環境,其中可以設定可執行檔案的建立、依賴包優先構建、聯結器(linker)的建立等等。

add_***x_files (

files

***x1.***

***x1.***

)

其中***x可以是message、service、actions,***對應msg、srv、action。新增要使用的對應的目錄下的檔案的選項。

generate_messages(

dependencies

std_msgs

}

generate_messages是設定依賴的訊息的選項。此示例是將dependencies選項設定為使用std_msgs訊息包。

generate_dynamic_reconfigure_options(

cfg/dynreconf1.cfg

cfg/dynreconf2.cfg

}

使用動態配置引數時,要載入的cfg資料夾下的配置檔案設定。   

include_directories(

$)

include_directories是可以指定包含目錄的選項。

add_library($

src/$/my_first_ros_pkg.cpp

)

add_library宣告構建之後需要建立的庫。

add_dependencies($ $_exported_targets} $)
add_dependencies增加的是在**生成庫之前,有一些依賴需要提前生成,如訊息生成或者動態的引數。

add_executable($_node src/my_first_ros_pkg_node.cpp)
add_executable是對於構建之後要建立的可執行檔案的選項,用於配置生成庫的c++檔案。

set_target_properties($_node properties output_name node prefix "")
用來對c++生成的可執行檔案重新命名,簡化操作,如使用"rosrun someones_pkg node" 代替"rosrun someones_pkg someones_pkg_node"   。

add_dependencies($_node $_exported_targets} $)
新增可執行檔案的依賴項,與上面的庫相同。

target_link_libraries($_node

$)

target_link_libraries是在建立特定的可執行檔案之前將庫和可執行檔案進行鏈結的選項。

構建ROS系統及RikiRobot的開發環境

1執行rikirobot setup資料夾中的兩個檔案 sh dev tools install.sh sh ros packages install.sh 2將rikirobot小車的src 內的資料夾拷貝到自己的src內。執行rospack profile 3執行sudo apt get ins...

ROS 總結(一) ROS系統框架

ros的系統主要被分成了三部分 檔案系統級 程式是如何組織和構建的,需要的核心檔案 計算圖級 描述程式是如何執行的,程序和系統之間如何通訊 開源社群級 程式的分布式管理方式,開發人員之間如何共享知識 演算法和 ros系統的不同元件被放在不同的功能資料夾下。這些資料夾根據功能的不同來對檔案進行組織 功...

ROS座標系統

1.ros的三軸方向是根據右手法則來確定的,如下圖所示,三個手指的分別代指x,y,z,x為正前方,y為左面,z為上方。2.ros每個軸的轉向是根據右手來確定的。如下圖所示,當我們的拇指代指為x,y,z任意乙個軸時,逆時針就是這個軸的正向轉向。3.此外,ros的線速度總是以公尺每秒 m s 為單位,角...