みなさん,こんにちは
おかしょです.
数値シミュレーションを行うには運動方程式が必要です.
この記事では,その運動方程式を使ってどのようにしてシミュレーションを行うのかを解説します.
この記事を読むと以下のようなことがわかる・できるようになります.
- 数値シミュレーションを行う方法
- 運動方程式を数値シミュレーションで使う方法
この記事を読む前に
この記事では運動方程式を利用して数値シミュレーションを行うプログラムの書き方を解説しています.運動方程式の求め方は解説していません.
運動方程式の求め方は以下で解説しているので読んでおくことをおすすめします.
数値シミュレーションの手順
数値シミュレーションを行うには,どのような順序でプログラムを書いていくのかを知っていなければなりません.
ここでは,その順序についてご説明いたします.
まず手順をまとめると以下のようになります.
- 状態変数の格納庫を作成する.
- 状態変数ごとに微分方程式を求める.
- パラメータの設定をする.
- 微分方程式を積分する.
だいたいこんな感じです.
各手順について解説していきます.
状態変数の格納庫を作成
この格納庫は最後にグラフを作成するために用意しておく必要があります.
シミュレーション時間とサンプリング周期から格納庫のサイズは決定できます.
例えば,シミュレーション時間が10秒でサンプリング周期が10Hzだとすると,格納庫の大きさは100とする必要があります.
状態変数ごとに微分方程式を算出
ここでは,求めた運動方程式を式変形して各状態変数ごとに微分方程式を求めます.
例えば,以前求めた二輪型倒立振子の運動方程式は状態変数が二つで二つの運動方程式が求められていました.
それぞれの式を連立して解くことで,状態変数ごとに微分方程式を求めることができます.
パラメータの設定
ここでは,運動方程式で出てきたパラメータの設定を行います.
このときのパラメータの値は,実際にロボットなどがある場合はそのパラメータを使用する必要があります.
例えば,質量や各種寸法などです.
二輪型倒立振子の場合は,タイヤの半径や質量,重心の位置などです.
これらの値は実際に測定したり,3D CADなどで求めることができます.
微分方程式の積分
先程求めた,各状態変数の微分方程式を積分します.
積分手法は様々なものがあり,長方形則や台形則,ルンゲクッタなどがあります.
長方形則は非常に単純ですが,精度が他の手法と比べると悪いです.長方形則でも精度は十分だという方もいますが,個人的には「せっかくシミュレーションをやるなら,精度は高くしたい」と思うので,長方形則はお勧めしません.
台形則は長方形則と同様に単純で,精度も長方形則よりは良いです.
と言っても,長方形則よりはマシだというだけなのでベストではありません.
最後にルンゲクッタは実際に研究でも使用している積分手法です.
計算は先ほどの手法と比較すると格段に複雑ですが,精度は申し分ないと思います.
個人的にはルンゲクッタで積分をすることをお勧めします.
まとめ
この記事では数値シミュレーションのガイドラインのようなものを解説してみました.
このガイドラインに沿ってプログラミングを行い,最後にグラフ化をすることでロボットのシミュレーションができると思います.
続けて読む
この記事で解説した数値シミュレーションを行う方法でマス・スプリング・ダンパーシステムのシミュレーションを行いました.
その結果は以下の記事で報告しているので興味がある方は読んでみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント