Open1

Gazebo: buoyancy uw biomimetics robot's scraps

Takumi AsadaTakumi Asada

Gazebo: 水中生物模倣型ロボットを動かそうとしたメモ

目的と課題点

目的
stlモデルをvisualにもつ多関節水中ロボットを用いてGazebo内で遊泳シミュレーションをする

課題点

  • ros2_controlタグを追加すると中性浮力が保たれない
  • collisionモデルのgeometoryに応じたinertialを設定し、ros2_control経由でフラッピング動作をさせても、前進しない


以下、メモ

visualのみ、meshを読み出す

inertialの全パラメータはfusion2urdfで生成されたもので、変更しない

collisionoを中性浮力になるgeometryタイプに変更する
volume_calculator.pyで"mass"から、boxのxyzを求める
collision 中性浮力となるyをbox sizeに適用する
collision origin 0へ

xxxxx_geometric_buoyancy.urdf
  <link name="base_link">
    <inertial>
        <origin xyz="0.00792150552871263 0.004962055813034319 0.04887561199610228" rpy="0 0 0"/>
        <mass value="4.52"/>
        <inertia ixx="0.027915" iyy="0.052072" izz="0.073658" ixy="-0.000771" iyz="-3.2e-05" ixz="-0.001061"/>
    </inertial>
    <collision>
        <origin xyz="0.00792150552871263 0.004962055813034319 0.04887561199610228" rpy="0 0 0"/>
        <geometry>
            <box size="0.24 0.23541666666666666 0.08"/>
        </geometry>
    </collision>
    <visual>
        <geometry>
            <mesh filename="file://$(find manta_v2_description)/meshes/base_link.dae" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="grey"/>
    </visual>
  </link>

  <link name="link_Ltop_roll1_1">
    <inertial>
      <origin xyz="-0.03076571133852378 0.038562518219365516 0.00018122130753521482" rpy="0 0 0"/>
      <mass value="0.19434161563031094"/>
      <inertia ixx="0.000104" iyy="0.000241" izz="0.000317" ixy="1e-06" iyz="0.0" ixz="-0.0"/>
    </inertial>
    <visual>
      <origin xyz="-0.137421 -0.145942 -0.049756" rpy="0 0 0"/>
      <geometry>
        <mesh filename="file://$(find manta_v2_description)/meshes/link_Ltop_roll1_1.stl" scale="0.001 0.001 0.001"/>
      </geometry>
      <material name="grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
            <box size="0.08 0.2 0.012146350976894434"/>
      </geometry>
    </collision>
  </link>

  <joint name="rev_link_Rmid_roll1" type="revolute">
    <origin xyz="0.040221 -0.122812 0.050056" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="link_Rmid_roll1_1"/>
    <axis xyz="0.983165 -0.182721 -0.0"/>
    <limit upper="0.523599" lower="-0.523599" effort="100" velocity="100"/>
-    <dynamics damping="0.1" friction="0.0"/>
  </joint>

jointタグ内に、dynamics damping frictionの設定は削除

progress 2022/10/10

Buoyancy 1000
ros2_controlタグなし

ros2 launch manta_v2_gazebo_ros2_control stl_to_ocean.launch.py

仰向けで静止

Buoyancy 1000
ros2_controlタグあり
libLiftDragPluginあり

ros2 launch manta_v2_gazebo_ros2_control trajectory_plankton.launch.py

線形的に回転量が増加し、モデルが破損する

floating_sphere_with_fin

  • floating_sphere_with_fin.urdf
  • sphere_with_fin.launch.py
  • floating_sphere_with_fin_controller.yaml

[ROS Q&A] 059 - Aerodynamic parameters of lift-drag plugin

Gazebo ANSWERS Need information on aerodynamic parameters of lift-drag plugin

Gazebo Tutorials Aerodynamics

Buoyancy plugin

  • floating_sphere.urdf
  • scripts/volume_calculator.py
  • inertial_calculator.py
  • worlds/ocean.world

[Morpheus Chair] Buoyancy Dynamic Control Gazebo | EXTRA.Ep.2

その他やること

[ROS Q&A] 066 - buoyancy neutral object goes up with hydrodynamics plugin #Part 2

[ROS Tutorials] 068 - buoyancy neutral object goes up with hydrodynamics plugin #Part 3

[ROS Q&A] 074 - Aerodynamic parameters of lift-drag plugin part2

知見のある方がいましたら、是非ご教授お願いします。
If anyone knows, please guide me.