ROS определение универсального каталога - PullRequest
0 голосов
/ 13 апреля 2020

Я работаю с исполняемыми файлами, которые должны быть включены в файл основного узла. Но проблема в том, что, хотя я могу определить путь в своем P C и открыть текстовый файл с файлом или выполнить его, но он не универсален с другими членами моей команды, которые являются частью команды. Необходимо изменить код после вытягивания с git.

У меня есть следующие команды:

    os.chdir( "/home/user/epsilon/epsilon_catkin_ws/src/knowledge_source/sense_manager/pddl_files/")

    os.system("./ff -p /home/user/epsilon/epsilon_catkin_ws/src/knowledge_source/sense_manager/pddl_files/ -o domain.pddl -f problem.pddl >

    solution_path = "/home/user/epsilon/epsilon_catkin_ws/src/knowledge_source/sense_manager/pddl_files/solution.txt" solution_detail.txt")

Поскольку этот путь уникален для моего ноутбука, он потребует изменений от всех. Есть ли способ сделать определение пути универсальным? (Команды являются частью служебного вызова, который присутствует в этом узле). Я использую rosrun для запуска узла

Я попробовал следующий шаблон, но он не работает:

    os.chdir( "$(find knowledge_source)/sense_manager/pddl_files/")


Нужно ли сделать что-то дополнительное, чтобы сделать эту работу? знание_источника это название пакета

Любые рекомендации?

1 Ответ

0 голосов
/ 17 апреля 2020

Я думаю, вы ищете комбинацию rospkg и os, чтобы получить путь к файлу внутри пакета ros.

import rospkg
import os
conf_file_path = os.path.join(rospkg.RosPack().get_path('your_ros_pkg'), 'your_folder_in_the_package', 'your_file_name')
...