์๋ ํ์ญ๋๊น,
UUV Sim์์ ์ฐจ๋์ ๊ตฌํํ๋ ค๊ณ ํ๊ณ ์์ผ๋ฉฐ ์ฐจ๋์ ๋์ฐ๋ ค๊ณ ํ๊ณ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด <neutrally_buoyant>1</neutrally_buoyant>
ํ๊ทธ๋ ์ค์ ํ์ง๋ง ์
๋ก๋๋๋ ์๊ฐ ์ฐจ๋์ด ๊ณ์ ๊ฐ๋ผ์์ต๋๋ค. ์ด ์ฐจ๋์ด ์ค๋ฆฝ์ ์ผ๋ก ๋๋ ๊ธ์ ์ ์ผ๋ก ๋ถ๋ ฅ์ ๊ฐ๊ฒ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ์กฐ์ธ์ด ์์ต๋๊น?
์๋ ํ์ธ์,
์ ๋ณด ๊ฐ์ฌํฉ๋๋ค ํ์ธํ๊ฒ ์ต๋๋ค. ํํธ, rexrov
๋ชจ๋ธ https://github.com/usuvsimulator/uuv_simulator/ ์์์ ๊ฐ์ด neutrally_buoyant
ํ๋๊ทธ๋ฅผ 0์ผ๋ก ์ค์ ํ๊ณ ๋์ ๋ณผ๋ฅจ์ ์ค์ ํ๋ฉด ์ฐจ๋์ ๊ธ์ ์ ์ธ ๋ถ๋ ฅ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ผ๋ฃฉ/๋ง์คํฐ/uuv_descriptions/models/rexrov/urdf/rexrov.gazebo.xacro#L32.
๊ทธ๋ฐ ๋ค์ ๋ถํผ๋ ๋ถ๋ ฅ ๋ฒกํฐ๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ ํ์ญ๋๊น,
๋ณผ๋ฅจ์ ์๋นํ ํฌ๊ฒ ์ค์ ํ๋ ค๊ณ ํ์ต๋๋ค. rexrov
๋งํผ ํฌ์ง ์๊ณ ์ฌ์ ํ ๊ฐ๋ผ์๊ณ ์์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์๋ํ๊ณ ๋น์ ์๊ฒ ๋ค์ ๋์์ฌ ๊ฒ์ด์ง๋ง, ๋๋ ๊ทธ๊ฒ์ด ๋จ๋๋ก ๊ฐ์ ํ๊ธฐ ์ํด ๋์ ๋ถํผ๋ฅผ ๋์ด๊ณ ๋์ ์ง๋์ ๋ฎ์ถ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค. ๊ทธ๋๋ ์ ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ทธ๋์ ๋ณผ๋ฅจ์ 3.1093918 m3
ํ๊ณ ์ง๋์ 0.123497
ํ๋๋ฐ ๋ด ์ฐจ๋์ ์ฌ์ ํ โโ๊ฐ๋ผ์์์ต๋๋ค. ๋ณผ๋ฅจ์ ๋ํด rexrov
์ค์ ํ ๊ฐ๊ณผ ์ ํํ ์ผ์นํ๋๋ก ์ค์ ํ๊ณ <box>
ํ๊ทธ๋ฅผ rexrov
๋ฐ ์ ์ฒด ์ญํ ๋ชจ๋ธ๋ก ์ค์ ํ๋ ค๊ณ ํ ์๋ ์์ต๋๋ค. . ๊ทธ๋์ ์ด๋์์ ๋ฌธ์ ๋ฅผ ํ์ธํด์ผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
<neutrally_buoyant>0</neutrally_buoyant>
์ ์ค์ ํ์
จ์ต๋๊น?
@musamarcusso <neutrally_buoyant>
์ 0
๋ฐ 1
์ค์ ํ๋ ค๊ณ ํ์ต๋๋ค. ์ค์ ๋ณํ๊ฐ ์์ต๋๋ค.
@atomoclast๋ , ์ด ์ฐจ๋์ ๋ชจ๋ธ๋งํ๊ณ
http://www.videoray.com/images/specsheets/2016/2016_P4STANDARDBASE_FINAL.pdf
์ด๊ฒ์ ์ฌํํ๊ธฐ ์ํด ์ฌ๊ธฐ์์ ์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ฅผ ๊ต์ฒดํ๋ ค๊ณ ํฉ๋๋ค.
@musamarcusso ๋ค, ์ ๊ฐ ๋ชจ๋ธ๋งํ๋ ค๋ ์ฐจ๋์ ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ๋ฉ์ฌ ํ์ผ์ด ์์ต๋๋ค.
๋ฐฉ๊ธ ๋ด๊ฐ ์ดํดํ๋ ๋ถ๋ ฅ ํ๋ฌ๊ทธ์ธ์ผ๋ก ํ
์คํธ ์์๋ฅผ ์์ํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ neutrally_buoyant
ํ๊ทธ๋ฅผ 0
๋ก ์ค์ ํ๊ณ 1
๋ฐ ์์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ์๋ํ์ต๋๋ค. ์ฌ์ ํ ๋ ๋ฒ ์นจ๋ชฐํ๋ค. ๋ํ [Wrn] [UnderwaterObjectPlugin.cc:207] Relative angular acceleration is invalid -nan
์ค๋ฅ๋ฅผ ๊ณ์ํด์ ์ธ์ํ๊ณ ์์์ต๋๋ค.
๊ฒํ ํ ์ ์๋๋ก ์๋์ ๋ ํ์ผ์ด ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ต๋๋ค. ๋๊ธ์ ์ฌ๋ฆด ์ ์๋๋ก .txt
ํ์ฅ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
Relative angular acceleration is invalid
์ค๋ฅ๊ฐ ํ์๋๋ ์ฆ์ UnderwaterObjectPlugin์ ๋ ์ด์ ํ์ด๋ ํ ํฌ๋ฅผ ์ ์ฉํ์ง ์์ต๋๋ค. ์ด๋ ๋ฌผ๋ฆฌ ์์ง์ด ๊ณ ์ฅ๋ฌ์์ ๋ํ๋ด๋ ๋ถ๋ช
ํ ์งํ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๋๋ ๋น์ ์ ์์ ์ ์๋ฅผ ๋ณด์์ต๋๋ค.
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
์ด๊ฒ์ด ๋ฒ์ธ์ด๋ค. ๊ฐ์ฒด ๋ ๊ด์ฑ ๋ชจ๋ฉํธ ๋ ์ง๋์ด 0์ด์ด์ผ ํฉ๋๋ค. Gazebo๊ฐ ํ/ํ ํฌ๋ก๋ถํฐ ๊ฐ์๋๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ์ ๋๋ฌธ์, ์ด๊ฒ์ 0์ผ๋ก ๋๋๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ์๋ ค์ฃผ์ญ์์ค.
@sebastianscherer ๊ทธ๊ฒ์ ์๋ฒฝํ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฐฉ๊ธ ๊ธฐ๋ณธ ํ์์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ด ์ฐจ๋์ ๊ด์ฑ์ ์ถ์ ํ์ผ๋ฉฐ ํ์ฌ ๋ถ๋ ์ํ์ ๋๋ค.
Thruster ํ๋ฌ๊ทธ์ธ์ ์์๋ด๋ ๊ฒ! ๋๋ ๊ฑฐ๊ธฐ์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ด์.
์ ๋ง๋ ํฐ๋ฏธ๋์์ ๋ค์์ ๋ด ๋๋ค.
[Msg] Thruster #0 initialized
[Msg] - Link: videoray_pro4/thruster_0
[Msg] - Robot model: videoray_pro4
[Msg] - Input command Gazebo topic: /videoray_pro4/thrusters/0/input
[Msg] - Thrust output Gazebo topic: /videoray_pro4/thrusters/0/thrust
[Msg] Thruster #1 initialized
[Msg] - Link: videoray_pro4/thruster_1
[Msg] - Robot model: videoray_pro4
[Msg] - Input command Gazebo topic: /videoray_pro4/thrusters/1/input
[Msg] - Thrust output Gazebo topic: /videoray_pro4/thrusters/1/thrust
[Msg] Thruster #2 initialized
[Msg] - Link: videoray_pro4/thruster_2
[Msg] - Robot model: videoray_pro4
[Msg] - Input command Gazebo topic: /videoray_pro4/thrusters/2/input
[Msg] - Thrust output Gazebo topic: /videoray_pro4/thrusters/2/thrust
[Msg] JointStatePublisher::robotNamespace=videoray_pro4
์ถ์ง๊ธฐ ํฐ๋ฏธ๋์์ ๋ค์์ ๋ด ๋๋ค.
process[videoray_pro4/thruster_allocator-1]: started with pid [26422]
[INFO] [1500390755.909692, 0.000000]: ThrusterManager::update_rate=50
output_dir= /home/andrew/Development/ underwater_ws/install/share/videoray_description/config/videoray_pro4
ThrusterManager: updating thruster poses
conversion_fcn= proportional
conversion_fcn_params= {'gain': 0.00031}
transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_0
could not get transform from: /videoray_pro4/base_link
to: /videoray_pro4/thruster_0
[]
๋ฐฉ๊ธ rosrun tf view_frames
์คํํ๋๋ฐ ์ด๊ฒ์ด ์ถ๋ ฅ์ด์์ต๋๋ค. ๋๋ TF ํธ๋ฆฌ๊ฐ base_link์ ์ถ์ง๊ธฐ ์ฌ์ด์ ๋ณํ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋ด
๋๋ค...
ํ๋ ์.pdf
world์ ์ฐจ๋์ base_link ์ฌ์ด์ ํ๋ ์์ hector_localization
ํจํค์ง์ ์ผ๋ถ์ธ message_to_tf
๋
ธ๋์ ์ํด ์์ฑ๋ฉ๋๋ค. RexROV ๋ชจ๋ธ์ ๋ฐ์น ํ์ผ ์๋ ์ด์ชฝ
์์ ํ์ผ์ ์ด๊ฒ์ ์ด๋ป๊ฒ ๋ช ์ํ์ต๋๊น?
@musamarcusso ์ํค ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๋ณํ์ ํธ์ถํ์ต๋๋ค.
<!-- Publish state and tf for in relation to the world frame -->
<group ns="$(arg namespace)">
<node name="ground_truth_to_tf" pkg="message_to_tf" type="message_to_tf" output="screen">
<param name="odometry_topic" value="/$(arg namespace)/pose_gt" />
<param name="frame_id" value="/$(arg world_frame)" />
<param name="tf_prefix" value="$(arg namespace)" />
</node>
</group>
์์์ ํธ์ถํ ๋ผ์ธ๊ณผ ๋ค๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ง๊ธ ๊ทธ๊ฒ์ ์๋ ํ ๊ฒ์ ๋๋ค.
๋น์ ์ด ๋์๊ฒ ๋ณด๋ธ ๋ธ๋ก์ ์ด๊ฒ์ผ๋ก ๊ต์ฒดํด ๋ณผ ์ ์์ต๋๊น?
<include file="$(find uuv_descriptions)/models/common/launch/message_to_tf.launch">
<arg name="namespace" value="$(arg namespace)"/>
</include>
์ด ์์ ์ฌํญ์ด ์๋ํ๋ฉด ํํ ๋ฆฌ์ผ์ ์ฆ์ ์์ ํ๊ฒ ์ต๋๋ค.
๋ด ๋ธ๋ก์ ๋น์ ์ ๋ธ๋ก์ผ๋ก ๊ต์ฒดํ๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์๋ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ ๋ธ๋ก์ด ํจ๊ป ํธ์ถ๋๋ ๊ฒ์ ๋๋ค.
VelocityControllerNode: initializing node
Thruster #0 - proportional - thrusters/0/input
transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_1
Thruster #1 - proportional - thrusters/1/input
transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_2
Thruster #2 - proportional - thrusters/2/input
transform: /videoray_pro4/base_link -> /videoray_pro4/thruster_3
could not get transform from: /videoray_pro4/base_link
to: /videoray_pro4/thruster_3
[<uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bdb8a50>, <uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bdb8c10>, <uuv_thrusters.models.thruster_proportional.ThrusterProportional object at 0x7efc4bd4c190>]
TAM=
[[ 1. 0. 0. ]
[ 0. 0. 0. ]
[ 0. 0.99999968 0.99999968]
[ 0. 0.09999997 -0.09999997]
[ 0.1 0.15249995 0.15249995]
[ 0. 0. 0. ]]
ThrusterManager: ready
ThrusterManager: ready
์ด์ ์ ์ค๋ฌ์คํฐ 3์์ TF๋ฅผ ์ป์ ์ ์๋์ง ์์์ผ ํฉ๋๋ค.
joy_velocity.launch
๋ฒ์ ์ ์์ํ ์ ์์ง๋ง ์ปจํธ๋กค๋ฌ๋ก ์ฐจ๋์ ์ ์ดํ ์ ์์ต๋๋ค.
๋๋ฒ๊น
์ ์๋ํ๊ณ ๋
ธ๋์ rqt_graph
์๊ฐํ ์ถ๋ ฅ์ ๋น๊ตํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด๊ฐ๋ณด๊ณ ์๋ ๋ ๊ฐ์ ๋คํธ์ํฌ์
๋๋ค. ์ ํํ ์๋ํ์ง ์๋ ์ด์ ๋ ํ์คํ์ง ์์ต๋๋ค.
๋ฐฉ๊ธ ๊นจ๋ฌ์ ๋ ๋ค๋ฅธ ์ ๋ฐ์ดํธ:
Wiki๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค. <xacro:property name="prop_mesh_file" value="file://$(find uuv_descriptions_example)/models/rov_example/mesh/propeller.dae"/>
<xacro:property name="prop_mesh_file" value="file://$(find uuv_descriptions)/models/rexrov/mesh/prop.dae"/>
์ด์ด์ผ ํฉ๋๋ค.
์๋ ํ์ธ์ @atomoclast ์ ๋๋ค .
์๋์, ํํ ๋ฆฌ์ผ์์ ๋ง์ต๋๋ค. ํํ ๋ฆฌ์ผ์ ์์ ๋ ๊ธฐ๋ฅ ์์ ๊ฐ ์๋๋ฏ๋ก ์ด README.md ๋ฅผ ๋ฉ์ฌ ํด๋์ ๋ฃ์์ผ๋ฏ๋ก ์ด prop_mesh_file
๋ ์ ์ฐจ๋ ๋ชจ๋ธ์ ๋ง๋๋ ์ฌ๋์ด ํธ์งํด์ผ ํฉ๋๋ค.
joy_velocity
๋ XBox ์ปจํธ๋กค๋ฌ ๋งคํ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋ฉ๋๋ค. ๊ฐ์ง๊ณ ๊ณ์ ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ธ์ ๋ฌด์์
๋๊น?
Github ์ด๋๊ฐ์ ํ์ผ์ด ์์ต๋๊น? ์คํํด๋ณด๊ณ ํผ๋๋ฐฑ์ ๋๋ฆด ์ ์์ต๋๋ค.
@musamarcusso ์ฌ๊ธฐ์ https://github.com/atomoclast/videoray_description/tree/feature/DEEP-291
์๋ ํ์ธ์ @musamarcusso ๋ , ์์ง ์ด ์์ผ์ จ๋์ ?
์, ๋ณต์ ํ์ต๋๋ค. ์ค๋ ๋์ค์ ํผ๋๋ฐฑ ๋๋ฆฌ๊ฒ ์ต๋๋ค.