/kb/lookup
#
Caution
This documentation page has been auto-generated.
It may be missing some details.
/kb/lookup
Quick Facts
- Category
- Message type
Search the knowledge base for a term matching a string. The search is performed both on termsβ names and on label.
Returns the list of found terms, alongside with their type (one of instance, class, datatype_property, object_property, literal).
See the KnowledgeCore API for details.
Quick snippets#
$ ros2 service call /kb/lookup kb_msgs/srv/Lookup
# (tip: press Tab to complete the message prototype)
How to use in your code#
1#!/usr/bin/env python
2
3import sys
4import rclpy
5from rclpy.node import Node
6
7from kb_msgs.srv import Lookup
8
9class LookupClientAsync(Node):
10
11 def __init__(self):
12 super().__init__('kb_lookup_client_async')
13 self.cli = self.create_client(Lookup, 'kb_lookup')
14 while not self.cli.wait_for_service(timeout_sec=1.0):
15 self.get_logger().info('service not available, waiting again...')
16 self.req = Lookup.Request()
17
18 def send_request(self, a, b):
19 # TODO: adapt to the service's parameters
20 # self.req.a = a
21 # self.req.b = b
22 self.future = self.cli.call_async(self.req)
23 rclpy.spin_until_future_complete(self, self.future)
24 return self.future.result()
25
26
27if __name__ == '__main__':
28 rclpy.init(args=args)
29
30 srv_client = LookupClientAsync()
31
32 # TODO: adapt to your parameters
33 response = srv_client.send_request(sys.argv[1], sys.argv[2])
34 srv_client.get_logger().info(
35 'Result of kb_lookup: %s' % response)
36
37 rclpy.shutdown()
1#include "rclcpp/rclcpp.hpp"
2#include "kb_msgs/srv/lookup.hpp"
3
4#include <chrono>
5#include <cstdlib>
6#include <memory>
7
8using namespace std::chrono_literals;
9using namespace std;
10using namespace rclcpp;
11
12int main(int argc, char **argv)
13{
14 init(argc, argv);
15
16 shared_ptr<Node> node = Node::make_shared("kb/lookup_client");
17 Client<kb_msgs::srv::Lookup>::SharedPtr client =
18 node->create_client<kb_msgs::srv::Lookup>("kb/lookup");
19
20 auto request = make_shared<kb_msgs::srv::Lookup::Request>();
21
22 // TODO: adapt to the service's parameters
23 // request->a = ...;
24 // request->b = ...;
25
26 while (!client->wait_for_service(1s)) {
27 if (!ok()) {
28 RCLCPP_ERROR(get_logger("rclcpp"), "Interrupted while waiting for the service. Exiting.");
29 return 0;
30 }
31 RCLCPP_INFO(get_logger("rclcpp"), "service not available, waiting again...");
32 }
33
34 auto result = client->async_send_request(request);
35 // Wait for the result.
36 if (spin_until_future_complete(node, result) == FutureReturnCode::SUCCESS)
37 {
38 // TODO: do something with the result
39 // result.get()->...;
40 } else {
41 RCLCPP_ERROR(get_logger("rclcpp"), "Failed to call service kb/lookup");
42 }
43
44 shutdown();
45 return 0;
46}