ROS中在一个包里引用其他包内的自定义消息或服务

假设我们要在a_package中引用b_package里自定义的my_message.msg.

方法1: 可直接通过添加依赖的方式解决.

首先在创建包时添加b_package:
catkin_create_pkg std_msgs roscpp rospy b_package
然后通过以下命令编译b_package:
catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'
之后在a_package中新建的程序此时便可以自动加载出msg文件所对应的头文件了.
最后,全局编译整个工作空间:
catkin_make -DCATKIN_WHITELIST_PACKAGES=''
注:方法1暂未实践

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

首先在a_package的CMakeLists.txt文件中的find_package部分添加b_package:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  b_package  #添加这一条
)

然后将以下代码取消注释(删除#):

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

然后在package.xml文件中添加以下代码,注意需要根据实际情况按相应的格式配置:

<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'
最后编译a_package即可.
注:方法2已实践有效

最后在a_package中需要使用自定义消息的地方 #include b包生成出的消息头文件即可进行消息使用。( 感谢@zhengbanmozhu 补充)

参考博客: https://blog.csdn.net/weixin_43455581/article/details/96168042

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值