Используйте ros launch, чтобы создать каталог, а затем передать его путь различным узлам.

Во время выполнения (когда я вызываю 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>

0

Решение

Это невозможно каким-либо общим способом. Это также не очень хорошая идея, так как (а) roslaunch не предназначен для этого и (б) обработка ошибок будет интересной.

Если есть какой-либо способ не требовать имя общей папки, или вы можете предварительно определить его и передать его в файл запуска в качестве аргумента, или если у вас может быть узел, который предоставляет имя файла (как служба или через заблокированную тему) ), это может быть предпочтительнее.

Тем не менее, лучший вариант сделать это в roslaunch — это написать небольшой скрипт оболочки, который создает необходимую папку и печатает имя в stdout. Это позволяет вам использовать <param name="dataDumpFolder" command="your script" />, Возможно, вам придется удалить некоторые пробелы перед использованием значения.

1

Другие решения

Других решений пока нет …