Project
๋ฌผ๋ฆฌ์ Rosbot ์ ์ปจํธ๋กค์ ์ฐ๊ตฌํ์ฌ, ํด๋น ์ฐ๊ตฌ๋ฅผ Drone์๋ ํ์ฅํ์ฌ ์ต์ข ์์ฐ์ ์ํ ๋ก๋ด ์ปจํธ๋กค ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค. ์๊ตฌ์ฌํญ์ ํน์ ์ขํ๋ฅผ ์ ๋ ฅํ๋ฉด, body frame ์์ ํด๋น ์์น๋ก ์ด๋. ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฃฐ๊ธฐ๋ฐ๊ณผ ๊ฐํํ์ต ๊ธฐ๋ฐ ๋ ๊ฐ์ง๋ก ์ ๊ณตํ๋ค.
/robots/rosbot/README.md
๋ก์ค๋ด ์ธํ ์ฝ๋ ํด๋ฆฐ ๋ฒ์ ๊ตฌํ [Document]
Terminal ํจ๋ ์ ๋ณด:
/labs/rosbot_collect_samples/run.py
๋ก์ค๋ณต ๊ฐํํ์ต ํ๊ฒฝ ๋๋ค ์ก์ ์ ํตํ ์ํ ํ๋ [Document]
๋ฐ๋ชจ ๋น๋์ค google drive
/labs/rosbot_rpy/rosbot_rpy.py
๋ก๋ด์ด ๋์ด๋ ํ๊ฒฝ์์๋ ๋ ๊ฐ์ง ์ขํ, world Frame / body Frame ์ด ์กด์ฌํ๋ค. ๋ก๋ด ์ปจํธ๋กค ์ ์ฌ์ฉ์๊ฐ ์กฐ์ข
ํ๋ ์ปจํธ๋กค์ body frame ์์ ๋์ํ๋, ์ค์ ๋ชฉํํ๋ ์์น๋ world frame์ ๋์ฌ์๋ค. ๋ฐ๋ผ์, ํ๊ฒฝ์์ body frame ์ ๋ชฉํ๋ฅผ world frame์ผ๋ก ์ ํํ๋ ๊ฒ์ ์ค์ ๋ชฉํ ์์น์ ๋๋ฌํ๋ ์ ๋๋ฅผ ํ์ํ๊ธฐ ์ํด ํ์์ ์ด๋ค. ์ด ๋ ๊ณ์ฐ์ ๊ด์ฌํ๋ ๊ฐ์ yaw
์ด๋ค.
๋ก๋ด์ ์ค์ 2์ฐจ์ ์ขํ๋ฅผ $(G_x, G_y)$๋ผ๊ณ ํ์, ์๋์ ์์น $(R_x, R_y)$์ ์ ๋์ขํ๋ ๋ก๋ด์ 2์ฐจ์ ํ์ ๋ฐฉํฅ๊ฐ $\Psi$ (yaw)์ ๋ํด์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
์ฌ๊ธฐ์ Rotate ๋ $\Psi$ ํ์ ํ๋ ฌ์ ๋ํด์ $R_{x}, R_{y}$ ๊ฐ์ ๋ณํํ ๋ฒกํฐ๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค. ๋ก๋ด์ 2D์์ ์ค์ ์ขํ์ ๋ํด์ ๋ชฉํ๋ก ํ๋ ์๋์ ํ๊ฒ ์์น (1,2) ๋ฅผ ๋ค๋ฅธ ๋ก๋ด์ yaw ๊ฐ์ ๋ํด์ ์ฐ์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
๋ชฉํ๋ก ํ๋ ํ๊ฒฝ์ ๋ค์๊ณฝ ๊ฐ์ด ๋ก๋ด์ ์์น ๋ณํ๋ฅผ ์๊ตฌํ๋ ํ๊ฒ ์์น๊ฐ ์์ผ๋ฉฐ, ์ด์ ๋ํ ๊ฐํํ์ต ๋ณด์์ ์ ๋ ์ขํ๊ณ์์ ์ฃผ์ด์ง๋ค.
์๋ฎฌ๋ ์ดํฐ์์ Yaw ๊ฐ์ ํ์ธํด๋ณด๋ฉด, ํ์ ์๋๋ฅผ ์ฌ๋ฆฌ๋ฉด yaw ๊ฐ์ด ์ ํ์ผ๋ก ๋ณํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ฐ์ ๋ฒ์๋ $-\pi \sim \pi$ ์ด๋ค.
์๋ฎฌ๋ ์ดํฐ์์ Yaw ๊ฐ์ ํด๋นํ๋ ๋ก๋ด์ ์ค์ ์ขํ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ง๋ค. ๋นจ๊ฐ์ ์ขํ์ถ์ ๊ธฐ์ค์ผ๋ก yaw
๊ฐ์ด ์ธก์ ๋จ์ ํ์ธํ ์ ์๋ค.
rosbot_goal_control
ํ๊ฒฝ์ SAC์ผ๋ก 300K ์๊ฐ์ ๋ํด์ ํ์ตํ ๋ชจ๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
Actor ์ Critic์ ์๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ๊ณต์ ํ์ง ์์ผ๋ฉฐ, Critic ์ ๊ฐ์ (๊ด์ฐฐ๊ฐ๊ณผ ํ๋)์ ๋ํด์ $V$ ๋ฅผ ๋ฐํํ๋ค.
ํ์ต ๊ณผ์ ์์ episode์ return ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค. ํ์ต๊ฒฐ๊ณผ 100K ์์ค์์ ๋ณด์์ด ์๋ ดํ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฑ๋ฅ์ด -30 ์ดํ๋ก ์ฑ๋ฅ์ด ๊ฐ์ ๋์ง ์์๋๋ฐ, ์ด์ ๋ํด์ Upperbound ์ฌ๋ถ๋ฅผ ํ์ธํด๋ด์ผ ํ๋ค.
๋ก๋ด์ ์ปจํธ๋กค $action = (\beta, \alpha)$ ์ ๋ํด์ $\beta$๋ ์ ์งํ๋ ์๋, $\alpha$๋ ํ์ ๊ฐ์ผ๋ก ๋ฒ์๋ ๋ค์๊ณผ ๊ฐ๋ค. $\beta \in [0,1]$ ๊ณผ $\alpha \in (-1, 1)$ ํ์ ๊ฐ์ $-1$ ์ ๊ฒฝ์ฐ ์ผ์ชฝ, $+1$์ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ํ๋ธ๋ค. ํ์ต ์๋ฃ๋ ๋ชจ๋ธ์ ๋ํด์ ๋ชฉํ๋ก ํ๋ ์๋์์น $(rx,ry)$ ๋ฅผ ์คฌ์ ๋ ๋ก๋ด์ ํ๋์ ๋ถ์ํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ก๋ด์ ์ค์ ๋ฐฉํฅ $(dx,dy)$์ ๊ฐ์ $(\beta, \alpha)$ ๋ก๋ถํฐ ๋ค์๊ณผ ๊ฐ์ ์์ผ๋ก ์ ๋๋ ์ ์๋ค.
\[\begin{gather} \theta = (1-\alpha)/2 \pi \\ dx = \beta \cdot \cos{\theta} \\ dy = \beta \cdot \sin{\theta} \end{gather}\]๋ฐฉํฅ๋ฒกํฐ๋ฅผ ๋ชฉํ ์์น $(rx, ry) \in [-3,3] \times [-3,3]$ ์ ์์น์์ ํ์ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ก๋ด์ ์ด๋ ์ ํธ๋๋ฅผ ๋ณผ ์ ์๋ค.
Collaborator : ์ฒญ์