Ubuntu下ROS中获取当前工作空间或包的路径方法

目的

针对需要调用本地文件的函数,这时需要提供本地文件的地址,而在ros中的执行文件并不在编写的cpp处,因此相对路径会导致寻找不到文件而报错。

然而,直接将绝对路径进行赋值搜索,当这个工作包放到别的电脑上时,这个路径就又错误了。

为了提供文件的可行性,我们需要找到一种自适应寻找绝对路径的方法。

方法

我们可以调用函数获取本工作包的位置,这样不同的电脑用户使用这个bag都是可以直接运行的。

1.引用ros/package.h

头文件中加入:

#include "ros/ros.h"
#include <ros/package.h>

2.函数内调用ros::package::getPath("your_bag_name'')

std::string package_path = ros::package::getPath("task_fsm");

3.在CMakeLists里加入依赖

在原有find_package内容的基础上添加roslib。

find_package(catkin REQUIRED COMPONENTS
  ...
  ...
  roslib
)

demo示例

#include "ros/ros.h"
#include <ros/package.h>

int main(int argc, char **argv) {
    // 初始化ROS节点
    ros::init(argc, argv, "my_node");

    std::string package_path = ros::package::getPath("task_fsm");
      
    std::cout <<package_path << std::endl;

    return 0;
}

这个demo获取task_fsm这一个bag的地址,并打印出来。后续根据需要处理这个字符串package_path就可以啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱夯66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值