11#!/usr/bin/env python3
22# -*- coding: utf-8 -*-
3- # Test client for DesignatorResolveStart action
3+ # Full client for all KnowRob designator actions
44
55import rospy
66import actionlib
7- from knowrob_designator .msg import DesignatorResolutionStartAction , DesignatorResolutionStartGoal
8- from time import time
7+ import uuid
8+ from time import sleep
9+ from knowrob_designator .msg import (
10+ DesignatorInitAction , DesignatorInitGoal ,
11+ DesignatorResolutionStartAction , DesignatorResolutionStartGoal ,
12+ DesignatorResolutionFinishedAction , DesignatorResolutionFinishedGoal ,
13+ DesignatorExecutionStartAction , DesignatorExecutionStartGoal ,
14+ DesignatorExecutionFinishedAction , DesignatorExecutionFinishedGoal
15+ )
916
10- def main ():
11- rospy .init_node ('designator_resolve_test_client' )
12-
13- client = actionlib .SimpleActionClient ('/knowrob/designator/resolving_started' , DesignatorResolutionStartAction )
14- rospy .loginfo ("Waiting for action server..." )
17+ def send_action (client , goal , label ):
18+ rospy .loginfo (f"[{ label } ] Waiting for action server..." )
1519 client .wait_for_server ()
20+ rospy .loginfo (f"[{ label } ] Sending goal..." )
21+ client .send_goal (goal )
22+ client .wait_for_result ()
23+ result = client .get_result ()
24+ rospy .loginfo (f"[{ label } ] Result: success={ result .success } , message='{ result .message } ''" )
25+
26+ def main ():
27+ rospy .init_node ('knowrob_designator_full_test_client' )
1628
17- goal = DesignatorResolutionStartGoal ()
18- goal .designator_id = "desig_001"
19- goal .json_designator = """
29+ json_designator = """
2030 {
2131 "anAction": {
2232 "type": "Transporting",
@@ -37,14 +47,75 @@ def main():
3747 }
3848 }
3949 """
40- goal .stamp = rospy .Time .now ()
4150
42- rospy . loginfo ( "Sending goal..." )
43- client . send_goal ( goal )
44- client . wait_for_result ()
51+ designator_id = f"desig_ { uuid . uuid4 () } "
52+ resolved_id = f"desig_ { uuid . uuid4 () } "
53+ now = rospy . Time . now ()
4554
46- result = client .get_result ()
47- rospy .loginfo (f"Result: success={ result .success } , message='{ result .message } '" )
55+ # 1. DesignatorInit
56+ init_client = actionlib .SimpleActionClient ('/knowrob/designator/init' , DesignatorInitAction )
57+ init_goal = DesignatorInitGoal ()
58+ init_goal .designator_id = designator_id
59+ init_goal .parent_id = "" # root designator
60+ init_goal .json_designator = json_designator
61+ init_goal .stamp = now
62+ send_action (init_client , init_goal , "Init" )
63+
64+ # 2. DesignatorResolvingStarted
65+ resolving_client = actionlib .SimpleActionClient ('/knowrob/designator/resolving_started' , DesignatorResolutionStartAction )
66+ resolving_goal = DesignatorResolutionStartGoal ()
67+ resolving_goal .designator_id = designator_id
68+ resolving_goal .json_designator = json_designator
69+ resolving_goal .stamp = now
70+ send_action (resolving_client , resolving_goal , "ResolveStart" )
71+
72+ # 3. DesignatorResolutionFinished with resolved target
73+ resolved_client = actionlib .SimpleActionClient ('/knowrob/designator/resolving_finished' , DesignatorResolutionFinishedAction )
74+
75+ resolved_designator = """
76+ {
77+ "anAction": {
78+ "type": "Transporting",
79+ "objectActedOn": {
80+ "anObject": {
81+ "type": "Milk"
82+ }
83+ },
84+ "target": {
85+ "pose": {
86+ "x": 1.2,
87+ "y": 0.8,
88+ "z": 0.75,
89+ "frame": "map"
90+ }
91+ }
92+ }
93+ }
94+ """
95+
96+ resolved_goal = DesignatorResolutionFinishedGoal ()
97+ resolved_goal .designator_id = resolved_id
98+ resolved_goal .resolved_from_id = designator_id
99+ resolved_goal .json_designator = resolved_designator
100+ resolved_goal .stamp = rospy .Time .now ()
101+ send_action (resolved_client , resolved_goal , "ResolveFinished" )
102+
103+
104+ # 4. DesignatorExecutionStart
105+ exec_start_client = actionlib .SimpleActionClient ('/knowrob/designator/execution_start' , DesignatorExecutionStartAction )
106+ exec_start_goal = DesignatorExecutionStartGoal ()
107+ exec_start_goal .designator_id = resolved_id
108+ exec_start_goal .json_designator = resolved_designator
109+ exec_start_goal .stamp = now
110+ send_action (exec_start_client , exec_start_goal , "ExecutionStart" )
111+
112+ # 5. DesignatorExecutionFinished
113+ exec_finished_client = actionlib .SimpleActionClient ('/knowrob/designator/execution_finished' , DesignatorExecutionFinishedAction )
114+ exec_finished_goal = DesignatorExecutionFinishedGoal ()
115+ exec_finished_goal .designator_id = resolved_id
116+ exec_finished_goal .json_designator = resolved_designator
117+ exec_finished_goal .stamp = now
118+ send_action (exec_finished_client , exec_finished_goal , "ExecutionFinished" )
48119
49120if __name__ == '__main__' :
50121 main ()
0 commit comments