質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

倒立振子のURDFの作り方

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 939

score 40

前提・実現したいこと

現在URDFファイルで倒立振子を作成しています.
製作したい倒立振り子は,振り子の下端が自由関節になっていて、振り子を支える台(台車)が移動する事で振り子が倒れないようにするもの(台車を適切に動かし続ければ、振り子は倒れない)です.
作成したたものをpybulletを使って出現させたところ図1のようになります.
重力を設定しているのです,振子部分(図1の灰色の部分)が何もしなくても図2のように下側に来ると思ったのですが動きません.(図2は説明上振り子部分の出現位置を変えているので下側に来ています)

何もしなくても(力を加えなくても)振子が重力によって動くモデルが作成したいと考えています.

また最終的にやりたいのは図3の状態から台車を揺らして図4の状態に維持しょうと考えています.

図1
イメージ説明
図2
イメージ説明
図3
イメージ説明
図4
イメージ説明

動作環境は
pybulletを用いてURDFファイルを呼び出しています

発生している問題・エラーメッセージ

該当のソースコード

<?xml version="1.0"?>
<robot name="physics">

    <link name="slideBar">
    <visual>
      <geometry>
        <box size="30 0.05 0.05"/>
      </geometry>
      <origin xyz="0 0 0"/>
      <material name="green">
        <color rgba="0 0.8 .8 1"/>
      </material>
    </visual>
    <inertial>
      <mass value="0"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    </inertial>
  </link>

  <link name="cart">
    <visual>
      <geometry>
        <box size="0.5 0.5 0.2"/>
      </geometry>
      <origin xyz="0 0 0"/>
      <material name="blue">
        <color rgba="0 0 .8 1"/>
      </material>
    </visual>
    <collision>
      <geometry>
          <box size="0.5 0.5 0.2"/>
      </geometry>
      <origin xyz="0 0 0"/>
    </collision>
    <inertial>
      <mass value="1"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    </inertial>
  </link>

  <joint name="slider_to_cart" type="prismatic">
    <axis xyz="1 0 0"/>
    <origin xyz="0.0 0.0 0.0"/>
    <parent link="slideBar"/>
    <child link="cart"/>
    <limit effort="1000.0" lower="-15" upper="15" velocity="5"/>
  </joint>

  <link name="pole">
    <visual>
      <geometry>
        <box size="0.05 0.05 1.0"/>    
      </geometry>
      <origin rpy="0 0 0" xyz="0 0 0.5"/>
      <material name="white">
        <color rgba="1 1 1 1"/>
      </material>
    </visual>
    <inertial>
    <origin xyz="0 0 0.5"/>
      <mass value="0.1"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    </inertial>
<collision>
      <geometry>
        <box size="0.05 0.05 1.0"/>
      </geometry>
      <origin rpy="0 0 0" xyz="0 0 0.5"/>
    </collision>
  </link>

  <joint name="cart_to_pole" type="continuous">
    <axis xyz="0 1 0"/>
    <origin xyz="0.0 -0.4 0"/>
    <parent link="cart"/>
    <child link="pole"/>
  </joint>

</robot>

試したこと

jointのtypeを色々変えたのですがうまくいきませんでした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

すみません、質問です。

倒立振子と言われてイメージするのは、次のようなものです(下の図)。
1)振り子の下端が自由関節になっていて、振り子を支える台(台車)が移動する事で振り子が倒れないようにするもの(台車を適切に動かし続ければ、振り子は倒れない)
2)土台(動かない)に固定された柔軟性のある棒の先に重りがついていて、重りを移動させて(棒を湾曲させて)から放すことで振動するもの(最終的には、一番低い位置に重りが落ち着く)

イメージ説明

NR4200さんが扱おうとしている倒立振子は、どのようなものなのでしょうか?

「何もしなくても振子が重力によって動くモデル」と書かれと書かれていますが、振り子の重りを重力で動かした場合、最もエネルギーが小さな状態(重りが最も下にある状態:重りと地球の中心との距離が最短になる状態)で落ち着きます。
何故なら、重力は地球の中心に向かう力だからです。
重力を、振動を続けさせために使うためには歯車などの機構が必要で、単純な振り子では無理です。
(グランドファーザークロックなど、重りに働く重力をエネルギーとして長時間稼働する振り子時計は、そうした機構の実現例です)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/13 17:13 編集

    作成したい倒立振り子は「1)振り子の下端が自由関節になっていて、振り子を支える台(台車)が移動する事で振り子が倒れないようにするもの(台車を適切に動かし続ければ、振り子は倒れない)」です.

    現状ではモデルを出現させた最初の状態が図1です.
    重力を設定しているので,何もしなければ図2のように振子が下側に来ると思ったのですが,下側に来ません.(図2は説明上,出現位置を変えているので下側に来ています)

    また振子が平衡に保っているのかと思い台車(図1,2中の青い部分)を左右に揺らしてみたのですが,振り子部分は揺れず図1の状態のままでした.

    最終的にやりたいのはcoco_bauerさんがおっしゃる通り,図3の状態から台車を揺らして倒立の状態に制御しょうと考えています

    わかりにくい説明かもしれませんがよろしくお願いします.

    キャンセル

  • 2019/08/13 17:14

    図2は説明上出現位置を変えているので下側に来ています

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る