Create a Video with a Camera - modulabs/gazebo-tutorial GitHub Wiki
์ด๋ฒ ํํ ๋ฆฌ์ผ์ gazebo world์์ ์นด๋ฉ๋ผ ์ผ์๋ก๋ถํฐ ๋น๋์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ธ๋ค.
Gazebo๋ ์นด๋ฉ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋์คํฌ์ ์๋์ ์ผ๋ก ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
์ด๋ฅผ ์ํด, <save> tag๊ฐ camera sensor์ ๋ฐ๋์ ์ถ๊ฐ๋์ด์ผ ํ๋ค.
this world๋ฅผ ๋ค์ด๋ก๋ํ๊ณ camera_tutorial.world๋ก ์ ์ฅํ๋ค.
<?xml version="1.0"?>
<sdf version='1.6'>
<world name='default'>
<model name='unit_box'>
<pose>0 0 2.5 0 -0 0</pose>
<link name='link'>
<visual name='visual'>
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</visual>
</link>
</model>
<light name='user_directional_light_0' type='directional'>
<pose>0 0 1 0 0 0</pose>
</light>
<model name='camera'>
<static>true</static>
<pose>-1 0 2 0 1 0</pose>
<link name='link'>
<visual name='visual'>
<geometry>
<box>
<size>0.1 0.1 0.1</size>
</box>
</geometry>
</visual>
<sensor name='my_camera' type='camera'>
<camera>
<save enabled="true">
<path>/tmp/camera_save_tutorial</path>
</save>
<horizontal_fov>1.047</horizontal_fov>
<image>
<width>1920</width>
<height>1080</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<always_on>1</always_on>
<update_rate>30</update_rate>
</sensor>
</link>
</model>
</world>
</sdf>์ค์ํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
<sensor name="my_camera">
<camera>
<image>
<width>1920</width>
<height>1080</height>
</image>
...
<save enabled="true">
<path>/tmp/camera_save_tutorial</path>
</save>
...
<update_rate>30</update_rate>
</camera>
</sensor><save> tag๋ enabled ๋ผ๋ ํน์ฑ์ด ์๋๋ฐ, ์ด๋ ๋ฐ๋์ ์ ์ฅ๋์ด์ผํ ์ด๋ฏธ์ง๋ฅผ ์ํด true๋ก ์ค์ ๋์ด์ผ ํ๋ค. child tag <path>๋ ์นด๋ฉ๋ผ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋๋ ํด๋์ด๋ค. ๋ง์ฝ ํด๋๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, gazebo์์ ์ด๋ฅผ ๋ง๋ค๊ฒ์ด๋ค. <width> and <height>๋ ์ด๋ฏธ์ง์ resolution์ ์ค์ ํ๋ค. update_rate๋ ์ผ์ด์ ์ ์ฅ๋๋ ์ด๋ฏธ์ง ํ์ผ์ ์๋ฅผ ๋งํ๋ค. ์ด ์นด๋ฉ๋ผ๋ 1์ด์ 30ํ๋ ์, 1920x1080 resolution๋ฅผ ๊ฐ๋ ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
worldํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ํด๋๋ก ์ด๋ํ๊ณ , ์๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ๊ฐ์ ๋ณด๋ฅผ ์คํํ๋ค.
gazebo --verbose camera_tutorial.world
๋ช์ด๊ฐ ์ง๋ ํ Gazebo๋ฅผ ๋ซ๋๋ค.
์ World๋ /tmp/camera_save_tutorial ์ฃผ์๋ก ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค.
/tmp/camera_save_tutorials ํด๋์์, ๋ง์ ์ด๋ฏธ์ง๊ฐ ์์๋๋ก ์์ ๊ฒ์ด๋ค. ๊ทธ ์ฌ์ง๋ค์ ๊ฐ์ resolution(1920x1080)๋ฅผ ๊ฐ๋๋ค. ์ฒ์ ์ด๋ฏธ์ง๋ default_camera_link_my_camera(1)-0000.jpg๋ฅผ ๊ฐ๋ฅดํจ๋ค.
์ง๊ธ๋ถํฐ๋ ๋์คํฌ์ ์ ์ฅ๋ ์นด๋ฉ๋ผ ์ด๋ฏธ์ง๋ฅผ ffmpeg๋ฅผ ์ด์ฉํด ๋น๋์ค๋ก ๋ณํํ ์ ์๋ค.
์ด command๋ 30 frames๋ฅผ ๊ฐ๋ my_camera.mp4๋ผ๋ ์ด๋ฆ์ผ๋ก ๋น๋์ค๋ฅผ ์์ฑํ๋ค.
ffmpeg -r 30 -pattern_type glob -i '/tmp/camera_save_tutorial/default_camera_link_my_camera*.jpg' -c:v libx264 my_camera.mp4
๋ง์ฝ ๋น์ ์ด Ubuntu Trusty or a newer version๋ฅผ ๊ฐ๊ณ ์๋ค๋ฉด, ๋น์ ์ ffmpeg ๋์ ์ avconv๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํ ๊ฒ์ด๋ค.
(here is some of the backstory).
avconv๋ฅผ ์ด์ฉํ๊ธฐ ์ํธ Command๋ ๋ค์๊ณผ ๊ฐ๋ค:
avconv -framerate 30 -i /tmp/camera_save_tutorial/default_camera_link_my_camera\(1\)-%04d.jpg -c:v libx264 my_camera.mp4
๋น๋์ค ๋ค์ด๋ก๋ here.
