ROS文件结构

ROS文件结构

ROS文件结构_第1张图片

catkin_ws 工作空间

Catkin工作空间是创建、修改、编译catkin软件包的目录。catkin的工作空间,直观的形容就是一个仓库,里面装载着ROS的各种项目工程,便于系统组织管理调用。在可视化图形界面里是一个文件夹。我们自己写的ROS代码通常就放在工作空间中。

build文件夹

catkin(CMake)的缓存信息和中间文件

devel文件夹

生成的目标文件(包括头文件,动态链接库,静态链接库,可执行文件等)、环境变量

src文件夹

ROS的catkin软件包(源代码包)

package文件夹

package是catkin工作空间的基本单元。包含以下文件及文件夹:

  • CMakeLists.txt

    • CMakeLists.txt简介:
      • 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分
      • 这个文件直接规定了这个package要依赖哪些package,要编译生成哪些目标,如何编译等等流程。所以CMakeLists.txt非常重要,它指定了由源码到目标文件的规则,catkin编译系统在工作时首先会找到每个package下的CMakeLists.txt,然后按照规则来编译构建。
    • CMakeLists.txt写法:
      • CMakeLists.txt的基本语法都还是按照CMake,而Catkin在其中加入了少量的宏:
作用
cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机
  • package.xml

    • package.xml简介:
      package.xml也是一个catkin的package必备文件,它是这个软件包的描述文件,在较早的ROS版本(rosbuild编译系统)中,文件叫做manifest.xml,用于描述pacakge的基本信息。

    • package.xml作用:

      • 1.pacakge.xml包含了package的名称、版本号、内容描述、维护人员、软件许可、编译构建工具、编译依赖、运行依赖等信息。
      • 2.rospack find、rosdep等命令之所以能快速定位和分析出package的依赖项信息,就是直接读取了每一个pacakge中的package.xml文件。
      • 3.它为用户提供了快速了解一个pacakge的渠道。
    • package.xml写法:
      pacakge.xml遵循xml标签文本的写法,在新版本中,包含的标签为:

    标签名 作用
    < pacakge > 根标记文件
    < pacakge > 根标记文件
    < name > 包名
    < version > 版本号
    < description > 内容描述
    < maintainer > 维护者
    < license > 软件许可证
    < buildtool_depend > 编译构建工具,通常为catkin
    < depend > 指定依赖项为编译、导出、运行需要的依赖,最常用
    < build_depend > 编译依赖项
    < build_export_depend > 导出依赖项
    < exec_depend > 运行依赖项
    < test_depend > 测试用例依赖项
    < doc_depend > 文档依赖项
  • scripts文件夹
    存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)

    • *.py
    • *.sh
  • include文件夹
    存放C++源码对应的头文件

    • *.h
  • src文件夹
    存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)

    • *.cpp
  • msg文件夹
    存放自定义格式的消息(.msg)

    • *.msg
  • srv文件夹
    存放自定义格式的服务(.srv)

    • *.srv
  • action文件夹
    存放自定义格式的动作(.action)

    • *.action
  • launch文件夹
    存放launch文件(.launch或.xml)

    • *.launch

你可能感兴趣的:(ROS学习)