def service(self, *upper_args, **kwargs):
if isinstance(upper_args[0], str):
service_name, srv_type = upper_args
def __decorator(func):
def __inner(request):
n_args = func.func_code.co_argcount
if "self" in func.func_code.co_varnames[:n_args]:
return self.__class_service(func, request, service_name)
else:
return self.__function_service(func, request, service_name)
args = [service_name, srv_type, __inner]
service = rospy.Service(*args, **kwargs)
self.services.append(service)
return __inner
return __decorator
else:
raise ValueError("First argument to service must be service name as str")
评论列表
文章目录