Receiving ImportError trying to import custom service file to service server node

问题描述 投票:0回答:0

我正在尝试构建一个 ROS2 网络,其中服务服务器节点从 sensor.py 脚本读取数据并将其提供给自定义服务。当我尝试从我所在的包文件夹中导入我的 .srv 文件时,我收到一条错误消息

bin/python3 /home/name/ros2_ws/src/dof_filter_service_pkg/dof_filter_service_pkg/service_server.py
Traceback (most recent call last):
  File "/home/name/ros2_ws/src/dof_filter_service_pkg/dof_filter_service_pkg/service_server.py", line 7, in <module>
    from dof_filter_service_pkg import dof_filter
ImportError: cannot import name 'dof_filter' from 'dof_filter_service_pkg' (/home/name/ros2_ws/install/dof_filter_service_pkg/lib/python3.10/site-packages/dof_filter_service_pkg/__init__.py)

这是我的 service_server.py 文件的设置:

import rclpy
import numpy as np
import socket
import time

from rclpy.node import Node
from dof_filter_service_pkg import dof_filter

class ServiceServer(Node):
    def __init__(self):
        super().__init__('service_server')
        self.service = self.create_service(dof_filter, 'service_server_topic',self.service_callback)


这是我在 srv 文件夹中的 dof_filter.srv 文件

# service_client sends an empty request
# number_of_samples is a fixed amount handled in service_server

---

# Response message:

float32 filtered_data



我的 package.xml 文件:

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>dof_filter_service_pkg</name>
  <version>0.0.0</version>
  <description>3-DOF ROS2 Package</description>
  <maintainer email="[email protected]">name</maintainer>
  <license>TODO: License declaration</license>

  <build_depend>rclpy</depend>
  <exec_depend>rclpy</exec_depend>

  <buildtool_depend>rosidl_default_generators</buildtool_depend>
  <exec_depend>rosidl_default_generators</exec_depend>

  <test_depend>ament_copyright</test_depend>
  <test_depend>ament_flake8</test_depend>
  <test_depend>ament_pep257</test_depend>
  <test_depend>python3-pytest</test_depend>

  <export>
    <build_type>ament_python</build_type>
  </export>
</package>

我在构建 colcon 时没有收到任何错误,只有在尝试运行 service_server.py 时才会收到。所有这些文件都在我的 src > dof_filter_service_pkg > dof_filter_service_pkg 文件夹中。使用 Ubuntu 22.04、ROS2 Humble 和 Python 3.10。谢谢!

`

我试过 colcon build,将 dof_filter.srv 移出文件夹并进入包目录,并将

from dof_filter_service_pkg import dof_filter
更改为
from dof_filter_service_pkg.srv import dof_filter

python ros ubuntu-22.04 ros2
© www.soinside.com 2019 - 2024. All rights reserved.