ROS2 python节点位置

Posted

技术标签:

【中文标题】ROS2 python节点位置【英文标题】:ROS2 python node location 【发布时间】:2021-05-19 14:03:50 【问题描述】:

我想创建一个 python ros2 节点,它从 csv 文件中读取一些数据然后使用它,这个 csv 文件放在目录中 :workspace/src// 旁边的 ros2 python 节点

当我从这个目录运行这个节点时它工作正常,但是当我使用 colcon build 构建 pkg 并使用 ros2 运行这个节点时运行 没有这样的文件或目录会产生错误

解决方案是在我打开 csv 时放置完整路径

但我在这里的问题是如何不能使用完整路径并仍然使其工作,当我使用 colcon build 工作时,我的节点在哪里被复制,或者我可以使用哪些特定于 ros2 的内部变量

    #with open("/home/ali/Engineering/ITI/low_speed_self_driving_vehicles/ROS_lectures/GWS/src/iti_lab_9/iti_lab_9/turtle_commands.csv",'r', newline='') as csvfile:
    with open("turtle_commands.csv",'r', newline='') as csvfile:
        csvread = csv.reader(csvfile, delimiter=',')
        next(csvread)
        for row in csvread:
            self.linear_x.append(float(row[0]))
            self.angular_z.append(float(row[1]))
    self.index=0

【问题讨论】:

【参考方案1】:

因为当您启动包时,启动路径很可能不在 csv 旁边。

您可以将其添加到您的脚本中

import os

def path_script():
    _path = os.path.dirname(os.path.abspath(__file__))
    _path = _path.replace('\\', '/')
    return _path

path_script()

检查一下。

【讨论】:

以上是关于ROS2 python节点位置的主要内容,如果未能解决你的问题,请参考以下文章

ROS2极简总结-SLAM

python--通过xpath相对节点位置查找元素(续)

如何使用 ROS 2 在 python 节点中发布批量图像?

ROS2学习笔记3--认识ros2节点node

如何在 ROS2 中启动带参数的节点?

ROS2极简总结-MoveIt2