2016-11-30 6 views
0

Zur Laufzeit (wenn ich Roslaunch aufrufen), ich möchte ein neues Unterverzeichnis in einem bekannten Verzeichnis erstellen, und diesen Pfad an zwei verschiedene Knoten als rosparam übergeben .Verwenden Sie ros Start, um ein Verzeichnis zu erstellen und dann den Pfad zu verschiedenen Knoten

Wie kann ich meine .launch-Datei bearbeiten, um dies zu tun?

Zum Beispiel habe ich den Ordner ~/datacapture. Immer wenn ich roslaunch benutze, möchte ich ein Unterverzeichnis basierend auf der aktuellen Zeit erstellen (zB ~/datacacpture/20161129_1352/) und dieses mit rosparams an ein paar Knoten übergeben.

Um zu erklären, was ich hier tun möchte, ist ein Beispiel roslaunch Datei:

<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> 

Was ich will es wie dies aussehen:

<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> 
+2

Es scheint ein einfacherer Weg zu sein, ein Shell-Skript zu schreiben, das den Ordner mit einem passenden Namen erstellt, und dann 'roslaunch' auf einer [parametrisierten Startdatei] (http://wiki.ros.org/roslaunch) aufruft/XML/arg). – mikkola

Antwort

1

Dies ist in jeder nicht möglich generische Art und Weise. Es ist auch keine gute Idee, da (a) roslaunch nicht dafür gedacht war und (b) die Fehlerbehandlung interessant sein wird.

Wenn es einen Weg gibt, keinen freigegebenen Ordnernamen zu benötigen, oder wenn Sie ihn vorab bestimmen und als Argument an die Startdatei übergeben könnten, oder wenn Sie einen Knoten haben könnten, der den Dateinamen bereitstellt (als Dienst) oder über zwischengespeicherte Themen), dies kann vorzuziehen sein.

Die beste Option, dies innerhalb von Roslaunch zu tun, ist ein kleines Shell-Skript zu schreiben, das den erforderlichen Ordner erstellt und den Namen nach stdout druckt. Dies ermöglicht Ihnen die Verwendung von <param name="dataDumpFolder" command="your script" />. Möglicherweise müssen Sie einige Leerzeichen entfernen, bevor Sie den Wert verwenden.

Verwandte Themen