@@ -134,13 +134,15 @@ def execute(self, userdata):
134
134
# define state ChangePID
135
135
class ChangePID (smach .State ):
136
136
def __init__ (self ):
137
- smach .State .__init__ (self , outcomes = ['changed' , 'not_changed' ], input_keys = ['joint_num ' ,'P' , 'I' , 'D ' ])
137
+ smach .State .__init__ (self , outcomes = ['changed' , 'not_changed' ], input_keys = ['joint_nums ' ,'PID ' ])
138
138
139
139
def execute (self , userdata ):
140
140
rospy .wait_for_service ('SetPID' )
141
141
try :
142
142
set_PID = rospy .ServiceProxy ('SetPID' , SetPID )
143
- response = set_PID (userdata .joint_num , userdata .P , userdata .I , userdata .D )
143
+ P ,I ,D = userdata .PID
144
+ for joint_num in userdata .joint_nums :
145
+ response = set_PID (joint_num , P , I , D )
144
146
return 'changed'
145
147
except rospy .ServiceException as e :
146
148
rospy .logwarn ("Service call failed:{0}" .format (e ))
@@ -164,6 +166,8 @@ def main():
164
166
# Create a SMACH state machine
165
167
sm = smach .StateMachine (outcomes = ['stop' ])
166
168
sm .userdata .tool_id = - 1
169
+ sm .userdata .joint_nums = [1 ,2 ,3 ]
170
+ sm .userdata .PID = [0 ,0 ,0 ]
167
171
sis = smach_ros .IntrospectionServer ('server_name' , sm , '/SM_ROOT' )
168
172
sis .start ()
169
173
# Open the container
@@ -190,10 +194,6 @@ def main():
190
194
# smach.StateMachine.add('MOVEGIVE', MoveGive(),
191
195
# transitions={'reached':'CHANGEPID'})
192
196
193
- sm .userdata .P = 0
194
- sm .userdata .I = 0
195
- sm .userdata .D = 0
196
-
197
197
smach .StateMachine .add ('CHANGEPID' , ChangePID (),
198
198
transitions = {'changed' :'OPENGRIPPER' , 'notchanged' : 'CHANGEPID' })
199
199
smach .StateMachine .add ('OPENGRIPPER' , OpenGripper (),
0 commit comments