gpt4 book ai didi

c++ - 使用ros launch创建一个目录,然后将它的路径传递给不同的节点

转载 作者:行者123 更新时间:2023-11-28 05:24:14 24 4
gpt4 key购买 nike

在运行时(当我调用 roslaunch 时),我想在已知目录中创建一个新的子目录,并将该路径作为 rosparam 传递给两个不同的节点。

如何编辑我的 .launch 文件来执行此操作?

例如,我有文件夹~/datacapture。每当我使用 roslaunch 时,我都想根据当前时间创建一个子目录(即 ~/datacacpture/20161129_1352/)并使用 rosparams 将其传递到几个节点中。

为了进一步解释我想要做什么,这里有一个示例 roslaunch 文件:

<launch>
<node
name="node_A"
pkg="pkg_A"
type="A"
output="screen"
>
<param name="dataDumpFolder" value="???" />
</node>

<node
name="node_B"
pkg="pkg_B"
type="B"
output="screen"
>
<param name="dataDumpFolder" value="???" />
</node>
</launch>

我希望它看起来像这样:

<launch>
#1) create a new folder using current date.
#2) pass it's filepath into a variable. let's call the variable, NEW_FOLDER_FILE_PATH


<node
name="node_A"
pkg="pkg_A"
type="A"
output="screen"
>
<param name="dataDumpFolder" value="NEW_FOLDER_FILE_PATH" />
</node>

<node
name="node_B"
pkg="pkg_B"
type="B"
output="screen"
>
<param name="dataDumpFolder" value="NEW_FOLDER_FILE_PATH" />
</node>
</launch>

最佳答案

这在任何通用方式下都是不可能的。这也不是一个好主意,因为 (a) roslaunch 不是为此而设计的,并且 (b) 错误处理会很有趣。

如果有任何方法不需要共享文件夹名称,或者如果您可以预先确定它并将其作为参数传递给启动文件,或者如果您可以有一个提供文件名的节点(作为服务或通过 latched topic),这可能更可取。

也就是说,在 roslaunch 中执行此操作的最佳选择是编写一个小的 shell 脚本来创建所需的文件夹并将名称打印到标准输出。这允许您使用 <param name="dataDumpFolder" command="your script" /> .在使用该值之前,您可能需要删除一些空格。

关于c++ - 使用ros launch创建一个目录,然后将它的路径传递给不同的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com