Visualization and logging - modulabs/gazebo-tutorial GitHub Wiki

Overview

์„ผ์„œ ์ •๋ณด๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋กœ๊ทธ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฒˆ ์žฅ์—์„œ๋Š” rviz์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•œ Atlas ๋กœ๋ด‡์„ ์–ด๋–ป๊ฒŒ ์‹œ๊ฐํ™” ํ•˜๋Š”์ง€, ์„ผ์„œ ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ๋กœ๊ทธ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋Š”์ง€, rviz๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ ๊ธฐ๋ก ๋œ ์„ผ์„œ๋ฅผ ์žฌ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช… ํ•  ๊ฒƒ์ด๋‹ค.

๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์›ํ•˜๋ฉด rviz์™€ rosbag์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ  ํ•˜๋ฉด ๋œ๋‹ค.

Setup

ROS visualization tool์ด ์—†๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ด๋ผ.

For ROS Indigo:

sudo apt-get install ros-indigo-viz

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ€์ œ๋ณด์—์„œ Atlas ๋กœ๋ด‡์„ ๋ถˆ๋Ÿฌ ์˜จ๋‹ค.

    roslaunch drcsim_gazebo atlas.launch

Visualizing Sensor Data with rviz

rviz๋Š” ๊ฐ•๋ ฅํ•œ ๋กœ๋ด‡ ์‹œ๊ฐํ™” ํˆด์ด๋‹ค. ์ด๊ฒƒ์€ ์„ผ์„œ ๋ฐ์ดํ„ฐ, ๋กœ๋ด‡ ๋ชจ๋ธ, ํ™˜๊ฒฝ ์ง€๋„๋ฅผ GUI๋กœ ์ œ๊ณตํ•˜๊ณ  ์ด๊ฒƒ์€ ๋กœ๋ด‡ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค.

Running Rviz

๋กœ๋ด‡์ด ๋™์ž‘ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด rviz๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ๋ผ.

rosrun rviz rviz

Visualizing the Robot model

'Add'๋ฅผ ํด๋ฆญํ•˜๊ณ  ์Šคํฌ๋กค์„ ๋‚ด๋ ค 'rviz > RobotModel'์„ ์„ ํƒํ›„ 'OK'๋ฅผ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋œ๋‹ค.

'Displays' ๊ทธ๋ฃน์—์„œ 'Global Options' ์•„๋ž˜์— 'Fixed Frame' ์˜† ๋ผ๋ฒจ์„ ํด๋ฆญ ํ•˜์—ฌ '/pelvis'๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ์„ ํƒํ•˜๋ฉด ์›๊ฑฐ๋ฆฌ์—์„œ ๋กœ๋ด‡์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํœ  ๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•ด ๋ทฐ๋ฅผ ์กฐ์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.:

  • ์™ผ์ชฝ์„ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ๋“œ๋ž˜๊ทธ ํ•˜๋ฉด ๋ทฐ๋ฅผ ํšŒ์ „ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํœ ์„ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ๋“œ๋ž˜๊ทธ ํ•˜๋ฉด ๋ทฐ ํ™”๋ฉด์„ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.

  • ํœ ์„ ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋ฉด ์คŒ, ์ธ์ด ๋œ๋‹ค.

  • ์˜ค๋ฅธ์ชฝ์„ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ๋“œ๋ž˜๊ทธ ํ•˜๋ฉด ์คŒ, ์ธ์ด ๋œ๋‹ค.

Visualizing Sensor Information

ํ‚ค'Add'๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  'rviz > Camera'๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ์ฐฝ์˜ Camera ํ•ญ๋ชฉ์—์„œ ๋นˆ ๊ณต๊ฐ„์„ ํด๋ฆญํ•˜๋ฉด ๋นˆ ํ•„๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. /multisense_sl/camera/left/image_raw๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ธฐ์ž… ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ž‘์€ ํ”„๋ ˆ์ž„ ์•ˆ์— ์นด๋ฉ”๋ผ ๋น„๋””์˜ค ํ”ผ๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. rviz๋Š” ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€์— ๋กœ๋ด‡ ๋ชจ๋ธ์˜ ์ค‘์ฒฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€์— ์›์„ ๋‚˜ํƒ€๋‚ด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ๋“ค์€ Camera > Overlay Alpha๋ฅผ 1.0์œผ๋กœ ์…‹ํŒ… ํ•˜๋ฏ€๋กœ์จ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Atlas ๋กœ๋ด‡ ์•ž์— ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ํšŒ์ƒ‰์œผ๋กœ ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜ํƒ€ ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์นด๋ฉ”๋ผ ํ”ผ๋“œ์—์„œ ๋ณด์ผ ์ˆ˜ ์žˆ๋„๋ก ๋กœ๋ด‡ ์•ž์— ๋ฐ•์Šค๋ฅผ ๋†“์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

For drcsim >= 4.1.0: atlas versions >= v3 (e.g. atlas_v3.launch)์„ ์‚ฌ์šฉํ•˜๋ฉด, the camera topic namespace๋Š”/multisense_sl/ ์—์„œ /multisense/๋กœ ๋ฐ”๋€Œ์–ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์นด๋ฉ”๋ผ์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ ˆ์ด์ € ์Šค์บ”์„ ์ถ”๊ฐ€ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 'Topic'์„ /multisense_sl/laser/scan๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋‹ค์‹œ rviz์—์„œ ๋ ˆ์ด์ € ์Šค์บ”์˜ ์‹œ๊ฐํ™”๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด์„œ ๋กœ๋ด‡ ์•ž์— ๋ฐ•์Šค๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ์„ธ์š”. ๋ฐ•์Šค๊ฐ€ ๋–จ์–ด์งˆ ๋•Œ ๋ฐ•์Šค ์œ„๋กœ ๋นจ๊ฐ„ ์ƒ‰ ํฌ์ธํŠธ๋“ค์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

For drcsim >= 4.1.0: atlas versions >= v3 (e.g. atlas_v3.launch)์„ ์‚ฌ์šฉํ•˜๋ฉด, laser topic์„ /multisense_sl/laser/scan ์—์„œ /multisense/lidar_scan๋กœ ๋ฐ”๊พธ์–ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

TF๋Š” ์กฐ์ธํŠธ ๋ณ€ํ™˜์„ ์‹œ๊ฐํ™” ํ•˜๊ณ , Map์€ 2D collision map์„ ์‹œ๊ฐํ™” ํ•˜๊ณ , PointCloud(2)๋Š” Microsoft Kinect์™€ ๊ฐ™์€ ์„ผ์„œ์˜ ๊นŠ์ด ์ •๋ณด๋ฅผ ์‹œ๊ฐํ™” ํ•ฉ๋‹ˆ๋‹ค.

Bonus: actuate the laser. ๋กœ๋ด‡ ๋จธ๋ฆฌ์— ์žˆ๋Š” ๋ ˆ์ด์ €๊ฐ€ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฅ์ฐฉ ๋˜์–ด ์žˆ๋‹ค. ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ ํšŒ์ „ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.:

rostopic pub /multisense_sl/set_spindle_speed std_msgs/Float64 '{ data: 6.0 } '

๋ฐ์ดํ„ฐ ๊ฐ’์€ ์ง€๋ น ๊ฐ์†๋„ ๊ฐ’์ด๋ฉฐ ๋‹จ์œ„๋Š” ์ดˆ๋‹น ๋ผ๋””์•ˆ์ด๋‹ค. rviz์—์—์„œ ์ฃผ๋ณ€์„ ํšŒ์ „ํ•˜๋Š” ๋ ˆ์ด์ € ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ™˜๊ฒฝ์˜ poor-man์˜ 3D ๋ชจ๋ธ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด "LaserScan" display์˜ "Decay Time" field๋ฅผ ํด๋ฆญํ•˜์—ฌ์„œ 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์‹œ๊ฐ„์„ ์ฆ๊ฐ€ ์‹œ์ผœ๋ผ ์‹œ๊ฐ„์˜ ๋‹จ์œ„๋Š” ์ดˆ์ด๋‹ค. rviz์—์„œ ๋ ˆ์ด์ € ์Šค์บ”๋“ค์ด ๋ˆ„์ ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Saving the rviz Configuration

ํ˜„์žฌ ์„ค์ •์„ ์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” "File > Save Config"์„ ํด๋ฆญํ•˜์—ฌ๋ผ. ๋‹ค์Œ๋ฒˆ์— rviz๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ด ์„ค์ •์ด ๋กœ๋“œ ๋  ๊ฒƒ์ด๋‹ค.

"File > Save Config as ... ", "File > Open Config"์„ ์ด์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ • ๊ฐ’์ด ์•„๋‹ˆ์–ด๋„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์„ค์ •์œผ๋กœ rviz๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

rosrun rviz rviz -d /your/config/file.vcg

Logging Sensor Data with rosbag

rosbag ๋กœ๋ด‡์ด ๋™์ž‘ ์ค‘์— ํ† ํ”ฝ์„ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ด๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ† ํ”ฝ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

rostopic list

์šฐ๋ฆฌ๋Š” ๋กœ๋ด‡์œผ๋กœ ๋ถ€ํ„ฐ ์กฐ์ธํŠธ ์ƒํƒœ, ์นด๋ฉ”๋ผ, ๋ ˆ์ด์ €, tf (transform data)๋ฅผ ๊ธฐ๋ก ํ•  ๊ฒƒ ์ด๋‹ค. ์ด๋Š” ROS.bag ํŒŒ์ผ๋กœ ๊ธฐ๋ก๋œ๋‹ค.

rosbag record -O /tmp/ROS.bag /tf /atlas/joint_states /multisense_sl/camera/left/image_raw /multisense_sl/camera/left/camera_info /multisense_sl/laser/scan

For drcsim >= 4.1.0: atlas versions >= v3 (e.g. atlas_v3.launch)์€ ๋‹ค์Œ์˜ rosbag ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

rosbag record -O /tmp/ROS.bag /tf /atlas/joint_states /multisense/camera/left/image_raw /multisense/camera/left/camera_info /multisense/lidar_scan

์‹คํ–‰ ์ค‘์— ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ Control + C๋ฅผ ๋ˆ„๋ฆ„์œผ๋กœ์จ rosbag ๊ธฐ๋ก์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค.

Playing and Visualizing rosbags

rosbag ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‚ด์šฉ์˜ "playback.launch"๋ผ๋Š” ์ด๋ฆ„์˜ launch ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค.

<launch>
  <!-- Creates a command line argument called file -->
  <arg name="file"/>

  <!-- Run the rosbag play as a node with the file argument -->
  <node name="rosbag" pkg="rosbag" type="play" args="--loop $(arg file)" output="screen"/>
</launch>

๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ launch ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ  ROS.bag file์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

roslaunch playback.launch file:=/tmp/ROS.bag

๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ rviz๋ฅผ ์‹คํ–‰ํ•˜๊ณ  rosbag์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ํ† ํ”ฝ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

rosrun rviz rviz &
rostopic list
โš ๏ธ **GitHub.com Fallback** โš ๏ธ