/kb/label
#
Caution
This documentation page has been auto-generated.
It may be missing some details.
/kb/label
Quick Facts
- Category
- Message type
Returns the labels attached to a term, as a dictionary
{"default":"label1", "lang_code1": label1, "lang_code2": "label2",...}
where the βdefaultβ key returns either the English version of the label, or the name of the term, if no label is available, and the other keys provide localised version of the label, if available in the knowledge base.See the KnowledgeCore API for details.
Quick snippets#
$ ros2 service call /kb/label kb_msgs/srv/About
# (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 About
8
9class LabelClientAsync(Node):
10
11 def __init__(self):
12 super().__init__('kb_label_client_async')
13 self.cli = self.create_client(About, 'kb_label')
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 = About.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 = LabelClientAsync()
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_label: %s' % response)
36
37 rclpy.shutdown()
1#include "rclcpp/rclcpp.hpp"
2#include "kb_msgs/srv/about.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/label_client");
17 Client<kb_msgs::srv::About>::SharedPtr client =
18 node->create_client<kb_msgs::srv::About>("kb/label");
19
20 auto request = make_shared<kb_msgs::srv::About::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/label");
42 }
43
44 shutdown();
45 return 0;
46}