이유진

step2.py 로 파일명 변경

1 -# step 2 : 높이 + 위치조정 (민감버전)
2 -import CoDrone
3 -import keyboard
4 -from CoDrone.system import Direction
5 -from CoDrone.system import Mode
6 -from time import sleep
7 -
8 -
9 -def stop(_master, _slave):
10 - if keyboard.is_pressed('q'): # 키보드에서 'q'가 입력되면 while문 탈출
11 - print('[Keyboard input occur: Quit!]')
12 - # 착륙에 성공할 때까지 LED 효과
13 - _master.arm_default_pattern(0, 125, 155, Mode.DOUBLE_BLINK, 10)
14 - _slave.arm_default_pattern(0, 125, 155, Mode.DOUBLE_BLINK, 10)
15 - return True
16 - elif not _slave.isConnected(): # slave 연결이 끊기면 프로그램 종료
17 - print('[Slave Disconnected]')
18 - return True
19 -
20 -
21 -def main():
22 - master = CoDrone.CoDrone()
23 - master.connect("None", "COM5", False)
24 - slave = CoDrone.CoDrone()
25 - slave.connect("None", "COM6", False)
26 -
27 - bHeight = master.get_height() # 고도
28 - if bHeight > 20: # 마스터의 높이가 20이상이면 slave 날기 시작
29 - slave.takeoff()
30 - print('slave take off!!!')
31 -
32 - # master의 이전 좌표값(움직임 추적용) 초기화
33 - bHeight = 0
34 - bX = 0
35 - bY = 0
36 -
37 - while True:
38 - master.arm_off()
39 - slave.arm_off()
40 - slave.takeoff()
41 - # master
42 - mPosition = master.get_opt_flow_position() # 상대좌표 (시작 0,0)
43 - mHeight = master.get_height() # 고도
44 - # slave
45 - sPosition = slave.get_opt_flow_position()
46 - sHeight = slave.get_height()
47 - print("master [x={} y={} z={}] slave [x={} y={} z={}]"
48 - .format(mPosition.X, mPosition.Y, mHeight, sPosition.X, sPosition.Y, sHeight)) # 좌표출력/단위(mm)
49 -
50 - if stop(master, slave):
51 - break
52 -
53 - # master의 전 높이 대비 heightRange 만큼의 차이가 있으면 slave가 움직이도록
54 - # if abs(mHeight - bHeight) > heightRange:
55 - # print('[height change!]')
56 - # # LED 효과
57 - # master.arm_strobe()
58 - # slave.arm_strobe()
59 - # setHeight(mHeight, slave)
60 -
61 - if mPosition.X > bX:
62 - slave.go(Direction.FORWARD, 1)
63 - print('[Move Forward]')
64 - elif mPosition.X < bX:
65 - slave.go(Direction.BACKWARD, 1)
66 - print('[Move Backward]')
67 -
68 - # elif mPosition.Y > bY:
69 - # slave.go(Direction.LEFT, 0.4)
70 - # print('[Move Left]')
71 - # elif mPosition.Y < bY:
72 - # slave.go(Direction.RIGHT, 0.4)
73 - # print('[Move Right]')
74 -
75 - # master의 이전 좌표값 저장
76 - bHeight = mHeight
77 - bX = mPosition.X
78 - bY = mPosition.Y
79 - # slave.hover()
80 -
81 - print('드론을 착륙시킵니다.')
82 - slave.arm_pattern() # LED 효과
83 -
84 - print('Land')
85 - slave.land() # 착륙
86 - master.arm_off()
87 - slave.arm_off()
88 -
89 - # 연결해제 -> 여기까지 성공했다면 배터리 안 빼도 다시 연결 됩니다.
90 - slave.disconnect()
91 - master.disconnect()
92 -
93 -
94 -if __name__ == '__main__':
95 - main()