ROS学习4 - ROS的文件系统

1. ROS的文件系统

硬盘上,ROS源代码的组织形式。
在这里插入图片描述

  • 自定义的工作空间
    • devel:开发空间。存放编译后生成的目标文件(头文件,可执行文件,动态、静态链接库…)
    • build:编译空间。存放CMake和catkin的缓存信息、配置信息和其他中间文件。
    • src:源码
      • CMakeLists.txt工作空间编译的规则
      • 功能包(ROS基本单元)。包含多个节点、库与配置文件;包名所有字母小写,只能由字母、数字与下划线组成
        • 配置文件
          • CMakeLists.txt功能包编译的规则,比如源文件依赖项目标文件
          • Package.xml包信息,比如:包名版本作者依赖项
        • 源文件
          • src:c++源文件
          • scripts:python文件
        • 通信机制 (ROS的学习核心
          • msg消息通信格式文件
          • srv话题通信格式文件
          • action行动格式文件
        • 其他
          • include:头文件
          • config:配置信息
          • launch:同时运行多个节点的.launch文件

2. package.xml配置文件

(1)自动生成的,以后需要手动修改
(2)位置:hello功能包下
(3)该文件定义有关软件包的属性,例如软件包名称版本号,作者,维护者以及对其他catkin软件包的依赖性。

<?xml version="1.0"?>
<package format="2">
  <!-- 功能包名称 -->
  <name>hello</name>
  <!-- 版本 -->
  <version>0.0.0</version>
  <!-- 描述信息 -->
  <description>The hello package</description>

  <!-- One maintainer tag required, multiple allowed, one person per tag -->
  <!-- Example:  -->
  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  <!-- 维护者信息 -->
  <maintainer email="xiaoyue@todo.todo">xiaoyue</maintainer>


  <!-- One license tag required, multiple allowed, one license per tag -->
  <!-- Commonly used license strings: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <!-- 许可证信息,ROS和新组建默认BSD -->
  <license>TODO</license>

  <!-- 功能包编译时,使用的编译工具 -->
  <buildtool_depend>catkin</buildtool_depend>
  <!-- 编译时,依赖的功能包 -->
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <!-- 根据功能包构建库所需要依赖的功能包 -->
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <!-- 执行依赖:运行程序包中的代码所需的程序包 -->
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>


  <!-- The export tag contains other, unspecified, tags -->
  <export>
    <!-- Other tools can request additional information be placed here -->

  </export>
</package>

3. CMakeLists.txt配置文件

(1)CMakeLists.txtCMake构建系统的输入,用于构建软件包
(2)任何兼容CMake的软件包都包含一个或多个CMakeLists.txt文件,这些文件描述了如何构建代码以及将代码安装到何处

cmake_minimum_required(VERSION 3.0.2) #所需 cmake 最低版本
project(hello) #功能包名称,会被 ${PROJECT_NAME} 的方式调用

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

# 编译功能包(即构建功能包)时,依赖的外部包实现。
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

#默认添加系统依赖
# find_package(Boost REQUIRED COMPONENTS system)

# 启动 python 模块支持
# catkin_python_setup()

###################################
## catkin specific configuration ##
## catkin 特定配置##
###################################
# 运行时依赖
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo01_hello_vscode
#  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
)

###########
## Build ##
###########

# 添加头文件路径,当前程序包的头文件路径位于其他文件路径之前
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

## Declare a C++ library
# 声明 C++# add_library(${PROJECT_NAME}
#   src/${PROJECT_NAME}/demo01_hello_vscode.cpp
# )

# 添加库的 cmake 目标依赖
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

# 添加 C++ 可执行文件
add_executable(helloc src/helloc.cpp)

#重命名c++可执行文件
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

#添加可执行文件的 cmake 目标依赖
add_dependencies(Hello_VSCode ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

#指定库、可执行文件的链接库
target_link_libraries(helloc
  ${catkin_LIBRARIES}
)


#############
## Install ##
## 安装 ##
#############

#配置scripts文件夹下的hellop.py文件 :1.指定解释器 2.正确安装.py脚本
catkin_install_python(PROGRAMS
  scripts/hellop.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值