ROS学习笔记1 —— 引用其他功能包中的消息文件

1. 同一文件级下对其他package中msg文件的引用

对于同一文件级下,A功能包引用B功能包中的消息:

方法1: 可直接通过添加依赖的方式解决.
catkin_create_pkg std_msgs roscpp rospy b_package

然后通过以下命令编译b_package:

catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'

a_package中新建*.cpp此时便可以自动加载出msg文件所对应的头文件了

最后,全局编译整个工作空间

 catkin_make -DCATKIN_WHITELIST_PACKAGES=''

方法2: 手动修改A_package文件夹中的CMakeLists.txtpackage.xml文件

首先在CMakeLists.txt文件中的find_package部分添加b_package,需要将以下代码取消注释(删除#):

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

然后在package.xml文件中添加以下代码,注意需要根据实际情况按相应的格式配置,不一定如下(博主ros版本为 ros kinetic 1.12.14):

 <build_depend>B_package</build_depend>
 <build_export_depend>B_package</build_export_depend>
 <exec_depend>B_package</exec_depend>

最后,同样需要先编译要引用文件的功能包b_package.

catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'

在这里插入图片描述

值得注意的是, 使用 catkin_make -DCATKIN_WHITELIST_PACKAGES='B_package'命令对指定功能包进行编译后,下次使用 catkin_make 命令编译整个工作空间时,系统会默认为此时编译的仍然是指定的B_package功能包,因此使用完 catkin_make -DCATKIN_WHITELIST_PACKAGES='B_package'命令后必须使用catkin_make -DCATKIN_WHITELIST_PACKAGES=''命令对工作空间进行全局编译.

注意注意: 在桌面新建的工作空间仍然无法使用此方法引用成功,必须在/桌面同级的/home目录下才能成功.

2. 引用不同文件级下的package中的msg文件

如下图所示,mico_ws工作空间下,mrrobot_demo功能包想引用kinova-ros文件夹下kinova_msgs功能包中的消息,从下图可以看出,kinova-ros文件夹中有若干功能包,但是没有CMakeLists.txt和package.xml文件,所以这只是一个单纯的文件夹,而并非是元功能包(包含若干功能包的功能包),其引用方法与同一文件级下对其他package中msg文件的引用 相同.

注意: 要想最简单的编译成功,也是需要先编译要引用消息文件所在的功能包,最后编译工作空间.

在这里插入图片描述
在这里插入图片描述

方法1: 可直接通过添加依赖的方式解决.
catkin_create_pkg std_msgs roscpp rospy b_package

然后通过以下命令编译b_package:

catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'

a_package中新建*.cpp此时便可以自动加载出msg文件所对应的头文件了

最后,全局编译整个工作空间

 catkin_make -DCATKIN_WHITELIST_PACKAGES=''

方法2: 手动修改A_package文件夹中的CMakeLists.txtpackage.xml文件

首先在CMakeLists.txt文件中的find_package部分添加b_package,需要将以下代码取消注释(删除#):

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

然后在package.xml文件中添加以下代码,注意需要根据实际情况按相应的格式配置,不一定如下(博主ros版本为 ros kinetic 1.12.14):

 <build_depend>B_package</build_depend>
 <build_export_depend>B_package</build_export_depend>
 <exec_depend>B_package</exec_depend>

最后,同样需要先编译要引用文件的功能包b_package.

catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'

3. 引用元功能包中某一功能包的消息文件

功能包a_package元功能包b_packages处于同一文件级src/下,a_package想引用b_packages中的c_package中的消息文件.

推测: 应该直接将元功能包Bs添加进依赖即可.
有时间测试
~~~~~~


4. 总结

  • 使用 catkin_make -DCATKIN_WHITELIST_PACKAGES='packageName'命令对指定功能包进行编译后,下次使用 catkin_make 命令编译整个工作空间时,系统会默认为此时编译的仍然是指定的packageName功能包,因此使用完 catkin_make -DCATKIN_WHITELIST_PACKAGES='B_package'命令后必须使用catkin_make -DCATKIN_WHITELIST_PACKAGES=''命令对工作空间进行全局编译.

  • 在桌面新建的工作空间仍然无法使用此方法引用成功,必须在/桌面同级的/home目录下才能成功.

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要创建一个ROS的launch文件,你可以按照以下步骤进行操作: 1. 首先,在你的ROS工作空间找到你想要创建launch文件功能。可以使用命令`cd <workspace>/src/<package_name>`进入该功能的目录。 2. 在功能的目录下创建一个名为`launch`的文件夹。你可以使用命令`mkdir launch`来创建。 3. 进入`launch`文件夹,使用文本编辑器创建一个新的launch文件。你可以使用命令`touch <launch_file_name>.launch`来创建一个空的launch文件。 4. 打开这个新创建的launch文件,并按照你的需求编写launch文件的内容。你可以参考ROS的launch文件语法和示例来编写你的launch文件。在launch文件,你可以指定要启动的节点、节点的参数配置以及节点之间的关系等。 5. 保存并关闭launch文件。 6. 现在,你可以使用`ros2 launch`命令来启动你的launch文件。使用命令`ros2 launch <package_name> <launch_file_name>`,将会启动整个系统,括所有在launch文件指定的节点和它们的配置。 总结起来,要创建一个ROS的launch文件,你需要在功能创建一个名为`launch`的文件夹,并在其创建一个launch文件。然后,按照你的需求编写launch文件的内容,并使用`ros2 launch`命令来启动该launch文件。 #### 引用[.reference_title] - *1* *3* [ROS2入门教程—创建一个launch文件](https://blog.csdn.net/qq_29923461/article/details/120404577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ROS学习(4)——launch文件的编写](https://blog.csdn.net/bulletstart/article/details/130794565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值