λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🎈capstone

πŸ›Έμ΄μ€‘ PI둜 TELLO-edu μ œμ–΄ν•˜κΈ°πŸ›Έ

μ•ˆλ…•ν•˜μ„Έμ—¬ λΈ”λ‘œκ·ΈλŠ” μ˜€λžœλ§Œμ΄λ„€μš”,,,

벌써 κ·Έλ‘œμ“°κ°€ λλ‚˜κ°€κ³  μžˆλ‹€λ‹ˆ λ―Ώκ²¨μ§€μ‹œλ‚˜μš”~οΌˆοΌ›´Π΄ο½€οΌ‰γ‚ž

 

μ €λ²ˆ μŠ€νƒ€νŠΈ λ•Œ μž‘μ„±ν–ˆλ˜ 글을 λ³΄λ‹ˆ 저도 PID μ œμ–΄μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³  κ³΅λΆ€ν•˜λ˜ μ‹œκΈ°λΌ

κ°œλ…μ μΈ λΆ€λΆ„ μœ„μ£Όλ‘œ 많이 μ„€λͺ…을 ν–ˆμ—ˆλ„€μš”,,

 

μ΄λ²ˆμ—λŠ” μ‹€μ œλ‘œ λ“œλ‘ μ„ μ—°κ²°ν•΄μ„œ

PID μ μš©ν•˜λŠ” κ²°κ³ΌκΉŒμ§€μ˜ 과정에 λŒ€ν•΄ μ’€ 더 μžμ„Έν•˜κ²Œ 적어보렀고 ν•©λ‹ˆλ‹€γ…Ž,γ…Ž

 

 

 

 


 

ν…”λ‘œλ₯Ό 잘 μ•„μ‹œλŠ” 뢄듀이라면 ν…”λ‘œμ—λŠ” λΉ„μ Ό 포지셔닝이 μžˆλŠ”λ° μ™œ PID μ œμ–΄λ₯Ό ν•˜μ§€? 라고 μƒκ°ν•˜μ‹€ μˆ˜λ„ μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. 

저희도 μŠ€νƒ€νŠΈ-κ·Έλ‘œμ“°ν•™κΈ°λ₯Ό μ§„ν–‰ν•΄μ˜€λ©΄μ„œ μœ„μ˜ κΈ°λŠ₯이 λ‚΄μž₯λ˜μ–΄ μžˆλŠ” 것을 λ°œκ²¬ν•˜μ—¬ ν•΄λ‹Ή κΈ°λŠ₯을 μ‚¬μš©ν• κΉŒ ν•˜λ‹€κ°€ μ•„λž˜μ™€ 같은 μ œν•œμ‚¬ν•­μ„ λ°œκ²¬ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

https://dl-cdn.ryzerobotics.com/downloads/Tello/201806mul/Tello%20User%20Manual%20V1.0_KR.pdf

 

적외선 λͺ¨λ“ˆμ„ μ΄μš©ν•΄μ„œ κ·ΈλŸ°μ§€ λ¬Ό λ˜λŠ” 투λͺ…ν•œ ν‘œλ©΄ μœ„λ‘œ λΉ„ν–‰ν•˜λŠ” κ²½μš°μ— ν•΄λ‹Ή κΈ°λŠ₯이 μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€κ³  ν•©λ‹ˆλ‹€.

λ¬Ό μœ„μ—μ„œ μž‘λ™ν•΄μ•Ό ν•˜λŠ” SeeSea 이기 λ•Œλ¬Έμ—, 기쑴에 μ μš©ν•˜λ €κ³  ν–ˆλ˜ PIDμ œμ–΄ κ°œλ°œμ„ 계속 μ§„ν–‰ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.

 

 


개발 ν™˜κ²½ ꡬ좕

ν…”λ‘œ μ—λ“€λŠ” κ΅μœ‘μ„ λͺ©μ μœΌλ‘œ λ‚˜μ˜¨ λ“œλ‘ μ΄κΈ°μ— 자체 앱을 ν†΅ν•΄μ„œ ν•Έλ“œν°μœΌλ‘œλ„ κ°„λ‹¨ν•˜κ²Œ 쑰쒅이 κ°€λŠ₯ν•˜λ‚˜, pidμ œμ–΄λ₯Ό μœ„ν•œ μ½”λ“œλ₯Ό python으둜 μž‘μ„±ν•  것이기 λ•Œλ¬Έμ— 그에 λ§žλŠ” ν™˜κ²½μ„ κ΅¬μΆ•ν•΄μ€λ‹ˆλ‹€.

 

 

1. pycharm μ„€μΉ˜

ν•΄λ‹Ή μ‚¬μ΄νŠΈμ— λ“€μ–΄κ°€μ„œ pycharm IDEλ₯Ό μ„€μΉ˜ν•΄μ€λ‹ˆλ‹€.

(기쑴에 python을 μ‚¬μš©ν•˜μ‹œ μ•ŠμœΌμ…¨λ˜ μœˆλ„μš° μœ μ €λΌλ©΄ python도 μ„€μΉ˜ν•΄μ•Όν•©λ‹ˆλ‹€!!)

https://www.jetbrains.com/ko-kr/pycharm/download/#section=mac

 

PyCharm λ‹€μš΄λ‘œλ“œ: JetBrainsκ°€ λ§Œλ“  μ „λ¬Έ 개발자용 Python IDE

 

www.jetbrains.com

 

 

2. ν”„λ‘œμ νŠΈ 생성 및 λͺ¨λ“ˆ import

a) μƒˆ ν”„λ‘œμ νŠΈ 생성

pycharm을 μ‹€ν–‰  -> 파일 -> μƒˆ ν”„λ‘œμ νŠΈλ₯Ό 눌러 μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

 

 

 

 

b) dji tello λͺ¨λ“ˆ import

파일 -> μ„€μ • -> ν”„λ‘œμ νŠΈ 탭에 λ“€μ–΄κ°„ ν›„ + λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.

 

 

λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ μ•„λž˜μ™€ 같은 창이 λ‚˜νƒ€λ‚˜λŠ”λ° κ·Έ 쀑 djitellopyλ₯Ό μ°Ύμ•„ μ„€μΉ˜ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

 

 

djitellopyλ₯Ό μ„€μΉ˜ν•˜λ©΄ μžλ™μœΌλ‘œ numpy와 oepncv도 μ„€μΉ˜λ©λ‹ˆλ‹€.

λ§Œμ•½ μ•ˆκΉ”λ Έλ‹€λ©΄ 이것도 μ„€μΉ˜ν•΄μ£Όμ„Έμš”!

μ΄λ ‡κ²Œ ν™˜κ²½ ꡬ좕을 λ§ˆμ³€μŠ΅λ‹ˆλ‹€!!(κ°„λ‹¨ν•˜μ Έ?!~)

 

 

 


λ“œλ‘  - λ…ΈνŠΈλΆ μ—°κ²°

 

 

λ“œλ‘  전원을 킨 후에 λ…ΈνŠΈλΆμ—μ„œ μ™€μ΄νŒŒμ΄ 검색을 ν•˜λ©΄ TELLO 연결을 μœ„ν•œ μ™€μ΄νŒŒμ΄λ₯Ό λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

TELLO-XXXXX 와 같이 뜨게 λ˜λŠ”λ° ν•΄λ‹Ή μ™€μ΄νŒŒμ΄μ™€ μ—°κ²°ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€~~

μ΄λ ‡κ²Œ 연결을 ν•˜λ©΄ λ…ΈνŠΈλΆκ³Ό λ“œλ‘ μ΄ ν†΅μ‹ ν•˜κΈ° μœ„ν•œ μ€€λΉ„λ₯Ό λ§ˆμ³€μŠ΅λ‹ˆλ‹€.

이후에 μ½”λ“œμ— μžˆλŠ” connectκ°€ μ‹€ν–‰λ˜λ©΄ μ½”λ“œλ₯Ό 톡해 λ“œλ‘ μ„ μ‘°μ’…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 


이쀑 PI μ œμ–΄ 적용

 

이전 ν¬μŠ€νŒ…μ—μ„œ λ§ν•œ 것 처럼,

P μ œμ–΄λŠ” λΉ„λ‘€ μ œμ–΄

$${P=K_{p}*Error}$$

 

I  μ œμ–΄λŠ” 적뢄 μ œμ–΄

$${I=K_{i}*\int_{0}^{t}Error dt}$$

μž…λ‹ˆλ‹€.

 

 

 

이전 μŠ€νƒ€νŠΈλ•Œ μ μ—ˆλ˜ λ‚΄μš©μ²˜λŸΌ 기쑴의 PI μ œμ–΄λŠ” λͺ©ν‘œ μœ„μΉ˜μ™€μ˜ μœ„μΉ˜μ°¨μ΄λ₯Ό ERROR κ°’μœΌλ‘œ μ„€μ •ν•˜μ˜€λŠ”λ° 이쀑 PIλ₯Ό μ μš©ν•˜λ©° ERROR 값을 λ‹€λ₯΄κ²Œ μ„€μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

이쀑 PID μ œμ–΄λ„

 

이쀑 PI μ œμ–΄λ₯Ό 보면 크게 2파트둜 λ‚˜λˆŒ 수 μžˆλŠ”λ°μš”,

 

λ°”λ‘œ

각도에 λŒ€ν•œ PI μ œμ–΄ λΆ€λΆ„

κ³Ό

각속도에 λŒ€ν•œ PI μ œμ–΄ λΆ€λΆ„

으둜 λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

λ˜ν•œ, 이에 따라 계산에 μ‚¬μš©ν•˜λŠ” ERROR 값이 λ‹¬λΌμ§‘λ‹ˆλ‹€.


1) 기쑴의 PID μ œμ–΄μ™€ μœ μ‚¬ν•˜κ²Œ λͺ©ν‘œ 각도와 ν˜„μž¬ κ°λ„μ˜ μ°¨μ΄λ₯Ό ERROR κ°’μœΌλ‘œ ν•˜μ—¬ P μ œμ–΄λ₯Ό μ μš©ν•©λ‹ˆλ‹€.
2)P μ œμ–΄λ‘œ λ„μΆœλœ 값을 각속도 λͺ©ν‘œκ°’μœΌλ‘œ ν•˜μ—¬ ν˜„μž¬ κ°μ†λ„μ™€μ˜ μ˜€μ°¨λ₯Ό κ΅¬ν•΄ PI μ œμ–΄λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.

 

 

 

 

μœ„μ˜ λ‚΄μš©λ“€μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ μ½”λ“œμ˜ 일뢀λ₯Ό μ²¨λΆ€ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

전체 μ½”λ“œλŠ” κΉƒν—ˆλΈŒλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”~!

 

pid ν”„λ‘œκ·Έλž¨μ—μ„œ κ³„μ‚°μ‹œ ν•„μš”ν•œ λ³€μˆ˜λ“€μž…λ‹ˆλ‹€.

 

이쀑 PIλ₯Ό κ΅¬ν˜„ν•˜κ³  κ³„μ‚°ν•˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.

 

 

 

 

 


μ‹€ν–‰ κ²°κ³Ό

 

 

μ˜μƒμ„ 보면 μ•Œ 수 μžˆμ§€λ§Œ, ν”„λ‘œνŽ λŸ¬ κ°€λ“œλ₯Ό λ°€μ–΄μ„œ μ™ΈλΆ€ μš”μΈμ„ μ£Όμ—ˆμ„ λ•Œ μ™ΈλΆ€ μš”μΈμ— 밀렀났닀가도 λ‹€μ‹œ 제자리둜 λŒμ•„μ˜€λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€!!!!! 

ν˜Ήμ‹œλ‚˜ λ¬Ό μœ„μ—μ„œ μž‘λ™μ΄ μ•ˆλ κΉŒ νŒ€μ› μ–Έλ‹ˆκ°€ 직접 집 μš•μ‘°μ— 물을 λ°›μ•„ 직접 ν…ŒμŠ€νŠΈλ„ ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€ γ…Žγ…Žγ…Ž

 

 

 

 

 


κΈ°λŒ€νš¨κ³Ό

SeeSeaλŠ” κ°μ‹œ λ²”μœ„λ₯Ό μž…λ ₯받은 ν›„, 이λ₯Ό λ°”νƒ•μœΌλ‘œ μ—¬λŸ¬ λŒ€μ˜ λ“œλ‘ μ΄ κ°μ‹œ μ‚¬κ°μ§€λŒ€κ°€ 없도둝 졜적의 μœ„μΉ˜μ— λ°°μΉ˜λ˜κΈ°λ•Œλ¬Έμ— μ„€μ •λœ μœ„μΉ˜μ— μ•ˆμ •μ μœΌλ‘œ μœ„μΉ˜ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

PID μ œμ–΄λ‘œ μΈν•˜μ—¬ λ¬Ό μœ„μ—μ„œλ„ μ•ˆμ •μ μΈ 비행이 κ°€λŠ₯ν•΄μ§μœΌλ‘œμ¨ λ°”λ‹·λ°”λžŒκ³Ό 같은 μ™ΈλΆ€ μš”μΈμ—λ„ μ•ˆμ •μ μœΌλ‘œ κ°μ‹œλ₯Ό 진행할 수 μžˆμ„ 것이라 μ˜ˆμƒν•©λ‹ˆλ‹€.

 

 

 

 

 

ν…”λ‘œ μ—λ“€λ‘œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ” λˆ„κ΅°κ°€μ—κ²Œ 도움이 되기λ₯Ό 바라며....

μ΄μƒμœΌλ‘œ 이쀑 PIλ₯Ό μ΄μš©ν•œ ν…”λ‘œ 에듀 μœ„μΉ˜ μ œμ–΄ ν¬μŠ€νŒ…μ„ λ§ˆλ¬΄λ¦¬ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ•ˆλ‡½ !!!

 

 

'🎈capstone' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

PID μ œμ–΄λ₯Ό μ΄μš©ν•œ λ“œλ‘ μ˜ μœ„μΉ˜ μ œμ–΄  (1) 2022.11.24