Loading

功能包和CMakeLists.txt

功能包和CMakeLists.txt

#功能包

##进入~/catkin_ws/src目录:

cd ~/catkin_ws/src


##创建功能包:

catkin_create_pkg package_name depend1 depend2


*package_name:功能包名字

*depend*:依赖


catkin_create_pkg test_pkg std_msgs roscpp


*std_msgs:包含消息类型----节点上功能包的基本单位,而std_msgs是节点间通信所需的库

*roscpp:支持C++编程的库---ros支持多种编程语言,如使用python编程则需添加rospy的依赖项

##功能包的组成:

 

 

###package.xml:

package.xml是用来描述此功能包的信息,包含功能包名称、作者、许可证和依赖功能包。具体信息在后面

###CmakeLists.txt:

ROS的构建系统catkin基本上使用CMake,并在功能包目录中的CMakeList.txt文件描述构建环境。在这个文件中设置可执行文件的创建,依赖包优先构建,连接器的创建等等。具体内容在后面。

###src:

存放节点代码的目录。

###include

存放头文件的目录。

###launch:

很多功能还有launch目录。目录中的*.launch文件可以启动多个节点,还方便设置参数。

###msgsrv:

消息文件和头文件


####package.xml

<?xml> 这是一个定义文档语法的语句,随后的内容表明在遵循xml版本1.0.


<package> 从这个语句到最后</package>的部分是ROS功能包的配置部分。


<name> 功能包的名称。使用创建功能包时输入的功能包名称。正如其他选项,用户可随时修改。


<version> 功能包的版本。可以自由指定


<description> 功能包的简要说明。


<maintainer> 提供功能包管理者的姓名和电子邮件地址


<license> 记录版权许可证


<url> 记录描述功能包的说明的地址。


<author> 记录参与功能包开发人员


<buildtool_depend> 描述构建系统的依赖关系。--catkin


<build_depend> 在编写功能包时写下您所依赖的功能包的名称


<run_depend> 填写运行功能包时依赖的功能包的名称


<test_depend> 填写测试功能包时依赖的功能包的名称


 







####CmakeLists.txt


cmake_minimum_required(VERSION 2.8.3)

最低版本要求


project(test_pkg)

project项是功能包的名称,需要与package.xml中的<name>一致。


find_package(catkin REQUIRED COMPONENTS

roscpp

std_msgs

)

find_package项是进行构建所需要的组建包。目前,roscppstd_msgs被添加为依赖包。


catkin_python_setup()

catkin_python_setup()选项是在使用python,也就是使用rospy时的配置选项。

其功能是调用python安装过程setup.py


add _ message _ files (

FILES

Message1 . msg

Message2 . msg

)

add_message_files是添加消息文件的选项。FILES将引用当前功能包目录的msg目录中的*.msg文件,自动生成一个头文件(*.h)


add _ service _ files (

FILES

Service1 . srv

Service2 . srv

)

add_service_files是添加要使用的服务文件的选项。使用FILES会引用功能包目录中的srv目录中的*.srv文件。在这个例子中,用户可以选择使用服务文件Service1.srvService2.srv



generate _ messages (

DEPENDENCIES

std_msgs

)

generate_messages是设置依赖的消息的选项。此示例是DEPENDENCIES选项设置为使用std_msgs消息包。



catkin _ package (

INCLUDE _ DIRS include

LIBRARIES test_ pkg

CATKIN _ DEPENDS roscpp std _ msgs

DEPENDS system _ lib

)

catkin 构建选项。INCLUDE_DIRS表示将使用INCLUDE_DIRS后面的内部目录include的头文件。LIBRARIES表示将使用随后而来的功能包的库。

CATKIN_DEPENDS后面指定如roscppstd_msgs等依赖包。目前的设是表示依赖于roscppstd_msgsDEPENDS是一个描述系统依赖包的设置。




include _ directories (

${ catkin _ INCLUDE _ DIRS }

)

include_directories是可以指定包含目录的选项。目前设定为${catkin_INCLUDE_DIRS},这意味着将引用每个功能包中的include目录中的头文件。当用户想指定一个额外的include目录时,写在${catkin_INCLUDE_DIRS}的下一行即可。



add _ library ( test_ pkg

src /${ PROJECT _ NAME }/ test . cpp

)



add _ executable ( test_ pkg _ node src / test _ node . Cpp )


add_executable是对于构建之后要创建的可执行文件的选项




target _ link _ libraries (test _ pkg _ node

${ catkin _ LIBRARIES }

)

target_link_libraries是在创建特定的可执行文件之前将库和可执行文件进行链接的选项。

 

posted @ 2021-02-04 11:08  海边的某某某  阅读(208)  评论(0编辑  收藏  举报