@@ -84,141 +84,8 @@ def delete_module(modname, paranoid=None):
8484 except AttributeError :
8585 pass
8686
87- class HrpsysConfigurator2 (HrpsysConfigurator ): ## JUST FOR TEST, REMOVE WHEN YOU MERGE
88- default_frame_name = 'WAIST'
89-
90- def getCurrentPose (self , lname = None , frame_name = None ):
91- '''!@brief
92- Returns the current physical pose of the specified joint.
93- cf. getReferencePose that returns commanded value.
94-
95- eg.
96- \v erbatim
97- IN: robot.getCurrentPose('LARM_JOINT5')
98- OUT: [-0.0017702356144599085,
99- 0.00019034630541264752,
100- -0.9999984150158207,
101- 0.32556275164378523,
102- 0.00012155879975329215,
103- 0.9999999745367515,
104- 0.0001901314142046251,
105- 0.18236394191140365,
106- 0.9999984257434246,
107- -0.00012122202968358842,
108- -0.001770258707652326,
109- 0.07462472659364472,
110- 0.0,
111- 0.0,
112- 0.0,
113- 1.0]
114- \endverbatim
115-
116- @type lname: str
117- @param lname: Name of the link.
118- @param frame_name str: set reference frame name (from 315.2.5)
119- @rtype: list of float
120- @return: Rotational matrix and the position of the given joint in
121- 1-dimensional list, that is:
122- \v erbatim
123- [a11, a12, a13, x,
124- a21, a22, a23, y,
125- a31, a32, a33, z,
126- 0, 0, 0, 1]
127- \endverbatim
128- '''
129- if not lname :
130- for item in self .Groups :
131- eef_name = item [1 ][- 1 ]
132- print ("{}: {}" .format (eef_name , self .getCurrentPose (eef_name )))
133- raise RuntimeError ("need to specify joint name" )
134- ####
135- #### for hrpsys >= 315.2.5, frame_name is supported
136- #### default_frame_name is set, call with lname:default_frame_name
137- #### frame_name is given, call with lname:frame_name
138- #### frame_name is none, call with lname
139- #### for hrpsys <= 315.2.5, frame_name is not supported
140- #### frame_name is given, call with lname with warning / oerror
141- #### frame_name is none, call with lname
142- if StrictVersion (self .fk_version ) >= StrictVersion ('315.2.5' ): ### CHANGED
143- if self .default_frame_name and frame_name is None :
144- frame_name = self .default_frame_name
145- if frame_name and not ':' in lname :
146- lname = lname + ':' + frame_name
147- else : # hrpsys < 315.2.4
148- if frame_name :
149- print ('frame_name (' + lname + ') is not supported' ) ### CHANGED
150- pose = self .fk_svc .getCurrentPose (lname )
151- if not pose [0 ]:
152- raise RuntimeError ("Could not find reference : " + lname )
153- return pose [1 ].data
154-
155- def getReferencePose (self , lname , frame_name = None ):
156- '''!@brief
157- Returns the current commanded pose of the specified joint.
158- cf. getCurrentPose that returns physical pose.
159-
160- @type lname: str
161- @param lname: Name of the link.
162- @param frame_name str: set reference frame name (from 315.2.5)
163- @rtype: list of float
164- @return: Rotational matrix and the position of the given joint in
165- 1-dimensional list, that is:
166- \v erbatim
167- [a11, a12, a13, x,
168- a21, a22, a23, y,
169- a31, a32, a33, z,
170- 0, 0, 0, 1]
171- \endverbatim
172- '''
173- if not lname :
174- for item in self .Groups :
175- eef_name = item [1 ][- 1 ]
176- print ("{}: {}" .format (eef_name , self .getReferencePose (eef_name )))
177- raise RuntimeError ("need to specify joint name" )
178- if StrictVersion (self .fk_version ) >= StrictVersion ('315.2.5' ): ### CHANGED
179- if self .default_frame_name and frame_name is None :
180- frame_name = self .default_frame_name
181- if frame_name and not ':' in lname :
182- lname = lname + ':' + frame_name
183- else : # hrpsys < 315.2.4
184- if frame_name :
185- print ('frame_name (' + lname + ') is not supported' ) ### CHANGED
186- pose = self .fk_svc .getReferencePose (lname )
187- if not pose [0 ]:
188- raise RuntimeError ("Could not find reference : " + lname )
189- return pose [1 ].data
190-
191- def setTargetPose (self , gname , pos , rpy , tm , frame_name = None ):
192- '''!@brief
193- Move the end-effector to the given absolute pose.
194- All d* arguments are in meter.
195-
196- @param gname str: Name of the joint group.
197- @param pos list of float: In meter.
198- @param rpy list of float: In radian.
199- @param tm float: Second to complete the command.
200- @param frame_name str: Name of the frame that this particular command
201- references to.
202- @return bool: False if unreachable.
203- '''
204- print (gname , frame_name , pos , rpy , tm )
205- if StrictVersion (self .seq_version ) >= StrictVersion ('315.2.5' ): ### CHANGED
206- if self .default_frame_name and frame_name is None :
207- frame_name = self .default_frame_name
208- if frame_name and not ':' in gname :
209- gname = gname + ':' + frame_name
210- else : # hrpsys < 315.2.4
211- if frame_name and not ':' in gname :
212- print ('frame_name (' + gname + ') is not supported' ) ### CHANGED
213- result = self .seq_svc .setTargetPose (gname , pos , rpy , tm )
214- if not result :
215- print ("setTargetPose failed. Maybe SequencePlayer failed to solve IK.\n "
216- + "Currently, returning IK result error\n "
217- + "(like the one in https://github.com/start-jsk/rtmros_hironx/issues/103)"
218- + " is not implemented. Patch is welcomed." )
219- return result
220-
221- class HIRONX (HrpsysConfigurator2 ):
87+
88+ class HIRONX (HrpsysConfigurator ):
22289 '''
22390 @see: <a href = "https://github.com/fkanehiro/hrpsys-base/blob/master/" +
22491 "python/hrpsys_config.py">HrpsysConfigurator</a>
0 commit comments