Skip to content

MichaelBentleyOh/RL_robot

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์Šคํ„ฐ๋”” ๋ชฉ์ 

์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ : 24.03.15 ~ 24.12.23

๋ณธ ์Šคํ„ฐ๋””๋Š” ์‹ฌ์ธต ์‹ ๊ฒฝ๋ง ๊ฐ•ํ™”ํ•™์Šต(Deep Reinforcement Learning : DRL) ๊ณต๋ถ€๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑํ•œ ์Šคํ„ฐ๋””๋กœ, ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์‹ค์ œ ๋กœ๋ด‡์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ชฉํ‘œ๋กœ ํ•˜์˜€๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ์‹ค์ œ ๋กœ๋ด‡ ์ ์šฉ์—๋Š” ์‹คํŒจํ•˜์˜€์ง€๋งŒ, DRL์— ๋Œ€ํ•œ ์ด๋ก  ๋ฐ ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


2. ๊ฐ•ํ™”ํ•™์Šต ๊ธฐ๋ณธ ์ด๋ก 

๊ฐ•ํ™”ํ•™์Šต(Reinforcement Learning, RL) ์€ ์—์ด์ „ํŠธ(agent) ๊ฐ€ ํ™˜๊ฒฝ(environment) ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋ณด์ƒ์„ ์ตœ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ์˜ ์ •์ฑ…(optimal policy) ์„ ํ•™์Šตํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ์ƒํƒœ(state) ๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ํ–‰๋™(action) ์„ ์„ ํƒํ•˜๋ฉฐ ํ™˜๊ฒฝ์—์„œ ๋ฐ˜ํ™˜๋œ ๋ณด์ƒ(reward) ์„ ํ†ตํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

2.1 ๊ฐ•ํ™”ํ•™์Šต์˜ ์ฃผ์š” ์š”์†Œ

๊ฐ•ํ™”ํ•™์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

1. ํ™˜๊ฒฝ (Environment)

  • ์—์ด์ „ํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ณต๊ฐ„์ด๋ฉฐ, ํ–‰๋™์˜ ๊ฒฐ๊ณผ๋กœ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ณด์ƒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™˜๊ฒฝ์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ณต๊ฐ„, ๊ฒŒ์ž„ ํ™˜๊ฒฝ, ์‹ค์ œ ์„ธ๊ณ„ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ: ๋กœ๋ด‡ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ, ์ฒด์Šค ๊ฒŒ์ž„ ๋ณด๋“œ

2. ์ƒํƒœ (State)

  • ํ˜„์žฌ ํ™˜๊ฒฝ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด์˜ ์ง‘ํ•ฉ
  • ์ƒํƒœ๋Š” ์—์ด์ „ํŠธ์˜ ํ–‰๋™์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ: ๋กœ๋ด‡ ํŒ”์˜ ํ˜„์žฌ ๊ฐ๋„์™€ ์œ„์น˜, ๊ฒŒ์ž„ ๋‚ด ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ

3. ํ–‰๋™ (Action)

  • ์—์ด์ „ํŠธ๊ฐ€ ํŠน์ • ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘
  • ํ–‰๋™์€ ์ด์‚ฐ์ (discrete)์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์—ฐ์†์ (continuous)์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ: ๋กœ๋ด‡ ํŒ”์„ ํŠน์ • ์ถ•์œผ๋กœ ํšŒ์ „์‹œํ‚ค๊ธฐ, ๊ฒŒ์ž„์—์„œ ์ด๋™ ๋ฐฉํ–ฅ ์„ ํƒ

4. ๋ณด์ƒ (Reward)

  • ์—์ด์ „ํŠธ๊ฐ€ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋กœ ํ™˜๊ฒฝ์—์„œ ๋ฐ˜ํ™˜๋ฐ›๋Š” ๊ฐ’
  • ๋ณด์ƒ์€ ํ–‰๋™์ด ๋ชฉํ‘œ ๋‹ฌ์„ฑ์— ์–ผ๋งˆ๋‚˜ ๊ธฐ์—ฌํ–ˆ๋Š”์ง€ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ: ๋กœ๋ด‡์ด ๋ชฉํ‘œ ๋ฌผ์ฒด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ง‘์œผ๋ฉด +1, ์‹คํŒจํ•˜๋ฉด -1

5. ์ •์ฑ… (Policy)

  • ์—์ด์ „ํŠธ๊ฐ€ ์ฃผ์–ด์ง„ ์ƒํƒœ์—์„œ ์–ด๋–ค ํ–‰๋™์„ ์„ ํƒํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ทœ์น™ ๋˜๋Š” ํ•จ์ˆ˜
  • ์ •์ฑ…์€ ํ™•๋ฅ ์ ์œผ๋กœ ํ–‰๋™์„ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ๊ณ , ํ•ญ์ƒ ํŠน์ • ํ–‰๋™์„ ์„ ํƒํ•˜๋„๋ก ์„ค๊ณ„๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ•ํ™”ํ•™์Šต์˜ ๋ชฉํ‘œ๋Š” ์ตœ์ ์˜ ์ •์ฑ…์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

6. ๊ฐ€์น˜ ํ•จ์ˆ˜ (Value Function)

  • ํŠน์ • ์ƒํƒœ์—์„œ ์—์ด์ „ํŠธ๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์žฅ๊ธฐ์ ์ธ ๋ณด์ƒ์˜ ๊ธฐ๋Œ€๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ๊ฐ€์น˜ ํ•จ์ˆ˜๋Š” ์ƒํƒœ ์ž์ฒด์˜ ๊ฐ€์น˜๋ฅผ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜, ์ƒํƒœ์™€ ํ–‰๋™ ์Œ์˜ ๊ฐ€์น˜๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2.2 ๊ฐ•ํ™”ํ•™์Šต์˜ ์ฃผ์š” ํ•™์Šต ๋ฐฉ๋ฒ•

๊ฐ•ํ™”ํ•™์Šต์€ ํ•™์Šต ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ฐ€์น˜ ๊ธฐ๋ฐ˜ ํ•™์Šต(Value-Based Learning), ์ •์ฑ… ๊ธฐ๋ฐ˜ ํ•™์Šต(Policy-Based Learning), ๊ทธ๋ฆฌ๊ณ  ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ•™์Šต(Hybrid Learning) ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

1. ๊ฐ€์น˜ ๊ธฐ๋ฐ˜ ํ•™์Šต (Value-Based Learning)

๊ฐ€์น˜ ๊ธฐ๋ฐ˜ ํ•™์Šต์€ ์ƒํƒœ-ํ–‰๋™ ์Œ์˜ ๊ฐ€์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜(Q-๊ฐ’) ๋ฅผ ํ•™์Šตํ•˜์—ฌ ์ตœ์ ์˜ ํ–‰๋™์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฐฉ์‹์—์„œ๋Š” ์ •์ฑ…์ด ์ •์˜๋˜๋ฉฐ ์—์ด์ „ํŠธ๋Š” Q-๊ฐ’์ด ๊ฐ€์žฅ ๋†’์€ ํ–‰๋™์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • ํŠน์ง•:

    • ์ƒํƒœ-ํ–‰๋™ ์Œ์˜ ๊ฐ€์น˜๋ฅผ ์˜ˆ์ธกํ•˜๋Š” Q-ํ•จ์ˆ˜ ํ•™์Šต
    • Q-๊ฐ’์„ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ํ–‰๋™์„ ์„ ํƒ
  • ๋Œ€ํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

    • Q-๋Ÿฌ๋‹: ์ƒํƒœ์™€ ํ–‰๋™์˜ Q-๊ฐ’์„ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์—…๋ฐ์ดํŠธ
    • DQN (Deep Q-Network): Q-๋Ÿฌ๋‹์„ ์‹ฌ์ธต ์‹ ๊ฒฝ๋ง์œผ๋กœ ํ™•์žฅํ•˜์—ฌ ๊ณ ์ฐจ์› ์ƒํƒœ ๊ณต๊ฐ„์— ์ ์šฉ ๊ฐ€๋Šฅ
  • ์žฅ์ :

    • ์ด์‚ฐ์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„์— ์ ํ•ฉ
    • ์ •์ฑ…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์Œ
  • ๋‹จ์ :

    • ์—ฐ์†์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„์—์„œ๋Š” ์ ์šฉ์ด ์–ด๋ ค์›€

2. ์ •์ฑ… ๊ธฐ๋ฐ˜ ํ•™์Šต (Policy-Based Learning)

์ •์ฑ… ๊ธฐ๋ฐ˜ ํ•™์Šต์€ ์ตœ์ ์˜ ์ •์ฑ…์„ ์ง์ ‘ ํ•™์Šตํ•˜์—ฌ ์—์ด์ „ํŠธ๊ฐ€ ํ–‰๋™์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
ํŠนํžˆ, ์—ฐ์†์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํŠน์ง•:

    • ์ƒํƒœ์— ๋”ฐ๋ผ ํ–‰๋™์„ ์„ ํƒํ•˜๋Š” ์ •์ฑ… ํ•จ์ˆ˜(Policy Function)๋ฅผ ์ง์ ‘ ํ•™์Šต
    • ํ™•๋ฅ ์  ์ •์ฑ…(ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰๋™ ์„ ํƒ) ๋˜๋Š” ๊ฒฐ์ •์  ์ •์ฑ…(ํ•ญ์ƒ ํŠน์ • ํ–‰๋™ ์„ ํƒ)์ด ๊ฐ€๋Šฅ
  • ๋Œ€ํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

    • REINFORCE: ์ •์ฑ… ๊ฒฝ์‚ฌ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์ƒ์„ ์ตœ๋Œ€ํ™”ํ•˜๋„๋ก ์ •์ฑ…์„ ํ•™์Šต
    • DDPG (Deep Deterministic Policy Gradient): ์—ฐ์†์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒฐ์ •์  ์ •์ฑ… ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์žฅ์ :

    • ์—ฐ์†์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„์— ์ ํ•ฉ
    • ํƒ์ƒ‰(exploration)๊ณผ ํ™œ์šฉ(exploitation)์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉ
  • ๋‹จ์ :

    • ๋ณด์ƒ์ด ํฌ๋ฐ•ํ•˜๊ฑฐ๋‚˜ ๋ณ€๋™์„ฑ์ด ํด ๋•Œ ํ•™์Šต์ด ๋ถˆ์•ˆ์ •

3. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ•™์Šต (Hybrid Learning)

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ•™์Šต์€ ๊ฐ€์น˜ ๊ธฐ๋ฐ˜ ํ•™์Šต๊ณผ ์ •์ฑ… ๊ธฐ๋ฐ˜ ํ•™์Šต์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‘ ๋ฐฉ๋ฒ•์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.
์ฃผ๋กœ ๊ฐ€์น˜ ํ•จ์ˆ˜์™€ ์ •์ฑ…์„ ๋™์‹œ์— ํ•™์Šตํ•˜์—ฌ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ํ•™์Šต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • ํŠน์ง•:

    • ์ •์ฑ…๊ณผ ๊ฐ€์น˜ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ๋ฅผ ๋ณด์™„ํ•˜๋ฉฐ ํ•™์Šต
    • ๊ฐ€์น˜ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์€ ์ •์ฑ… ํ•™์Šต์„ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณต
  • ๋Œ€ํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

    • A3C (Asynchronous Advantage Actor-Critic): ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•ด ํšจ์œจ์ ์ธ ์ •์ฑ… ๋ฐ ๊ฐ€์น˜ ํ•™์Šต
    • TD3 (Twin Delayed Deep Deterministic Policy Gradient): DDPG์˜ ๊ฐœ์„  ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์—ฐ์† ํ–‰๋™ ๊ณต๊ฐ„์—์„œ ์ •์ฑ… ํ•™์Šต์˜ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ
  • ์žฅ์ :

    • ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ ๋” ์•ˆ์ •์ ์ด๊ณ  ํšจ๊ณผ์ 
    • ๊ฐ€์น˜ ํ•จ์ˆ˜์˜ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ •์ฑ…์˜ ํ•™์Šต ์†๋„๋ฅผ ๊ฐœ์„ 
  • ๋‹จ์ :

    • ๊ตฌํ˜„์ด ๋น„๊ต์  ๋ณต์žก
    • ํ•™์Šต ๊ณผ์ •์—์„œ ๋†’์€ ๊ณ„์‚ฐ ์ž์› ์š”๊ตฌ

2.3 ๊ฐ•ํ™”ํ•™์Šต์˜ ํ•™์Šต ๊ณผ์ •

๊ฐ•ํ™”ํ•™์Šต์€ ์—์ด์ „ํŠธ๊ฐ€ ํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค:

1. ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™”

  • ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ์„ค์ •ํ•˜๊ณ , ์—์ด์ „ํŠธ๋Š” ์ฒซ ๋ฒˆ์งธ ์ƒํƒœ๋ฅผ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

2. ํ–‰๋™ ์„ ํƒ

  • ์—์ด์ „ํŠธ๋Š” ํ˜„์žฌ ์ƒํƒœ์—์„œ ์ •์ฑ…์— ๋”ฐ๋ผ ํ–‰๋™์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ํƒ์ƒ‰(Exploration)๊ณผ ํ™œ์šฉ(Exploitation)์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

3. ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ

  • ์—์ด์ „ํŠธ์˜ ํ–‰๋™์— ๋”ฐ๋ผ ํ™˜๊ฒฝ์€ ์ƒˆ๋กœ์šด ์ƒํƒœ์™€ ๋ณด์ƒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

4. ์ •์ฑ… ๋ฐ ๊ฐ€์น˜ ์—…๋ฐ์ดํŠธ

  • ์—์ด์ „ํŠธ๋Š” ๊ฒฝํ—˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์ฑ…๊ณผ ๊ฐ€์น˜ ํ•จ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

5. ๋ฐ˜๋ณต

  • ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ์œ„ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

DQN (Deep Q-Network) ์ด๋ก  ๋ฐ ๊ตฌ์กฐ ์„ค๋ช… DQN(Deep Q-Network)์€ **๊ฐ•ํ™” ํ•™์Šต(Reinforcement Learning)**์—์„œ Q-๋Ÿฌ๋‹์„ ๋”ฅ๋Ÿฌ๋‹์œผ๋กœ ํ™•์žฅํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

1. Q-๋Ÿฌ๋‹์˜ ํ•œ๊ณ„

Q-๋Ÿฌ๋‹์€ ์ƒํƒœ-ํ–‰๋™(State-Action) ์Œ์„ ์ €์žฅํ•˜๋Š” Q-ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜:

  • ์ƒํƒœ ๊ณต๊ฐ„์ด ํฌ๊ฑฐ๋‚˜ ์—ฐ์†์ ์ด๋ฉด Q-ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋„ˆ๋ฌด ํผ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ ๊ฐ™์€ ๊ฒฝ์šฐ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ์กด์žฌ.

2. ๋”ฅ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•œ Q ๊ฐ’ ์ถ”์ •

DQN์€ ๋”ฅ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•ด Q-๋Ÿฌ๋‹์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ:

  • Q-ํ•จ์ˆ˜๋ฅผ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ(์ฃผ๋กœ ์‹ ๊ฒฝ๋ง)๋กœ ๊ทผ์‚ฌ:
    • ์ƒํƒœ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ–‰๋™๋ณ„ Q ๊ฐ’์„ ์ถœ๋ ฅ.
    • ์˜ˆ: Q(s, a) ๋Œ€์‹  NN(s) -> [Q(s, a1), Q(s, a2), ..., Q(s, an)].

3. DQN์˜ ํ•ต์‹ฌ ์š”์†Œ

DQN์€ ๋‹ค์Œ ์ฃผ์š” ๊ธฐ์ˆ ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

(1) ๋ฆฌํ”Œ๋ ˆ์ด ๋ฒ„ํผ(Experience Replay):

  • ํ•™์Šต ์‹œ ์ƒ˜ํ”Œ์˜ ์ƒ๊ด€๊ด€๊ณ„ ์ œ๊ฑฐ์™€ ๋ฐ์ดํ„ฐ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.
  • ์—์ด์ „ํŠธ๊ฐ€ ๊ฒฝํ—˜ํ•œ (์ƒํƒœ, ํ–‰๋™, ๋ณด์ƒ, ๋‹ค์Œ ์ƒํƒœ)๋ฅผ ์ €์žฅ.
  • ๋ฌด์ž‘์œ„๋กœ ์ƒ˜ํ”Œ๋งํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šต์‹œ์ผœ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์‚ฌ์šฉ ๋ฐ ํŽธํ–ฅ ์ œ๊ฑฐ.

(2) ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ(Target Network):

  • Q ๊ฐ’์„ ํ•™์Šตํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ถˆ์•ˆ์ •์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋„์ž….
  • Q(s, a)์˜ ํƒ€๊ฒŸ๊ฐ’(r + ฮณ * max_a' Q(s', a'))์„ ์•ˆ์ •์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉ:
    • ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ํ˜„์žฌ ๋„คํŠธ์›Œํฌ์˜ ๊ฐ€์ค‘์น˜๋กœ ์—…๋ฐ์ดํŠธ.
    • ์ด๋ฅผ ํ†ตํ•ด ํ•™์Šต ๋„์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์ง„๋™(oscillation)์„ ์ค„์ž„.

(3) ํƒํ—˜ vs ํ™œ์šฉ(Exploration vs Exploitation):

  • ํƒํ—˜(Exploration): ์ƒˆ๋กœ์šด ํ–‰๋™์„ ์‹œ๋„ํ•ด ํ™˜๊ฒฝ์„ ํƒ์ƒ‰.
  • ํ™œ์šฉ(Exploitation): ํ˜„์žฌ ์•Œ๊ณ  ์žˆ๋Š” ์ตœ์ ์˜ ํ–‰๋™์„ ์‹คํ–‰.
  • DQN์€ ฮต-greedy ์ •์ฑ…์„ ์‚ฌ์šฉ:
    • ํ™•๋ฅ  ฮต๋กœ ๋žœ๋ค ํ–‰๋™(ํƒํ—˜), 1-ฮต๋กœ ์ตœ์  ํ–‰๋™(ํ™œ์šฉ).
    • ํ•™์Šต์ด ์ง„ํ–‰๋ ์ˆ˜๋ก ฮต ๊ฐ’์„ ์ค„์—ฌ ์ ์  ๋” ํ™œ์šฉ์„ ์šฐ์„ ์‹œ.

(4) ์†์‹ค ํ•จ์ˆ˜(Loss Function):

  • ๋ฒจ๋งŒ ๋ฐฉ์ •์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์†์‹ค์„ ์ •์˜:
    • Q(s, a; ฮธ): ํ˜„์žฌ ๋„คํŠธ์›Œํฌ์—์„œ ์˜ˆ์ธกํ•œ Q ๊ฐ’.
    • r + ฮณ * max_a' Q(s', a'; ฮธ^-): ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ์—์„œ ๊ณ„์‚ฐํ•œ ์‹ค์ œ Q ๊ฐ’.
    • ์ด ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šต.

4. DQN์˜ ๋™์ž‘ ํ๋ฆ„

  1. ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™”:
    • ์ดˆ๊ธฐ ์ƒํƒœ S0 ๋ฅผ ์„ค์ •.
  2. ํ–‰๋™ ์„ ํƒ:
    • ฮต-greedy ์ •์ฑ…์— ๋”ฐ๋ผ ํ–‰๋™ (A_t)๋ฅผ ์„ ํƒ.
    • ํ–‰๋™์„ ๋ฌด์ž‘์œ„(ํƒํ—˜)๋กœ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ Q ๊ฐ’ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ ํƒ(ํ™œ์šฉ).
  3. ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ:
    • ํ–‰๋™ (At)๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๋ณด์ƒ(Rt) ๋ฐ ๋‹ค์Œ ์ƒํƒœ (St+1)๋ฅผ ์ˆ˜์ง‘.
  4. ๋ฆฌํ”Œ๋ ˆ์ด ๋ฒ„ํผ ์ €์žฅ:
    • (St, At, Rt, St+1)๋ฅผ ๋ฆฌํ”Œ๋ ˆ์ด ๋ฒ„ํผ์— ์ €์žฅ.
  5. Q-๋„คํŠธ์›Œํฌ ํ•™์Šต:
    • ๋ฆฌํ”Œ๋ ˆ์ด ๋ฒ„ํผ์—์„œ ์ƒ˜ํ”Œ์„ ์ถ”์ถœํ•ด ๋ฒจ๋งŒ ๋ฐฉ์ •์‹ ๊ธฐ๋ฐ˜ ์†์‹ค์„ ์ตœ์†Œํ™”ํ•˜๋„๋ก ๋„คํŠธ์›Œํฌ ํ•™์Šต
  6. ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ:
    • ์ฃผ๊ธฐ์ ์œผ๋กœ ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ.
  7. ๋ฐ˜๋ณต:
    • ๋ชฉํ‘œ ๋ณด์ƒ์ด ์ถฉ๋ถ„ํžˆ ๋†’์•„์งˆ ๋•Œ๊นŒ์ง€ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณต..

TD3 (Twin Delayed Deep Deterministic Policy Gradient) ์ด๋ก  ๋ฐ ๊ตฌ์กฐ ์„ค๋ช…

๋กœ๋ด‡ ํŒ” Pick and Place ๊ตฌํ˜„์„ ์œ„ํ•ด TD3 (Twin Delayed Deep Deterministic Policy Gradient) ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜, ์ตœ์ข…์ ์œผ๋กœ๋Š” ์‹คํŒจํ•˜์˜€๋‹ค.

ํ•˜์ง€๋งŒ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ก  ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜์˜€์œผ๋ฉฐ, ์ฐธ๊ณ ํ•œ ๋…ผ๋ฌธ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋Š” "ppt" ํด๋”์— ์ •๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

TD3๋Š” ๊ฐ•ํ™”ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, **DDPG (Deep Deterministic Policy Gradient)**์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ๋ฐฉ๋ฒ•์ด๋‹ค.

์ฃผ๋กœ ์—ฐ์†์ ์ธ ์•ก์…˜ ๊ณต๊ฐ„์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ์ •์ฑ…์˜ ์•ˆ์ •์„ฑ๊ณผ ํ•™์Šต ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘”๋‹ค.

TD3๋Š” ๋‘ ๊ฐœ์˜ ์ฃผ์š” ๋„คํŠธ์›Œํฌ์ธ Actor Network์™€ Critic Network๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ •์ฑ…(Actor)๊ณผ ๊ฐ€์น˜ ํ•จ์ˆ˜(Critic)๋ฅผ ํ•™์Šตํ•œ๋‹ค.(๊ทธ๋ฆผ ์ถ”๊ฐ€)

โš™๏ธ 2. ๊ตฌ์กฐ์™€ ๊ตฌ์„ฑ ์š”์†Œ

A. Replay Buffer ๊ฒฝํ—˜ (s, a, r, s')์„ ์ €์žฅํ•œ๋‹ค. ๊ฒฝํ—˜(experience)์€ agent๊ฐ€ environment์™€ ์ƒํ˜ธ์ž‘์šฉํ•œ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, DRL(Deep Reinforcement Learning)์€ ๊ฒฝํ—˜์„ training data๋กœ ํ™œ์šฉํ•œ๋‹ค.

๋ชฉ์ : ๋ฐ์ดํ„ฐ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์ค„์ด๊ณ  ํ•™์Šต์„ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—์ด์ „ํŠธ๊ฐ€ ํ™˜๊ฒฝ์—์„œ ์ˆ˜์ง‘ํ•œ ๊ฒฝํ—˜์„ replay buffer์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ƒ˜ํ”Œ๋งํ•œ๋‹ค.

B. Critic Network ๊ธฐ๋Šฅ: ์ƒํƒœ-์•ก์…˜ ์Œ (s, a)์— ๋Œ€ํ•œ Q-๊ฐ’์„ ์ถ”์ •ํ•œ๋‹ค.

๊ตฌ์„ฑ: ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ Q-ํ•จ์ˆ˜ critic1, critic2์™€ ์ด๋“ค์˜ ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ target1, target2๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

TD Error Update (Temporal Difference Error): ๋‘ Q-๋„คํŠธ์›Œํฌ๋Š” TD ์—๋Ÿฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค.

Target Q ๊ฐ’ ๋น„๊ต: ๋‘ Critic ๋„คํŠธ์›Œํฌ์—์„œ Q ๊ฐ’์„ ์˜ˆ์ธกํ•œ ํ›„, ๋” ์ž‘์€ Q ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ overestimation bias๋ฅผ ์ค„์ธ๋‹ค.

Critic Network ํ•™์Šต ๋‹จ๊ณ„:

  1. critic1๊ณผ critic2๋Š” ๊ฐ๊ฐ์˜ Q-๊ฐ’์„ ์˜ˆ์ธกํ•œ๋‹ค.

  2. ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ(target1, target2)๋Š” ๋ชฉํ‘œ Q-๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค. ๋‘ Q-๊ฐ’ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ํ•™์Šตํ•œ๋‹ค.

C. Actor Network

๊ธฐ๋Šฅ: ์ฃผ์–ด์ง„ ์ƒํƒœ s์— ๋Œ€ํ•ด ์ตœ์ ์˜ ํ–‰๋™ a๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ตฌ์„ฑ: actor์™€ target ๋‘ ๋„คํŠธ์›Œํฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

DPG Update (Deterministic Policy Gradient): Actor Network๋Š” Critic Network์—์„œ ์ „๋‹ฌ๋ฐ›์€ Q-๊ฐ’์„ ์ตœ๋Œ€ํ™”ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋œ๋‹ค.

Actor Network ํ•™์Šต ๋‹จ๊ณ„:

  1. Actor Network๋Š” ์ฃผ์–ด์ง„ ์ƒํƒœ s์— ๋Œ€ํ•ด ํ–‰๋™ ฮผ(s)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  2. ํ–‰๋™์— ๋…ธ์ด์ฆˆ N๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  3. Critic Network๋กœ๋ถ€ํ„ฐ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

D. Environment

Actor Network์—์„œ ์ƒ์„ฑ๋œ ํ–‰๋™ a๋Š” ํ™˜๊ฒฝ์— ์ „๋‹ฌ๋˜๊ณ , ํ™˜๊ฒฝ์€ ํ•ด๋‹น ํ–‰๋™์„ ๋ฐ›์•„๋“ค์—ฌ ๋‹ค์Œ ์ƒํƒœ s'์™€ ๋ณด์ƒ r์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐ˜ํ™˜๋œ (s, a, r, s') ์ •๋ณด experience๋Š” Replay Buffer์— ์ €์žฅ๋œ๋‹ค.

๐Ÿ”‘ 3. TD3์˜ ํ•ต์‹ฌ

Double Q-Learning

๋‘ Critic Network๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Q-๊ฐ’์˜ ๊ณผ๋Œ€ํ‰๊ฐ€๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. Target Policy Smoothing

Actor Network์— ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ธ‰๊ฒฉํ•œ ์ •์ฑ… ๋ณ€ํ™”์™€ ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. Delayed Policy Update

Critic Network๊ฐ€ ๋งค ์—…๋ฐ์ดํŠธ๋งˆ๋‹ค ํ•™์Šต๋˜๋Š” ๋ฐ˜๋ฉด, Actor Network๋Š” ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด Critic Network๊ฐ€ ๋” ์•ˆ์ •์ ์ธ Q-๊ฐ’์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ› ๏ธ 4. TD3 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ์ˆœ์„œ

  1. ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„

1-1) Actor์™€ Critic ๋„คํŠธ์›Œํฌ ์ดˆ๊ธฐํ™”

1-2) Replay Buffer ์ดˆ๊ธฐํ™”

  1. ๊ฒฝํ—˜ ์ˆ˜์ง‘

2-1) Actor ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ–‰๋™ a_t ์„ ํƒ

2-2) ํ™˜๊ฒฝ์— ํ–‰๋™ ์ „๋‹ฌ ๋ฐ ๋ณด์ƒ๊ณผ ๋‹ค์Œ ์ƒํƒœ (r_t, s_{t+1}) ๋ฐ˜ํ™˜

2-3) ๊ฒฝํ—˜ (s_t, a_t, r_t, s_{t+1})์„ Replay Buffer์— ์ €์žฅ

  1. ์ƒ˜ํ”Œ๋ง ๋ฐ ํ•™์Šต

3-1) Replay Buffer์—์„œ ๋ฌด์ž‘์œ„๋กœ ๊ฒฝํ—˜ ์ƒ˜ํ”Œ๋ง

3-2) Critic ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ (TD ์—๋Ÿฌ ๊ธฐ๋ฐ˜)

3-3) Actor ๋„คํŠธ์›Œํฌ๋Š” Critic ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ๋งˆ๋‹ค ํ•™์Šต

  1. ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ

4-1) Critic ํƒ€๊ฒŸ๊ณผ Actor ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ๋Š” ์ง€์—ฐ๋œ ์†Œํ”„ํŠธ ์—…๋ฐ์ดํŠธ ์ˆ˜ํ–‰

  1. ๋ฐ˜๋ณต

5-1) ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •์ฑ…๊ณผ Q-ํ•จ์ˆ˜๋ฅผ ์ตœ์ ํ™”


7. ref code process architecture


1. ์ดˆ๊ธฐ ์„ค์ • ๋ฐ ๋ชจ๋ธ ๋กœ๋“œ

  • ์ฝ”๋“œ ์‹คํ–‰ ์‹œ load_model() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด, ์‚ฌ์ „ ํ•™์Šต๋œ YOLO ๊ฐ์ฒด ํƒ์ง€ ๋ชจ๋ธ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ.
  • ๋กœ๋ด‡์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋Š” reset_robot()์„ ํ†ตํ•ด ๊ด€์ ˆ๊ณผ ๊ทธ๋ฆฌํผ๋ฅผ ์ดˆ๊ธฐ ์œ„์น˜๋กœ ์„ค์ •ํ•˜๋ฉฐ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ๋„ ์ดˆ๊ธฐํ™”.

2. ๊ฐ์ฒด ํƒ์ง€

  • ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€ ๋˜๋Š” ์ฃผ์–ด์ง„ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ detect() ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌ.
  • YOLO ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ์†์—์„œ ๊ฐ์ฒด์˜ ์œ„์น˜์™€ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ํƒ์ง€ํ•˜๋ฉฐ, ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์™€ ํƒ์ง€๋œ ํด๋ž˜์Šค ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜

3. ์ค‘์‹ฌ ์ขŒํ‘œ ๊ณ„์‚ฐ

  • ํƒ์ง€๋œ ๊ฐ์ฒด์˜ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ calculate_centroid() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ.
  • ๊ฐ์ฒด์˜ ์ค‘์‹ฌ ์ขŒํ‘œ(์ด๋ฏธ์ง€ ์ƒ์˜ ํ”ฝ์…€ ์œ„์น˜)๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ, ์ดํ›„ ๋กœ๋ด‡์ด ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋ชฉํ‘œ๋กœ ์‚ผ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ.

4. ๋กœ๋ด‡ ์ด๋™

  • move_robot() ํ•จ์ˆ˜๋Š” ๋กœ๋ด‡์˜ ๊ด€์ ˆ ๊ฐ๋„๋ฅผ ์กฐ์ ˆํ•˜์—ฌ, ๋กœ๋ด‡์˜ ๋๋‹จ(End Effector)์ด ๊ฐ์ฒด์˜ ์œ„์น˜๋กœ ์ด๋™.
  • ๋‚ด๋ถ€์ ์œผ๋กœ calculateIK()๋ฅผ ํ†ตํ•ด ๋ชฉํ‘œ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ญ์šด๋™ํ•™(Inverse Kinematics)์„ ๊ณ„์‚ฐํ•˜๊ณ , ๊ด€์ ˆ ์ œ์–ด ๋ช…๋ น์„ ์‹คํ–‰.

5. ๊ทธ๋ฆฌํผ ๋™์ž‘

  • ๋กœ๋ด‡์ด ๊ฐ์ฒด ๊ทผ์ฒ˜์— ๋„์ฐฉํ•˜๋ฉด closeGripper()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ, ๋ฌผ์ฒด๋ฅผ ์ง‘์„ ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋ฆฌํผ๋ฅผ ๋‹ซ์Œ.
  • ๊ฐ์ฒด๋ฅผ ์ด๋™ํ•œ ๋’ค, openGripper()๋กœ ๊ทธ๋ฆฌํผ๋ฅผ ์—ด์–ด ๊ฐ์ฒด๋ฅผ ๋†“์Œ.

6. ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋ฐฐ์น˜

  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ ๋‚ด ๊ฐ์ฒด๋Š” create_parallelepiped(), create_l_object(), create_z_object()์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ.
  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ํŠน์ • ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜๋ฉฐ, ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •.

7. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์—…๋ฐ์ดํŠธ

  • ๋กœ๋ด‡์˜ ์›€์ง์ž„๊ณผ ํ™˜๊ฒฝ์˜ ๋™์ž‘์€ p.stepSimulation()์„ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋ฉฐ, ๋ชจ๋“  ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ณ„์‚ฐ.
  • simulate_movement()๋Š” ๋ชฉํ‘œ ์œ„์น˜๊นŒ์ง€ ๋กœ๋ด‡์ด ํšจ์œจ์ ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ๋ฐ˜๋ณต์ ์ธ ๊ณ„์‚ฐ๊ณผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋‹จ๊ณ„๋ฅผ ์ฒ˜๋ฆฌ

8. ์ข…๋ฃŒ ๋ฐ ๋ฐ˜๋ณต

  • ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„, ๋กœ๋ด‡๊ณผ ๊ฐ์ฒด์˜ ์ƒํƒœ๋Š” ์ดˆ๊ธฐํ™”๋˜๊ฑฐ๋‚˜ ๋‹ค์Œ ์ž‘์—… ํ๋ฆ„์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ช…๋ น์„ ๋Œ€๊ธฐ.

5. ํ”„๋กœ์ ํŠธ ์ฃผ์ œ ์„ค๋ช…**

์ฃผ์š” ๋ชฉํ‘œ

  1. Pick-and-Place ์ž‘์—…:

    • ๋กœ๋ด‡์ด ํ™˜๊ฒฝ์—์„œ ๋ฌผ์ฒด๋ฅผ ํƒ์ง€ํ•˜๊ณ  ์ •ํ™•ํ•œ ์œ„์น˜๋กœ ์ด๋™ํ•˜์—ฌ ์ง‘์–ด ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
    • ๋ฌผ์ฒด๋ฅผ ๋ชฉํ‘œ ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜์—ฌ ์ž‘์—…์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ•ํ™” ํ•™์Šต ์ ์šฉ:

    • ๊ฐ•ํ™” ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜(DQN)์„ ํ†ตํ•ด ๋กœ๋ด‡์˜ ํ–‰๋™์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๋ด‡์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋œ ํ™˜๊ฒฝ(PyBullet)์—์„œ ๋‹ค์–‘ํ•œ ๋ฌผ์ฒด์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ํ•™์Šต.
  3. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ:

    • PyBullet์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์‹ค์ ์ธ ๋ฌผ๋ฆฌ ํ™˜๊ฒฝ์„ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฌผ์ฒด์˜ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ(L์žํ˜•, Z์žํ˜• ๋“ฑ)์™€ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ด ๋กœ๋ด‡์ด ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ

1. ๋กœ๋ด‡ ํ™˜๊ฒฝ (Environment):

  • AmbienteRobot.py ํŒŒ์ผ์—์„œ ์ •์˜๋œ RobotEnv ํด๋ž˜์Šค๋Š” ๋กœ๋ด‡์˜ ํ–‰๋™, ๊ด€์ฐฐ, ๋ณด์ƒ ๋“ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด€์ฐฐ ๊ณต๊ฐ„:
    • ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€(37x37 ํฌ๊ธฐ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฏธ์ง€)๋ฅผ ํ†ตํ•ด ๋ฌผ์ฒด์˜ ์œ„์น˜์™€ ์ƒํƒœ๋ฅผ ํ™•์ธ.
  • ํ–‰๋™ ๊ณต๊ฐ„:
    • ๋กœ๋ด‡์˜ ์œ„์น˜ ์กฐ์ • ๋ฐ ๊ทธ๋ฆฌํผ(์ง‘๊ฒŒ) ์ œ์–ด.
  • ๋ณด์ƒ ์„ค๊ณ„:
    • ๋ฌผ์ฒด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋“ค์–ด ์˜ฌ๋ฆฌ๋ฉด +1์˜ ๋ณด์ƒ.
    • ์‹คํŒจ ์‹œ -2์˜ ํŽ˜๋„ํ‹ฐ.
    • ๋ฌผ์ฒด์™€ ๋ชฉํ‘œ ์œ„์น˜ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋ณด์ƒ์„ ์„ธ๋ถ„ํ™” ๊ฐ€๋Šฅ.

2. ๊ฐ•ํ™” ํ•™์Šต ๋ชจ๋ธ:

  • DQN(Deep Q-Network)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋ด‡์ด ํ™˜๊ฒฝ์—์„œ ์ตœ์ ์˜ ํ–‰๋™์„ ํ•™์Šต.
  • TrainEnvPandaPP.py์—์„œ ๋ชจ๋ธ ํ›ˆ๋ จ ์„ค์ •:
    • CnnPolicy: ์ด๋ฏธ์ง€๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š” CNN ๊ธฐ๋ฐ˜ ์ •์ฑ… ๋„คํŠธ์›Œํฌ.
    • ํ•™์Šต๋ฅ , ํƒํ—˜ ์ „๋žต(ฮต-greedy), ๋ฐฐ์น˜ ํฌ๊ธฐ ๋“ฑ ์ตœ์ ํ™”๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์„ค์ •.
  • ํ›ˆ๋ จ๋œ ๋ชจ๋ธ(dqn_Z_6.zip)์„ ํ…Œ์ŠคํŠธ ์‹œ ์‚ฌ์šฉ.

3. ๋ฌผ์ฒด์˜ ํ˜•ํƒœ์™€ ํ™˜๊ฒฝ ์„ค์ •:

  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ(L์žํ˜•, Z์žํ˜• ๋“ฑ)์˜ ๋ฌผ์ฒด๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜.
  • ๋ฌผ์ฒด์˜ ์ดˆ๊ธฐ ์œ„์น˜์™€ ๋ฐฉํ–ฅ์„ ๋ฌด์ž‘์œ„๋กœ ์„ค์ •ํ•˜์—ฌ ํ™˜๊ฒฝ ๋‹ค์–‘ํ™”.
  • ์นด๋ฉ”๋ผ ์‹œ์ ๊ณผ ๋กœ๋ด‡์˜ ํ–‰๋™์„ ์กฐ์ •ํ•ด ํ˜„์‹ค์ ์ธ ํ•™์Šต ํ™˜๊ฒฝ ์ œ๊ณต.

4. ํ›ˆ๋ จ๊ณผ ํ…Œ์ŠคํŠธ:

  • ํ›ˆ๋ จ:
    • ๋ณ‘๋ ฌ ํ™˜๊ฒฝ(SubprocVecEnv)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ›ˆ๋ จ ์†๋„๋ฅผ ๋†’์ž„.
    • TensorBoard๋ฅผ ํ†ตํ•ด ํ•™์Šต ๊ณผ์ •์„ ์‹œ๊ฐํ™”.
  • ํ…Œ์ŠคํŠธ:
    • main.py์—์„œ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰ ์„ฑ๋Šฅ ํ‰๊ฐ€.

6. ํ™˜๊ฒฝ ์„ค์ • (Requirements)**

-Python: 3.8 -PyBullet: 3.2.5 -OpenCV (cv2): 4.9.0 -Stable-Baselines3: 2.4.0 (Python 3.8 ์ง€์›์˜ ๋งˆ์ง€๋ง‰ ๋ฒ„์ „) -Gymnasium: 0.28.1 -NumPy: 2.2.0 -YOLO: V5

conda ํ™˜๊ฒฝ ๊ตฌ์„ฑ

conda create -n DRL_study python=3.8

conda ํ™˜๊ฒฝ ํ™œ์„ฑํ™”

conda activate DRL_study

์„ค์น˜ ์ฝ”๋“œ

pip install -r requirements.txt

8. ref code ์„ค๋ช…

ref code๋Š” PyBullet ๊ธฐ๋ฐ˜์˜ ๋กœ๋ด‡ ๊ฐ•ํ™”ํ•™์Šต ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์—์ด์ „ํŠธ๊ฐ€ ๋กœ๋ด‡ ์กฐ์ž‘ ์ž‘์—…์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™”, ๋กœ๋ด‡ ์ œ์–ด, ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๊ด€์ฐฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ฝ”๋“œ์˜ ์ฃผ์š” ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

1. RobotEnv ํด๋ž˜์Šค

RobotEnv ํด๋ž˜์Šค๋Š” PyBullet ํ™˜๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ•ํ™”ํ•™์Šต์— ์ ํ•ฉํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์—ญํ• 
    • ๋กœ๋ด‡๊ณผ ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ตฌํ˜„
    • ๊ด€์ฐฐ๊ฐ’๊ณผ ๋ณด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฐ•ํ™”ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ „๋‹ฌ
    • ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ์ •์˜ํ•˜์—ฌ ์—์ด์ „ํŠธ๊ฐ€ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2. ์ฃผ์š” ๋ฉ”์„œ๋“œ ์„ค๋ช…

2.1 ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™”

  • __init__()

    • PyBullet ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ, GUI ๋˜๋Š” ๋น„GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ๋กœ๋ด‡(Panda ๋กœ๋ด‡)๊ณผ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์นด๋ฉ”๋ผ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ๊ด€์ฐฐ๊ฐ’์„ ์ƒ์„ฑํ•˜๋ฉฐ ํ–‰๋™ ๋ฐ ๊ด€์ฐฐ ๊ณต๊ฐ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • reset()

    • ์ƒˆ๋กœ์šด ์—ํ”ผ์†Œ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์œ„์น˜์™€ ์ž์„ธ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑํ•˜๊ณ  ๋กœ๋ด‡์˜ ๊ด€์ ˆ ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐ ๊ด€์ฐฐ๊ฐ’๊ณผ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2.2 ๋กœ๋ด‡ ๋™์ž‘

  • move_the_robot(target_position, angle)

    • ๋กœ๋ด‡์„ ๋ชฉํ‘œ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ฌผ์ฒด๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์ผ๋ จ์˜ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋™ ๊ณผ์ •
      1. ๋กœ๋ด‡์„ ๋ฌผ์ฒด ์ƒ๋‹จ์œผ๋กœ ์ด๋™
      2. ๋กœ๋ด‡์„ ๋ฌผ์ฒด ๊ทผ์ฒ˜๋กœ ๋‚ฎ์ถค
      3. ๊ทธ๋ฆฌํผ๋ฅผ ๋‹ซ์•„ ๋ฌผ์ฒด๋ฅผ ์ง‘์Œ
      4. ๋ฌผ์ฒด๋ฅผ ๋ชฉํ‘œ ๋†’์ด๋กœ ๋“ค์–ด ์˜ฌ๋ฆผ
    • calculateIK()๋ฅผ ํ†ตํ•ด ์—ญ์šด๋™ํ•™(Inverse Kinematics)์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ ๊ด€์ ˆ์˜ ๋ชฉํ‘œ ๊ฐ๋„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ๋‹จ๊ณ„์—์„œ PyBullet์˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šคํ…(p.stepSimulation())์„ ์‹คํ–‰ํ•˜์—ฌ ๋กœ๋ด‡ ๋™์ž‘์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • closeGripper() / openGripper()

    • ๊ทธ๋ฆฌํผ๋ฅผ ๋‹ซ๊ฑฐ๋‚˜ ์—ฌ๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ซ๊ธฐ ๋™์ž‘ ์ค‘ ํŠน์ • ํž˜ ์ด์ƒ์˜ ์ €ํ•ญ์ด ๊ฐ์ง€๋˜๋ฉด ๋™์ž‘์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ฆฌํผ๋Š” ๊ฐ์ฒด๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์žก๊ฑฐ๋‚˜ ๋†“์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2.3 ๊ด€์ฐฐ ๋ฐ ๋ณด์ƒ

  • get_observation()

    • PyBullet ์นด๋ฉ”๋ผ๋ฅผ ํ†ตํ•ด ํ™˜๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์บก์ฒ˜ํ•˜๊ณ , ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ํ”ฝ์…€ ๋ธ”๋ก์œผ๋กœ ๋ณ€ํ™˜๋œ ๊ด€์ฐฐ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ณผ์ •
      1. ๊ฐ์ฒด์˜ ์œค๊ณฝ์„ ์„ ๊ฒ€์ถœํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์—์„œ ์œ„์น˜๋ฅผ ์‹๋ณ„
      2. ์œค๊ณฝ์„ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ฒด์˜ ์ค‘์‹ฌ ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐ
      3. ๊ด€์ฐฐ ์ด๋ฏธ์ง€๋ฅผ 37x37 ํฌ๊ธฐ์˜ ์ด์ง„ํ™”๋œ ํ”ฝ์…€ ๋ธ”๋ก์œผ๋กœ ๋ณ€ํ™˜
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋กœ๋ด‡์ด ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๊ฐ•ํ™”ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
  • calculate_reward()

    • ๊ฐ์ฒด๊ฐ€ ๋ชฉํ‘œ ๋†’์ด์— ๋„๋‹ฌํ–ˆ๋Š”์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์ƒ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณด์ƒ ๊ตฌ์กฐ
      • ๋ชฉํ‘œ ๋†’์ด์— ๋„๋‹ฌ ์‹œ +1
      • ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋ชฉํ‘œ ๋†’์ด์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด -2
    • ๋ณด์ƒ ์„ค๊ณ„๋Š” ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ณด์ƒ ๋“ฑ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

2.4 ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋ฐฐ์น˜

  • create_parallelepiped() / create_l_object() / create_z_object()

    • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ๊ฐ์ฒด๋Š” ์ดˆ๊ธฐ ์œ„์น˜์™€ ์ž์„ธ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ค์ •ํ•˜๋ฉฐ URDF ํ˜•์‹์„ ํ†ตํ•ด PyBullet์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  • generate_new_pose()

    • ๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์œ„์น˜์™€ ์ž์„ธ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์„ค์ •์„ ํ†ตํ•ด ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘์„ฑ์„ ๋†’์ด๊ณ  ์—์ด์ „ํŠธ์˜ ์ผ๋ฐ˜ํ™” ์„ฑ๋Šฅ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

2.5 ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™์ž‘

  • step(action)

    • ์ฃผ์–ด์ง„ ํ–‰๋™(action)์— ๋”ฐ๋ผ ๋กœ๋ด‡์˜ ๋™์ž‘์„ ์‹คํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ด€์ฐฐ๊ฐ’, ๋ณด์ƒ, ์ข…๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ํ–‰๋™์€ 7x7 ํ”ฝ์…€ ๋ธ”๋ก๊ณผ ์—ฌ๋Ÿฌ ๊ฐ๋„ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ด์‚ฐ์  ํ–‰๋™ ๊ณต๊ฐ„์—์„œ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.
    • ํ•œ ์—ํ”ผ์†Œ๋“œ์˜ ๋‹จ๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฉฐ ๊ฐ•ํ™”ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
  • simulate_movement()

    • ๋กœ๋ด‡์˜ ๋ชฉํ‘œ ์œ„์น˜๊นŒ์ง€์˜ ์›€์ง์ž„์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋‹จ๊ณ„์—์„œ ๋กœ๋ด‡ ๊ด€์ ˆ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ฉฐ ๋ชฉํ‘œ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

3. ๋ณด์ƒ ์„ค๊ณ„

  • ๋ฌผ์ฒด๊ฐ€ ๋ชฉํ‘œ ๋†’์ด์— ๋„๋‹ฌํ•˜๋ฉด +1์˜ ๋ณด์ƒ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์ง€์ •๋œ ๋†’์ด์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด -2์˜ ํŒจ๋„ํ‹ฐ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ๋ณด์ƒ ๊ตฌ์กฐ๋Š” ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ณด์ƒ, ๊ฐ์ฒด ํšŒ์ „ ์•ˆ์ •์„ฑ ๋ณด์ƒ ๋“ฑ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

9. ์‹œํ–‰์ฐฉ์˜ค


1. camera2world coordinate

๋กœ๋ด‡์ด ์นด๋ฉ”๋ผ ์˜์ƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ๋ธŒ๋ฅผ ์ง‘๊ธฐ ์œ„ํ•ด์„œ๋Š” ์นด๋ฉ”๋ผ์˜ ํ”ฝ์…€ ์ขŒํ‘œ๋ฅผ ์›”๋“œ ์ขŒํ‘œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ์˜ ๋‚ด๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ณต์‹์„ ํ†ตํ•ด ๊ตฌํ•˜์˜€์œผ๋ฉฐ, ํšŒ์ „ ํ–‰๋ ฌ(R)์€ ์›”๋“œ ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ y์ถ•์„ +180ยฐ, z์ถ•์„ -90ยฐ ํšŒ์ „ํ•œ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณ„์‚ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ณ€ํ™˜ ๋ฒกํ„ฐ(T)๋Š” ์ดˆ๊ธฐ์—๋Š” ๋งํฌ ์ƒํƒœ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ ์ฐจ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ–ˆ์œผ๋‚˜, ๊ฒฐ๊ณผ๊ฐ€ ์ •ํ™•ํ•˜์ง€ ์•Š์•„ ์ง์ ‘ ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ๋ธŒ์˜ ์ƒ์„ฑ ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์งˆ ๋•Œ๋งˆ๋‹ค ๋ณ€ํ™˜ ๋ฒกํ„ฐ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ๋ธŒ์˜ ์ƒ์„ฑ ์œ„์น˜๋ฅผ ๊ณ ์ •ํ•˜๊ณ , ๊ณ ์ •๋œ ๋ณ€ํ™˜ ๋ฒกํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋„๋ก ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2. depth ์ •๊ทœํ™”

ํ๋ธŒ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด arm_camera()์˜ depth_img์—์„œ depth ๊ฐ’์„ ์ถ”์ถœํ•˜์˜€์œผ๋‚˜, ํ•ด๋‹น ๊ฐ’์ด 0~255 ๋กœ ์ •๊ทœํ™”๋œ ๊ฐ’์ž„์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •๋œ far ๊ฐ’์„ ํ™œ์šฉํ•˜์—ฌ depth = depth_value / 255.0 * far๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹ค์ œ depth๊ฐ’์„ ์ถ”์ถœํ•˜์˜€๊ณ , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%