[ROS] ROS 开发常见问题整理

在 ROS 开发过程中经常遇到一些很简单的问题,由于 ROS 文档比较少,所以也是一遍搜索一边整理。现将部分遇到过的问题整理在这里,也可能解决方法并非正确,仅供参考。如有问题欢迎留言补充。

1、Build 相关:
1)如何只编译单个 package?
使用 --pkg 参数即可,比如单个:

比如多个:

2、Package 相关:
1)依赖其他 package 怎么做?
有时候我们写得 packageA 依赖 packageB 的 message,如果我们不设置依赖的话,则会造成因为 packageB 没有在 packageA 之前编译完成而没有生成相应的 message。
有一个办法是在 packageA 的 package.xml 文件里面增加 packageB 的依赖定义如下:

再 build 一下,应该 packageB 会在 packageA 之前编译出来了。

3、Message 相关:
1)依赖其他 package 的 Message 怎么做?
有时候我们的 packageA 需要调用 packageB 的 message,但是如果这两个 package 是独立的话,我们是没有办法保证在 build 的时候 packageB 的 Message 一定能够在 packageA 编译之前生成。也就很有可能出现类似 cannot find header 的错误。

解决方法是:

步骤:1:编辑 packageA 的 CMakeList.txt 文件,在 find_package 部分增加类似如下内容:

步骤2:
在 packageA 的 package.xml 文件里面增加 packageB 的依赖定义如下:

再 Build 一下应该就可以了。

PS:在设计 package 之间依赖关系的时候,注意一定要避免循环依赖,比如 packageA 依赖 packageB,packageB 又依赖 packageA 这种,这样会因为两个 package 都在等待对方编译完成而整个工程无法编译。

参考文献:
[1] http://answers.ros.org/question/188982/message-headers-wont-build-first/

Add a Comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注