刚学习用python编写ros服务的客户端,功能包名是ros_ptz_cli,服务信息是Svr_Temp_Get.srv,程序需引用Svr_Temp_Get,仿照C的i#include "ros_ptz_cli/Srv_Temp_Get.srv" 将程序写为
#! /usr/bin/env python
import rospy
from Srv_Temp_Get.srv import *
if __name__== "__main__":
rospy.init_node("ptz_cli")
cli=rospy.ServiceProxy("Srv_Temp_Get",Srv_Temp_Get)
....
编译时没有错误,运行时提示No module named Srv_Temp_Get,在CSDN中找到
ros服务端: srv与import 错误:No module named srv_自定义srv无法import-CSDN博客
其中提到
另外要注意的是:
因为是在srv中新建了AddTwoInts.srv,以为是要
from AddTwoInts.srv import 服务1 # 这是错误的!!!
实际是错误的,要按下边的语法进行import:
from 功能包名.srv import 服务1 服务2
所犯的正是这个错误,程序第三句的from 后面应该写功能包名ros_ptz_cli.srv,而不是服务信息名Srv_Temp_Get.srv,特此记录!!正确语句如下
#! /usr/bin/env python
import rospy
from ros_ptz_cli.srv import *
if __name__== "__main__":
rospy.init_node("ptz_cli")
cli=rospy.ServiceProxy("Srv_Temp_Get",Srv_Temp_Get)
....
再次编译,重新运行,一切正常!