はじめに
このページでは、ロボット神経システムAGB65−RSC及び、RSC2のモーション登録、再生をPC上で行うソフトウェア「RSCMortionEditor」について説明します。
※このプログラムはサンプルプログラムです。動作保証などはありませんのでご了承下さい。内容についてのご質問にもお答えできません。
※このページで紹介する内容はあくまでも一例です。個別の作成のご相談ご質問はお答えできませんのでご了承下さい。
※以下の情報は2009年12月現在のものです。ご注意ください。
AGB65-RSC2についてはこちらを参照願います。
プログラムのダウンロード
RSCMortionEditor.lzh
(右クリックで対象を保存)
このソフトウェアはVisualC#2008で書いています。上のリンクからファイルを保存し、解凍すると、C#のプロジェクトファイルがそのまま入っていますので、VisualStudio2008又は、VisualC#2008ExpressEditionで開いてください。VisualC#2008ExpressEditionはMicrosoftの開発者ページ、MSDNのページから無償でダウンロードできます。MSDNでは初心者向けフォーラムもあります。
使い方
<起動>
解凍したフォルダにある RSCMortionEditor.csprj を開くとプロジェクトファイルが開きます。F5キーを押してデバックモードで起動するとプログラムが起動します。
これが起動直後の画面です。
<サーボ配置の登録>
次にサーボ配置を登録します。
「設定」−>「ロボット構成」を選択します。
サーボ構成登録ウィンドウが開きます。
このマスがサーボを配置できる場所になります。デフォルトでは横3x縦16マスになっています。このマスの構成はプログラムを書き換えることで変更可能です(ソースを見て下さい)。
サーボを配置したい場所をクリックします。
サーボ情報登録ウィンドウが開きます。有効にチェックを入れて「登録」ボタンを押すと、その場所に、指定したボードIDとサーボIDが設定されます。ボードIDはRSCのID番号0〜3(デフォルトは3番)、サーボIDはそのボードのP0〜P11のどのコネクタにつながったサーボかを指定します。
ここで、たとえば、ボードID=3のサーボID1と指定して登録してみます。
登録した場所がピンク色になり、ボードIDとサーボIDが表示されるようになります。この場所をやめたい場合は、もう一度クリックし、サーボ情報登録ウィンドウで「有効」のチェックを外して「登録」ボタンを押します。
このような感じでサーボ配置を登録していきます。各自、自分で作ったロボットと同じ形になるように配置してみてください。配置ができたら「登録」ボタンを押します。すると初めの画面に戻ります。画面に変化はありませんが、プログラム内部では配置を記憶しています。
<通信設定>
次に通信設定を行います。
「通信設定」−>「COM設定」を選択します。
COM設定ウィンドウが開きます。RSCに接続しているCOM番号と、RSCで設定している通信速度を選択し、「設定」ボタンを押してください。その後、初めの画面に戻ります。画面に変化はありませんが、プログラム内部では配置を記憶しています。
COM番号は、Windowsのデバイスマネージャーなどで確認してください。Bluetooth経由で無線接続の場合は、ペアリングした時にCOM番号が決定されます。
<ロボット構成の保存>
現在内部で記憶している情報は、プログラムを閉じると消えてしまいますので、ファイルに保存しておきます。
「ファイル」−>「保存」を選ぶと、名前をつけて保存のウィンドウが開きます。
ファイル名に適当な名前をつけて「保存」ボタンを押すと、情報が記憶されます。ロボットの構成情報(サーボ配置と通信設定)は .osf
という拡張子のファイルになります。このファイルはテキスト形式なので、メモ帳などで開くことができます。ただし、少しでも変更するとファイルが読めなくなりますので注意して下さい。osfファイルの書き換えはやめてください。
ファイルを保存すると、タイトルの右にファイル名が表示されます。
次からは、このファイルを開けば、同じサーボ構成、通信速度設定になります。
<COMポートのオープン>
メイン画面の下の方に赤いボタンがあります。これを押すと、設定したCOMポートを開こうとします。
正常に開けた場合は青い色に変わります。尚、PCの環境によっては正常にオープンできなくても青になる場合がありますので注意してください。オープンに時間がかかる場合はオープンに失敗している場合があります。
<モーションの登録>
「設定」−>「モーション作成」を選択するとモーション作成ウィンドウが開きます。
画面中央部に、サーボ配置と同じ場所にトラックバーとテキストボックスが表示されます。メイン画面でCOMポートをオープンしている場合、このトラックバーを動かすと、対応するサーボが動きます。トラックバー右のテキストボックスの値を入れてEnterキーを押してもサーボを動かすことができます。テキストボックスはホームポジションからの増減値での指定になります。
<ホームポジションの登録>
トラックバーでロボットを適当なポーズにし、
「ホームポジション」−>「現在値をホームポジションに設定」を選択すると、現在のポーズがホームポジションに登録されます。このとき、全てのトラックバー横のテキストボックスは全部0になります(つまりホームポジションからの相対増減値が0)。
ホームポジションを登録すると、ロボット構成ファイルも自動的に書き換えられます。
トラックバーを動かして、違うポーズになった状態で、「ホームポジション」−>「ホームポジションに移動」を選択すると、ゆっくりとホームポジションに移動します。
<ポーズの追加、編集>
右の方にあるボタンなどが、ポーズ登録用になります。追加ボタンの上にあるのがポーズ名のテキストボックスです。PLAYボタンの上にあるのがスピードのテキストボックスになります。これらは何も表示されていないので少々わかりづらいのですがご了承下さい。
「追加」ボタンを押すと、現在のポーズが追加登録されます。ポーズが追加されると右のリストボックスに”:”マークがつきます。このとき、ポーズ名のテキストボックスになにか名称を入れているとその名称が:のとなりに表示されます。このポースの動作スピードはPLAYボタンの上のテキストボックスで指定した速度になります。
ポーズがいくつか登録された状態で、右のリストボックスをクリックすると、そのポーズが再生されます。上の画面では1,2,3という名前のポーズを登録し、2のポーズを選択したところです。
「コピー」を押すと、現在リストボックスで指定したポーズがコピーされます。
「更新」を押すと、リストボックスで指定しているポーズが、現在のトラックバーの位置に更新されます。
「上へ」を押すと、リストボックスで指定しているポーズが上へ移動します。
「下へ」を押すと、リストボックスで指定しているポーズが下へ移動します。
「削除」を押すと、リストボックスで指定しているポーズが削除されます。
<ポーズの微調整>
トラックバーで操作していると、微妙な調整ができないので、微妙な調整をする場合は微調整ボタンを押します。トラックバーにハイライトされている状態(トラックバーを動かすなどするとそのトラックバーがハイライトされる)で
これらのボタンを押すと、それぞれの数値分、増減します。
<PLAY>
「PLAY」ボタンを押すと、現在リストボックスにあるポーズが、上から順番に再生されます。
<モーションの保存>
「ファイル」−>「保存」で、現在のモーションを保存できます。モーションファイルの拡張子は .omf になります。このファイルもテキスト形式なので、メモ帳などで開けますが、書き換えしないで下さい。
モーション作成が終わったら、「ファイル」−>「終了」でメイン画面にもどります。
<操縦>
メイン画面には「FW」というボタンがあります。実は、モーションファイルの名前を FW.omf にすると、このボタンを押したときにそのモーションを再生できます。
このボタンのクリックイベントは次のようになっています。
runMortionというメソッドは、モーションファイル名を渡すと、そのモーションを再生します。
このメイン画面に適当なボタンを配置し、そのボタンのTextプロパティをモーションファイルにすることで、同じようにモーション再生ボタンを作ることができます。
プログラムの構成
このプログラムを参考にオリジナルを作る場合の参考として、プログラムのファイル構成を説明します。それぞれの詳細はソース中のコメントを参照願います。
プロジェクトの構成は次のようになります。
メイン画面がForm1.csです。
データは、ロボット構成がRobotInfo.csクラスになります。このクラスはServoInfo.csクラスの配列を持っています。RobotInfoは次のプロパティを持っています。
LayoutAmountX:レイアウトのベースが横に何個か。デフォルトは3。
LayoutAmountY:レイアウトのベースが縦に何個か。デフォルトは16。
LayoutAmount:レイアウトの総数。デフォルトは3x16=48。
LayoutData:サーボ情報。そのレイアウトに指定されたボードIDとサーボIDが何番になるかを保持。
RoboName:ロボットの名前。このプロパティは使ってませんが、後でロボに自己紹介させられるかと思い、作った。
ComName:設定したCOM番号
ComBps:設定した通信速度
LayoutDataはServoInfo.csクラスの配列を保持します。
MortionMake.csがモーション作成画面です。
Pause.csは1つのポーズデータを保持するクラスです。その中には各サーボの位置を保持するPoaData.csクラスの配列があります。
その他はそれぞれの設定ウィンドウになります。
C#の勉強方法、MSDNの活用
プログラム未経験者がプログラムを覚えようとする場合、本やインターネットを見るかと思いますが、どうしても人に聞きたくなる場合があります。このような場合のために、MicrosoftではMSDNというプログラマー向けのページがあります。ここのフォーラムで質問をすると、教えてもらえます。
書籍で勉強する場合ですが、難易度が違う複数の本で勉強することをお勧めします。私の場合、初心者向け1冊、中級向け4冊、逆引き大全1冊で勉強しました。簡単なことならすぐにできるようになりますが、実用的なものを作ろうとするとそれなりに勉強に時間がかかりますので余裕をもって取り組んでください。
最後に
このソフトウェアは短時間で簡単に作ったものなので、エラー処理など不十分な部分があるかもしれません。また、クラス設計などもあまり練られていないので効率がわるいです。。ご了承下さい。
2009年12月21日
|