ROV/UAVのシミュレーション ========================== ここでは、CFDシミュレータを使った水中遊泳ロボット(ROV)と無人航空機(UAV)のシミュレートの仕方を説明します。 CFDシミュレータの作成と設定 --------------------------- ここではChoreonoidの標準のシミュレータアイテムである「AISTシミュレータ」を用います。メインメニューの「ファイル」-「新規」-「CFDシミュレータ」を選択して生成してください。生成したCFDシミュレータは、AISTシミュレータアイテムの子アイテムとして配置します。 マルチコライダアイテムの作成と設定 ---------------------------------- マルチコライダアイテムは、Choreonoidのワールド内に水・空気等が存在する領域を仮想的に定義するためのアイテムです。メインメニューの「ファイル」-「新規」-「マルチコライダ」を選択して、タイプ「流体」を指定して生成してください。生成したマルチコライダアイテムは、ワールドアイテムの子アイテムとして配置します。複数のマルチコライダアイテムを生成することで、Choreonoidのワールド内により詳細な領域を設定することもできます。 .. note:: | 複数のマルチコライダアイテムを使用する場合、各アイテムの対象範囲が重複する場合があります。重複が発生した場合は、アイテムツリービューに登録されているより下位のマルチコライダアイテムの設定が適用されます。 この流体アイテムはアイテムツリービューのチェックボックスを使用して表示・非表示を切り替えることができます。また、非表示のマルチコライダアイテムはシミュレーションの対象から除外されます。 マルチコライダアイテムのパラメータは以下の通りです。 .. list-table:: :widths: 20,12,12,75 :header-rows: 1 * - パラメータ - デフォルト値 - 単位 - 意味 * - 密度 - 0.0 - kg/m3 - 流体の密度を指定します。 * - 粘度 - 0.0 - Pa*s - 流体の粘度を指定します。 * - 定常流 - 0, 0, 0 - N, N, N - 領域中にある物体に与える外力を指定します。 * - 形状 - Box - \- - 領域の形状を指定します。(Box/Cylinder/Sphere) * - サイズ - 1.0, 1.0, 1.0 - m, m, m - 領域のサイズをXYZで指定します。(形状がBoxの場合のみ) * - 半径 - 1.0 - m - 領域の半径を指定します。(形状がCylinder・Sphereの場合のみ) * - 高さ - 1.0 - m - 領域の高さを指定します。(形状がCylinderの場合のみ) * - 位置 - 0, 0, 0 - m, m, m - 領域の位置をXYZで指定します。 * - RPY - 0, 0, 0 - deg, deg, deg - 領域の向きをRoll, Pitch, Yawで指定します。 * - 拡散色 - 0, 0, 0 - \-, -, - - 領域の拡散色ををRGBで指定します。 * - 透過度 - 0 - \- - 領域の透過度を指定します。 ボディアイテムの設定 -------------------- CFDシミュレータでは、ロボットの各リンクに作用する浮力・抵抗力を計算し、シミュレーションに反映します。 浮力・抵抗力の計算させるには、以下の設定をリンク毎に追記します。 .. code-block:: yaml density: 1000.0 centerOfBuoyancy: [ 0.0, 0.0, 0.0 ] cdw: 1.0 cda: 1.0 cw: 0.2 各キーの詳細は以下の通りです。 .. list-table:: :widths: 20,16,12,75 :header-rows: 1 * - パラメータ - デフォルト値 - 単位 - 意味 * - density - 0.0 - kg/m3 - リンクの密度を指定します。 * - centerOfBuoyancy - 0.0, 0.0, 0.0 - m, m, m - 浮力の中心の座標を指定します。 * - cdw - 0.0 - \- - 水中での抗力係数を指定します。 * - cda - 0.0 - \- - 空気中での抗力係数を指定します。 * - cv - 0.0 - m - リンクの速度に比例する抵抗力(粘性力)の係数を指定します。粘性力は本係数×リンクを包含している流体領域の粘度×リンクの速度で計算されます。 * - cw - 0.0 - \- - リンクの角速度に比例する抵抗力の係数を指定します。値を大きくすると回転運動を妨げるためのトルクが大きくなります。 スラスタの設定 -------------- CFDシミュレータは、ROVの動力源となるスラスタを提供します。このスラスタを通じてROVに推力とトルクを与えることができます。なおスラスタは、ボディアイテムのローカル座標系のX軸+方向を初期方向としています。 スラスタは、カメラやライト等と同様に任意のリンクのelements以下に記述します。 .. code-block:: yaml - type: Thruster name: Thruster forceOffset: 1.0 torqueOffset: 0.1 symbol: true 各キーの詳細は以下の通りです。 .. list-table:: :widths: 20,12,8,75 :header-rows: 1 * - パラメータ - デフォルト値 - 単位 - 意味 * - type - \- - \- - デバイスの種類を指定します。 * - name - \- - \- - スラスタ名を指定します。 * - forceOffset - 0.0 - N - スタスタの推力のオフセットを指定します。 * - torqueOffset - 0.0 - Nm - スタスタのトルクのオフセットを指定します。 * - symbol - true - \- - スタスタの向きを表すシンボルの表示/非表示を指定します。 ロータの設定 ------------ CFDシミュレータは、UAVの動力源となるロータを提供します。このロータを通じてUAVに推力とトルクを与えることができます。なおロータは、ボディアイテムのローカル座標系のZ軸+方向を初期方向としています。 ロータは、カメラやライト等と同様に任意のリンクのelements以下に記述します。 .. code-block:: yaml - type: Rotor name: Rotor forceOffset: 1.0 torqueOffset: 0.1 symbol: true 各キーの詳細は以下の通りです。 .. list-table:: :widths: 20,12,8,75 :header-rows: 1 * - パラメータ - デフォルト値 - 単位 - 意味 * - type - \- - \- - デバイスの種類を指定します。 * - name - \- - \- - ロータ名を指定します。 * - forceOffset - 0.0 - N - ロータの推力のオフセットを指定します。 * - torqueOffset - 0.0 - Nm - ロータのトルクのオフセットを指定します。 * - symbol - true - \- - ロータの向きを表すシンボルの表示/非表示を指定します。 シミュレーションの実行 ---------------------- シミュレーションバーから通常通りシミュレーションを実行してください。シミュレーションに成功するとマルチコライダアイテムの設定に基づいた浮力・抵抗力等がシミュレーション中のロボットに反映されます。