You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中导入不在常规.msg路径下的ROS自定义消息文件

解决步骤

1. 修正导入语法,无需手动修改sys.path

自定义ROS消息的导入语法和系统内置消息完全一致,正确写法为:

from tello_driver.msg import TelloStatus

你之前手动添加.msg源文件路径的操作是无效的:ROS会在编译阶段自动将.msg定义文件生成为可导入的Python模块,而非直接导入源文件。

2. 确认工作空间环境已正确激活

每次打开新终端运行代码前,都需要先执行工作空间的环境激活脚本:

source /home/usr/catkin_ws/devel/setup.bash

如果不想每次手动执行,可以把上述命令写入~/.bashrc文件末尾,终端启动时会自动加载。

3. 确认调用方功能包的配置正确

你用来导入消息的、和tello_driver同工作空间的那个功能包,需要添加对tello_driver的依赖,否则编译阶段无法关联到自定义消息:

修改package.xml

添加以下依赖声明:

<build_depend>tello_driver</build_depend>
<exec_depend>tello_driver</exec_depend>

修改CMakeLists.txt

找到find_package配置段,把tello_driver加入依赖组件:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  # 其他原有依赖
  tello_driver
)

再找到catkin_package配置段,同样添加tello_driver为运行依赖:

catkin_package(
  CATKIN_DEPENDS roscpp rospy std_msgs tello_driver
)

4. 重新编译工作空间

完成上述配置后,回到工作空间根目录重新全编译即可:

cd /home/usr/catkin_ws
catkin_make
# 编译完成后重新source一次环境
source devel/setup.bash

完成后即可正常导入TelloStatus消息。

内容的提问来源于stack exchange,提问作者Hugh Rivers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:54:03