Visualization and logging - modulabs/gazebo-tutorial GitHub Wiki
์ผ์ ์ ๋ณด๋ฅผ ์๊ฐํํ๊ณ ๋ก๊ทธ ๊ธฐ๋ก์ผ๋ก ๋จ๊ธฐ๋ ๊ฒ์ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ๋ฐํ๊ณ ๋๋ฒ๊น ํ๋๋ฐ ์ค์ํ๋ค. ์ด๋ฒ ์ฅ์์๋ rviz์์ ์๋ฎฌ๋ ์ด์ ํ Atlas ๋ก๋ด์ ์ด๋ป๊ฒ ์๊ฐํ ํ๋์ง, ์ผ์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ๋ก๊ทธ ๊ธฐ๋ก์ผ๋ก ๋จ๊ธฐ๋์ง, rviz๋ฅผ ํตํด ๋ก๊ทธ ๊ธฐ๋ก ๋ ์ผ์๋ฅผ ์ฌ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ ๊ฒ์ด๋ค.
๋ ๋ง์ ์ ๋ณด๋ฅผ ์ํ๋ฉด rviz์ rosbag์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
ROS visualization tool์ด ์๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์นํด๋ผ.
For ROS Indigo:
sudo apt-get install ros-indigo-viz
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ๊ฐ์ ๋ณด์์ Atlas ๋ก๋ด์ ๋ถ๋ฌ ์จ๋ค.
roslaunch drcsim_gazebo atlas.launch
rviz๋ ๊ฐ๋ ฅํ ๋ก๋ด ์๊ฐํ ํด์ด๋ค. ์ด๊ฒ์ ์ผ์ ๋ฐ์ดํฐ, ๋ก๋ด ๋ชจ๋ธ, ํ๊ฒฝ ์ง๋๋ฅผ GUI๋ก ์ ๊ณตํ๊ณ ์ด๊ฒ์ ๋ก๋ด ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ๋ฐํ๊ณ ๋๋ฒ๊น ํ๋๋ฐ ์ ์ฉํ๋ค.
๋ก๋ด์ด ๋์ํ๊ณ ์์ ๋ ๋ค์์ ๋ช ๋ น์ด๋ฅผ ํตํด rviz๋ฅผ ์์ํ์ฌ๋ผ.
rosrun rviz rviz
'Add'๋ฅผ ํด๋ฆญํ๊ณ ์คํฌ๋กค์ ๋ด๋ ค 'rviz > RobotModel'์ ์ ํํ 'OK'๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ฒ๋ผ ๋๋ค.
'Displays' ๊ทธ๋ฃน์์ 'Global Options' ์๋์ 'Fixed Frame' ์ ๋ผ๋ฒจ์ ํด๋ฆญ ํ์ฌ '/pelvis'๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ์ ํํ๋ฉด ์๊ฑฐ๋ฆฌ์์ ๋ก๋ด์ ๋ณผ ์ ์๋ค.
ํ ๋ง์ฐ์ค๋ฅผ ํตํด ๋ทฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.:
-
์ผ์ชฝ์ ๋๋ฅธ ์ํ์์ ๋๋๊ทธ ํ๋ฉด ๋ทฐ๋ฅผ ํ์ ํ ์ ์๋ค.
-
ํ ์ ๋๋ฅธ ์ํ์์ ๋๋๊ทธ ํ๋ฉด ๋ทฐ ํ๋ฉด์ ์์ง์ผ ์ ์๋ค.
-
ํ ์ ์์๋๋ก ์์ง์ด๋ฉด ์ค, ์ธ์ด ๋๋ค.
-
์ค๋ฅธ์ชฝ์ ๋๋ฅธ ์ํ์์ ๋๋๊ทธ ํ๋ฉด ์ค, ์ธ์ด ๋๋ค.
ํค'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์์ ๋ ์ด์ ์ค์บ๋ค์ด ๋์ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ฌ ์ค์ ์ ์ด๊ธฐ ๊ฐ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด์๋ "File > Save Config"์ ํด๋ฆญํ์ฌ๋ผ. ๋ค์๋ฒ์ rviz๋ฅผ ์คํ์ํค๋ฉด ์ด ์ค์ ์ด ๋ก๋ ๋ ๊ฒ์ด๋ค.
"File > Save Config as ... ", "File > Open Config"์ ์ด์ฉํ์ฌ ์ด๊ธฐ ์ค์ ๊ฐ์ด ์๋์ด๋ ์ ์ฅํ๊ฑฐ๋ ๋ก๋ ํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ค์ ์ผ๋ก rviz๋ฅผ ์คํํ๋ ๊ฒ ๋ํ ๊ฐ๋ฅํ๋ค.
rosrun rviz rviz -d /your/config/file.vcg
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 ๊ธฐ๋ก์ ๋ฉ์ถ ์ ์๋ค.
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