Monthly Archives: April 2006

時間軸制御

サーボモータを動かすときには、各サーボを協調して動作させる時間軸制御が必要になる。これの実装として、終点を指定して、現在の座標(角度)から時分割して目標値に到達するためのプログラムの実装が終わった。この動きをMoveと名づけた。Moveの集合でMotion になり、Motion が集まってシナリオになる。
通信系のトラブルに見舞われたが、なんとかMove までは出来た。ターミナルから指示すると、予め焼きこんである終点まで到達する。
次はモーションだな。実験用サーボが到着するまでになんとか、実装したい。

ブロ電

ブロ電™切符

構造体の中の構造体 (男の中の男)

関連したデータは構造体で一まとめにしておくと何かと便利なのは、ちょっとプログラムをかじったことのある人ならわかると思う。
表題にあるとおり、「構造体の中の構造体」は様々なページで紹介されているけど、組込みなんかでありがちな const を使ってフラッシュ領域にマッピングする場合はなんかはうまくいかないことが多いと思う。
なんか、C の仕様っぽいんだけど詳しいことは不明。とりあえず、当該ファイルの拡張子を *.cpp にして逃げた。こうしておけば特に指定しなくても、コンパイラが勝手に C++ でコンパイルする…。
だから、俺のロボットプログラムで *.c、*.cpp が混ざっていても気にしたり、直したりしないように!!約束だよ!!

買い物しまくり

 最近、とんと携帯電話の開発はご無沙汰です。ちょっと、ロボットをやっているせいかモチベーションがで低下しているみたい…。今更って感じですが、702NKII を買いました。ほとんど、環境はRS-MMCに入っているので、これを移してアドレス帳をOutlookから転送するだけで設定できました。簡単です。
 もうひとつは DS-Lite。これはかなりいいですよ。まず、デザインがすっきりしていて、高級感があります。ロボットが一段落したら、こちらをハックしてロボのコントローラに挑戦するつもり。

CPLD ラプソディー

ちょっとのタイミングの差、ちょっとのロジックの差で、システムはまったく動作しなくなる。昨日までの快調な動作が夢だったかのように…。
BMのコントローラのCPLDのロジック部分もそんな感じだった。「プログラムに間違いは無い。」多くのソフトエンジニアがそう言うように俺もそうだった。CPLDの担当も「シミュレーションまでおこなっているから、ロジック、タイミングに問題はない。」と判で押したように言う。CPLD 担当者にはソフトは渡していないので、俺がRTLを眺めることになる。プロが作ったロジックだよ!?素人は見るもんじゃないのよ。実際のところは…。
なんとか、現在のプログラムと相容れない部分をRTL上に発見した。ちょこっと修正してシンセシス。CPLDに焼きこんだところばっちり動作!!
ちょっとのタイミングの差、ちょっとのロジックの差を見極めるのは結局、どこまでロジックに没入できるかだね。

SET/GETモード

サーボモータの角度が読み込めるようになったので、RSC(RoboShellConsole)の拡張作業も始めることにした。RSCは2つのモードを持っていて、それぞれサーボモータの角度を設定するSETモード、サーボモータの角度を読み取るGETモードになる。
これらはメニューで簡単に切り替えることが出来る。ティーチングは当然、GETモードで行い、そのときの全サーボモータの角度を取り込んでいくわけである。
そうなるとこの次に必要になるのが、スタートポイントからエンドポイントに至る角度の補間機能である。この補間機能をサーボモータコントローラに実装すれば、基本的な動きが出来るようになる。

BootCamp

WindowsVista のリリースがずれ込んだので、PCの買い替えのタイミングが少しずれてしまった。それに加えて、BootCampなるユーティリティーがアップルからリリースされた。
Windowsが動作しているマックは実際、どんなものだろうと思っていたのだが、横浜のビックカメラでデモっていた。iMac で動作していたのだが、そんなに悪くない。と言うより、なんかマックが急に身近に思えてきた。
Vistaが動くかどうかは微妙だけど、VistaReadyになったらマックもありだな?と思ったよ。自分のユースケースを考えると、Eclipseでちょろっとプログラムを書いて、原稿を書いて、古いバージョンのVisioで簡単なお絵描きをする位だし、WEBが見れればそれでOK.
Vistaがまともに動作するMacならなんとでもなりそう。USBが付いていれば、自作のデバイスも動かせるしね。
いずれにしても来年以降だな。それまで、今のPCを延命しないと…。

暴力的

暴力的。およそ、エンジニアリングとはかけ離れた言葉であるが、現在進行中のプロジェクトでは使わざるを得なかった…。
レッドバージョンではサーボモータの角度を読み込めるのは周知だが、今回作ったシステムでは1回の読み出しではうまく読めないことがある。そ・の・よ・う・な・時は暴力的に複数回、読み出しコマンドを実行する。
また、パワーリダクションであるがこれも完全に電源を切った時のように、ユルユルになるわけではない。小さいサーボホーンだと結構固い。これもある意味、暴力的に力を込めて廻す必要がある。
普段は優しい俺なのに…、と開発しながら思ったりした。

レッドバージョンのサーボモータ角度の取得

Board


当初の予定通り、PWM-SDC でレッドバージョンのサーボモータ角度の取得が行えるようになった。現在は1ch(サーボモータが一個しかない…。)のみだが、近日中にサーボモータを追加して2ch以上の場合でのテストを行う予定である。先日、レッドバージョンのサーボコントロールソフトである USB-ISC を入手した。
現在は具体的な味付けなどは行っていないが、近藤科学のサーボは ISC の設定ソフトで様々な味付けが出来る。
この機能も PWM-SDC に取り込みたいと思うようになった。この機能を実現するためだけに¥6,300はちょっと高い気がする。また、こういった環境を統合的に扱えるツールチェーンが欲しい。

ハードとソフトの融合

ハードの改修も終了したので、早速テストしてみた。かなりいい感じ。サーボモータへのPWM出力をピン一本のステータスで簡単に切り替えることが出来る。
もちろん、ソフトを組めば同様のことは出来るが、せっかく CPLD を使っているのだから、こういう機能も取り込んで行きたい。ソフトが軽減できると言うことは、それだけシステムの負荷が減るし、安定度も増すのだ。
#ソフト屋だけど、ソフトは信じていないんです…。
次はきっちり、タイミングを作りこんでレッドバージョンのキャラクタリスティックチェンジだな。これでサーボモータの制御は終わるので、A/Dなどのセンサ系に取り掛かれる。特にジャイロには色々なアイデアがあるので、それらを片っ端から実験していきたい。