代码之家  ›  专栏  ›  技术社区  ›  CodeMonkey

如何相对于启动文件引用yaml文件?

  •  0
  • CodeMonkey  · 技术社区  · 6 年前

    我有一个正在加载yaml文件的启动文件:

    <launch>
        <rosparam command="load file="filename.yaml" />
        <node pkg="my_package" type="my_package_node" name="my_package_node" />
    </launch>
    

    除非输入完整的路径:“/home/username/blah/blah/blah”,否则找不到filename.yaml文件。由于这个启动文件由不同的用户和存储库的位置在多台计算机上使用,所以我显然无法硬编码路径。那么现在怎么办?如何相对于启动文件的位置引用它?

    4 回复  |  直到 5 年前
        1
  •  1
  •   CodeMonkey    6 年前

    <launch>
        <rosparam command="load file="$(find package_name)/../../yamlFolder/filename.yaml" />
        <node pkg="my_package" type="my_package_node" name="my_package_node" />
    </launch>
    

        2
  •  1
  •   Mohammad Ali    6 年前

    $(find package)

        3
  •  0
  •   adamconkey    6 年前

    find environment variables

    <launch>
      <arg name="yaml_path" default="$(optenv YAML_PATH)"/>
      <arg     if="$(eval yaml_path == '')" name="yaml_file" value="$(env HOME)/some_folder/filename.yaml" />
      <arg unless="$(eval yaml_path == '')" name="yaml_file" value="$(arg yaml_path)/filename.yaml"/>
      <rosparam command="load" file="$(arg yaml_file)"/>
    </launch>
    

    YAML_PATH export YAML_PATH="$HOME/some_path" yaml_file optenv

    roslaunch my_launch_file.launch yaml_path:=/home/my_name/my_preferred_folder
    
        4
  •  0
  •   neurobot    5 年前

    <arg name="rviz_file" value="$(eval env('PWD')+'/config/showme.rviz')"/>
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rviz_file)" required="true" />