MotionEditor開発状況

今まで開発したプログラムはシステムで用意された部品を少しモディファイするくらいだったのですが、今回のプログラムはモーションの編集ビューにその時々のポジション情報であるオブジェクトを置いたり、移動したり、線で繋いだり、と大変です。繋ぐ線も途中の真ん中で矢印を書かないといけないし、もー色々調べて疲れます。完成した時はかなりプログラミング技術が向上するのではないだろうか。でもなぁ、すぐに忘れてしまうしなぁ。。。。。
で、ドキュメントベースで再作成してます。前回の下地も有るので、少し楽です。モーションファイルを読み込んで編集ビューに表示する所です、と言っても表示するオブジェクトは数種類有るがまだ1種類だけ。

こんな感じです。

ちょっと行き詰まったので

モーションエディタを作成してしたのですが、いつものように行き当たりばったりで作成しているので詰まってしまいました。最初に悩んだんですけどねぇ、ここに来てやはりドキュメントベースにしておけば良かった、と。さらにオブジェクトの機能もちょっと変になってしまったので、これは、ドキュメントベースで作り直し、だな。
で、ちょっと気晴らしにロボットに搭載されているマイコンに登録されたモーションの一覧を取得してその中から実行したいモーションを選択して実行するソフトを作成しました。Windows 版は近藤科学のサイトからダウンロード出来るやつが有るので、それのマック版、と言う感じです。機能的には Windows 版は実行するモーションをボタンをクリックする事で実現します。そのボタンはウインドウの中の好きな位置に置ける様です、背景に画像を貼り付ける事も出来ます。私のは出来ませんが。

こんな感じです。まぁよく言えばシンプルで良い、と。
ちなみにモーションエディタはこんな感じです。

届きましたよサーボ

やっと修理が終わってサーボが届きました。で、原点だしをすると、おおっ!動く。さっそく左の手を組み付けて配線が途中だったので背中のカバーの中に全部入れておしまい。
サンプルのモーションを動かしてみると、やはり全部そろっているとバランスが良いです。歩行とかやってみたいのですが、まず部屋を片付けないと、私は歩けてもロボットには苦しい状態なので。
HeartToHeart のマック版の方は色々テストしてからよりも、まずモーションの編集が出来る様にする方向へ変更しました。編集時に直接サーボを動作させるのは多分出来そうなので。問題はマイコンからの読み出しと書き込み、教示モードでの値の読み取り、プログラムの見た目的にはオリジナルからは離れてしまいます。なんせ Cocoa ですから Windows の様に出来ない(私の力量では)、したくない、の両方ですね。将来的には OpenGL で描画したロボットをマウスでグリグリしながらモーションを作成したいです。スライダとか数値を入力とか、やってられないし。

目指せ HeartToHeart ver3

ちなみに「HeartToHeart ver3」とは KHR-1HV を買うと添付されているソフトでロボットを制御します。まぁそれと同等のマック版を目指す訳です。(出来るのかなぁ?)
現状は相手の RCB-3HV との通信は出来ている様です。ただ、先日取得出来たバージョン情報が取得出来なくなっているので、問題はまだ有りそうです。1個のサーボを動かす所まで来ました。ジージーとプログラムのスライダーを動かすとサーボも動きます。サーボに送る値(回転値)が良く分からないんです。コマンドリファレンスには値の範囲として 0~32767 プログラム上では -16383 ~ 16384 と表すみたいなんですが操作説明書では「1パラメータに付き 0.35度」と有ります。しかし 100 くらい変位すると結構動きます。KHR-1HV のサーバは 180度の範囲で動作する様なので 180/0.35 で約 514 となり+1 で 256 程度のはずです。マニュアルに他にも 「サーボ表示数値」「サーボ実働数値」は違う、とか書かれているのですが、何の事やら?
まぁ先に Windows でいじくりたおさないと理解出来なさそうです。操作説明書に書かれている単語とコマンドリファレンスに書かれている単語の相違も有りそうだし。Windows で設定した値が実際にはどのパラメータに対応するのか一つずつ確認する必要が有りそうです。はぁ
まだまだ先は長そうです。

テスト中と言うか確認プログラムの画面です

マックとマイコン(RCB-3HV)との通信

修理中のサーボが来ないので、ソフト開発の下調べを行ってました。結果は「通信出来た!」です。まず KHR-1HV 付属の USB シリアル変換器で使用されている LSI が FTDI 社の物で有る事。ここからドライバ(D2XX)をダウンロード。(普通のインストーラ形式のも有ったのですが)サンプルプログラムをコンパイルして実行、まぁ最初から旨く動作するとは思ってませんでしたけど。
近藤科学の USB シリアル変換器は固有のベンダーID、プロダクトIDを使っているのでプログラムでそれらを指定する様に変更。(サンプルプログラムは SetVIDPID )
ここからは私の思い違いで結構時間がかかりました。近藤科学のウェブサイトのサポートページから ICS2.0のコマンド資料をダウンロードしたのですが、これが間違い。これはサーボとの間で交わすコマンドの説明なので、私が必要としているのはマイコンである RCB-3HV とパソコンとの間のコマンドなので正解は RCB-3 コマンドリファレンスなのでした。
まず簡単なコマンドでテストを、と思い。バージョン情報取得にチャレンジ。コマンドを送信する前に 0x0D を送信して RCV-3 から 0x0D が帰ってきて初めて本来のコマンドが送信出来るのです。 0x0D を送信してみると、帰ってきました 0x0D が。でバージョン情報取得のコマンドを送信するのですが何も帰って来ません。ウェブサイトを色々検索するも解決に至らず。最後に通信設定を見直したら、私が最初に参考にしていたのが ICS2.0 の説明書なので、ひょっとすると違うのでは?と思って RCB-3 コマンドリファレンスを見るが記述無し。仕方ないので RCB-1 (KHR-1 のマイコン)のコマンドリファレンスを見ると、違うじゃぁ無いですか。早速記述通りに設定すると、なんとバージョン情報が帰ってきました。これで Windows 版の Heart2Heart と同じソフトが作成できる、はず?

I Love Macintosh