# Wait for other quad to have taken off tc.SetStatusSync(status=mc.QUAD_FLYING) tc.WaitForStatusSync(partner="partner2", status=mc.QUAD_FLYING) w4partner = tc.WaitForStatusSync(foreground=False, partner="partner2", status=mc.QUAD_CALLING) tc.addCondition(ConditionIsCompleted("Partner2", tc, w4partner)) w4battery = tc.WaitForLowBattery(foreground=False, threshold=70.0) tc.addCondition(ConditionIsCompleted("Battery", tc, w4battery)) try: for i, p in enumerate(wp): tc.GoTo(goal_x=p[0], goal_y=p[1], goal_z=p[2]) if p[3]: tc.RadioScan(num_sectors=3, acquisition_time=2.0) tc.SetStatusSync(status=mc.QUAD_DOWN) tc.clearConditions() except TaskConditionException, e: cnames = [str(c) for c in e.conditions] if "Partner2" in cnames: # We've been called... rospy.loginfo( "Partner2 requested intervention, interrupting mission") tc.GoTo(goal_x=p2.linear.x, goal_y=p2.linear.y, goal_z=1.0) tc.RadioScan(num_sectors=3, acquisition_time=5.0) tc.SetStatusSync(status=mc.QUAD_DONE_HELPING) tc.GoTo(goal_x=wp[-1][0], goal_y=wp[-1][1], goal_z=wp[-1][2]) if "Battery" in cnames: