ROS学习笔记3:ROS 的文件工程结构(2) - package

package是什么

ROS软件的基本组织形式,catkin编译的基本单元。

一个package可以包含多个可执行文件(节点)

## 如何判断一个文件夹是package

一个功能包被catkin认为一个package必须有以下两个文件:

  • CMakeList.txt
  • package.xml

package中有什么

CMakeLists.txt

规定catkin编译的规则。

例如:如何编译,要编译哪些代码,需要哪些依赖、需要生成哪些目标文件、如何链接

CMakeLists.txt中的一些语句及其功能:

语句 功能
cmake_minimum_required() 指定catkin的最低版本
project() 指定软件包的名称
find_packege() 指定编译时需要的依赖项
add_message_files() 添加消息文件
add_service_files() 添加服务文件
add_action_files() 添加动作文件
generate_messages() 生成消息、服务、动作
catkin_package() 指定catkin信息给编译系统生成CMake文件
add_library() 指定生成库文件
add_executable() 指定生成可执行文件
target_link_libraries() 指定可执行文件去链接哪些库
catkin_add_gtest() 添加测试单元
install() 生成可安装目标

package.xml

定义了package的属性,例如包名、版本号、作者、依赖等。

写法:

扫描二维码关注公众号,回复: 11127034 查看本文章
<pakage>	<!--根标签-->
	<name>				<!--包名-->
    <version>			<!--版本号-->
    <description>		<!--包描述-->
    <maintainer>		<!--维护者-->
    <license>			<!--软件许可-->
    <buildtool_depend>	<!--编译工具-->
    <build_depend>		<!--编译时的依赖-->
    <run_depend>		<!--运行时的依赖-->
</pakage>    <!--根标签-->

代码文件

来源:

  • 脚本(shell, python)
  • C++(头文件、源文件)

一般将Python和shell脚本放到‘scripts’文件夹中,把C++头文件放到‘include’文件夹中,把C++源文件放在’src‘文件夹中(’src’文件夹中还可放可以被其他包import的Python文件)。

自定义的通信格式

消息(msg)、服务(srv)、动作(action),分别放在’/msg’、’/srv’、’/action’文件夹。
在这里插入图片描述

launch以及配置文件

  • launch文件:放置在’/launch’文件夹中,实现一次运行多个可执行文件
  • 配置文件(yaml):放置在’/config’,参数设置,一般用.yaml格式

package的文件组织

package的文件组织

常用包管理指令

  • rospack

    查找某个package的地址:

    rospack find package_name
    

    列出本地所有package:

    rospack list
    
  • roscd

    跳转到某个package路径下:

    roscd package_name
    
  • rosls

    列出某个package下的文件信息

    rosls package_name
    
  • rosed

    编辑package中的文件

    rosed package_name file_name
    
  • catkin_create_pkg

    创建一个package:

    catkin_create_pkg <pkg_name> [deps]
    
  • rosdep

    安装某个package所需的依赖(通常用来安装git clone下来的package的依赖)

    rosdep install [pkg_name]
    
发布了45 篇原创文章 · 获赞 1 · 访问量 2476

猜你喜欢

转载自blog.csdn.net/amnesiagreen/article/details/104279375