如何从工作区外部构建基于 ROS2 的应用程序

Posted

技术标签:

【中文标题】如何从工作区外部构建基于 ROS2 的应用程序【英文标题】:How to build ROS2 based application from outside of workspace 【发布时间】:2018-09-04 10:49:50 【问题描述】:

我创建了一个可以通过 cmake 构建的 qt 应用程序。我的应用程序使用了一些 ros2 服务,所以我需要用 ros 构建它。为此,我需要将我的代码放在 ros2_ws/src/ 下。我想避免这件事。我想使用 ament 工具从任何文件夹(不放在 ros2_wc 下)通过应用程序构建。我该怎么做?

【问题讨论】:

【参考方案1】:

如果你想这样做,你需要像往常一样构建 ROS2,并获取以下脚本:

. install/local_setup.bash

然后你可以使用你想要的目录中的 ament 调用你的构建命令。

cd <dir>
ament build --force-cmake-configure ...

【讨论】:

【参考方案2】:

对于那些正在使用新的 ros2 构建工具的人:colcon

你可以自己保留~/ros2_ws,把QT应用放到另一个~/ros2_overlay_ws.

例如,如果您的新 QT 应用程序依赖于位于原始~/ros2_ws 中的某些服务或消息,您可以转到~/ros2_ws 并运行colcon build。 编译完成后,请记住通过以下命令导入并重新索引您的包:source ~/ros2_ws/install/setup.bash。这将在当前终端重新索引您的 ros2 包。

现在转到~/ros2_overlay_ws/ 并将您的QT 应用程序放入~/ros2_overlay_ws/src,然后运行colcon build。 colcon 将找到您的索引包并将它们添加到您的依赖项中。

【讨论】:

以上是关于如何从工作区外部构建基于 ROS2 的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Confluence 6 从外部目录中同步数据如何工作

ROS2极简总结-文件系统

ROS2 python节点位置

如何从嵌套组件发出,同时保持引用函数外部变量的能力

如何使用 webpack 从项目根目录导入外部文件?

基于Flink构建实时数据仓库