39 rospy.loginfo(
"> Request to align frame {} with frame {} mode {}".format(request.name, request.source_name, request.mode))
41 response = AlignFrameResponse()
42 response.error_code = 0
44 if request.name ==
"":
45 rospy.logerr(
" Error: No name given")
46 response.error_code = 1
48 elif request.source_name ==
"":
49 rospy.logerr(
" Error: No source name given")
50 response.error_code = 3
52 elif request.name
not in self.
editor.frames:
53 rospy.logerr(
" Error: Frame not found: {}".format(request.name))
54 response.error_code = 2
57 frame = self.
editor.frames[request.name]
61 if m & 1: mode.append(
"x")
62 if m & 2: mode.append(
"y")
63 if m & 4: mode.append(
"z")
64 if m & 8: mode.append(
"a")
65 if m & 16: mode.append(
"b")
66 if m & 32: mode.append(
"c")
74 rospy.loginfo(
"> Request to edit frame {}".format(request.name))
76 response = EditFrameResponse()
77 response.error_code = 0
79 if request.name ==
"":
83 elif request.name
not in self.
editor.frames:
84 rospy.logerr(
" Error: Frame not found: {}".format(request.name))
85 response.error_code = 2
95 rospy.loginfo(
"> Request to get frame {}".format(request.name))
97 response = GetFrameResponse()
98 response.error_code = 0
100 if request.name ==
"":
101 rospy.logerr(
" Error: No name given")
102 response.error_code = 1
104 elif request.name
not in self.
editor.frames:
105 rospy.logerr(
" Error: Frame not found: {}".format(request.name))
106 response.error_code = 2
109 f = self.
editor.frames[request.name]
111 response.name = f.name
112 response.parent = f.parent
113 response.pose =
ToPose(f.position, f.orientation)
119 rospy.loginfo(
"> Request to get frame names")
121 response = GetFrameNamesResponse()
122 response.error_code = 0
124 for frame
in self.
editor.frames.values():
125 response.names.append(frame.name)
131 rospy.loginfo(
"> Request to remove frame {}".format(request.name))
133 response = RemoveFrameResponse()
134 response.error_code = 0
136 if request.name ==
"":
137 rospy.logerr(
" Error: No name given")
138 response.error_code = 1
140 elif request.name
not in self.
editor.frames:
141 rospy.logerr(
" Error: Frame not found: {}".format(request.name))
142 response.error_code = 2
151 rospy.loginfo(
"> Request to set (or add) frame {} {}".format(request.name, request.parent))
153 response = SetFrameResponse()
155 if request.name ==
"":
156 rospy.logerr(
" Error: No name given")
157 response.error_code = 1
160 if request.parent ==
"":
161 if request.name
in self.
editor.frames:
162 request.parent = self.
editor.frames[request.name].parent
164 rospy.logerr(
"Error: No parent given and frame previously not existing")
165 response.error_code = 2
168 f =
Frame(request.name,
174 response.error_code = 0
179 rospy.loginfo(
"> Request to set parent_frame {} {}".format(request.name, request.parent))
181 response = SetParentFrameResponse()
182 response.error_code = 0
184 if request.name ==
"":
185 rospy.logerr(
" Error: No frame_name given")
186 response.error_code = 1
188 elif request.parent ==
"":
189 rospy.logerr(
" Error: No parent_name given")
190 response.error_code = 2
193 f = self.
editor.frames[request.name]
199 rospy.loginfo(
"> Request to load yaml file:'{}'".format(request.filename))
201 response = LoadYamlResponse()
203 self.
editor.load_file(os.path.expanduser(request.filename))
204 response.success =
True
205 response.message =
"file loaded"
206 except Exception
as e:
207 response.success =
False
208 response.message =
"Exception: {}".format(str(e))
213 rospy.loginfo(
"> Request to save yaml file to:'{}'".format(request.filename))
215 response = SaveYamlResponse()
217 self.
editor.save_file(os.path.expanduser(request.filename))
218 response.success =
True
219 response.message =
"file saved"
220 except Exception
as e:
221 response.success =
False
222 response.message =
"Exception: {}".format(str(e))
227 rospy.loginfo(
"> Request to copy frame '{}' with new name '{}' and new parent name '{}'".format(request.source_name, request.name, request.parent))
229 response = CopyFrameResponse()
230 response.error_code = 0
232 if request.name ==
"":
233 rospy.logerr(
" Error: No name given")
234 response.error_code = 1
236 elif request.source_name ==
"":
237 rospy.logerr(
" Error: No source name given")
238 response.error_code = 3
245 if request.name
not in self.
editor.frames:
246 rospy.loginfo(
">> add")
249 if request.parent ==
"":
250 if request.source_name
in self.
editor.frames:
251 request.parent = self.
editor.frames[request.source_name].parent
253 rospy.logerr(
" Error: No parent name given")
254 response.error_code = 3
257 Frame.wait_for_transform(request.source_name, request.parent, rospy.Duration(1.0))
259 Frame.wait_for_transform(request.parent, request.name, rospy.Duration(1.0))
263 frame = self.
editor.frames[request.name]
265 Frame.wait_for_transform(request.source_name, request.parent, rospy.Duration(1.0))
266 if (request.parent !=
"")
and (frame.parent != request.parent):
267 rospy.loginfo(
">> rebase")
270 rospy.loginfo(
">> align")
272 Frame.wait_for_transform(frame.parent, frame.name, rospy.Duration(1.0))
274 except Exception
as e:
275 rospy.logerr(
"Error: unhandled exception {}".format(e))
276 response.error_code = 9