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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1312閲覧

倒立振子のURDFの作り方

NR4200

総合スコア41

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/13 02:22

編集2019/08/14 23:32

前提・実現したいこと

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

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

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

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

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

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

該当のソースコード

urdf

1<?xml version="1.0"?> 2<robot name="physics"> 3 4 <link name="slideBar"> 5 <visual> 6 <geometry> 7 <box size="30 0.05 0.05"/> 8 </geometry> 9 <origin xyz="0 0 0"/> 10 <material name="green"> 11 <color rgba="0 0.8 .8 1"/> 12 </material> 13 </visual> 14 <inertial> 15 <mass value="0"/> 16 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/> 17 </inertial> 18 </link> 19 20 <link name="cart"> 21 <visual> 22 <geometry> 23 <box size="0.5 0.5 0.2"/> 24 </geometry> 25 <origin xyz="0 0 0"/> 26 <material name="blue"> 27 <color rgba="0 0 .8 1"/> 28 </material> 29 </visual> 30 <collision> 31 <geometry> 32 <box size="0.5 0.5 0.2"/> 33 </geometry> 34 <origin xyz="0 0 0"/> 35 </collision> 36 <inertial> 37 <mass value="1"/> 38 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/> 39 </inertial> 40 </link> 41 42 <joint name="slider_to_cart" type="prismatic"> 43 <axis xyz="1 0 0"/> 44 <origin xyz="0.0 0.0 0.0"/> 45 <parent link="slideBar"/> 46 <child link="cart"/> 47 <limit effort="1000.0" lower="-15" upper="15" velocity="5"/> 48 </joint> 49 50 <link name="pole"> 51 <visual> 52 <geometry> 53 <box size="0.05 0.05 1.0"/> 54 </geometry> 55 <origin rpy="0 0 0" xyz="0 0 0.5"/> 56 <material name="white"> 57 <color rgba="1 1 1 1"/> 58 </material> 59 </visual> 60 <inertial> 61 <origin xyz="0 0 0.5"/> 62 <mass value="0.1"/> 63 <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/> 64 </inertial> 65<collision> 66 <geometry> 67 <box size="0.05 0.05 1.0"/> 68 </geometry> 69 <origin rpy="0 0 0" xyz="0 0 0.5"/> 70 </collision> 71 </link> 72 73 <joint name="cart_to_pole" type="continuous"> 74 <axis xyz="0 1 0"/> 75 <origin xyz="0.0 -0.4 0"/> 76 <parent link="cart"/> 77 <child link="pole"/> 78 </joint> 79 80</robot>

試したこと

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

すみません、質問です。

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

イメージ説明

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

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

投稿2019/08/13 05:39

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NR4200

2019/08/13 08:15 編集

作成したい倒立振り子は「1)振り子の下端が自由関節になっていて、振り子を支える台(台車)が移動する事で振り子が倒れないようにするもの(台車を適切に動かし続ければ、振り子は倒れない)」です. 現状ではモデルを出現させた最初の状態が図1です. 重力を設定しているので,何もしなければ図2のように振子が下側に来ると思ったのですが,下側に来ません.(図2は説明上,出現位置を変えているので下側に来ています) また振子が平衡に保っているのかと思い台車(図1,2中の青い部分)を左右に揺らしてみたのですが,振り子部分は揺れず図1の状態のままでした. 最終的にやりたいのはcoco_bauerさんがおっしゃる通り,図3の状態から台車を揺らして倒立の状態に制御しょうと考えています わかりにくい説明かもしれませんがよろしくお願いします.
NR4200

2019/08/13 08:14

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問