示例#1
0
def main():
    rospy.init_node('pioneer_trajectory', anonymous=False)
    rospy.loginfo("[Tra] Pioneer Demo Trajectory - Running")

    ## Trajectory
    kinematics = Kinematics()
    kinematics.publisher_(kinematics.module_control_pub, "manipulation_module", latch=True)  # <-- Enable Manipulation mode
    kinematics.publisher_(kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
    sleep(2)

    # mode = 'full'
    mode = 'left_arm'

    if mode == "full":
        # trajectory simulation circle
        kinematics.set_kinematics_pose("left_arm" , 2.0,  **{ 'x': 0.20, 'y':  0.30, 'z': 0.80, 'roll': 0.00, 'pitch': 0.00, 'yaw': 0.00 })
        kinematics.set_kinematics_pose("right_arm" , 2.0, **{ 'x': 0.20, 'y':  -0.30, 'z': 0.80, 'roll': 0.00, 'pitch': 0.00, 'yaw': 0.00 })

    sleep(0.1)
    while kinematics.left_tra == True and kinematics.right_tra == True:
        pass
    sleep(1)
 
    iter = 0
    
    while not rospy.is_shutdown():
        if mode == "full":
            kinematics.trajectory_sin(group="left_arm",  x=0.30, y=0.20,  z=0.90, roll=0.0, pitch=0.0, yaw=0.0, xc=-0.1, yc=-0.1, zc=-0.1, time=2, res=0.01)
            kinematics.trajectory_sin(group="right_arm", x=0.30, y=-0.20, z=0.90, roll=0.0, pitch=0.0, yaw=0.0, xc=-0.1, yc=0.1,  zc=-0.1, time=2, res=0.01)

            sleep(1) # because pubslishing array msg using for loop
            while kinematics.left_arr == True and kinematics.right_arr == True:
                pass # no action

            kinematics.trajectory_sin(group="left_arm",  x=0.20, y=0.30, z=0.85, roll=0.0, pitch=0.0, yaw=0.0, xc=0.1, yc=0.1, zc=0.1, time=2, res=0.01)
            kinematics.trajectory_sin(group="right_arm", x=0.20, y=-0.30, z=0.85, roll=0.0, pitch=0.0, yaw=0.0, xc=0.1, yc=-0.1, zc=0.1, time=2, res=0.01)
            sleep(1) # because pubslishing array msg using for loop

            while kinematics.left_arr == True and kinematics.right_arr == True:
                pass # no action

            iter += 1
            rospy.loginfo("[Tra] Iteration : {}".format(iter))
            if iter >= 2:
                mode = "none"

        elif mode == "left_arm":
            left_arm = kinematics.get_kinematics_pose("left_arm")
            print(left_arm)

            kinematics.set_kinematics_pose("left_arm" , 2.0,  **{ 'x': 0.40, 'y':  0.50, 'z': 0.80, 'roll': 0.00, 'pitch': 0.00, 'yaw': 0.00 })

            while kinematics.left_arr == True
                pass
            
            mode = "none"
            # pass

        elif mode == "none":
            break


    kinematics.publisher_(kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
    kinematics.kill_threads()
示例#2
0
class magic():
    def __init__(self):
        
        print('start')
        self.kinematics = Kinematics()
        self.motor = Motor("Thormang3_Wolf")

        self.rate = rospy.Rate(10)

        self.speech = rospy.Publisher("/robotis/sensor/text_to_speech",String,queue_size=10)
        # self.speech = rospy.Publisher("/robotis/sensor/update_tts",String,queue_size=10)
        self.music = rospy.Publisher("/robotis/sensor/music",mp3,queue_size=10)
        self.music_stop = rospy.Publisher('/robotis/sensor/stop_music',     Bool,queue_size = 10)
        self.sensor_list = None
        self.pub_gripper = rospy.Publisher('/robotis/gripper/joint_pose_msg',JointState,queue_size=10)
        #base_ini
        self.base_ini = rospy.Publisher("/robotis/base/ini_pose",String,queue_size=10)
        
        for _ in range(4):
            self.base_ini.publish('ini_pose')
            self.rate.sleep()
        self.end_action()
        sleep(1)
        #print("start") 

        #ini_arm
        self.kinematics.publisher_(self.kinematics.module_control_pub, "manipulation_module", latch=True)
        self.kinematics.publisher_(self.kinematics.module_control_pub, "gripper_module", latch=True)
        self.kinematics.publisher_(self.kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
        self.end_action()
        self.left_arm_ini_pos = self.kinematics.get_kinematics_pose('left_arm')
        
        self.kinematics.publisher_(self.kinematics.module_control_pub, "head_control_module", latch=True)
        #sleep(0.5)

        #move head
        self.head_postition = rospy.Publisher('/robotis/head_control/set_joint_states',JointState,queue_size=10)
        sleep(0.5)
        
        #print('moved')

        self.sensor_list = None
        self.deg = float(60)
        self.deg_30 = float(30 *math.pi /180)
        self.head_pan = np.radians(12)
        # self.head_pan = float(23 * math.pi / 180)
        self.head_tilt = float(36 * math.pi / 180)

        self.student_pan = np.radians(36)
        self.student_tilt = np.radians(-12)

        self.J_pan = np.radians(36)
        self.J_tilt = np.radians(-28)
        #sleep(1)
        #print('finished')
        # nan = None
        # self.calibration(ranges)
    
    def run(self):
        self.state = 'first_scene'
        # self.state = 'first_step'
        # self.state = ''
        rospy.Subscriber('/robotis/sensor/scan_filtered', LaserScan, self.sensor_callback)
        while (True):
            if self.sensor_list is not None :
                break
        
        temp_mp3 = mp3()
        temp_mp3.file_name = '100) open'
        temp_mp3.volume = 10
        self.music.publish(temp_mp3)

        input('press to start')

        # self.move_head()
        # sleep(2)



        while not rospy.is_shutdown():
            if self.state == 'first_scene':
                self.text_to_speech("1) Welcome everyone, I am Thormang.")
                sleep(0.5)
                self.text_to_speech("2) Today I am going to show you a magic trick that I have laerned recently")
                sleep(0.5)
                self.text_to_speech("3) As you can see, there are three paper bags in front of me.")
                sleep(0.5)
                self.text_to_speech("4) Later, I will put this wooden base with a sharp nail into one of the paper bags ")
                sleep(0.5)
                self.text_to_speech("74) and then swap around the position of the bags")
                sleep(0.5)
                self.text_to_speech("5) To make sure we wont find out the bag is empty by feeling the weight, so I prepared two wooden bases without nails.")
                sleep(0.5)
                input('press to look student')
                self.move_head(self.student_pan,self.student_tilt)
                sleep(0.5)
                self.text_to_speech("6) Student, please help me put these two wooden bases into two paper bags and close it.")
                sleep(0.5)
                input("after student move")
                self.move_head(self.head_pan,self.head_tilt)
                self.state = 'second_scene'
            elif self.state == 'second_scene':
                input("press to look student again")
                self.move_head(self.student_pan,self.student_tilt)
                sleep(0.5)
                self.text_to_speech("7) student, please ask an audience member to examine the nail and make sure it is real")
                sleep(1)
                self.move_head(0,0)
                input('wait for check the nail')
                self.text_to_speech("8) So, audience volunteer can you confirm to the rest of the audience that the nail is indeed real?")
                input('after responced ,press to continue')
                
                self.text_to_speech("9) Okay, thank you")
                sleep(0.5) 
                self.move_head(self.student_pan,self.student_tilt)
                sleep(0.5)
                self.text_to_speech("77) student please place the nail inside the last bag and close it.")
                sleep(1.5)
                self.move_head(0,0)
                self.text_to_speech("10) And everyone, please pay attention and remember which bag contains the nail.")
                sleep(0.5)
                
                sleep(1)
                input('wait for student action , press to continue')
                #self.move_head(0,0)
                self.state = "third_scene"

            elif self.state == "third_scene":
                #input('finished swap ,press to continue')
                sleep(1)
                self.text_to_speech("11) Now, I need another volunteer.")
                input('press to continue')
                self.text_to_speech("12) Thank you for volunteering ")
                sleep(0.5)
                self.text_to_speech("79) now , do you remember which bag contains the nail ?")
                input('after volunteer answered , press to continue')
                
                self.move_head(self.head_pan,self.head_tilt)
                sleep(2)
                # ranges = self.sensor_list [:]
                # self.calibration(ranges)
                while (True):
                    ranges = self.sensor_list [:]
                    self.calibration(ranges)
                    det = input('detect well ? (y/n)')
                    if det == "y":
                        break

                self.right_p1_up()
                self.move_head(0,0)
                self.text_to_speech("13) You mean this one , right?")
                
                input('press to continue')
                self.text_to_speech("14) To make sure that I wont be able to know which bag contains the nail")
                sleep(0.5)
                
                self.text_to_speech("15) the student will start swapping the bags around .")
                sleep(0.5)
                
                #input('press to continue')
                self.text_to_speech("60) When I say START the student will begin, and volunteer, you can shout out STOP anytime you want.")
                sleep(0.5)
                self.kinematics.publisher_(self.kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
                self.end_action()

                self.move_head(self.head_pan,self.head_tilt)
                sleep(0.2)
                self.text_to_speech("16) Lets START!")
                self.music_stop.publish(True)
                sleep(0.5)
                temp_mp3 = mp3()
                temp_mp3.file_name = '200) start game'
                temp_mp3.volume = 15
                self.music.publish(temp_mp3)
                input('after swap ,press to detect the bag position')
                self.text_to_speech("17) Okay, now I need some time to feel where the nail is.")
                sleep(0.5)

                self.state = 'fourth_scene'

            elif self.state == 'fourth_scene':
                
                sleep(2)
                
                while (True):
                    ranges = self.sensor_list [:]
                    self.calibration(ranges)
                    det = input('detect well ? (y/n)')
                    if det == "y":
                        break
                
                self.p2_up()
                sleep(2)
                self.p1_up()
                sleep(2)
                self.p3_up()
                sleep(2)
                self.p2_up()
                
                point_back = self.kinematics.get_kinematics_pose('left_arm').copy()
                point_back["x"] = 0.4
                self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**point_back)
                self.end_action()
                
                self.kinematics.publisher_(self.kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
                self.end_action()

                
                self.move_head(0,0)
                self.text_to_speech("18) Ohh, I am 100 percent sure where the nail is. So I would like to play something much more interesting.")
                sleep(2)
                self.move_head(self.J_pan,0)
                self.text_to_speech("19) Jacky")
                
                sleep(0.5)
                input('jacky come to the stage')
                self.move_head(self.J_pan,self.J_tilt)
                self.text_to_speech("20) as the supervisor of your lab, do you believe in my talent and your students ability?")
                input('after Jacky worlds ,press to continue')
                self.text_to_speech("61) oh , im happy to hear that !")

                self.text_to_speech("21) Since you trust us so much ")
                sleep(0.2)
                self.text_to_speech("66) we can raise the stakes.")
                sleep(0.7)
                self.text_to_speech("65) How about we use your hand to press down on the paper bags? ")
                input("jacky's time")
                
                self.p2_up()
                self.text_to_speech("80) Please give me your hand, Jacky")
                sleep(0.5)
                input('press to continue')
                self.move_head(0,0)
                self.text_to_speech("22) volunteer, choose a bag you think there's no nail inside? Left, Right, or Middle?")
                sleep(0.5)
                self.text_to_speech("62) Choose wisely, we wouldn’t want our dear professor to get hurt, right ?")
                self.state = "first_step"
            elif self.state == 'first_step':
                situation = input('put the situation (p3_l , p3_r , p1_l , p1_r) >> (1,2,3,4) :')
                self.move_head(self.head_pan,self.head_tilt)
                # while (True):
                    
                #     sleep(0.5)
                #     ranges = self.sensor_list [:]
                #     self.calibration(ranges)
                #     det = input('detect well ? (y/n)')
                #     if det == "y":
                #         break

                if situation == '1' : #"p3_l":
                    self.text_to_speech("23) Okay, left.")
                    
                    self.p3_up()
                    self.speech.publish("24) Safe!")
                    sleep(0.2)
                    self.DownAndUp()
                    
                    self.last = 'p1'
                elif situation == "2" : #"p3_r":
                    self.text_to_speech("25) Okay, right.")
                    
                    self.p3_up()
                    self.speech.publish("24) Safe!")
                    sleep(0.2)
                    self.DownAndUp()
                    
                    self.last = 'p1'
                elif situation == "3" : #"p1_l":
                    self.text_to_speech("23) Okay,left.")
                    
                    self.p1_up()
                    self.speech.publish("24) Safe!")
                    sleep(0.2)
                    self.DownAndUp()
                    
                    self.last = 'p3'
                elif situation == "4" : #"p1_r":
                    self.text_to_speech("25) Okay, right.")
                    
                    self.p1_up()
                    self.speech.publish("24) Safe!")
                    sleep(0.2)
                    self.DownAndUp()
                    
                    self.last = 'p3'
                else:
                    print("input should be 1 , 2 , 3 ,4 >> (p3_l , p3_r , p1_l , p1_r) ")
                    continue
                self.move_head(self.J_pan,self.J_tilt)
                self.text_to_speech("28) Jacky, dont be that nervous, dont you trust me?")
                sleep(0.5)
                input('press to continue')
                self.text_to_speech("29) I am the only hope of graduation for your students")
                sleep(0.7)
                self.text_to_speech("68) they won't disappoint you , trust me !")
                sleep(0.5)
                self.state = 'second_step'
                # if self.sensor_list is not None:
                #     #print(self.sensor_list)
                #     ranges = self.sensor_list [:]
                #     self.state = 'second_step'
                #     #print('first finished')
                #     # break

            elif self.state == 'second_step':
                #input("press to continue")
                #self.p2_up()
                input('press to continue')
                self.move_head(0,0)
                sleep(0.3)
                self.text_to_speech("30) Hey, volunteer, what's your next choice? Left or Right?")

                l_r = input('left or right  ( l , r ) : ')
                if l_r == "l":
                    
                    self.speech.publish("31) okay, left")
                else :
                    self.speech.publish("32) okay, right")
                
                if self.last == 'p1':
                    self.p1_up()
                elif self.last == 'p3':
                    self.p3_up()
                
                self.music_stop.publish(True)
                sleep(0.2)
                ################################################################################################################################
                ###########thormang3_crash#############
                temp_mp3 = mp3()
                temp_mp3.file_name = '101) restart'
                temp_mp3.volume = 25
                self.music.publish(temp_mp3)
                sleep(0.2)
                self.motor.publisher_(self.motor.module_control_pub, "none", latch=True)
                self.motor.set_joint_states(['all'], False)
                rospy.loginfo('[Magic] Turn off torque')
                ###################################
                sleep(1)
                self.speech.publish("41) re re re staaar rrr t teng ")
                sleep(2)
                input ("trigger")
                ##################################
                self.motor.set_joint_states(['all'], True)
                rospy.loginfo('[Magic] Turn on torque')

                ###############
                self.kinematics.publisher_(self.kinematics.module_control_pub, "manipulation_module", latch=True)
                self.kinematics.publisher_(self.kinematics.module_control_pub, "gripper_module", latch=True)
                self.kinematics.publisher_(self.kinematics.module_control_pub, "head_control_module", latch=True)
                temp_mp3 = mp3()
                temp_mp3.file_name = '201) start game'
                temp_mp3.volume = 10
                self.music.publish(temp_mp3)
                sleep(4)
                self.speech.publish("38) Finished rebooting ")
                # self.kinematics.publisher_(self.kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
                # self.end_action() 
                ################################################################################################################################
                if self.last == 'p1':
                    self.p1_up()
                elif self.last == 'p3':
                    self.p3_up()
                self.speech.publish("39) Okay , this one ?")
                sleep(0.5)
                self.speech.publish("40) but i dont think this one is safe ")
                sleep(2)
                
                self.p2_up()
                sleep(0.2)
                self.move_head(self.J_pan,self.J_tilt)
                self.speech.publish("33) Jacky , do you trust me? ")
                sleep(2.5)
                input('press to continue')
                self.music_stop.publish(True)
                temp_mp3 = mp3()
                temp_mp3.file_name = '306) feel sad'
                temp_mp3.volume = 15
                self.music.publish(temp_mp3)
                sleep(7)
                self.text_to_speech("70) why? i only made one mistake ")
                sleep(0.2)
                self.text_to_speech("71) why dont you give me another chance")
                self.speech.publish("50) well ")
                sleep(0.5)
                self.text_to_speech("72) but i dont care !")
                sleep(0.2)
                self.DownAndUp()
                # self.music_stop.publish(True)
                # temp_mp3 = mp3()
                # temp_mp3.file_name = '300) start game'
                # temp_mp3.volume = 15
                # self.music.publish(temp_mp3)
                sleep(0.5)
                self.move_head(0,0)
                self.state = 'third_step'
                # # calculating position
                # self.calibration(ranges)
                # #print("second_finished")
                # self.state = 'third_step'
                # #break
            elif self.state == 'third_step' :
                sleep(0.5)
                self.text_to_speech("34) Yeah, got you! HA HA HA , Don't be that scared")
                sleep(0.5)
                self.text_to_speech("69) I know what I am doing")
                sleep(0.5)
                input('grab the bag')
                self.text_to_speech("35) So, you might be really curious where the actual nail is, right?")
                sleep(0.5)
                
                #input('press to continue')

                if self.last == 'p1':
                    self.p1_up()
                elif self.last == 'p3':
                    self.p3_up()

                self.grab_bag()
                sleep(0.5)
                
                
                input('press to make thormann grip off')
                self.grip_off('l_arm_grip')

                # input('press to continue')
                # self.text_to_speech("")

                input('press to continue')
                self.move_head(0,0)
                self.kinematics.publisher_(self.kinematics.send_ini_pose_msg_pub, "ini_pose", latch=True)
                self.end_action()
                self.grip_on('l_arm_grip')
                self.text_to_speech("37) Thanks for your attention, I am Thormang wolf from ERC lab, see you next time")
                
                        
                print("End Magic")
                self.kinematics.kill_threads()
                break
                

            
            rospy.Rate(60).sleep()
    
    def sensor_callback(self,msg):
        self.sensor_list = np.array(msg.ranges)

    def read_sensor(self):
        
        rospy.Subscriber('/robotis/sensor/scan_filtered', LaserScan, self.sensor_callback)

        while not rospy.is_shutdown():
            if self.sensor_list is not None:
                break
        #     # else:
        #     #     print(self.sensor_list)
            self.rate.sleep()

    def calibration(self,ranges,deg = 60,threshold = 0.78):
        nan = None
        #print(len(ranges))
        calibration = []
        #print(self.deg_30)
        per_deg = (self.deg/len(ranges) )* (math.pi/180)
        #print(per_deg)
        for i in range(len(ranges)):
            if ranges[i] == None :
                pass
            else:
                y = ranges[i] * math.cos(i*per_deg - (self.deg_30 - self.head_pan) ) * math.cos(self.head_tilt) 
                
                if y < threshold :
                    x = -ranges[i] * math.sin( (self.deg_30 - self.head_pan) - i*per_deg) * math.cos(self.head_tilt)
                    calibration.append([round(x,5),round(y,5),i])
        calibration = np.array(calibration)
        #print(len(calibration))
        #print(calibration)
        mean = sum(calibration)/len(calibration)

        valid = []
        for i in range(len(calibration)):
            if calibration[i][1] < mean[1]:
                valid.append(calibration[i])
        valid = np.array(valid)
        #print(valid)
        
        ##K-means n_clusters=3
        estimator = KMeans(n_clusters=3)
        res = estimator.fit_predict(valid[:,0:2])
        #print(res)
        lable_pred = estimator.labels_
        #print (lable_pred)
        entroids = estimator.cluster_centers_
        data = entroids[:]
        data = np.sort(data,axis = 0)
        print (data)

        

        self.point1 = {'x':0.52,'y':data[0,0]+0.02,'z':1.05,'roll':0,'pitch':0,'yaw':-25}
        self.point2 = {'x':0.52,'y':data[1,0]+0.03,'z':1.05,'roll':0,'pitch':0,'yaw':0}
        self.point3 = {'x':0.52,'y':data[2,0]+0.07,'z':1.05,'roll':0,'pitch':0,'yaw':30}
        self.right_point ={'x':0.52,'y': (data[0,0]-0.06),'z':1.00,'roll':0,'pitch':20,'yaw':30}
        if self.right_point["y"] > 0.05:
            self.right_point["y"] = 0 
        print("point1 : y = ",self.point1["y"] )
        print("point2 : y = ",self.point2["y"] )
        print("point3 : y = ",self.point3["y"] )
        print("right_y : ",self.right_point["y"])

        # plt.figure(figsize=(12,6))
        # plt.plot(calibration[:,0],calibration[:,1],'bo')
        # plt.plot(valid[:,0],valid[:,1],'go')
        # plt.plot(data[:,0],data[:,1],'ro')
        # plt.show()
    
    def text_to_speech(self,worlds):
        self.speech.publish(worlds)
        sleep(3.5)

    def move_head(self,pan,tilt):
    
        msg = JointState()
        msg.name = ['head_y','head_p']
        msg.position = [pan ,tilt]
        msg.velocity = [0]
        msg.effort = [0]
        
        msg.header.frame_id = ''
        msg.header.stamp.secs = 0
        msg.header.stamp.nsecs= 0
        for i in range(4):
            msg.header.seq = i
            self.head_postition.publish(msg)
            self.rate.sleep()
        

    def end_action(self):
        sleep(0.5)
        while not self.kinematics.status_msg == 'End Trajectory' :
            sleep(1)
            if self.kinematics.status_msg == 'Finish Init Pose':
                break
        sleep(0.5)
    def right_p1_up(self):
        self.kinematics.set_kinematics_pose(group_name="right_arm",time=3,**self.right_point) #x=0.52,y=0,z=1.1,roll=0,pitch=0,yaw=-40)
        self.end_action()

    def p1_up(self):
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**self.point1) #x=0.52,y=0,z=1.1,roll=0,pitch=0,yaw=-40)
        self.end_action()

    def p2_up(self):
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**self.point2) #x=0.52,y=0.2,z=1.1,roll=0,pitch=0,yaw=0)
        self.end_action()

    def p3_up(self):
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**self.point3) #x=0.52,y=0.4,z=1.1,roll=0,pitch=0,yaw=40)
        self.end_action()

    def grab_bag(self):
        #sleep(2)
        self.grip_off('l_arm_grip')
        self.end_action()
        point = self.kinematics.get_kinematics_pose('left_arm').copy()
        point_down = point.copy()
        point_down["z"] = 0.85
        point["x"] = 0.40
        point["z"] = 1.05
        point_ini = self.left_arm_ini_pos.copy()
        point_ini["z"] = 0.92
        left_side = {'x':0.28,'y': 0.55,'z':0.950,'roll':0,'pitch':0,'yaw':30.0}
        # right_center = {'x':0.36,'y': -0.03,'z':0.820,'roll':0,'pitch':0,'yaw':60.0}
        # right_split = {'x':0.32,'y': -0.16,'z':0.820,'roll':0,'pitch':0,'yaw':60.0}
        # right_up = {'x':0.4,'y': -0.02,'z':0.82,'roll':0,'pitch':0,'yaw':20}
        #print('point_down',point_down)
        #print('point',point)
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=2,**point)
        self.end_action()

        point["z"] = 0.85
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=2,**point)
        self.end_action()

        self.kinematics.set_kinematics_pose(group_name="left_arm",time=2,**point_down)
        self.end_action()
        self.grip_on('l_arm_grip')
        # sleep(0.2)
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=2,**point)
        self.end_action()

        # self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**point_ini)
        # self.end_action()
        self.move_head(self.J_pan,self.J_tilt)
        self.text_to_speech("36) Jacky , please help me to check what is in the bag.")
        ##grab bag to the center
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=4,**left_side)
        self.end_action()

        ##split

        # self.grip_off("r_arm_grip")
        # self.kinematics.set_kinematics_pose(group_name="right_arm",time=3,**right_center)
        # self.end_action()
        # self.grip_on("r_arm_grip")
        # self.kinematics.set_kinematics_pose(group_name="right_arm",time=3,**right_split)
        # self.end_action()
        # self.grip_half()

        # self.kinematics.set_kinematics_pose(group_name="right_arm",time=3,**right_up)
        # self.end_action()

    def DownAndUp(self):
        #sleep(2)
        point = self.kinematics.get_kinematics_pose('left_arm')
        point_down = point.copy()
        point_down["z"] = 0.82
        #print('point_down',point_down)
        #print('point',point)
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=2,**point_down)
        self.end_action()
        self.kinematics.set_kinematics_pose(group_name="left_arm",time=3,**point)
        self.end_action()

    def finish(self):
        pass
    
    def grip_off(self,group):
        msg = JointState()
        msg.name = [group]
        msg.position = [0]
        msg.velocity = [0]
        msg.effort = [250]
        
        msg.header.frame_id = ''
        msg.header.stamp.secs = 0
        msg.header.stamp.nsecs= 0
        for i in range(4):
            msg.header.seq = i
            self.pub_gripper.publish(msg)
            self.rate.sleep()
            #print(i) 
        self.end_action()

    def grip_half(self,group):
        msg = JointState()
        msg.name = [group]
        msg.position = [0.6]
        msg.velocity = [0]
        msg.effort = [250]
        
        msg.header.frame_id = ''
        msg.header.stamp.secs = 0
        msg.header.stamp.nsecs= 0
        for i in range(4):
            msg.header.seq = i
            self.pub_gripper.publish(msg)
            self.rate.sleep()
            #print(i) 
        self.end_action()


    def grip_on(self,group):
        msg = JointState()
        msg.name = [group]
        msg.position = [1.15]
        msg.velocity = [0]
        msg.effort = [250]
        
        msg.header.frame_id = ''
        msg.header.stamp.secs = 0
        msg.header.stamp.nsecs= 0
        for i in range(4):
            msg.header.seq = i
            self.pub_gripper.publish(msg)
            self.rate.sleep()
            #print(i) 
        self.end_action()