์ฐ๋ฆฌ๋ ํ์ฌ Gazebo์ ๋ ์ด์ ์ผ์๋ฅผ ๋จ์ฉํ๊ณ ์ด๋ฅผ ์๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์์ค ์ํ ํ์ง๊ธฐ ์ผ์( ์ฌ์ด๋ ์ค์บ ์์ค ์ํ ํ์ง๊ธฐ ๋ฐ ๋ค์ค ๋น ์์ค ์ํ ํ์ง๊ธฐ )์ ๋ณด๋ค ํ์ค์ ์ธ ์๋ฎฌ๋ ์ด์ ์ uuv_simulator์ ๋ง์ ๊ฐ์น๋ฅผ ์ถ๊ฐํ๊ณ ๋ ํฐ ๊ท๋ชจ์ ์ ์ปค๋ฎค๋ํฐ์์ ๋ ํฅ๋ฏธ๋กญ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
์๋
ํ์ธ์, ์ฐ๋ฆฌ๋ uuv_simulator
์์๋ ์ผ์ ์๋ฎฌ๋ ์ด์
์ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ํ์ฌ ์ฐ๋ฆฌ๋ ํญํฌ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ ์ฌ์ด๋ ์ค์บ๊ณผ ์ ์ฌํ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ ์ค์ํ ๊ฒ์ https://github.com/smarc-project/smarc_simulations/blob/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins/src/gazebo_ros_image_sonar.cpp ์์ ๋ฉ์ง FLS ์ผ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. "์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์๋ก์ด GPU ๊ธฐ๋ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ" ๋ฌธ์์ ์ค๋ช
๋ ์๋ฎฌ๋ ์ด์
์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. Gazebo๋ ์ด๋ฅผ ์ฝ๊ฐ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์๋ฎฌ๋ ์ด์
๋ ๊น์ด ์นด๋ฉ๋ผ ๋จ์ฉ์ ์์กดํ์ง๋ง ์ฌ์ ํ ํฉ๋ฆฌ์ ์ผ๋ก ํจ์จ์ ์
๋๋ค.
์ฌ์ ํ ์ด์ ๋ํ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ ์๋๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง์ ๋ํ ๋ช ๊ฐ์ง ์๋ฅผ ์ ๊ณตํ๊ณ ์๋ง๋ ๋ชจ๋ ๊ฒ์ ์๋ฃํ๊ณ ์ด ์ ์ฅ์์ ๋ํ PR์ ์์ฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
@nilsbore ๋ช ๊ฐ์ง ์๊ฐ ์ข์ ๊ฒ์ ๋๋ค. ๋๋ ๋ํ ์ด๊ฒ์ ์ ๋ง๋ก ๊ด์ฌ์ด ์์ต๋๋ค.
@nilsbore๋ , ๋ชจ๋ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค :) ํ ๋ฆฌํ์คํธ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด ๊ธฐ๊บผ์ด ๊ฒํ ํ๊ฒ ์ต๋๋ค. ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ UUV ์๋ฎฌ๋ ์ดํฐ ๋ฌธ์์ ํ๋ฌ๊ทธ์ธ์ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. :)
์๋ ํ์ธ์ @musamarcusso ์ ๋๋ค. ์ด ์๋ฎฌ๋ ์ดํฐ์ ๋ํ ํ๋ฅญํ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊นจ๋ํ PR์ ๋ง๋ค๊ณ ์ ์๋ ๊ฒฝ๋ก ์ค ํ๋๋ฅผ ๋ฐ๋ฅด๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ์์๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์ @nilsbore ์ ๋๋ค .
์์ค ์ํ ํ์ง๊ธฐ๋ฅผ UUV ์๋ฎฌ๋ ์ดํฐ์ ์ ์ฉํ๋ ๊ณผ์ ์์ ์ฌ๋ฌ๋ถ์ ๋ฐ์ ์ ๊ธฐ๋ํฉ๋๋ค. ์๋ ค์ฃผ์ธ์! =๋
FLS์ ์ง์ ์ด ์์์ต๋๊น? ์ ๋ ํ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์๋ ํ์ธ์ @nilsbore์ ๋๋ค! ์ด ์ค๋ ๋๊ฐ ์์๋ ์ง ๊ฝค ๋์์ง๋ง ์ง๊ธ๊น์ง FLS ์๋ฎฌ๋ ์ด์ ์ ์งํ ์ํฉ์ ์ ์ ์์ต๋๊น? ์ฌ๋ฌ๋ถ์ด Gazebo์์ ์์ ํ๊ณ ์๋ ์๋ ์๋ฎฌ๋ ์ด์ ์ ํ์ฉํ๊ธฐ๋ฅผ ๊ณ ๋ํ๊ณ ์์ผ๋ฉฐ ๊ทธ ํ์ ๋ ๋ง์ ์ง์ ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
*์ฌ๊ธฐ์ ์์๋ ๋ง์ง๋ง ์ ๋ฐ์ดํธ ์ดํ.
์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ด ์ฃผ์ ์ ๋ํด ๋ง์ ์ง์ ์ ์ด๋ฃจ์ง ๋ชปํด์ ์ฃ์กํฉ๋๋ค. ์ผ์ ์๋ฎฌ๋ ์ด์
์ ์คํ ์์ค์ด๋ฉฐ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/smarc-project/smarc_simulations/tree/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins . gazebo_ros_image_sonar
๋ผ๊ณ ํฉ๋๋ค. ๋ค์ ์ค๋๋ ๋ฒ์ ์ uuv_simulator๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ด ํ๋ฌ๊ทธ์ธ์ ์ ๋ง๋์๋ง ์์กดํ๋ฏ๋ก ๋ชจ๋ ๊ณณ์์ ์๋ํด์ผ ํฉ๋๋ค. : uuv_simulator์์๋์ด urdf ํฌํจํ์ฌ ํฌํจ์ํฌ ์ https://github.com/smarc-project/smarc_simulations/blob/master/smarc_sensor_plugins/smarc_sensor_plugins_ros/urdf/sonar_snippets.xacro์ ํ๊ณ ์ฐจ๋ urdf์์์ด ์กฐ๊ฐ ๊ฐ์ ๊ฒ์ ์ถ๊ฐ :
<xacro:forward_looking_sonar
namespace="${namespace}"
suffix="down"
parent_link="${namespace}/base_link"
topic="forward_sonar"
mass="0.015"
update_rate="10"
samples="100"
fov="1.54719755"
width="260"
height="120">
<inertia ixx="0.00001" ixy="0.0" ixz="0.0" iyy="0.00001" iyz="0.0" izz="0.00001" />
<origin xyz="0.83 0 -0.22" rpy="0 ${0.2*pi} 0" />
<visual>
</visual>
</xacro:forward_looking_sonar>
๊ทธ๋ฌ๋ฉด ros ์ฃผ์ : video ์์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์๊ฐ์ด ํ๋ฝ๋๋ฉด(๋ง๊ฐ ํ) ์ด ์ผ์๋ฅผ FLS sim์ ์ฌ์ฉํ๊ณ ์ถ์ดํ๋ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์๋ ์์ฒด ํจํค์ง๋ก ๋๋๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
์ต์์,
๋์ค
@nilsbore๋ฅผ ์ธ๊ธํ์ต๋๋ค ! ์ ๋ฐ์ดํธํด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ์ด ์ผ์๋ ๊ฐ์ ํ์ฌ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
์ง๊ธ๊น์ง ์ ๋ง ํ๋ฅญํ ์ ๋ฐ์ดํธ ๋ฐ ์งํ ์ํฉ์ ๋๋ค! ์ด ํ๋ก์ ํธ์ ๋ํ ์ถ๊ฐ ์ ๋ฐ์ดํธ์ ์ ๋ง ๋ฉ์ง ์์ @nilsbore๋ฅผ ๊ธฐ๋ํฉ๋๋ค!
์ ๋ ๋ง์คํฐ๋ก๋ถํฐ FF๋ฅผ ์ป์ผ๋ ค๊ณ @NickSadjoli ์ @nilsbore ์์ ์ฒด๋ฆฌ๋ฅผ ๊ณจ๋์ต๋๋ค. ๋ ๋ถ ๋ค ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ์๊ฐ๋ฆฐ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ์ฌ๋ฌ๋ถ์ด ์ดํด๋ณด๊ณ ๋๊ธ/์ปค๋ฐ์ ํด์ฃผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@willcbaker ๋ ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค! ํ๊ฒฝ์ ๋ค๋ฅธ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ด ํ๋ก์ ํธ์ ๊ทธ์ ์ฝ๋๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ @nilsbore ์์
๋ถํํ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ก ์ธํด ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ๋ง์ ์ง์ ์ด ์์์ง๋ง ์๊ฐ์ด ๋๋ฉด ์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋น์ ์ด ๋ง๋ ์ปค๋ฐ์ ๊ด์ ์์ ๋๋ ๋น์ ์ด ๋ง๋ ์ถ๊ฐ ์ฌํญ์ด ๋ด ์ง์ ์ ๋ํด ํ ๊ฒ๊ณผ ์ ํํ ๋์ผํ๋ค๊ณ ์์ ํ๊ฒ ๋งํ ์ ์์ต๋๋ค. ์ด์ Gazebo์ ์๋ฒฝํ๊ฒ ์๋ํด์ผ ํ๋ฉฐ "rexrov/depth/image_sonar" ์ฃผ์ ์์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ผ์ ๊ตฌํ์๋ ํ์ฌ ๊น์ด ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ด๋ฆ์ "/๊น์ด" ์ฃผ์ ์ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ต๋๋ค. ๊ฐ๋ฅํ ํผ๋์ ํผํ๊ธฐ ์ํด ์ด๊ฒ์ด ๊ฐ์ ๋ ์ ์๋์ง ํ์ธํด์ผ ํ๋ฉฐ ๊ณง ์ถ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ๋ฅผ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@NickSadjoli๋ , ์ด ์์ค ์ํ ํ์ง๊ธฐ๊ฐ ๊ตฌํ๋ ์ ์ฅ์(์๋ ๊ฒฝ์ฐ)์ ์ฐ๊ฒฐํ ์ ์์ต๋๊น?
@musamarcusso ์ด์ ์ ๋งํฌ๋ฅผ ์ ๊ณตํ์ง ์์ ๊ฒ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. Rexrov UUV์ ๋ํ ์ด ์์ค ์ํ ํ์ง๊ธฐ์ ์์ ์์ ๊ฐ ์๋ ์์ ๋ถ๊ธฐ๊ฐ ์์ง๋ง ์ด ๋ถ๊ธฐ์๋ ์ด์ ์ ์ฐธ์กฐ๋ ๋ฌธ์์์ ์ธ๊ธํ FLS๋ฅผ ์ฌํํ๋ ค๊ณ ์๋ํ ์๋ํ์ง ์๋ ๋ค๋ฅธ ์คํ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ง์ ์ ์๋์ ๊ฐ์ต๋๋ค.
https://github.com/NickSadjoli/uuv_simulator/tree/realistic-sonar-sim-48
์ด ๋ถ๊ธฐ์ ์ถ๊ฐ๋์๊ฑฐ๋ ์ฌ์ฉ๋๋ ๊ธฐํ ์ฌํญ ๋๋ ๋ณ๊ฒฝ ์ฌํญ:
ํ์ฌ ๋ถ๊ธฐ์ ํ์ผ ๊ตฌ์ฑ์ด ๋๋ฌด ํผ๋์ค๋ฝ๋ค๋ฉด ์ด ์ค๋ ๋์์ ์ ์๊ฒ ํผ๋๋ฐฑ์ ์ฃผ์ธ์. ๊ทธ๋ฌ๋ฉด ์ ๊ฐ ์ด ๋ถ๊ธฐ์ ๋ ๊นจ๋ํ ๋ฒ์ ์ ๋ง๋ค์ด ์ฌ๋ฌ๋ถ์ด ๋์ด์ฌ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ํผ๋๋ฐฑ/์๊ฒฌ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
ํธ์ง: ์ ์ฅ์ ๋งํฌ๋ฅผ ์ฒจ๋ถํ๋ ๊ฒ์ ์์์ต๋๋ค.
์๋
ํ์ธ์, @NickSadjoli
๋๋ ๋น์ ์ uuv_simulator-realistic-sonar-sim-48์ ์ํํด ๋ณด๊ณ ์์ต๋๋ค. ๋ด๊ฐ ๋ฐ์ ์ฒซ ๋ฒ์งธ ์ค๋ฅ๋ catkin_make ์ค์น ์ค "uuv_laser_to_sonar/launch ๋๋ฝ"์ด์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋น ์์ ํด๋๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ "roslaunch uuv_gazebo_worlds test_turbid_water.launch"๋ฅผ ์คํํ๊ณ ๋ค์์ ํฌํจํ ๋ช ๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์๋
ํ์ธ์, @NickSadjoli
์ค๋ฅ๋ฅผ ์ถ์ ํ ํ opencv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋๋ก ์ฐ๊ฒฐ๋์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก image_sonar_ros_plugin์ ํ์ opencv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ช
์์ ์ผ๋ก ์ถ๊ฐํ์ต๋๋ค. ์๋ ์ค๋ฅ๋ฅผ ์์ ํ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๋ํ my_frame(๋ฐ ๋งต)์ด ์ ์๋์ง ์์๊ฑฐ๋ ์ธ๊ณ์์ tf๋ฅผ ๊ฐ์ ธ์ค์ง ์๋๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? ๊ธฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. C. ์น์
์๋ ํ์ธ์ @chyphen777์ ๋๋ค!
๋ฌธ์์ ๋ํ ๋ต๋ณ์ด ๋ง์ด ๋ฆ์ด์ง ์ ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
๋๋ฝ๋ ์์ ํ์ผ์ ๋ํ ์ค๋ฅ๋ ์ด์จ๋ FLS ์๋ฎฌ๋ ์ด์ ์์ ์ฌ์ฉ๋์ง ์์ ์ฌ๋ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํ์ฌ CMake-s๋ฅผ ์ง์ ๋ถํ๊ฒ ๋ง๋๋ ์์ธ์ผ๋ก ์ธํด ๋ฐ์ํ์ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ ๋ฆฌํ๊ธฐ ์ํด ๋ถ๊ธฐ๋ฅผ ์ ๋ฐ์ดํธํ๋๋ฐ ์ด์ ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ถํํ๋ ์ด ๋ถ๊ธฐ์์ ์ผ๋ถ ํ์ํ ํ์ผ์ ์ค์๋ก ์ญ์ ํ์ฌ Gazebo GUI๊ฐ ๋์ ์ค๋ฅ ๋ฐ ๋ถํ ์ค๋ฅ์ ํจ๊ป ์์๋๋๋ก ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ์ ๋ง๋ ์ฃผ์ ๋ ์ฌ์ ํ ์์๋๊ณ RViz๋ ์ฌ์ ํ ๊ฐ๋ ์ ๋๋ก ์์๋ ์ ์์ผ๋ฏ๋ก ์์ง ์์ ํ ์์๋์ง๋ ์์์ต๋๋ค.
๋ธ๋์น์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ๋ฌธ์ ๊ฐ ๊ณ์๋๋ฉด ์ด์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. ๋ค๋ง, ๋ค๋ฅธ ์ ๋ฌด๋ ๋ณํํ๊ณ ์์ด ์๊ฐ์ด ๋ง์ด ๋ถ์กฑํ ์ ์์์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค.
"ํด๋ฆฝ์ด ์์ต๋๋ค." ๋ฐ "์ผ์ ์ ํ[๊น์ด] ๋ณํ์ด ์ง์๋์ง ์์" ์ค๋ฅ์ ๊ดํด์๋ RViz์ ์๋ ์ด๋ฏธ์ง๊ฐ ํ์๋์ง ์๋ ๊ฐ๋ฅํ ์์ธ์ธ์ง ํ์คํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๊ฐ ํ์๋๋ ๊ฒฝ์ฐ์๋ ๋ด RViz์ ์ด๋ฏธ์ง๊ฐ ํ์๋๋๋ก ํฉ๋๋ค. ๋ถํํ๋ ์์ง ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฐ์ํ์ง ์์ ๊ธฐํธ ์กฐํ ์ค๋ฅ๋ก ์ธํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ด๋ จ ๋ฉ๋ชจ์์ opencv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ CMakeLists์ ๋ช ์์ ์ผ๋ก ๋งํฌํด์ผ ํ๋์ง ์ฌ๋ถ๋ ํ์คํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ํ์ ์์ด ์ธ์์ ์ ๋๋ก ์์ํ ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ ๋ํด์๋ ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ์ ์ฌํ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ์ํด ๋ฐ์ฐฝ๊ณ ์ค๋ฅ๋ฅผ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์ @chyphen777 ์ ๋๋ค .
๋ฐฉ๊ธ ํ์ฌ ๋ถ๊ธฐ์ ์ฝ๊ฐ์ ์์ ์ ๊ฐํ์ผ๋ฉฐ ์ด์ ๋ด ์ปดํจํฐ์์ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ด ๋ถ๊ธฐ๋ก ์ ํํ๊ณ catkin_make install๋ก ๋ชจ๋ ๊ฒ์ ์ปดํ์ผํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ถ๊ธฐ๊ฐ ๋๋๋ก ๋ถ์์ ํ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ ๋ค์ ์ ํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์์ ํ์ผ์ ๋ซ๊ณ ๋ค์ ์คํํ์ฌ Gazebo์ RViz๋ฅผ ์์ํ๊ณ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค(์ต์ํ ๋ด๊ฐ ํ ์ ์์๋ ๊ฒ). ์ด ๋ถ์์ ์ฑ์ ํ์คํ ์ง์ฆ๋๋ ์ผ์ด๋ฉฐ ๋ถ๊ธฐ๊ฐ ๋ ์์ ๋ ์ ์๋๋ก ์์ธ์ ๋ ์กฐ์ฌํ๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
๋ํ ๋ถํํ๋ my_frame ๋ฐ map์ด ์ ์๋์ง ์์๊ฑฐ๋ world's tf์์ ์ ๋ฐ์ดํธ๋์ง ์๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ์์ธํ ์ดํด๋ณด์ง ์์์ต๋๋ค. ์์ง ์ฑ๊ณตํ์ง ๋ชปํ ๋ค๋ฅธ FLS ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ค๋ ์ด์ ์๋์ ์์ฌ๋ฌผ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ๋ค์ ํ ๋ฒ, ์๊ฐ์ด ๋ ์์ ๋ ์ด ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ๋ ๋ง์ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด ๋ค์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฑด๋ฐฐ์ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค C. Chien! - ๋์ฝ๋ผ์ค S.
์๋ ํ์ธ์, @NickSadjoli :
๋ต๋ณ, ์์ ๋ฐ ์ ์ฉํ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทํ์ ์๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ฆ์ ๋ต๋ณ ์ฃ์กํฉ๋๋ค. ๋๋ ๋ค๋ฅธ ํ๋ก์ ํธ์ ๊ณ๊ธธ๋ก ๊ฐ๋ค. ์
๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด ๊ณ์ ์๋ ค์ฃผ์ธ์.
์๋ถ, C. Chien.
@NickSadjoli
์ฐ์ , UUV ์๋ฎฌ๋ ์ดํฐ์ฉ FLS ๊ตฌํ์ผ๋ก ํ๋ฅญํ๊ฒ ์์
ํ์ต๋๋ค. ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ ํฐ ์์ฐ์
๋๋ค! FLS๊ฐ ์ผ๋ฐ์ ์ผ๋ก ํ์ฅ์ ๋ฐฐํฌํ๋ ํ๋์จ์ด์ ์ผ์นํ๋๋ก ์ฝ๊ฐ์ ๋ณ๊ฒฝ์ ํ ๊ณํ์ด๋ฏ๋ก ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค.
๋ค๋ฅธ ์๋(์: ์ ๋ฐฉ ๋ฐ ํ๋ฐฉ ํ์)๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? FLS ์ด๋ฏธ์ง ์์ฑ๊ณผ ๊ด๋ จํ์ฌ ์นด๋ฉ๋ผ์ ๋ง์ ์ํธ ์์กด์ฑ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ด ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋๋ ๋ฌด์์ด๋ฉฐ ์์ง ๊ตฌ๊ฒฝ์ ๋ฌด์์ ๋๊น? ์๋์ ์์ง ์กฐ๋ฆฌ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ผ์์ ์ต๋ ๋ฒ์๋ ๋ฌด์์ด๋ฉฐ ์ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ณ๊ฒฝํฉ๋๊น?
rexrov_test.xacro ํ์ผ์์ FLS๋ฅผ ์์ํ๋ ๋ธ๋ก์์ "samples = 100"์ ๋ฌด์์ ์ฐธ์กฐํฉ๋๊น?
๋จ์
@NickSadjoli
๋ค์ ์์
์์ ์ด๊ฒ์ ์ ์ ํ๊ฒ ์ธ์ฉํ๋ ค๊ณ ํฉ๋๋ค. UUV ์๋ฎฌ๋ ์ดํฐ ์ธ์ฉ์ ์ฌ์ฉํ์ง๋ง ์ธ์ฉํด์ผ ํ ๋ค๋ฅธ ์์
์ด ์์ต๋๊น? ์๋ง๋ "์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์๋ก์ด GPU ๊ธฐ๋ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ?"
@ jake3991 ์ ์ด๋ ๋ด ์๋ ๊ตฌํ์ ๋น์ ์ด ์ธ๊ธํ๋ ๋ ผ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋กํฉ๋๋ค. @NickSadjoli ๊ฐ ๋ค๋ฅธ ์ํ์ ๊ฐ๋ ์ ์ถ๊ฐ
์ ํ์ด!
@nilsbore ๊ทํ์ ๊ตฌํ๊ณผ ์ด๋ฏธ์ง ์๋์ ์ด๋ฏธ์ง ํ์ฑ์ ์ดํดํ๋ ค๊ณ ๋
ธ๋ ฅ ์ค์
๋๋ค. ConstructSonarImage
๋ฐ ConstructScanImage
๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋ ๋ฐฉ์ ์์ ์๋ ค ์ฃผ์๊ฒ ์ต๋๊น? ์๋ฅผ ๋ค์ด SNR
๊ฐ cv::Mat SNR = SL - 2.0*TL - (NL-DI) + TS;
๋ก ๊ณ์ฐ๋๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
cv::Mat GazeboRosImageSonar::ConstructSonarImage(cv::Mat& depth, cv::Mat& normals)
{
std::vector<cv::Mat> images(3);
cv::split(normals, images);
float intensity = 100.; // target strength
float SL = 200.; // source level
float NL = 30; // noise level
float DI = 0.0; // directivity index
if (dist_matrix_.empty()) {
// Compute dist_matrix_ once
// ...
}
cv::Mat TS = intensity*images[2]; // target strength, probably dir should be DI
cv::Mat TL = 5*depth; // transmission loss
cv::multiply(TL, dist_matrix_, TL);
cv::Mat SNR = SL - 2.0*TL - (NL-DI) + TS;
SNR.setTo(0., SNR < 0.);
// ...
@witignite ์ด ์ฝ๋๋ ๊ฝค @jake3991์ด ์ฐธ์กฐํ ๋ ผ๋ฌธ์ ๋ณด๋ ๊ฒ์ ๋๋ค.
Gazebo์ Multibeam Sonar์ ๊ด์ฌ์ด ์๋ ์ฌ๋๋ค์ ์ํด Dave ํ๋ก์ ํธ์์ uuv_simulator๋ ํตํฉํ Multibeam Sonar ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์์ต๋๋ค. Nvidia Cuda ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ 900kHz ์ฃผํ์, 10m ๋ฒ์์์ ์ต๋ 10Hz ์ฌ์ ๋น๋์ ๊ฐ๋/๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ https://github.com/Field-Robotics-Lab/dave/wiki/Multibeam-Forward-Looking-Sonar๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์๋ , ๋ด ํ๋ก์ ํธ์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ํ ๋ถ๋ถ/๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ค๋๋ง์ ์ด ์ค๋ ๋์ ๋ต์ฅ์ ๋ณด๋ด์ ์ ๋ง ์ฃ์กํฉ๋๋ค.
์ด๊ฒ์ ๋ํ ์๋ ๋ถํฐ ์ด ์์ ์ ์ฒ๋ฆฌํด ์จ ๋๋ฃ์๊ฒ ์ด ์์ ๋์ ๋๊ฒผ๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์๋ฎฌ๋ ์ดํฐ ๊ฐ๋ฐ์ ๋ํด ์์ ํ ์ผํ๊ณ ์์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ถํํ๋ ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ ๊ฒ์๋ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ์ด ์ค๋ ๋๋ฅผ ๊ทธ์๊ฒ ์ธ๊ธํ๋ ๊ฒ์ ์์์ต๋๋ค.
๋ํ ์ค๋ช ์ ์ํด: ์๋ ๋ชจ๋ธ์ ์ฒ๋ฆฌํ๋ ๋์ @nilsbore ๊ฐ ์๋์ ๋ํด ์์ฑํ ํ์ ์์ค(์ฆ, C ์์ค ์ฝ๋) ์ฝ๋๋ฅผ ์ํํ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๋๋ฃ๋ ํผํํ ์์ค ํ๊ฒฝ์์ FLS ๋์์ ๋ณด๋ค ์ฌ์ค์ ์ผ๋ก ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํด ์ผ๋ถ ๋์์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ฝ๊ฐ์ ์กฐ์ ์ ์ํํ์ ์ ์์ต๋๋ค.
@jake3991 ์ง๋ฌธ์ ๋ตํ๋ ค๋ฉด:
๋ํ ์ ๋๋ฃ๊ฐ ์์ ์ค์ธ uuv_simulator ๊ธฐ๋ฐ ์๋ฎฌ๋ ์ดํฐ์ ๋ํ ๋ ผ๋ฌธ์ ๊ฒ์ํ ๊ณํ์ด๋ผ๋ ์ ์ ์ ์ํ์ญ์์ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํ์ฌ ๊ตฌํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ทธ์๊ฒ ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ ๊ตฌํ์ ๋ํ ์ถ๊ฐ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ํ์ํ ๊ฒฝ์ฐ ๊ทธ๋ฅผ ์ด ์ค๋ ๋์ ์ฐ๊ฒฐํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก "์ ํํ" ์๋ ๋ชจ๋ธ๊ณผ ๊ด๋ จํ์ฌ @woensug-choi๊ฐ ๋งํฌํ ์์ ์ ๋ณด๋ค ์ง์ ์ ์ธ ๊ด์ ์ถ์ ๊ตฌํ์ โโ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค "์ ํํ" ๋ชจ๋ธ์ผ ์ ์์ต๋๋ค. ๋น๋ก ์ด๊ฒ์ด ์ ๋ฐ์ ์ผ๋ก ์๋ฎฌ๋ ์ด์ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ผ๋ง๋ ๋ ๋์์ง ํ์ ํ ์๋ ์์ง๋ง.
๋ด ๋๋ฃ๊ฐ ๊ตฌํ์ ํ์ธํ๊ณ ๋ด ํ๋ก์ ํธ์ ์๋ฎฌ๋ ์ดํฐ์ ์ผ๋ง๋ ์ ํตํฉ๋ ์ ์๋์ง ํ์ธํ๊ฒ ํ ๊ฒ์ ๋๋ค.
์ด ์ค๋ ๋์ ๋ํ ๋งค์ฐ ๋ฆ์ ๋ต๋ณ์ ๋ํด ๋ค์ ํ ๋ฒ ๋ชจ๋ ๋ถ๋ค๊ป ํฐ ์ฌ๊ณผ๋ฅผ ๋๋ฆฝ๋๋ค.
@jake3991 ๋ํ ์ฐ๋ฆฌ ํ๋ก์ ํธ ์๋ฎฌ๋ ์ดํฐ์ ์ธ์ฉ์ ๋ํ ์ค๋ช ์ ์ํด: ์๋ฎฌ๋ ์ดํฐ์์ ์ค์ ์ฑ๊ณต์ ์ธ ๋ ผ๋ฌธ ์ถํ์ ์ป์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์ธ์ฉ์ ์ํด
์ถํ๋ฌผ์ ๋ํ ์ฐ๋ฆฌ์ ์ถํ์ด ์น์ธ๋๊ฑฐ๋ ์๋ฃ๋๋ฉด ์ฐ๋ฆฌ ๋ ผ๋ฌธ์ ๋ํ ์ธ์ฉ๋ ๊ทธ๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ด์ฌ ์๋ ๋ถ๋ค์ https://github.com/Field-Robotics-Lab/dave/wiki/Multibeam-Forward-Looking-Sonar ๋ฅผ ํ์ธ
๋ด๊ฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค ์ํ https://github.com/uuvsimulator/uuv_simulator๋ฅผ ์ด๋ฏธ ํตํฉ ํ ๊ทธ @musamarcusso์์๋ฅผ @nilsbore์ ์์ค ์ํ ํ์ง๊ธฐ ๋ชจ๋.
@jake3991 ์ง๋ฌธ์์ @NickSadjoli ๋ฅผ ๋ช
ํํ ํ๋ ค๋ฉด:
2. @NickSadjoli๊ฐ ๋งํ๋ฏ์ด, ์ฐ๋ฆฌ๋ Blueprint ์๋์์ ์ฐธ์กฐํ์ต๋๋ค.
์๋์ VFOV๋ฅผ ํธ์ํ๋ ค๋ฉด:
์๋์ URDF xacro ํ์ผ์์ HFOV, ์ด๋ฏธ์ง์ ๋๋น ๋ฐ ๋์ด๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. Gazebo๋ ์ด๋ฏธ์ง ๋๋น์ HFOV๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋์ผํ ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๋์ด๋ฅผ ์ฌ์ฉํ์ฌ VFOV๋ฅผ ์ญ์ผ๋ก ๊ณ์ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ํ๋ VFOV๋ฅผ ์ง์ ํ๋ ค๋ฉด ์ด๋ฏธ์ง ๋์ด๋ฅผ ๊ณ์ฐํด์ผ ํฉ๋๋ค.
์ด์ ๊ฑฐ๋ฆฌ = (ํญ/2) / tan( deg2rad(HFOV)/2) ๋๋ ์ด์ ๊ฑฐ๋ฆฌ = (๋์ด/2) / tan( deg2rad(VFOV)/2)
3.์๋์ C++ ์ฝ๋๋ฅผ ํธ์ํด์ผ ํฉ๋๋ค. @nilsbore ์ ์์ค ์ํ ํ์ง๊ธฐ์ C++ ์ฝ๋์์ @nilsbore ์๋ณธ ์์ ๊ณผ ๊ฐ์ด ์ผ์ ํ Range๋ฅผ ๊ฐ๋ ๋์ "Range" ๊ฐ์ ๊ตฌ๋ ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ถ๋ถ์ ์๋์ฒ๋ผ ์๋ ๋์คํ๋ ์ด์ ์ต๋ ๋ฒ์๋ก ์ฌ์ํ ์ ์์ต๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@nilsbore ๋ฐ @NickSadjoli ,
@Jenanaputra ์์ ์ ๋๊ธ์ ์ฐธ๊ณ
@loguna123 ์ฌ์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์, ์ฐ๋ฆฌ๋
uuv_simulator
์์๋ ์ผ์ ์๋ฎฌ๋ ์ด์ ์ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ํ์ฌ ์ฐ๋ฆฌ๋ ํญํฌ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ ์ฌ์ด๋ ์ค์บ๊ณผ ์ ์ฌํ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ ์ค์ํ ๊ฒ์ https://github.com/smarc-project/smarc_simulations/blob/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins/src/gazebo_ros_image_sonar.cpp ์์ ๋ฉ์ง FLS ์ผ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. "์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ก์ด GPU ๊ธฐ๋ฐ ์๋ ์๋ฎฌ๋ ์ดํฐ" ๋ฌธ์์ ์ค๋ช ๋ ์๋ฎฌ๋ ์ด์ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. Gazebo๋ ์ด๋ฅผ ์ฝ๊ฐ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์๋ฎฌ๋ ์ด์ ๋ ๊น์ด ์นด๋ฉ๋ผ ๋จ์ฉ์ ์์กดํ์ง๋ง ์ฌ์ ํ ํฉ๋ฆฌ์ ์ผ๋ก ํจ์จ์ ์ ๋๋ค.์ฌ์ ํ ์ด์ ๋ํ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ ์๋๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง์ ๋ํ ๋ช ๊ฐ์ง ์๋ฅผ ์ ๊ณตํ๊ณ ์๋ง๋ ๋ชจ๋ ๊ฒ์ ์๋ฃํ๊ณ ์ด ์ ์ฅ์์ ๋ํ PR์ ์์ฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.