功能包和
功能包和
#功能包
##进⼊~/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的依赖项
##功能包的组成:
###l:
###:
ROS的构建系统catkin基本上使⽤CMake,并在功能包⽬录中的⽂件描述构建环境。在这个⽂件中设置可执⾏⽂件的创建,依赖包优先构建,连接器的创建等等。具体内容在后⾯。
###src:
存放节点代码的⽬录。
###include:
存放头⽂件的⽬录。
###launch:
很多功能还有launch⽬录。⽬录中的*.launch⽂件可以启动多个节点,还⽅便设置参数。
###msg和srv:
消息⽂件和头⽂件
####l
<?xml> 这是⼀个定义⽂档语法的语句,随后的内容表明在遵循xml版本1.0.
<package> 从这个语句到最后</package>的部分是ROS功能包的配置部分。
<name> 功能包的名称。使⽤创建功能包时输⼊的功能包名称。正如其他选项,⽤户可随时修改。
<version> 功能包的版本。可以⾃由指定
<description> 功能包的简要说明。
<maintainer> 提供功能包管理者的姓名和电⼦邮件地址
<license> 记录版权许可证
<url> 记录描述功能包的说明的地址。
<author> 记录参与功能包开发⼈员
<buildtool_depend> 描述构建系统的依赖关系。--catkin
<build_depend> 在编写功能包时写下您所依赖的功能包的名称
<run_depend> 填写运⾏功能包时依赖的功能包的名称
<test_depend> 填写测试功能包时依赖的功能包的名称
####
cmake_minimum_required(VERSION 2.8.3)
最低版本要求
project(test_pkg)
project项是功能包的名称,需要与l中的<name>⼀致。
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
find_package项是进⾏构建所需要的组建包。⽬前,roscpp和std_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.srv和Service2.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表⽰将使⽤随后⽽来的功能包的库。
cmake如何使用CATKIN_DEPENDS后⾯指定如roscpp或std_msgs等依赖包。⽬前的设是表⽰依赖于roscpp和std_msgs。DEPENDS是⼀个描述系统依赖包的设置。
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是在创建特定的可执⾏⽂件之前将库和可执⾏⽂件进⾏链接的选项。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。