Skip to content

AI Project for πŸ“‹Exibition, written in Python, used Tensorflow, OpenCV and more!

License

Notifications You must be signed in to change notification settings

Unperknown/AINOMOK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

author HitCount LICENSE

AINOMOK

πŸ“œ View Entire Documentation

2016년에 μ„±ν–‰ν•œ μ•ŒνŒŒκ³ μ™€ μ΄μ„ΈλŒκ³Όμ˜ κ²½κΈ° λͺ¨μŠ΅μ—μ„œ 영감λ₯Ό λ°›μ•„ 였λͺ©μ„ λ‘λŠ” 기계와 μ‚¬λžŒμ΄ 였λͺ© κ²Œμž„μ„ ν•  수 μžˆλ„λ‘ ν•œλ‹€. κΈ°κ³„λŠ” 인곡지λŠ₯이 λ‚΄μž₯된 λ°μŠ€ν¬νƒ‘κ³Ό ν†΅μ‹ ν•˜μ—¬ μ‹€μ œ κ³ μˆ˜μ™€ 같이 κ²Œμž„ν•˜λŠ” 것 같이 κ΅¬ν˜„ν•˜μ˜€λ‹€.

κ΅¬ν˜„μ„ μœ„ν•œ μ˜μƒ 처리 기술과 인곡 지λŠ₯은 Python 라이브러리 OpenCV와 Tensorflowλ₯Ό μ‚¬μš©ν•΄ μž‘μ„±ν•˜μ˜€μœΌλ©° 기계 μ œμ–΄μ™€ 톡신 ν”„λ‘œμ„ΈμŠ€λŠ” Arduino의 GRBLμ‰΄λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 3D Printer와 ν‘μ‚¬ν•˜κ²Œ μž‘λ™ ν•  수 μžˆλ„λ‘ Cμ–Έμ–΄λ‘œ μž‘μ„±ν•˜μ˜€λ‹€. 물리적 μ„€κ³„λŠ” 3D λͺ¨λΈλ§μœΌλ‘œ Fusion 360을 μ‚¬μš©ν•˜μ˜€λ‹€.

πŸ“ŠPurpose

우리 학ꡐ νŠΉμ„± 상 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— μ§‘μ€‘λ˜μ–΄ μžˆμ–΄ μ‹€μ œ κΈ°κ³„μ—μ„œ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ–΄λ–»κ²Œ ν™œμš©λ˜λŠ”μ§€ μ•Œ 수 μ—†μ—ˆλŠ”λ° μ΄λ²ˆμ— ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ•Œκ³  μ‹Άμ–΄μ„œ λ‘œλ΄‡μ— 인곡지λŠ₯을 넣을 수 μžˆλ„λ‘ ν•˜μ˜€λ‹€.

그리고 μ‘°λ¦½ν•œ 기계 μ‚°μΆœλ¬Όμ΄ μ „μ‹œνšŒ 이후에 μ‚¬μš©λ˜μ§€ μ•Šκ³  λ²„λ €μ§€λŠ” λ¬Έμ œμ μ—μ„œ λ²—μ–΄λ‚˜κΈ° μœ„ν•΄ 보닀 더 μ‹€μš©λ„κ°€ 높은 μ‚°μΆœλ¬Όμ„ κ°œλ°œν•˜κ³  μ‹Άμ–΄μ„œ μ΅œλŒ€ν•œ ν₯미둜운 아이디어λ₯Ό μ ‘λͺ©ν•˜κ³  μ‹ΆοΏ½οΏ½οΏ½λ‹€.

β˜‘οΈFeatures

  • λ‘œλ΄‡μ€ 였λͺ©νŒμ˜ μ˜μƒ 처리λ₯Ό 톡해 ν˜„μž¬ μƒνƒœλ₯Ό λΆ„μ„ν•˜μ—¬ λ‘˜ 수 μžˆλŠ” 수 쀑 졜적의 수λ₯Ό μ „λ‹¬ν•œλ‹€.
  • κ΅¬μ„±ν’ˆμ˜ LCD νŒ¨λ„μ—μ„œ 좜λ ₯λ˜λŠ” 정보λ₯Ό 톡해 ν˜„μž¬ κ²Œμž„ μŠ€ν…Œμ΄μ§€μ˜ μƒνƒœλ₯Ό μ•Œ 수 μžˆλ‹€.

πŸ”˜Entire Design

Estimated Outputs

μ˜ˆμƒ μ™„μ„±λ³Έ

System Design

πŸ‘ͺContributors

Project Group

Others

πŸ”‘Stack

  • Python

    • Tensorflow(for C: Partically uses Ubuntu OS)
    • OpenCV
  • Arduino

  • 3D Printing & Modeling

πŸ•€Daily Progress

Day 1(12/27) - κ³„νšμ„œ μˆ˜μ • 및 개발 κ³Όμ • 섀계

1. κ³„νšμ„œ 버전 μˆ˜μ • 및 λΈŒλ‘œμŠˆμ–΄ μΆ”κ°€

doc λ””λ ‰ν† λ¦¬μ˜ κ³„νšμ„œλ₯Ό 10/24(Ver.1)μ—μ„œ 12/26(Ver.2)둜 Commitν•˜μ˜€λ‹€. 그리고 κ³„νš 수립 κ³Όμ • 쀑 νŒλ„¬ ꡬ성을 ν•˜κΈ°λ‘œ 결정함에 따라 λΈŒλ‘œμŠˆμ–΄ 원본을 μΆ”κ°€ν•˜μ˜€λ‹€.

2. μ‹œμŠ€ν…œ 섀계

μ‹œμŠ€ν…œ μ„€κ³„μ˜ 도식은 λ‚˜μ€‘μ— μ—…λ°μ΄νŠΈλ  μ˜ˆμ •μ΄λ‹€.

κ΅¬ν˜„μ€ 였λͺ© κ²Œμž„μ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³  μ œμ–΄ν•˜λŠ” λ°μŠ€ν¬νƒ‘κ³Ό 물리적인 μƒνƒœ μ €μž₯κ³Ό 좜λ ₯을 λ‹΄λ‹Ήν•˜λŠ” 아두이노 κ°„μ˜ ν†΅μ‹ μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ 것이닀. λ°μŠ€ν¬νƒ‘μ€ μ›ΉμΊ κ³Ό μ—°κ²°λ˜μ–΄ μ›ΉμΊ μ—μ„œ 주어진 였λͺ©νŒμ˜ 이미지λ₯Ό μ˜μƒ μ²˜λ¦¬ν•˜μ—¬ 였λͺ©νŒμ„ μ €μž₯ν•˜λŠ” λ°°μ—΄μ˜ 각 μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•œλ‹€. 각 μ—…λ°μ΄νŠΈλ₯Ό Round둜 λ‚˜λˆ„μ–΄ 각 Roundλ§ˆλ‹€ λ°μŠ€ν¬νƒ‘μ— λ‚΄μž₯된 RL λͺ¨λΈμ΄ 컴퓨터가 λ‘˜ μ’Œν‘œλ₯Ό νŒλ‹¨ν•˜μ—¬ κ·Έ μ’Œν‘œλ₯Ό 아두이노에 μ „λ‹¬ν•œλ‹€.

μ•„λ‘μ΄λ…ΈλŠ” μ „λ‹¬ν•œ μ’Œν‘œμ— 따라 λͺ¨ν„°λ₯Ό μ œμ–΄ν•˜λŠ” ν”„λ‘œμ‹œμ €μ— 따라 λ°”λ‘‘νŒμ˜ μƒνƒœμ— μ•Œλ§žκ²Œ λ‘”λ‹€. μ•„λ‘μ΄λ…Έμ˜ LCD νŒ¨λ„μ— κ²Œμž„μ΄ 진행 쀑인지, λλ‚¬λŠ”μ§€ ν‘œμ‹œν•œλ‹€. 그리고 λ²„νŠΌμ„ 눌러 κ²Œμž„μ„ μ‹œμž‘ν•˜λŠ” μ‹ ν˜Έλ‚˜ μ€‘μ§€ν•˜λŠ” μ‹ ν˜Έλ₯Ό λ°μŠ€ν¬νƒ‘μœΌλ‘œ 보낸닀. λ°˜λŒ€λ‘œ λ°μŠ€ν¬νƒ‘μ€ 였λͺ© κ²Œμž„μ΄ λλ‚˜λŠ” Round에 κ²Œμž„μ΄ λλ‚¬λ‹€λŠ” μ‹ ν˜Έλ₯Ό μ•„λ‘μ΄λ…Έλ‘œ 보낸닀.

Day 2(12/28) - 개발 μ„ΈνŒ… 및 ν…ŒμŠ€νŠΈ 섀계(λ‹¨μœ„ ν…ŒμŠ€νŠΈ)

1. λΆ€ν’ˆ 쑰달 확인

λΆ€ν’ˆ 쑰달이 μ§€μ—°λ˜μ–΄ μ‹€μ „ ν…ŒμŠ€νŒ…μ€ μ‹œν˜„ 직전인 1μ›” 5일뢀터 1μ›” 7μΌκΉŒμ§€ ν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€λ‹€. λΆ€ν’ˆμ΄ μ˜€λŠ” λ™μ•ˆ ν”„λ‘œμ„ΈμŠ€μ˜ κ΅¬ν˜„κ³Ό RL λͺ¨λΈ ν›ˆλ ¨μ„ ν•˜λŠ” κ²ƒμœΌλ‘œ κ²°μ •ν•˜μ—¬ Day 3λΆ€ν„° 본격적으둜 κ°œλ°œν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€.

2. 개발 ν™˜κ²½ 및 ν…ŒμŠ€νŠΈ

μ˜μƒ 처리: ν…ŒμŠ€νŠΈλŠ” λΆ€ν’ˆμ΄ μ˜€μ§€ μ•Šμ•„ μž„μ‹œλ‘œ λ…ΈνŠΈλΆμ˜ μ›ΉμΊ μœΌλ‘œ λŒ€μ‹  ν…ŒμŠ€νŠΈν•  것이닀. μ΄λ―Έμ§€λ‚˜ μ˜μƒμ„ 띄웠을 λ•Œ 검은 돌과 ν•˜μ–€ 돌이 μ–΄λŠ μ’Œν‘œμ— μžˆλŠ”μ§€ CLI에 좜λ ₯ν•˜λŠ” κ²ƒμœΌλ‘œ λ‹¨μœ„ ν…ŒμŠ€νŒ…ν•  것이닀.

RL λͺ¨λΈ: μ‹œκ°„ 내에 κ΅¬ν˜„ν•˜μ§€ λͺ»ν•  κ°€λŠ₯성을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‹œμ΄ˆμ—λŠ” Python의 easyAI 라이브러리둜 λ¨Όμ € κ΅¬ν˜„ν•  것이닀. 그러고 λ‚˜μ„œ μ•Œλ§žκ²Œ λ¦¬νŒ©ν† λ§ν•˜μ—¬ Tensorflow 라이브러리둜 μž¬μž‘μ„±ν•  것이닀.

3D λͺ¨λΈλ§: λ‘œλ΄‡ ν•˜λ“œμ›¨μ–΄λ₯Ό κ΅¬μ„±ν•˜λŠ” λΆ€ν’ˆμ˜ ꡬ성을 λͺ¨λΈλ§ν•˜μ—¬ μ €μž₯μ†Œμ— μ»€λ°‹ν•˜μ—¬ λ³΄κ΄€ν•œλ‹€. 그러고 λ‚˜μ„œ 좜λ ₯ν•˜μ—¬ λΆ€ν’ˆμ΄ μ˜€λŠ” μ¦‰μ‹œ 쑰립을 μ‹œμž‘ν•  것이닀.

Day 3 ~ Day 5(12/29, 1/2 ~ 1/3) - 개발 μˆ˜ν–‰

1. Unperknown - Image Processing

μ˜μƒ 처리λ₯Ό ν†΅ν•œ λ°”λ‘‘λŒ 감지

μ˜μƒ 처리λ₯Ό 톡해 μž„μ‹œλ‘œ νŒŒλž€μƒ‰μ„ κ°μ§€ν•˜λŠ” 것을 μ„±κ³΅ν•˜μ˜€λ‹€.(12/29) 그러고 λ‚˜μ„œ 지속적인 색 감지 ν…ŒμŠ€νŠΈλ₯Ό 톡해 κ²€μ€λŒκ³Ό ν•˜μ–€λŒμ˜ μœ„μΉ˜λ₯Ό ν™”λ©΄μœΌλ‘œ 탐지할 수 있게 λ‚˜λŠ”λ° μ„±κ³΅ν•˜μ˜€λ‹€.(1/3) κ·ΈλŸ¬λ‚˜ ν˜„μž¬ ν•˜λ“œμ›¨μ–΄κ°€ μ™„μ„±λ˜μ§€ μ•Šμ•„ μ‹€μ œλ‘œ νƒμ§€λ˜λŠ”μ§€ ν…ŒμŠ€νŠΈλ₯Ό ν•  수 μ—†λŠ” μƒνƒœμ΄λ‹€. 색 탐지 값을 μ‘°μ •ν•˜λŠ”λ° ν•˜λ“œμ›¨μ–΄μ— μ„€μΉ˜λœ μŠ€νƒ λ“œμ˜ λΉ›μ˜ 밝기, μ›ΉμΊ μ˜ μœ„μΉ˜ 등에 따라 μƒλ‹Ήνžˆ λ‹¬λΌμ§ˆ 수 μžˆμ–΄ μ’Œν‘œμ˜ 색을 κ²€μΆœν•˜μ—¬ 였λͺ©νŒμ˜ μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” AI λͺ¨λΈμ„ μ™„μ„±ν•˜κ³  κ²Œμž„ μ œμ–΄ ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•œ 후인 κ°€μž₯ λ§ˆμ§€λ§‰μ— ν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€λ‹€.

ν˜„μž¬ κ²Œμž„ μ œμ–΄ ν”„λ‘œκ·Έλž¨κ³Ό AI λͺ¨λΈμ€ src 디렉토리λ₯Ό μ–΄λ–»κ²Œ ꡬ성할지에 λŒ€ν•œ νšŒμ˜κ°€ λλ‚˜κ³  λ‚˜μ„œ μ°¨κ·Όμ°¨κ·Ό 컀밋할 μ˜ˆμ •μ΄λ‹€.

2. ohseyoung123 - Arduino Programming

μ‹œλ¦¬μ–Ό 톡신을 C#둜 μž‘μ„±ν•˜μ˜€λ‹€. 기본적인 틀을 μˆ™μ§€ν•˜κ³  λ‚˜μ„œ 본격적으둜 λͺ©μ μ— μ•Œλ§žκ²Œ κ΅¬ν˜„ν•  것이닀. μ½”λ“œλ₯Ό μ§œλŠ”λ°μ— 어렀움을 κ²ͺμ–΄ 검색과 μΉœκ΅¬λ“€μ—κ²Œ 물어봐가며 C++둜 μž‘μ„±ν•˜λ €κ³  ν•˜μ˜€μœΌλ‚˜ 지속적인 였λ₯˜κ°€ 일어났닀.(~1/2)방법을 찾던 쀑 μ„ λ°°μ˜ 도움을 λ°›μ•„ C#으둜 μž‘μ„±ν•  수 μžˆλŠ” 방법을 μ°Ύμ•„ 각 아두이노 ν•€μœΌλ‘œ λ¬Έμžμ—΄μ„ 좜λ ₯ν•˜λŠ” 데에 μ„±κ³΅ν•˜μ˜€λ‹€.(1/3)

3. asphalt-alpha - 3D Modeling

λΆ€ν’ˆμ„ λͺ¨λΈλ§ν•˜μ˜€λ‹€. μ €μž₯μ†Œμ— μ»€λ°‹ν•˜κ³  λ‚˜λ¨Έμ§€ ν•„μš”ν•œ λΆ€ν’ˆμ„ μΆ”κ°€λ‘œ 더 ν•  것이닀.

Day 6 ~ Day 8(1/4 ~ 1/6) - 개발 μˆ˜ν–‰ 및 ν…ŒμŠ€νŠΈ

1. cdb0915 - Assistance of Arduino Programming

μ‹œλ¦¬μ–Ό 톡신을 κ΅¬ν˜„μ„ κ²€μ¦ν•˜λŠ” 쀑에 ohseyoung123과의 ν˜‘μ˜λ₯Ό 거쳐 기술 ν•œκ³„ 상 Python으둜 μž¬μž‘μ„±ν•˜μžκ³  κ²°μ •ν•˜μ˜€λ‹€.(1/4) κ·Έλž˜μ„œ ohseyoung123이 μž‘μ„±ν•œ μ†ŒμŠ€ νŒŒμΌμ„ λ¦¬λ·°ν•˜κ³  ν˜„μž¬ 였λͺ© μ œμ–΄ ν”„λ‘œκ·Έλž¨κ³Ό μ‹œλ¦¬μ–Ό 톡신 ν”„λ‘œκ·Έλž¨μ„ ν•©μΉ˜λŠ” μž‘μ—…μ„ μ§„ν–‰ν•˜κ³  μžˆλ‹€.

2. Unperknown - AI Development and Omok Program

ν•˜λ“œμ›¨μ–΄ μ•ˆμ˜ 였λͺ©νŒμ˜ μƒνƒœλ₯Ό 담은 데이터λ₯Ό 가져와 ν˜„μž¬ Round의 승리 μ—¬λΆ€λ₯Ό ν™•μΈν•˜κ³  턴을 λŒλ¦¬λŠ” μ œμ–΄ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ˜€λ‹€.(12/28) κ·Έ μ œμ–΄ ν”„λ‘œκ·Έλž¨μ—μ„œ μ˜μƒ 처리λ₯Ό 톡해 ν”Œλ ˆμ΄μ–΄κ°€ λ‘” 돌의 μ’Œν‘œλ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ„œλ“œμ™€ AI λͺ¨λΈμ„ μ‹€ν–‰ν•˜μ—¬ μ’Œν‘œλ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ„œλ“œλŠ” ν˜„μž¬ μž‘μ—… 쀑이닀. ν˜„μž¬ λͺ¨λΈμ΄ ν›ˆλ ¨μ΄ 아직 λ˜μ§€ μ•Šμ•˜κ³  μƒκ²¨λ‚œ 버그λ₯Ό μˆ˜μ •ν•˜κ³  μžˆλ‹€. (1/2 ~) μ €λ²ˆμ— μ–ΈκΈ‰ν•œ λŒ€λ‘œ 내일(1/6)에 μ˜μƒ 처리λ₯Ό 톡해 μ’Œν‘œλ₯Ό λΆˆλŸ¬μ˜€λŠ” λ©”μ„œλ“œλ₯Ό μ‹€μ œ ν•˜λ“œμ›¨μ–΄μ— μ—°κ²°ν•΄ ν…ŒμŠ€νŠΈν•  μ˜ˆμ •μ΄λ‹€. κ·ΈλŸ¬λ©΄μ„œ κ·Έ λ©”μ„œλ“œ μ†ŒμŠ€ νŒŒμΌμ„ 컀밋할 것이닀.

3. asphalt-alpha - Assembling Robot

ν˜„μž¬ 섀계도에 κ³„νšν•œ λ„λ©΄λŒ€λ‘œ λŒ€λΆ€λΆ„μ˜ 물리적 κ΅¬ν˜„μ„ 마치고 μžˆλ‹€.(1/4 ~) κ·ΈλŸ¬λ‚˜ μ„Έμ„Έν•œ μž‘μ—…μ„ ν•˜λ©΄μ„œ μ›ΉμΊ κΉŒμ§€ λ‹€ μ„€μΉ˜ν•˜λŠ”λ° μ‹œκ°„μ΄ κ±Έλ € μ΅œμ’…μ μΈ ν…ŒμŠ€νŠΈλŠ” 내일(1/7) ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€.

Day 8 ~ Day 9(1/7 ~ 1/8) - ν”„λ‘œμ νŠΈ μΌμ‹œ 쀑단

ν•˜λ“œμ›¨μ–΄μ™€ ν”„λ‘œκ·Έλž¨ κ°„μ˜ λ„€νŠΈμ›Œν¬ κ΅¬ν˜„μ΄ μ›ν™œν•˜κ²Œ 이루어지지 μ•Šμ•˜κ³  μ˜μƒ 처리 κΈ°μˆ μ„ κ΅¬ν˜„ν•˜λŠ”λ° μ‹œκ°„μ΄ 맀우 μ΄‰λ°•ν•˜μ˜€λ‹€. κ·Έλž˜μ„œ ν”„λ‘œν† νƒ€μž…λ§Œ μ „μ‹œν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€λ‹€.

Day 10(5/14? ~ ) - ν”„λ‘œμ νŠΈ 재개

각 νŒ€μ›μ˜ μŠ€μΌ€μ€„ 문제둜 2λΆ„κΈ° λ°©κ³Όν›„ ν”„λ‘œκ·Έλž¨μ— ν”„λ‘œμ νŠΈ λ°˜μ„ λ”°λ‘œ κ΅¬μ„±ν•˜μ—¬ κ·Έ μ‹œκ°„ λ™μ•ˆ μ™„μ„±ν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€λ‹€. μ •ν™•ν•œ 재개 λ‚ μ§œλŠ” 아직 정해지지 μ•Šμ•˜λ‹€.

About

AI Project for πŸ“‹Exibition, written in Python, used Tensorflow, OpenCV and more!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages