はじめに
ROSでプログラムからパッケージのパスを取得する方法を記載します。
roslibというライブラリーを使うとそのようなことができるみたいです。
プログラム
- Pythonでパッケージのパス取得
get_path.py
#!/usr/bin/python3
import roslib.packages
pkg_name = 'roslib'
path = roslib.packages.get_pkg_dir(pkg_name)
print(path)
実行結果
$ rosrun get_package_path get_path.py
/opt/ros/noetic/share/roslib
- c++でパッケージのパス取得
get_path.cpp
#include <ros/package.h>
#include <iostream>
int main(int argc, char** argv) {
std::string package = "roslib";
std::string path = ros::package::getPath(package);
std::cout << path << std::endl;
return 0;
}
- 上記c++プログラムのcmakeファイル(※roslib依存)
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(get_ros_package_path)
find_package(catkin REQUIRED roslib)
catkin_package(
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(get_path src/get_path.cpp)
target_link_libraries(get_path
${catkin_LIBRARIES}
)
実行結果
$ rosrun get_package_path get_path
/opt/ros/noetic/share/roslib