如何在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
相关产品推荐
相关产品推荐

