VS-RC003でROBOTIS Dynamixelを制御する#01


先日のPCから制御するVS-RC003に引き続き、VS-RC003のネタです。

本来、VS-RC003は、PWMのサーボモーターか、シリアルサーボに関してはVstone(自社)のVサーボしか対応していないのですが、コマンドポートでメモリマップを読めるのであれば、外部マイコン(OpenCM9.0.4)からメモリを読んで、他社製(Vサーボ以外)のシリアルサーボを回してしまおう!
ということで、ROBOTISのサーボを回してみました。

サーボモーターの個数分のメモリマップをマイコンから参照して、マイコン経由でPCに垂れ流す様子…

回る様子は、下記Twitterの動画にて…

…という感じです。

脱力機能、にも対応しました。

 

RobovieMaker2のプロジェクトファイルとOpenCM9.0.4のソースコードを下記のGitHubにて公開しています。

VS-RC003とOpenCM9.0.4を繋いで、ROBOTISのコマンドサーボをRobovieMaker2から制御するソースコードとプロジェクトファイル

https://github.com/dreamdrive/VSRC003-ConnectR

 

VS-RC003は、発売されてかなり長く十分に枯れたロボット専用マイコンで、モーション作成ソフトのRobobieMaker2が秀逸でお気に入りなのですが、シリアルサーボが対応していないことだけが非常に残念でした。
一方、OpenCM9.0.4は、ArduinoライクのIDEで開発出来るSTM32マイコンで、DARWIN-MINIに搭載されている2,000円以下のマイコンです。単体ではあまり注目されているように感じていないのですが、実はコスパの凄く良い個人的にお気に入りのマイコンでした。Dynamixel用のライブラリが揃っているのもROBOTISサーボユーザーには魅力ですね。

そんな、2つのマイコンを組み合わせた勝利です!
古いマイコンで、新しいマイコンを制御するという構図もシュールですよね。(笑)

 

さてさて、もう少し解説ですが、こういう使い方をすると遅延や制御周期が気になるところでしょうか。

  • OpenCM9.0.4とVS-RC003の通信速度は115,200bps
  • OpenCM9.0.4とDynamixelの通信速度は1Mbps

ということで、どう考えてもボトルネックはマイコン間の通信ですね。

ソースコードでは、1回のループでマイコン間通信を3回行い、2byte×8のデータを3回取得、そしてシンクライトパケットでDynamixelに一斉パケットを投げる。
ループ毎にOpenCMの基板上のLEDを点灯/消灯させ、そのレベルをオシロスコープでもモニターしてやります。

オシロスコープでは1周期が2ループ分なので、画像を読み取ると、だいたい1ループあたり50msecの時間を要している感じでしょうか。

つまり、制御周期は20Hzということになります。
ロボットの制御周期としては、ちょっと心もとないですね。

改善点としては、
もともとマイコンが高速なため、文字処理などstdio.hに頼ってしまったところもあり…ソースコード内に、もう少し高速化出来そうなところはコメントしています。
あと、修正前に、実際にパケットにどれくらい余裕があるのか、一度ロジアナで解析しておきたいところでもあります。
若干、未完成な部分を残してすみません(^^;A

 

それと、VS-RC003に関して、コマンドポートを使うとCN6もしくはCN7を潰してしまうのですが、CN6で使用するPS2コントローラーとコマンドポートのTxDとRxDのピンアサインが衝突しないことが分かりました。

実際に試してみたところ、ゲームパッドとコマンドポートは同時使用可能でした。
これは朗報ですね!

さてさて、Dynamixelが回ってしまえばこちらのもので、半二重のTTLの回路は各社だいたい同じなので、TTLの半二重シリアルサーボはだいたい制覇出来ますね。
となると、VS-RC003で、市販のあれやこれやを乗っ取って…、なんてことも可能そうですね♪

また、VS-RC003とPCやマイコンとが自由にやりとり出来るということで、VS-RC003をラップしてROSのノードとして使用するような使い方も道が見えました。

 

というわけで、今更になってVS-RC003をいじり倒している訳ですが、発売して10年以上経つので、そろそろVstoneさんの新しいボードが見たい気もします。
ちなみにRobiの基板にはVS-RC014と刻印されているので、おそらく内部ではいろんな基板があるのでしょうね。
出るのかなぁ…。出てほしいなぁ…。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

アーカイブ

広告

Top