Spawn Atlas into a custom world - modulabs/gazebo-tutorial GitHub Wiki
์ด๋ฒ ์ฅ์์๋ Gazebo world๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ Atlas ๋ก๋ด์ ์ถ๊ฐ ํ ์ ์๋์ง์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ํจํค์ง๋ฅผ ์์ฑํ๋ค.
cd ~/catkin_ws/src
catkin_create_pkg world_create_tutorial drcsim_gazebo
cd world_create_tutorial
mkdir worlds launch
์ด์ ๋ค์์ launch ํ์ผ here์ ๋ค์ด ๋ฐ์์ ~/catkin_ws/src/world_create_tutorial/launch/atlas.launch ์ด ๊ฒฝ๋ก์ ์ ์ฅ์ ํ๋ค.
<launch>
<arg name="gzname" default="gazebo"/>
<arg name="gzworld" default="$(find world_create_tutorial)/worlds/myworld.world"/>
<arg name="hand_suffix" default=""/>
<arg name="extra_gazebo_args" default="-q" />
<arg name="model_args" default="" />
<arg name="inertia_args" default="" /> <!-- _with_v1_inertia -->
<param name="/atlas/time_to_unpin" type="double" value="1.0"/>
<param name="/atlas/startup_mode" type="string" value="bdi_stand"/>
<!-- start gazebo with the Atlas -->
<include file="$(find drcsim_gazebo)/launch/atlas_no_controllers.launch">
<arg name="gzname" value="$(arg gzname)"/>
<arg name="gzworld" value="$(arg gzworld)"/>
<arg name="extra_gazebo_args" value="$(arg extra_gazebo_args)"/>
</include>
<!-- to trigger synchronization delay, set
atlas_msgs::AtlasCommand::desired_controller_period_ms to non-zero -->
<param name="/atlas/delay_window_size" type="double" value="5.0"/>
<param name="/atlas/delay_max_per_window" type="double" value="0.25"/>
<param name="/atlas/delay_max_per_step" type="double" value="0.025"/>
<!-- Robot Description -->
<param name="robot_description" command="$(find xacro)/xacro.py '$(find atlas_description)/robots/atlas$(arg model_args)$(arg inertia_args)$(arg hand_suffix).urdf.xacro'" />
<param name="robot_initial_pose/x" value="0" type="double"/>
<param name="robot_initial_pose/y" value="0" type="double"/>
<param name="robot_initial_pose/z" value="0.90" type="double"/>
<param name="robot_initial_pose/roll" value="0" type="double"/>
<param name="robot_initial_pose/pitch" value="0" type="double"/>
<param name="robot_initial_pose/yaw" value="0" type="double"/>
<include file="$(find drcsim_gazebo)/launch/atlas$(arg hand_suffix)_bringup.launch">
<arg name="model_args" value="$(arg model_args)"/>
</include>
</launch>
๋ง์ฝ ๋น์ Atlas ๋ก๋ด์ ์ด๊ธฐ ์์น๋ฅผ ๋ค๋ฅธ ์์น์ ๋๊ธฐ๋ฅผ ์ํ๋ค๋ฉด robot_initial_pose/x ์ robot_initial_pose/y๋ฅผ ๋ฐ๊พธ๋ฉด ๋๋ค.
๊ฐ์ ๋ณด๋ฅผ ์คํํ์ฌ๋ผ.
gazebo
๋น์ ์ ๋น ์ธ๊ณ๋ฅผ ๋ณผ ์ ์๋ค.
์ด์ ํด๋ฐ์์์ ์์ด์ฝ๋ค์ ํ์ฉํ์ฌ ๊ฐ๋จํ ํํ์ ๋ชจ๋ธ๋ค์ ์ถ๊ฐ ํด๋ณด์๋ผ. ๋ฐ์ค์ ๊ตฌ ์ค๋ฆฐ๋๋ฅผ ์ถ๊ฐ ํ ์ ์๋ค.
"Insert Models" tab์ ์๋ ํ๊ฒฝ๋ค ๋ํ ์ถ๊ฐ ํ ์ ์๋ค.
์์ ์์ ์ ๋๋ด๊ณ world๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ "File"์ "Save World As"๋ฅผ ํด๋ฆญํ์ฌ๋ผ. ํน์ ๋จ์ถํค CTRL-SHIFT-S๋ฅผ ๋๋ฅด๋ฉด ๋๋ค. ์ดํ `~/catkin_ws/src/world_create_tutorial/worlds'์ 'myworld.world'์ ์ด๋ฆ์ผ๋ก ์ ์ฅํ๊ณ Gazebo๋ฅผ ๋น ์ ธ ๋์ค๋ฉด ๋๋ค.
์ด์ 'myworld.world'๋ฅผ ์ด๊ณ ๋ค์์ ๋ด์ฉ์ ํ์ผ์ ์ฝ์
ํ๊ณ ์ ์ฅํ์ฌ๋ผ. ์ด๋ <world></world> tag ๋ด๋ถ์ ์ฝ์
ํ์ฌ์ผ ํ๋ค.
<plugin filename="libVRCPlugin.so" name="vrc_plugin">
<atlas>
<model_name>atlas</model_name>
<pin_link>utorso</pin_link>
</atlas>
<drc_vehicle>
<model_name>golf_cart</model_name>
<seat_link>chassis</seat_link>
</drc_vehicle>
<drc_fire_hose>
<fire_hose_model>fire_hose</fire_hose_model>
<coupling_link>coupling</coupling_link>
<standpipe_model>standpipe</standpipe_model>
<spout_link>standpipe</spout_link>
<thread_pitch>-1000</thread_pitch>
<coupling_relative_pose>1.17038e-05 -0.125623 0.35 -0.0412152 -1.57078 1.61199</coupling_relative_pose>
</drc_fire_hose>
</plugin>
์ด plugin ์์๋ Atlas ๋ก๋ด์ ๋ถ๋ฌ์จ๋ค. VRCPlugin์ ๋ก๋ด์ ์์ธ ์ปจํธ๋กค๋ฌ, ์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ค.
๋ค์์ ํตํด ์๊ธฐ๊ฐ ๋ง๋ ์๋ก์ด world์ Atlas ๋ก๋ด์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
roslaunch world_create_tutorial atlas.launch


