Пример #1
0
def adjust_to_shooting():
	global last_proximity
	proximity = check_head_proximity()

	if proximity== True and last_proximity==False:
		PyPR2.moveBodyTo(0.0,0.0,(0.65)*PyPR2.getHeadPos()[0],1)
		#PyPR2.moveHeadTo(0.0,y)
	last_proximity = proximity
Пример #2
0
def adjust_to_shooting():
    global last_proximity
    proximity = check_head_proximity()

    if proximity == True and last_proximity == False:
        PyPR2.moveBodyTo(0.0, 0.0, (0.65) * PyPR2.getHeadPos()[0], 1)
        #PyPR2.moveHeadTo(0.0,y)
    last_proximity = proximity
Пример #3
0
def rotate_robot_to(desired_angle, time_to_reach = None, in_degrees = True):
    global body_reached, body_failed
    max_speed = math.pi/18.0 # (The maximum speed is 10 degrees per second)
    if in_degrees:
        gain = math.pi/180.0
    else:
        gain = 1.0     
    body_reached = False
    body_failed  = False
    tau0         = body_angle(in_degrees = in_degrees)
    d_theta      = gain*(desired_angle - tau0)
    if time_to_reach == None:
        time_to_reach = abs(d_theta/max_speed)    

    PyPR2.moveBodyTo(0.0, 0.0, d_theta, time_to_reach + 2.0) 	
Пример #4
0
def take_robot_to(X, Y, time_to_reach = 5.0):
    global body_reached, body_failed
    body_reached = False
    body_failed  = False
    rp = PyPR2.getRobotPose()
    P0 = rp['position']
    dX = X - P0[0]
    dY = Y - P0[1]
    tau = body_angle(in_degrees = False)
    S   = math.sin(tau)
    C   = math.cos(tau)
    dx =  C*dX + S*dY
    dy = -S*dX + C*dY

    PyPR2.moveBodyTo(dx, dy, 0.0, time_to_reach)
Пример #5
0
def move_robot_to(x, y , tau, time_to_reach = 5.0, in_degrees = True):
    global body_reached, body_failed
    if in_degrees:
        gain = math.pi/180.0
    else:
        gain = 1.0     
    body_reached = False
    body_failed  = False
    rp = PyPR2.getRobotPose()
    p0 = rp['position']
    dx = x - p0[0]
    dy = y - p0[1]

    '''
    o  = quat(rp['orientation'])   # convert to cgkit quaternion
    R  = numpy.linalg.inv(o.toMat3())
    '''
    o  = geo.Orientation_3D(rp['orientation'], representation = 'quaternion')
    R  = numpy.linalg.inv(o.matrix())

    dp = numpy.dot(R.T, vecmat.as_vector([dx, dy, 0.0]))
    tau0 = body_angle(in_degrees = in_degrees)
    PyPR2.moveBodyTo( dp[0], dp[1], gain*(tau - tau0), time_to_reach)
Пример #6
0
def timerActions( id ):
  global msgTryTimer,busy_moving,track_d,last_action_counter,d,start_time,x,y,elapsed_time,focus_obj,a


	
  
  
  
  if msgTryTimer == id :
    #PyPR2.removeTimer( msgTryTimer )
        #msgTryTimer += 1
    #while True:
       #time.sleep(1)
	
	if abs(a-focus_obj['est_pos'][0]) < 0.04:
		a = focus_obj['est_pos'][0]
		PyPR2.moveBodyTo(0.1,0.0,0.0,1)
	else:
		a = focus_obj['est_pos'][0]
        d = math.sqrt(math.pow(x,2)+math.pow(y,2))
        adjust_to_shooting()
	

	'''
	with open(csvfile, "w") as output:
   		 writer = csv.writer(output, lineterminator='\n')
    	         writer.writerows(track_d)
	'''
	
	#PyPR2.moveTorsoBy(0.03,5)
	#if abs(previous_pos - focus_obj['est_pos'][0])< 0.1:	
	#	PyPR2.moveHeadTo(0.2,1.0)
	#adjust_to_shooting()
        #if busymoving>0: busymoving-=1

	if d>=3.5:
		if last_action_counter <4 and last_action_counter!=0:
			#obj.larm_reference = True	
			#obj.arm_down()
			
			PyPR2.moveArmWithJointPos(**right_high_five)
			PyPR.moveArmWithJointPos(**shooting_back_down)
			last_action_counter=4
			#busymoving=3
		elif last_action_counter == 4:		
			PyPR2.moveTorsoBy(0.1,2)
			
			PyPR2.say("Move Back")
			#busymoving=5

			
		else:		
			PyPR2.moveArmWithJointPos(**left_shooting)
			last_action_counter=4
			#busymoving=5
	elif d<=3.5 and d>3:
		if last_action_counter <3 and last_action_counter!=0:
				PyPR2.moveArmWithJointPos(**shooting_down)
				#obj.larm_reference = False
				#obj.arm_right()
				#PyPR2.moveBodyTo(0.01,0.0,0.0,1)
				last_action_counter=3
				
		elif last_action_counter ==3:
				PyPR2.moveBodyTo(0.07,0.0,0.0,0.51)
				#busymoving=10

		elif last_action_counter ==0:
			PyPR2.moveArmWithJointPos(**left_shooting)
			PyPR2.moveArWithJointPos(**alt_right_shooting)
			#busymoving=10
			PyPR2.say("Move Back")
		else:
				PyPR2.moveArmWithJointPos(**alt_right_shooting)
				PyPR2.moveArmWithJointPos(**left_shooting)
				last_action_counter=3		

				

	elif d<=3 and d >2:
			
				if last_action_counter <2 and last_action_counter!=0:
					
					#obj.larm_reference = False
					#obj.arm_right()
					PyPR2.moveArmWithJointPos(**left_relax1)
					last_action_counter=2
				#elif last_action_counter==0:

				else:
					PyPR2.moveArmWithJointPos(**alt_right_shooting)
					PyPR2.moveArmWithJointPos(**left_shooting)
					PyPR2.closeGripper(2)
					#PyPR2.closeGripper(2)
					last_action_counter =2
			

				#previous_pos = focus_obj['est_pos'][0]
				
	                #movement_tracker.append(str(CONDITION_TAG)+":"+str(focus_obj['est_pos']))
	elif d <2 and d>1 :

			if last_action_counter ==1:
					PyPR2.say("Move")
					last_action_counter=1 
					#busymoving=10
			elif last_action_counter >=2:
					PyPR2.moveArmWithJointPos(**left_shooting)
					PyPR2.moveArmWithJointPos(**alt_right_shooting)
			
	
	else :	
		PyPR2.moveArmWithJointPos(**alt_right_shooting)
		PyPr2.moveArmWithJointPos(**left_shooting)	
Пример #7
0
def timerActions(id):
    global msgTryTimer, busy_moving, track_d, last_action_counter, d, start_time, x, y, elapsed_time, focus_obj, a

    if msgTryTimer == id:
        #PyPR2.removeTimer( msgTryTimer )
        #msgTryTimer += 1
        #while True:
        #time.sleep(1)

        if abs(a - focus_obj['est_pos'][0]) < 0.04:
            a = focus_obj['est_pos'][0]
            PyPR2.moveBodyTo(0.1, 0.0, 0.0, 1)
        else:
            a = focus_obj['est_pos'][0]
        d = math.sqrt(math.pow(x, 2) + math.pow(y, 2))
        adjust_to_shooting()
        '''
	with open(csvfile, "w") as output:
   		 writer = csv.writer(output, lineterminator='\n')
    	         writer.writerows(track_d)
	'''

        #PyPR2.moveTorsoBy(0.03,5)
        #if abs(previous_pos - focus_obj['est_pos'][0])< 0.1:
        #	PyPR2.moveHeadTo(0.2,1.0)
        #adjust_to_shooting()
        #if busymoving>0: busymoving-=1

        if d >= 3.5:
            if last_action_counter < 4 and last_action_counter != 0:
                #obj.larm_reference = True
                #obj.arm_down()

                PyPR2.moveArmWithJointPos(**right_high_five)
                PyPR.moveArmWithJointPos(**shooting_back_down)
                last_action_counter = 4
                #busymoving=3
            elif last_action_counter == 4:
                PyPR2.moveTorsoBy(0.1, 2)

                PyPR2.say("Move Back")
                #busymoving=5

            else:
                PyPR2.moveArmWithJointPos(**left_shooting)
                last_action_counter = 4
                #busymoving=5
        elif d <= 3.5 and d > 3:
            if last_action_counter < 3 and last_action_counter != 0:
                PyPR2.moveArmWithJointPos(**shooting_down)
                #obj.larm_reference = False
                #obj.arm_right()
                #PyPR2.moveBodyTo(0.01,0.0,0.0,1)
                last_action_counter = 3

            elif last_action_counter == 3:
                PyPR2.moveBodyTo(0.07, 0.0, 0.0, 0.51)
                #busymoving=10

            elif last_action_counter == 0:
                PyPR2.moveArmWithJointPos(**left_shooting)
                PyPR2.moveArWithJointPos(**alt_right_shooting)
                #busymoving=10
                PyPR2.say("Move Back")
            else:
                PyPR2.moveArmWithJointPos(**alt_right_shooting)
                PyPR2.moveArmWithJointPos(**left_shooting)
                last_action_counter = 3

        elif d <= 3 and d > 2:

            if last_action_counter < 2 and last_action_counter != 0:

                #obj.larm_reference = False
                #obj.arm_right()
                PyPR2.moveArmWithJointPos(**left_relax1)
                last_action_counter = 2
            #elif last_action_counter==0:

            else:
                PyPR2.moveArmWithJointPos(**alt_right_shooting)
                PyPR2.moveArmWithJointPos(**left_shooting)
                PyPR2.closeGripper(2)
                #PyPR2.closeGripper(2)
                last_action_counter = 2

            #previous_pos = focus_obj['est_pos'][0]

            #movement_tracker.append(str(CONDITION_TAG)+":"+str(focus_obj['est_pos']))
        elif d < 2 and d > 1:

            if last_action_counter == 1:
                PyPR2.say("Move")
                last_action_counter = 1
                #busymoving=10
            elif last_action_counter >= 2:
                PyPR2.moveArmWithJointPos(**left_shooting)
                PyPR2.moveArmWithJointPos(**alt_right_shooting)

        else:
            PyPR2.moveArmWithJointPos(**alt_right_shooting)
            PyPr2.moveArmWithJointPos(**left_shooting)