Visual Studio(MFC)から強引にDynamixelを制御する その1

前回の日記でAIMotorのプログラムをDynamixelに移植する話をしてたのですが、先月27日にベステクから「Dynamixelシリーズ用Windowsサンプルプログラム」なるものが公開されてました。
比較的タイムリーなネタなのにすっかり忘れていたという…。
これを使わない手はないですね!(笑

で、さっそくいろいろ調べてみたのですが、ヘッダーファイルとか潜っていくとGDLの深い階層にたどり着いた。
一通り必要なファイルをそろえてVC++でコンパイルしてみるが、当然のごとくエラーの嵐。
もう、エラーを読む気にもなれないので、移植するのは5秒で諦める。

とりあえず、GDLの正規の方法でx86の設定でコンパイル出来ることは確認。
コンソールでDynamixelを制御するには十分ですね。
というか、ロボットの制御にGUIが必要なのかという話もありますが、趣味でやることに意味があるかどうかということは気にしません(笑
GDLの設定で気になったのはGDLの設定の「x86ウィンドウアプリ」
ただし、今回はあくまでもVC++で動かすことが目的なので無視。

で、僕の技量でMFCでDynamixelを動かすアプリを作るには…。
「WinSock」を使うしかないだろう!!!

方法
・制御用のアプリをMFCで作って、サーバーのスレッドを立てる。
・Dynamixel制御用のアプリをGDLで作成し、クライアントの機能を持たせる
・MFCアプリ起動時にDynamixel制御アプリを起動し、Dynamixel制御アプリはMFCアプリに接続。
・2つのアプリは「localhost」で接続されているので実質メモリ間コピーを行う。
・メモリ間なので高速なUDP接続がパケ落ちなしで使える(たぶん)

まぁ、強引ですね。

調べてみたら、アプリ間のデータの受け渡しで、簡易に行うときは結構使われてる手みたいです。
本当は完全にVC++側で制御したかったのですが、制御にPCのリソースを用いることが一番の目的なので制御がGDLのアプリ主導になるのはまぁ良しとします。

ここで、GCCは大学でUNIX上で使っているものの、いまいち普段マイコンのプログラムに使っているGDLでx86のプログラムを書くということになじめなかったのと、複雑なプログラムは全部VC++で書いていたので、まずGDLのx86プログラミングになじむためにも、ちょっと実験してみました。

とりあえず必要な要素は2つ


  • スレッドはちゃんと立てられるか(まず、無理ってことはないと思うけど)。

  • WinSockはちゃんと使えるか(VisualStudioのアプリと通信できるか)。

結論としては、どちらもYES。
簡単なプログラムですが、なんの問題もなくコンパイルして実行できました。

%96%B3%91%E8.PNG

奥にあるウィンドウがVC++で作ったサーバーアプリ、手前のがGDLで作ったクライアントアプリ。
単純にカウントアップした値と文字列を送るプログラムですが、ちゃんと動いてます。
(ちなみに接続はTCP使ってます。)
まぁ、技術的にはWinsockもスレッドもいちいち話題にするほどのことじゃないんだろうけど、ちゃんと動くってのがやっぱり楽しいですね。

とりあえず、このあとに実際にDynamixelが動いてますっていう動画でも付けられたらいいのですが、実は「AX用接続ケーブル」も「Dynamixelコンフィギュレータ」も持っていないので、これらを揃えたらまた実際に続いて実際にモーターを使いながらアプリを作りこんで行こうと思います。

ちなみに、フタバのサーボに関しては、HSPも守備範囲なので、UE村さんの30軸制御のプログラムにソケットを付けて利用させてもらおうかなと思います。
(まぁHSPなんでウィンドウもHSPで作ればMCF使う意味すらなくなりますが)

というわけで、こっちの方法でうまく行きそうなんで、Windows用のライブラリ作る話はナシでm(_ _)m

PS:
今回windowsで制御するために最新のGDLをダウンロードしたのですが、ターゲットに「RPU10」が入ってますね。
噂には聞いてましたが驚きです。あいかわらず関数にコメントがないのが辛いですがw(分かりやすいからOKなんですけどね)
KUMACOに使ってるSH2/7144もGDLのターゲットに入ってるし、なんともGDLとは切れない縁があるみたいな気がしますw

Profile

me.jpg
Name : みっちー
小学校で電子工作にハマり、高校時代はゲームプログラミング、大学時代にロボット製作へどっぷり浸かりました。
社会人になっても、なにかとものを作るのが大好きで、日々ネタと仲間を求めて活動中です。

Dream Drive!!

bana.png
http://dream-drive.net

趣味のロボットとプログラムを中心としたコンテンツのサイトです。

My Robots

kolink2.jpg
KO-LINK2
第2世代 並行リンク足ロボット

kolink.jpg
KO-LINK
並行リンク足ロボット

BusterGX.jpg
BusterGX (Ex Walker)
G-ROBOT + ROBO-XERO

kumaco.jpg
KUMACO
ぬいぐるみロボット

SARUBO.jpg
SARUBO
JX-SYSTEM搭載ぬいぐるみロボット

kokuten3.jpg
KOKUTEN 3
リアルタイム逆運動学制御ロボット

meros.jpg
MEROS
膝なしロボット
(胸部マトリックスLED搭載)
by Mechaniker

kokuten12.jpg
KOKUTEN 1&2
はじめてのロボット
by Mechaniker

協賛広告

月別 アーカイブ

このブログ記事について

このページは、みっちーが2007年12月17日 14:55に書いたブログ記事です。

ひとつ前のブログ記事は「開発環境再インストールとか・・・。」です。

次のブログ記事は「東京行ってきます。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。