Uuv_simulator: ๋ณด๋‹ค ํ˜„์‹ค์ ์ธ ์†Œ๋‚˜ ์„ผ์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ตฌํ˜„

์— ๋งŒ๋“  2017๋…„ 05์›” 02์ผ  ยท  33์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: uuvsimulator/uuv_simulator

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ Gazebo์˜ ๋ ˆ์ด์ € ์„ผ์„œ๋ฅผ ๋‚จ์šฉํ•˜๊ณ  ์ด๋ฅผ ์†Œ๋‚˜๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ ์„ผ์„œ( ์‚ฌ์ด๋“œ ์Šค์บ” ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ ๋ฐ ๋‹ค์ค‘ ๋น” ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ )์˜ ๋ณด๋‹ค ํ˜„์‹ค์ ์ธ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ uuv_simulator์— ๋งŽ์€ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋” ํฐ ๊ทœ๋ชจ์˜ ์ƒˆ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋” ํฅ๋ฏธ๋กญ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

enhancement help wanted

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ๋ฆฌ๋Š” 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์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  33 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ๋ฆฌ๋Š” 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 ์—์„œ

FLS upgraded-turbidwater

๋ถˆํ–‰ํžˆ๋„ ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์ง„์ „์ด ์—†์—ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ๋˜๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งŒ๋“  ์ปค๋ฐ‹์˜ ๊ด€์ ์—์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด ๋งŒ๋“  ์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ๋‚ด ์ง€์ ์— ๋Œ€ํ•ด ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜๋‹ค๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Gazebo์™€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฉฐ "rexrov/depth/image_sonar" ์ฃผ์ œ์—์„œ ์†Œ๋‚˜ ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ผ์„œ ๊ตฌํ˜„์—๋Š” ํ˜„์žฌ ๊นŠ์ด ์นด๋ฉ”๋ผ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ด๋ฆ„์€ "/๊นŠ์ด" ์ฃผ์ œ์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ˜ผ๋ž€์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์ด ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋ฉฐ ๊ณง ์ถ”๊ฐ€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@NickSadjoli๋‹˜ , ์ด ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ๊ฐ€ ๊ตฌํ˜„๋œ ์ €์žฅ์†Œ(์žˆ๋Š” ๊ฒฝ์šฐ)์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@musamarcusso ์ด์ „์— ๋งํฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Rexrov UUV์— ๋Œ€ํ•œ ์ด ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ์˜ ์ž‘์—… ์˜ˆ์ œ๊ฐ€ ์žˆ๋Š” ์ž‘์—… ๋ถ„๊ธฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ด ๋ถ„๊ธฐ์—๋Š” ์ด์ „์— ์ฐธ์กฐ๋œ ๋ฌธ์„œ์—์„œ ์–ธ๊ธ‰ํ•œ FLS๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์‹คํ—˜ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์ ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/NickSadjoli/uuv_simulator/tree/realistic-sonar-sim-48

์ด ๋ถ„๊ธฐ์— ์ถ”๊ฐ€๋˜์—ˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐํƒ€ ์‚ฌํ•ญ ๋˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ๋‚ด ์—ฐ๊ตฌ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ •ํ•œ "subsea_bop_panel.world"๋ฅผ ํฌ๊ฒŒ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” "test_turbid_water.world"๋ผ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ํ…Œ์ŠคํŠธ ์„ธ๊ณ„.
  • Niels์˜ FLS ๊ตฌํ˜„์„ ํฌํ•จํ•˜๋Š” ์ž‘๋™ ์ค‘์ธ rexrov ๋ชจ๋ธ์€ ์ดˆ๊ธฐ์— "rexrov_sonar.xacro" ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” "uuv_descriptions/robots/rexrov_test.xacro" ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ์ด์ „ m450 ๋˜๋Š” p900 fls๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์œ„์—์„œ Niels๊ฐ€ ๊ถŒ์žฅํ•œ fls ์†Œ๋‚˜ xacro๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  • Rviz๊ฐ€ /rexrov/depth/image_raw_sonar ๋ฐ ์ „๋ฉด default_camera ์ฃผ์ œ์— ์ง์ ‘ ํ‘œ์‹œ๋˜๋„๋ก ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜๋œ "rexrov_fls.rviz" ๋ณด๊ธฐ์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ง€์ • ์‹œ์ž‘ ํŒŒ์ผ "test_turbid_water.launch"๋Š” ์œ„์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์กฐํ•ฉ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ์ง€์ • ์„ธ๊ณ„์™€ Rviz๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ถ„๊ธฐ์˜ ํŒŒ์ผ ๊ตฌ์„ฑ์ด ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๋ฉด ์ด ์Šค๋ ˆ๋“œ์—์„œ ์ €์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์„ธ์š”. ๊ทธ๋Ÿฌ๋ฉด ์ œ๊ฐ€ ์ด ๋ถ„๊ธฐ์˜ ๋” ๊นจ๋—ํ•œ ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด ์—ฌ๋Ÿฌ๋ถ„์ด ๋Œ์–ด์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ/์˜๊ฒฌ์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋‹‰์‚ฌ์กธ๋ฆฌ

ํŽธ์ง‘: ์ €์žฅ์†Œ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, @NickSadjoli
๋‚˜๋Š” ๋‹น์‹ ์˜ uuv_simulator-realistic-sonar-sim-48์„ ์‹œํ—˜ํ•ด ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐ›์€ ์ฒซ ๋ฒˆ์งธ ์˜ค๋ฅ˜๋Š” catkin_make ์„ค์น˜ ์ค‘ "uuv_laser_to_sonar/launch ๋ˆ„๋ฝ"์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋นˆ ์‹œ์ž‘ ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ "roslaunch uuv_gazebo_worlds test_turbid_water.launch"๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ์„ ํฌํ•จํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. [Err] [gazebo_ros_image_sonar. cpp:160 ] ํด๋ฆฝ์ด ์—†์Šต๋‹ˆ๋‹ค.
  2. gzserver: ๊ธฐํ˜ธ ์กฐํšŒ ์˜ค๋ฅ˜: /home/cchien/catkin_ws3/devel/lib/libimage_sonar_ros_plugin.so: ์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐํ˜ธ: _ZN2cv3Mat6createEiPKii.
    "์„ผ์„œ ์œ ํ˜•[๊นŠ์ด] ๋ณ€ํ™˜์ด ์ง€์›๋˜์ง€ ์•Š์Œ"์„ ํฌํ•จํ•œ ์ผ๋ถ€ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    ๊ฒฐ๊ณผ์ ์œผ๋กœ rviz์— ์†Œ๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ mssingํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์˜๊ฒฌ์ด๋‚˜ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ถ„ํˆฌ 16.04, ROS kinetic ๋ฐ opencv 3.4์—์„œ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”. C. ์น˜์—”

์•ˆ๋…•ํ•˜์„ธ์š”, @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๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๊ธฐ๊ฐ€ ๋•Œ๋•Œ๋กœ ๋ถˆ์•ˆ์ •ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๋‹ค์Œ ์œ ํ˜•์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

current_branch_not_stable

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ์ž‘ ํŒŒ์ผ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ Gazebo์™€ RViz๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ตœ์†Œํ•œ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ). ์ด ๋ถˆ์•ˆ์ •์„ฑ์€ ํ™•์‹คํžˆ ์งœ์ฆ๋‚˜๋Š” ์ผ์ด๋ฉฐ ๋ถ„๊ธฐ๊ฐ€ ๋” ์•ˆ์ •๋  ์ˆ˜ ์žˆ๋„๋ก ์›์ธ์„ ๋” ์กฐ์‚ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ถˆํ–‰ํžˆ๋„ my_frame ๋ฐ map์ด ์ •์˜๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ world's tf์—์„œ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•œ ๋‹ค๋ฅธ FLS ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ด์ „ ์‹œ๋„์˜ ์ž”์—ฌ๋ฌผ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ, ์‹œ๊ฐ„์ด ๋” ์žˆ์„ ๋•Œ ์ด ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋” ๋งŽ์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์‹œ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ์™€ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค C. Chien! - ๋‹ˆ์ฝœ๋ผ์Šค S.

์•ˆ๋…•ํ•˜์„ธ์š”, @NickSadjoli :

๋‹ต๋ณ€, ์ˆ˜์ • ๋ฐ ์œ ์šฉํ•œ ์ •๋ณด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์†Œ๋‚˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Šฆ์€ ๋‹ต๋ณ€ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๊ณ๊ธธ๋กœ ๊ฐ”๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ๊ณ„์† ์•Œ๋ ค์ฃผ์„ธ์š”.
์•ˆ๋ถ€, C. Chien.

@NickSadjoli
์šฐ์„ , UUV ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์šฉ FLS ๊ตฌํ˜„์œผ๋กœ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•œ ํฐ ์ž์‚ฐ์ž…๋‹ˆ๋‹ค! FLS๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜„์žฅ์— ๋ฐฐํฌํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์ผ์น˜ํ•˜๋„๋ก ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ์„ ํ•  ๊ณ„ํš์ด๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋‹ค๋ฅธ ์†Œ๋‚˜(์˜ˆ: ์ „๋ฐฉ ๋ฐ ํ›„๋ฐฉ ํƒ์ƒ‰)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? FLS ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์นด๋ฉ”๋ผ์— ๋งŽ์€ ์ƒํ˜ธ ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  2. ์ด๊ฒƒ์ด ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์†Œ๋‚˜๋Š” ๋ฌด์—‡์ด๋ฉฐ ์ˆ˜์ง ๊ตฌ๊ฒฝ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์†Œ๋‚˜์˜ ์ˆ˜์ง ์กฐ๋ฆฌ๊ฐœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  3. ์„ผ์„œ์˜ ์ตœ๋Œ€ ๋ฒ”์œ„๋Š” ๋ฌด์—‡์ด๋ฉฐ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ?

  4. 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๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
image

์•ˆ๋…•, ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋Œ€ํ•œ ๋ถ€๋ถ„/๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์•„์ฃผ ์˜ค๋žœ๋งŒ์— ์ด ์Šค๋ ˆ๋“œ์— ๋‹ต์žฅ์„ ๋ณด๋‚ด์„œ ์ •๋ง ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ ์ž‘๋…„๋ถ€ํ„ฐ ์ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด ์˜จ ๋™๋ฃŒ์—๊ฒŒ ์ด ์ž‘์—…๋Ÿ‰์„ ๋„˜๊ฒผ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ์ผํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ฒŒ์‹œ๋œ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ทธ์—๊ฒŒ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์„ค๋ช…์„ ์œ„ํ•ด: ์†Œ๋‚˜ ๋ชจ๋ธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ @nilsbore ๊ฐ€ ์†Œ๋‚˜์— ๋Œ€ํ•ด ์ž‘์„ฑํ•œ ํ•˜์œ„ ์ˆ˜์ค€(์ฆ‰, C ์†Œ์Šค ์ฝ”๋“œ) ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋™๋ฃŒ๋Š” ํ˜ผํƒํ•œ ์ˆ˜์ค‘ ํ™˜๊ฒฝ์—์„œ FLS ๋™์ž‘์„ ๋ณด๋‹ค ์‚ฌ์‹ค์ ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์กฐ์ •์„ ์ˆ˜ํ–‰ํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jake3991 ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ ค๋ฉด:

  1. ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด ๋‚ด ๋™๋ฃŒ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์†Œ๋‚˜์˜ ์ผ๋ถ€ URDF ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์†Œ๋‚˜๋ฅผ 'ํšŒ์ „'ํ•˜๋Š” ๋ฐ๋งŒ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—ฌ์ „ํžˆ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€ ๋” ์ž์„ธํžˆ ๋ฌผ์–ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ์ฒ˜์Œ์— ์†Œ๋‚˜๋Š” @nilsbore๊ฐ€ ์‚ฌ์šฉํ•œ Blueview ์†Œ๋‚˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ์— ์ œ ๋™๋ฃŒ๊ฐ€ ๋‹ค๋ฅธ ์†Œ๋‚˜ ์‚ฌ์–‘, ํŠนํžˆ Blueview M750D ์†Œ๋‚˜ ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ์กฐ๋ฆฌ๊ฐœ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฐ€ xacro ํ˜ธ์ถœ์— ๋ช‡ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๋‹ค์‹œ ๊ทธ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋ฌผ์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. 2์™€ ๊ฐ™์€ ๋Œ€๋‹ต
  4. ๋ถˆํ–‰ํžˆ๋„ ์ด์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋‹ต๋ณ€์„ ์–ป๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™๋ฃŒ์—๊ฒŒ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ œ ๋™๋ฃŒ๊ฐ€ ์ž‘์—… ์ค‘์ธ 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 ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋ ค๋ฉด:

  1. ์†Œ๋‚˜ ์ž์ฒด์— URDF๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ URDF๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋‹ค์‹œ ๋งคํ•‘ํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— 2๊ฐœ์˜ ์†Œ๋‚˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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" ๊ฐ’์— ๊ตฌ๋…์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์†Œ๋‚˜์ฒ˜๋Ÿผ ์†Œ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด์˜ ์ตœ๋Œ€ ๋ฒ”์œ„๋กœ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. "FLS"์˜ xacro์—์„œ "samples" ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "Multibeam"์šฉ xacro์—์„œ๋Š” ์ „๋ง๋Œ€์˜ ๋ ˆ์ด์ € ํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐ ๋น”์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "GPU ๋ ˆ์ด์ €" ์•„๋ž˜์˜ http://gazebosim.org/tutorials?tut=ros_gzplugins๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@nilsbore ๋ฐ @NickSadjoli ,

  1. sonar_snippets.xacro์—์„œ ${width} ๋ฐ ${height}๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ์†Œ๋‚˜์˜ ๋„ˆ๋น„์™€ ๋†’์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ${width} ๋ฐ ${height} ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๋‹ค์Œ ์†Œ๋‚˜ ์ด๋ฏธ์ง€ topic์˜ ๋†’์ด์™€ ๋„ˆ๋น„ ๊ฐ’์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๊ฐ€์น˜๋Š” ๋‹ฌ๋ž๋‹ค. ์™œ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
  2. ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ์˜ ํ™•์žฅ๋œ ๋ฒ”์œ„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์†Œ๋‚˜ ์ด๋ฏธ์ง€์—์„œ ๋” ๋จผ ์žฅ์• ๋ฌผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@Jenanaputra ์œ„์˜ ์ œ ๋Œ“๊ธ€์„ ์ฐธ๊ณ 

  1. ์ฃผ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ •ํ–ˆ๋‚˜์š”? ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๊นŒ?{$์ฃผ์ œ}xacro ํŒŒ์ผ์—์„œ? ์•„๋‹ˆ๋ฉด ๊ฐ–๊ณ  ์‹ถ์€ ํŠน์ • ์ฃผ์ œ๋กœ C++ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๊นŒ? (์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋ง›์žˆ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค)
  2. ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ๋Š” ์‹ค์ œ๋กœ ์ „๋ง๋Œ€ ๊นŠ์ด ์นด๋ฉ”๋ผ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒƒ์œผ๋กœ ${width} ๋ฐ ${height}๋Š” ์ „๋ง๋Œ€์˜ ์นด๋ฉ”๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์„ผ์„œ์˜ VFOV ๋ฐ HFOV์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค(์ด์ „ ๊ฒŒ์‹œ๋ฌผ์˜ ๋ฐฉ์ •์‹ ์–ธ๊ธ‰). ์ผ๋ฐ˜์ ์œผ๋กœ ์นด๋ฉ”๋ผ์˜ ๊ฒฝ์šฐ ๋„ˆ๋น„๋Š” 1280์ด๊ณ  ๋†’์ด๋Š” 720์ž…๋‹ˆ๋‹ค. ์ˆ˜์ค‘ ์ŒํŒŒ ํƒ์ง€๊ธฐ์˜ ๊ฒฝ์šฐ ๋„ˆ๋น„๋ฅผ 1280์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์ด๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„ผ์„œ์˜ VFOV๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ฒ”์œ„๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด C++ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„๋Š” ํ˜„์žฌ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๊ณ ์ • ๊ฐ’์ž…๋‹ˆ๋‹ค.
    ๋งˆ์ง€๋ง‰์œผ๋กœ C++ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ catkin clean๊ณผ catkin make๋ฅผ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค(ROS ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •).

@loguna123 ์žฌ์ƒ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

musamarcusso picture musamarcusso  ยท  12์ฝ”๋ฉ˜ํŠธ

Timple picture Timple  ยท  24์ฝ”๋ฉ˜ํŠธ

hughhugh picture hughhugh  ยท  5์ฝ”๋ฉ˜ํŠธ

Timple picture Timple  ยท  7์ฝ”๋ฉ˜ํŠธ

dbcesar picture dbcesar  ยท  5์ฝ”๋ฉ˜ํŠธ