この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:manual:one_point [2014/07/04 16:11] sugiura 削除 |
ja:manual:one_point [2014/07/08 14:03] (現在) sugiura [メタセコイアからのインポート方法] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== 10. C++(DLL)でのプログラム開発 ====== | + | ====== 11. ワンポイント ====== |
- | ===== 概要 ===== | + | ワンポイントテクニックを紹介します。 |
- | Go Simulation!ではロボットやステージのモーションを独自のスクリプト言語でプログラムすることが可能ですが、スクリプトの他にもDLL(Dynamic Link Library)でプログラムを作成することも可能です。DLLはC/C++で記述することになるので、これまでに開発したライブラリ等の資産を活用することが出来ます。\\ | + | ===== ロボットを空中に固定する ===== |
- | 本書ではこのDLLでプログラムする方法について解説します。 | + | ロボットを設計する際に、空中に固定して設計を進めたいときがあると思いますので、その方法を解説します。 |
- | ===== 構成 ===== | + | ロボットの固定方法は[[ja:manual:common_functions#基本タブ|各モード共通機能ページの基本タブの節]]で解説しました。 |
- | Go Simulation!とDLLの関係を図 10 1に示します。マニュアル本編で解説してありますように、Go Simulation!上でロボットのプログラム(スクリプト)はmain.txtに書くようになっています。このmain.txt内で、関数dll_run( )を使用することでDLLをロードし実行されます。この図の例ではhoge.dllをロードし実行されます。\\ | + | |
- | Go Simulation!とDLLの間では図のように双方向にデータをやりとりしており、制御アルゴリズム(フィードバック制御等)をDLL内に記述することが可能です。\\ | + | |
- | DLLはC/C++で記述することが出来ますので、通常のプログラムと同じようなこと、例えばファイル入出力や、Win32APIも使用可能です。\\ | + | |
- | Go Simulation!とDLLの通信は同期をとっているため、データの取りこぼしが生じません。そのため制御アルゴリズムの開発に適しています(そのため、DLLのプログラムが重くなるとシミュレーション全体の速度も遅くなるので注意してください)。 | + | |
- | ===== DLLプログラムのサンプル ===== | + | 固定後、【RESET】ボタンを押してください。 |
- | DLLプログラムの具体的開発方法は下記の掲示板に資料をまとめています。 | + | するとロボットのBody0番(デフォルトのロボットでは腹部のパーツ)が空中に固定されています。 |
- | サンプルプログラムをもとに解説しておりますので、ご活用ください。 | + | 【RESET】ボタンを押されたことにより、初期位置に戻ってそのまま空中に固定されました。\\ |
+ | 足の浮く距離はステージ毎に設定されており、ユーザー作成のステージの場合は | ||
+ | [[ja:manual:stage_design_mode#ロボット1設定|ステージ設計モードページのロボット1設定の節]]での設定値となります。 | ||
- | テクノロードの掲示板から、\\ | + | {{:ja:manual:onep1.png|}}\\ |
- | http://techno-road.com/board.html\\ | + | 図 11-1 ロボットを空中に固定 |
- | Go Simulation! ロボットデータ→C++(dll)でのロボットプログラム開発\\ | + | |
+ | ===== STLファイルの軽量化方法 ===== | ||
+ | 多くの3次元CADソフトの場合、STLファイルで保存することが可能です。\\ | ||
+ | 但し、CADデータをSTLファイルにそのまま変換すると膨大なポリゴンデータになります。\\ | ||
+ | 何故なら、ポリゴンは三角形の集合のため、曲面が多くなると多量の三角形が必要となるためです。 | ||
+ | CADデータには、ネジ穴や軽量化の穴や、曲げ加工の曲線など、様々な曲面があると思います。 | ||
+ | 曲面が少しでもあると、STLファイルは無駄に容量が大きくなってしまいます。 | ||
+ | 即ち、__データを軽量化するためには、曲面を無くすことが必要です。__ | ||
+ | |||
+ | 従って、3D CADデータをそのまま使用せず、曲面の無いシンプルなモデルを作ることをお勧めします。\\ | ||
+ | 例えば、図 11-2 のようにCADの詳細モデルをベースに、直方体をカットしていって、表示用のSIMPLEモデルを作成すると良いと思います。\\ | ||
+ | 穴は正八角形等で近似すると良いでしょう。\\ | ||
+ | |||
+ | {{:ja:manual:onep2.png|}}\\ | ||
+ | 図 11-2 Simpleモデルの作成方法\\ | ||
+ | |||
+ | ===== メタセコイアからのインポート方法 ===== | ||
+ | 多くの三次元CGソフトウェアの場合、DIRECT XのX Fileというフォーマットで保存可能です。\\ | ||
+ | ここではメタセコイア([[http://www.metaseq.net/]])でのX Fileの保存方法を示します。\\ | ||
+ | メタセコイアでX File形式で保存し、保存オプションを図 11-3 のように設定してください。\\ | ||
+ | デフォルトから変更している箇所は、次の通りです。\\ | ||
+ | |||
+ | 座標軸:【VRML】に設定する | ||
+ | Xオプション:【可視オブジェクト】にチェック | ||
+ | 【法線】にチェック | ||
+ | 【UVマッピング】にチェック | ||
+ | |||
+ | {{:ja:manual:onep3.png|}}\\ | ||
+ | 図 11-3 メタセコイアのX Fileの設定 | ||
+ | |||
+ | ===== モーションファイル(rmo)フォーマット ===== | ||
+ | モーションファイル(rmo)はテキスト形式で作成されています。 | ||
+ | コメント行(#)を除いたものを以下に示します。 | ||
+ | |||
+ | <code text Okiagari1.rmo> | ||
+ | GyroEna=0; | ||
+ | _Okiagari1=[ | ||
+ | Time,HipY_R,HipY_L,HipR_R,HipR_L,HipP_R,HipP_L,KneP_R,KneP_L,AnkP_R,AnkP_L,AnkR_R,AnkR_L,Dou,Dou2,Dou3,Head,Sho P_R,ShoP_L,ShoR_R,ShoR_L,Arm_R,Arm_L,Elb_R,Elb_L | ||
+ | 500,0,0,0,0,0,0,0,0,-9000,-9000,0,0,0,0,0,0,0,0,9000,9000,0,0,0,0 | ||
+ | 100,0,0,0,0,-1000,-1000,1000,1000,-8000,-8000,0,0,0,0,0,0,-9000,-9000,9000,9000,0,0,0,0 | ||
+ | 200,0,0,0,0,-2000,-2000,5000,5000,-3000,-3000,0,0,0,0,0,0,-9000,-9000,5000,5000,0,0,0,0 | ||
+ | 100,0,0,0,0,-3000,-3000,8000,8000,2300,2300,0,0,0,0,0,0,-9000,-9000,3400,3400,0,0,0,0 | ||
+ | 200,0,0,0,0,-3000,-3000,8000,8000,2300,2300,0,0,0,0,0,0,-9000,-9000,3400,3400,0,0,0,0 | ||
+ | 200,0,0,0,0,-4800,-4800,9800,9800,5000,5000,0,0,0,0,0,0,-9000,-9000,3400,3400,0,0,0,0 | ||
+ | 100,0,0,0,0,-4800,-4800,9800,9800,7000,7000,0,0,0,0,0,0,-9000,-9000,3400,3400,0,0,0,0 | ||
+ | 100,0,0,0,0,-3000,-3000,9000,9000,7000,7000,0,0,0,0,0,0,-9000,-9000,3400,3400,0,0,0,0 | ||
+ | 400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | ||
+ | ] | ||
+ | motion(_Okiagari1); | ||
+ | </code> | ||
+ | ファイル名と、最初の行と最後の行の強調した箇所が一致している必要があります。\\ | ||
+ | あとはモーションエディタのウィンドウと同じような構成です。\\ | ||
+ | |||
+ | このようにモーションファイルはテキストで保存されていますので、実際のロボット用のデータに変換することが可能です。 |