0

我在这里为 ROS使用这个驱动程序。驱动程序位于我的 ROS catkin 工作区 (catkin_ws) 中。在这个工作区中,我有另一个我想要的包import TelloStatus位于tello_driver/msg/TelloStatus.msg

通常 ROS 中的消息(msg)是这样导入的:

例子:

from geometry_msgs.msg import Twist
from std_msgs.msg import Empty
from sensor_msgs.msg import Imu

我认为这些文件位于系统上的以下路径:

opt/ros/noetic/share

所以我的问题是如何导入TelloStatus不属于此路径但属于tello_driver包的部分?

我尝试通过以下方式导入它:

import sys
sys.path.append('/home/usr/catkin_ws/src/tello_driver/msg/TelloStatus.msg')
import TelloStatus

但随后我收到此错误消息:

import TelloStatus
ModuleNotFoundError: No module named 'TelloStatus'

提前感谢您的帮助!

4

1 回答 1

0

您仍然可以像任何其他消息一样导入它:from tello_driver.msg import TelloStatus.msg. 重要的是你必须有正确的环境来源;这就是目的source <install_dir/setup.bash>。确保您获取构建文件所在的任何安装目录。请注意,您永远不应该尝试添加src/要在运行时使用的文件,这就是installdevel的用途。

根据您的评论进行编辑:

有几件事要确保在这里发生。首先在包中tello_driver确保消息文件实际设置为 build in CMakeLists.txt. 确保它包含添加消息文件的行

add_message_files(
  FILES
  TelloStatus.msg
)

然后确保正在构建消息

generate_messages(
  DEPENDENCIES
  std_msgs
)

还要确保package.xml通过添加来构建消息的依赖项(如果它不存在)

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

最后,在再次构建之前,请确保使用清理您的工作区,catkin_make clean然后使用catkin_make. 完成此操作并进行采购后,devel/setup.bash您可以通过以下方式验证消息是否存在rosmsg show TelloStatus

于 2021-09-11T17:06:40.383 回答