def ROS_Subscribe(self):
def handler(event):
uavcan_req = canros.copy_ros_uavcan(self.UAVCAN_Type.Request(), event, request=True)
q = Queue(maxsize=1)
def callback(event):
q.put(event.response if event else None)
uavcan_id = getattr(event, canros.uavcan_id_field_name)
if uavcan_id == 0:
return
uavcan_node.request(uavcan_req, uavcan_id, callback, timeout=1) # Default UAVCAN service timeout is 1 second
uavcan_resp = q.get()
if uavcan_resp is None:
return
return canros.copy_uavcan_ros(self.Response_Type(), uavcan_resp, request=False)
self.Service(handler)
评论列表
文章目录