メイン

2007年11月01日

RoboShellIDE on Leopard

 RoboShell の開発環境が Leopard 上でも動作するようになった。Eclipse をインストールして、後は他の環境と同様にセッティングすれば問題ない。

 ただ、libftdi 環境だとシリアルのドライバがうまく入らないみたい。この辺は継続して調査していくことにする。DSDP のプラグインは問題なく動作して、telnet 経由で openocd にコマンドを投入できるので大変便利。もちろん、フラッシュもできる。

 あとは、RoboShell そのものをブラッシュアップしていかないとな。 

2007年10月31日

GCC for ARM7 on Leopard

RoboShell の各種開発環境を Leopard に移行中である。現在の進捗状況は

 1.gcc4.2.2 のビルドの完成
 2.gdb6.6 のビルドの完成
 3.ftdi までのドライバのビルドとインストール
 4.OpenOCD の動作確認
 5.1.で作成したコンパイラで RoboShell のバイナリを作成
 6.5.のバイナリの動作確認→OK

まで、完成した。

あとは Eclipse をインストールして、統合化すれば開発環境の移行は完成である。だいぶ、安定してきたな。

2007年10月21日

男気 USB

FTDI2232


FTDI2232 を用いたデバッガを作りたかった時に、手頃な基板が無くて変換基板と手ハンダで作った一品。

FTDI2232


別の角度から見た。

たまにエナミュレーションにしくる時があるが、一応 OpenOCD も動作している。

2007年10月16日

RoboShell IDE

RoboShell の開発環境はマルチプラットフォームを標榜している。だいぶ、まとまってきた。Eclipse によるビルドやデバッグ環境に加えて、RoboShell のシェル機能なども Eclipse のプラグインにより、実現している。
RoboShellIDE

Windows, Linux ではシリアルポートをちゃんと見つけられたので問題なかったが、MacOSX ではイマイチよくわからなかった。現在は telnet のみに対応している。

RoboShell が OpenOCD を用いて開発を行っている事は何度も述べたが、OpenOCD は telnet 経由でコマンドを投入する事が可能だ。
RoboShellIDE

シリアル周りのプラグインの開発が今後の課題である。


2007年10月15日

PS2 controller for EZ-SERVO (Logicool)

現在、RoboShell は PS2 のコントローラをサポートしている。今までは Gametech のコントローラを使っていたけど、logicool のもそこそこメジャーなので実験を行う事にした。

PS2 controller from Logicool

logicool のコントローラの特徴は受信部が小さい。コントローラのデザインは GameTech が好みだが、この受信部の小ささは魅力的である。

PS2 controller from Logicool

コントローラに搭載されている大小2個の振動機能用のモータは RoboShell では下記の様に制御出来る。

>1215 0007 0000 0000 0000 [Enter]
このコマンドを設定した後は、
□ボタンの make で小型振動モータが On になる。
□ボタンの break で小型振動モータが Off になる。


大型の振動機能用モータをアクティブにするには、
>1210 000x yyyy 0000 0000 [Enter]
x = 0 or 1 (0 = 小型モータ, 1= 大型モータ)
yyyy = 0 - 255 (0 で停止)

このコマンドを発行した後は、
×ボタンの make で大型振動モータが On になる。
×ボタンの break で大型振動モータが Off になる。

プログラム中からも呼び出せるので、ロボ自体が外部から加速度(攻撃)受けた時に手元のコントローラをブルブルさせる事も出来る。

2007年10月14日

Detail of PCB

Gyro scope
Gyro scope


部品の実装面はこんな感じ。実は加速度センサが水晶に干渉してしまうのだが、足を切ってなんとか凌いだ。次のロットでは治す所が沢山出てきそうだ。
そろそろ、ソフトの拡張を始めようかな?「起上がりのフレームワーク」を入れないとな。

2007年10月13日

Gyro scope implementation

PS2 Controller
Gyro scope

PS2のコントローラ受信部とジャイロ基板の実装は写真のとおり。PCB化したことでだいぶすっきりした。が、ジャンパ線が痛々しい。(涙)

2007年10月12日

FT2232 and EZ-SERVO

FT2232 and EZ-SERVO


現在の開発環境はこんな感じ。ジャイロ基板も新しくなり、実装方法も変更したので以前のタイプより高さが低くなった。

2007年10月11日

OpenOCD by USB2232

Unlock device


ツール工房から発売されている USB2232 のモジュールを使って製作した OpenOCD 用のデバッガがこれ。
USB2232 は FTDI 社の FT2232C のモジュールである。それにアダプタボードを組み合わせて、EZ-SERVO 用のデバッガに仕立てたわけである。
アダプタボードの回路図などは近日、公開予定。

2007年10月07日

勝利の方程式

 Olimex から基板が到着したので、早速組んでみた。今回は完璧だろうと思っていたんだが、2本未配線。まじ、がっくし。ジャンパが痛いよ。ほんと。気を取り直して、ジャイロ周りの配線チェック。こちらは問題なさそう。良さそう。

で、ここからが本題。
 ムラタからもジャイロが届いたので、早速組んでみた。ジャイロは2ch使っているんだけど、1ch目はなんの問題も無くサクッと動作。で、2ch目が完全に泥沼。以前にバラックで組んだ時にも4個潰している。ジャイロは@2600円。ロボで使っている部品の中ではサーボの次に高価だ。体積あたりで換算したら、サーボより高価になる。そんな部品を3個も潰すといい加減、いやになる。確実に実装出来るテクニックを探さないと…。

 当初はあまりにも動作しないので、センサ単体の不具合も疑ったのだ。ジグつくって、センサ単体で評価出来るようにしてチェックしたり…。で、結局は俺のハンダテクが未熟なのが原因みたい。いつものパターンだ。

 高い授業料を払わされたので、勝利の方程式(ジャイロハンダテク)を考えてみた。半田ごてを2本使い、小手自体を寝かして、4カ所を同時にハンダ付けするのだ。同時だと熱がかなり加わるが、短時間に決める。ジャイロ自体が基板に密着していないとハンダの部分に応力が集中するし、なによりもそこがダンパになって振動がうまく伝わらなくなる。(そんなに気にしなくていいのかもしれないけど…)

 まぁ、そんな感じで次はびしっと決めようと思う。

2007年09月10日

RoboShell dev. environment on the Mac

OpenOCD が動作を開始して、Eclipse 上からビルドとデバッグが他のプラットフォームと同様に出来るようになった。
これで、主要な OS で RoboShell の開発が出来るようになったわけだ。プラグインは Eclipse とは言え環境に依っての依存があるので、注意深く設定していく必要がある。

2007年08月27日

Eclipse on the Linux

 Eclipse 3.3 Europa が最新バージョンである。けっこう、3.2 から大きく変わったみたいで、今までのプラグインが動作しなくなったりする場合もあるみたい。

 Vista の挙動がイマイチ不審なので、Linux に注力しているわけだけど、Eclipse 上から RoboShell のビルドとデバッグが出来るようになった。あ、あとフラッシュへの書き込みも!!(この機能は OpenOCD についている機能だけど。)つまり、完全にオープンソースな環境で RoboShell の開発が出来るようになったわけだ。

 あとは RoboShell をそういう環境に対応すべく、進化させるだけだな。

2007年08月26日

OpenOCD on Linux

とりあえず、Linux 環境でも動作を始めたようなので、忘れないうちにメモを書いておくことにする。

USB 関連として、下記のファイルを入手する


  1. libusb
  2. libftdi
  3. ftdi_eeprom
  4. libconfuse

そのまま、./configure してビルドすれば OK

次に OpenOCD を入手する


  1. svn で安定版を入手する
    svn checkout http://svn.berlios.de/svnroot/repos/openocd/trunk
    上記コマンドを発行したディレクトリに trunk ディレクトリが作成され、それ以下にソースファイルが展開される。
  2. make
    以下のコマンドを投入して実行ファイルを作成する

    • ./bootstrap
    • ./configure --enable-ft2232-libftdi
    • make
    • make install

実行
ターゲットの配線を確認して、openocd を起動する。
openocd -f config.cfg

実行時に下記のエラーが出たので、以下のような対策を行った。
libftdi.so.0: cannot open shared object file: No such file or directory

原因は環境変数 LD_LIBRARY_PATH が設定されていないために起こるので設定する
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

2007年08月25日

こんなものなのかな?

 RoboShell の開発環境を複数のプラットフォームで構築しているけど、Vista は調子悪いみたい。XP で何の問題もなく動作するのに、Vista だと全く駄目だ。詳しく書くと、ARM のクロスコンパイラにソースコードを突っ込めないのだ。
 一日、悪戦苦闘したけど全然駄目だった。反対に Linux ではさくっと、Eclipse + Zylin CDT まで導入出来たし、それ以前に ARM のクロスコンパイラやデバッガまでビルド出来た。なかなか、いい感じである。と言うことでしばらく Vista は様子見して、Mac と Linux で環境を構築していくことにする。

 かなり、いい感じになって来たよ。

2007年08月23日

真夏の世の夢

Unlock device

 かねてより、計画していた OS 全部入りのPC環境が構築出来た。後は必要なソフトをインストールして行き環境をブラッシュアップしていく。

 よく、クルマの改造屋とかでデモカーみたいなのがあるけど、これもそれと同じデモ環境だ。RoboShell の複数環境での動作の実現を体現するのが、この環境なのだ。

 でも、今回のインストールはマジで大変だった。素の OS なら問題ないけど、色々と制約の多い環境なんだよ。実際。でも、かなりブートメカニズムとかパーティションの勉強になった。

2007年08月20日

RoboShell development environment

 OpenOCD が動作を開始したのは既報の通りだが、Eclipse 上でも動作を始めた。ステップ実行で確実にひっかかるのは非常に気持ちがいい。開発に必要なフラッシュメモリの焼き環境も OpenOCD のを使うことが出来るようになった。後は Linux, MacOS と水平展開していく。

 そろそろ、ページをまとめて行かないとな。やってきたことをはなから忘れて行きそうだよ。

2007年08月16日

Mac によるロボット開発

現在、MacOSX上にロボット開発のためのツールチェーンを構築中。とりあえず、EclipseからARM クロスコンパイラ(Ver.4.2.1)で RoboShell.hex をビルドする所まで出来た。

後は FT2232 ベースのデバッガを動かせるように、USB 周りのドライバを整備していく。arm-elf ベースで動作する gdb と gdb のサーバである OpenOCD のビルドは出来上がっている。

近日中に結合試験だな。完成すれば、プラグインの勉強でもしようかと思う。

2007年08月09日

OpenOCD

 自作のハードとサンプルで頂いたキット(ほぼ完成品)が、TeamKNOx 非常勤研究員の協力の元、Linux, Windows で動作するようになった。自作ハードはチップから組み立てたので、気合いの入った一品。キットは非常にコンパクトにまとまっており、流石にプロだよなぁ〜。って感じの出来映え。価格も手頃なので今後はこちらを使うつもりだ。簡単なアダプタを作るだけで様々な用途に対応出来る。サンプルも色々とあるので、自分でもオリジナルハードを製作する事が出来そうだ。今回チャレンジした OpenOCD もその一つの実装である。

 OpenOCD を実現する上で、手こずった点は *.cfg の設定と EEPROM の設定、回路図の確認である。これらは近いうちにページとして、まとめる予定。

 一つの USB のポートでJTAGデバッガとシリアル通信が出来るので非常に便利だ。非常にすっきりまとまる。シリアルポートは Bluetooth に移っていくが有線ならではの安心感がある。

2007年07月26日

Back to Eclipse 3.2

 ひょんなことから、長年の課題であった Eclipse への Terminal のインテグレーションが実現出来た。今までは RoboShell の操作に Eclipse とは別に TeraTerm を立ち上げていたけれど、今度は Eclipse 単体で操作する事が出来る。

 それと平行して FT2232 を用いたデバッガの整備も行っている。これが出来ると先の Terminal と合わせて、かなりすっきりとまとまったロボットの開発システムが出来る。全てオープンソースで構築出来るので、時分好みに改造するのも思いのままだ。

 乞うご期待。

2007年07月25日

久々にバージョンアップ

 PS2 のコントローラの読み取りプログラムの増設以来、久しく手をつけていなかった RoboShell をバージョンアップした。主な改良点は要望の多かったジャイロ周りのプログラム。特に RoboShell の特徴であるジャイロディストビューションシステム(GDS)を実装出来た。

 ポン付けのジャイロだとサーボ一個にしか適用出来ないけど、GDS だと細かい補正係数を全てのサーボに対して適用する事が出来るのだ。要は全てソフト次第と言うわけだ。このあたりはフレームワーク化してあるので、ソースコードを見てもらえればわかると思う。

2007年07月23日

Eclipse 3.3 europa

 Eclipse も微妙にバージョンが上がって、それに伴っているかどうかわからんけど、Zylin の CDT もバージョンが上がった。最新バージョンフェチじゃないけど、とりあえずインストールしてみた。デバッガまでサクサク動作する。あ、ついでに ARM も Code Sourcery からダウンロードしたけど、こっちの方は動くけど、出来た Hex ファイルで RoboShell 動作せずって感じでした。

 出来上がった環境で今まで実装出来なかった部分の実装をしてみた。なんか、いい感じ。しばらく使ってみて問題なかったら、環境を移行ってことで。

2007年03月08日

WiPort adaptor

以前にメーカのご好意により、評価のためにいただいた WiPort が手付かずのままだった。使用に当たっては各種のセッティングが必要なので、お手軽に設定できるようなジグを作ってみた。

Board

EZ-USB は RoboShell 環境では標準品なので活用する。

Board

WiPort は消費電流が高いので、外部電源を利用する。そのうちにページを開設して詳しく説明する予定。

2007年03月04日

Wii リモコン6

とりあえず、ページを公開します。

http://www.teamknox.com/RoboShellControl/RoboShellControlj.html

バイナリをダウンロードできるようにしました。

2007年02月28日

Wii リモコン5

とりあえず、出来た。

 まだ、荒削りで不安定なところもあるが、基本的な動作は出来るようになった。入力したテキストも一応、サーブできるようになったので、テスト使用では問題なく使えそう。今後はこれをブラッシュアップしていく。

Board

ページは近々、オープンする予定。そのページで当面はバイナリを配布。

2007年02月26日

Wii リモコン4

デジタル入力であるボタンの make/break をシリアルにマップすることは出来た。ただ、物凄いレイテンシがあるような感じだ。でも、入力データは取りこぼさないような感じなので、その辺は感心。ヌンチャクコントローラの取り込み方がイマイチ、理解できていない。これがあると操作に幅が広がりかなり良い感じなのだが…。

 現在はテスト実装で試しただけなので、少しづつブラッシュアップしていく。まずはシリアルで転送するコマンド文字列をセーブできるようにする。小さなターミナル機能を付けても良いかもしれない。

 MotionDetectorについては更に、検討を加えていく。

2007年02月25日

Wii リモコン3

 リモコン結果の出力先であるシリアルポートをハンドリングするためのルーチンを実装した。これは先に開発してある RoboShell Composer で利用している部位をクラスライブラリ化して汎用性を高めたものを流用している。

 この次の処理として、HIDのレポートの入出力部分を細かく書いていく予定。その後はそれらをサンプリングして定期的に実行する部分とシリアル出力をマップして完成。

2007年02月23日

Motion Detector

 Wiiリモコンのハンドリングソフトは順調に実装中。うまくすれば、来週中にはそれなりのものが出来そう。ただ、問題は、何かに模した動きを一つの単位としてみなすための検知アルゴリズム を考えなければいけないことだ。そう、Motion Detector を考えないといけない。これがうまく出来れば、このリモコンは本当に色々なところで応用が出来るようになる。

 アルゴリズムを記述する必要があるので、これら記述するための便利な言語を作れれば、と思っている。先は長そうだ。

2007年02月22日

Wii リモコン2

クラスライブラリ化は出来たので、それを用いて機能を網羅的に組み込んだサンプルソフトを作る予定。読み込みをスレッドなりタイマで実装して、それをシリアルに転送できるようにする。

2007年02月21日

Wii リモコン

 PCのマウス代わりに使えることは広く知られているけど、RoboShell で使うためのフレームワークを作成中。基礎実験は終了したので、使いやすいカタチにクラスライブラリ化する予定。

 基本的には RoboShell 用だけど、ソースも公開する予定なのでシリアル経由でコントロールする他のロボットでも、使えるはず。ただ、GPLにするので作ったソフトは公開しないとだめだけどね。

 問題はコントロールのモーションの特徴量の抽出方法だよ。これをうまく作るためのソフトも考えている。

リターンマッチ

 先日、多額の授業料を納めたのにも関わらず再び、発注してしまった。今度はちゃんと出来上がればいいなと…。失敗したやつはCNCの練習台になってもらうことにしよう。

 その他にも色々と仕込み中のやつがあるので、それらも順次、発表していく予定。

2007年02月06日

祝:RobotMagazine 掲載

Article

今までかなりの量の原稿を書いてきたし本の出版も何冊かしたわけだけど、とうとうアメリカの雑誌に小さいながらも原稿が英語で書けるようになった。初めて、自分の原稿が載ったマックの雑誌を思い出した。ちょっと、感無量。さすがにネイティブでは無いので少し編集者直しが入ったけど、それでもほとんど原型だ。

他のも読むとなんとなく、パターンがわかってきたので今度はガツンと書いてやろうと思う。最近は暗いニュースが多いので少し明るい話題がほしかったのだ。

2007年02月03日

どっちみち

Olimex から基板、出荷したよーん。ってメールが来た。orz

あれから色々と調べてみると、リファレンスボードには配線ミスもあった。結局、コネクタが良くても回路的には動作しなかったと思われる。そう思うと、気が楽になった反面、チェックが足りないなぁー。やっぱ、検図する人がいないとだめなのかな?とも思った。
気を取り直して、配線チェックしたりCADソフトを色々といじくって調べてみた。前より更に完成度が上がるはず。後は立体で構成されているアタリをチェックして再発注することにする。

2007年01月31日

授業料

結構高かった。リファレンス基板のコネクタを180度回転してパターンを引いてしまった。まだ、ブツは届いていないけど、何気に調べていて発覚した。でも、他にも確かめなければいけない事もあるので問題は全部、潰した上で再発注をすることにしよう。

2007年01月21日

リファレンス基板

 リファレンス基板のパターンがひけたので発注してみた。これで問題なかったら、EZ-SERVOの強化キットとして頒布できるかもしれない。リファレンス回路は回路規模は大した事無いけど、基板のカタチが微妙なので実装が面倒くさかったのだ。標準的なロボットを製作する際には便利に使えると思う。

 リファレンス回路がうまく行ったら、様々な回路を基板化していきたいと考えている。お楽しみに!!

2007年01月18日

Eagle 日和

 今日は素晴らしく、いい天気だった。トンビが輪を描いている。そうだ、Eagleだ。今年のテーマだ。CADで回路図を描いて、基板化するのだ。

 と言うわけで、Eagle CAD を使って回路図を描くことにする。CAD で回路図を描くことはアキバでパーツを買うのに似ている。本体ソフト(行きつけの店)にライブラリ(在庫)があるかどうかをまず確認しなければいけない。無い場合はあるサイト(店)を探し出さないといけない。それでも無い場合は自作だ。

 主要なコンポーネントのライブラリは欠品状態だったので、自作してみた。次は基板化をやってみよう。

2007年01月16日

ARM GCC

 長らく行っていた ARM のクロスコンパイラだがようやくテストが完了した。テストと言っても RoboShell を実行させただけであるが...。

 これにより PS3Linux で開発が出来る様になった。残っているのはJTAG経由の GDB でのデバッグである。こちらもある程度、目途が立ったので近いうちに発表できると思う。

2007年01月13日

マルチプラットフォーム

 RoboShell の開発環境はマルチプラットフォームを指向している。現在、PS3LINUXに向けて開発環境の整備を行っているところである。最新の成果は ARM-GCC のクロスコンパイラを PS3LINUX でビルドして、RoboShell の HEX ファイルの出力まで行えたところである。引き続き、デバッガの整備も行っていく。デバッガの物理的な接続としては FTDI2232 を用いたシステムにする予定である。

 Windows, Linux と来たら、次は MacOSX である。このクールなコンピュータは最近は iPhone などでかまびすしいが、そろそろ検討課題に乗せてもいいのかな?と思えるほどの充実振りである。さて、2007年はどうなるか?非常に楽しみだ。

2007年01月03日

RoboShell 用のプログラム開発方法

RoboShellに限らず、新しい環境でのプログラミングは色々と難しい。以前に PS2 のワイヤレスコントローラを RoboShell システムに接続するときのメモをまとめてみた。記憶を頼りに書いたので一部不正確かもしれないが、ソースコードとつき合わせて確認してみてほしい。

2006年11月30日

2つのインターフェイス

PS2のコントローラをRoboShellに接続して、DualShock対応まで確認できたことは前回までのブログのとおりである。PS2のコントローラは同期式のシリアル通信が使われている。この同期式のシリアル通信は調歩同期式と並んで、マイコンでは非常にポピュラーな周辺機能である。

当然、LPC2138にもこの機能が装備されている。今まではGPIOをソフトで制御して、この機能を実現してきたわけであるが、折角なのでこの機能を実装することにした。

必要なことは
 1.配線の変更
 2.ポートの変更
 3.SPI化
である。

 1.配線の変更
 今まではなんとなく、P0.10からのポートを使っていたが、SPIの部分に割り当てる必要がある。今時のマイコンは一つのピンに複数の機能がアサインされている。GPIOは最も基本的なものであるので、特に問題なく変更できた。

 2.ポートの変更
 ピンが代わるわけであるから、当然ポートにも変更が必要である。これは #define で宣言してあるので、その部分だけを変更すればOKである。ここでも抽象化が役に立っているわけだ。

 以上まででGPIOを使ったプログラムは問題なく動作する。

 3.SPI化
 SPI化に伴う、作業がいくつか発生する。
 1.初期設定
  各種レジスタの設定
  クロックの設定
  など

 2.プログラムの作成
  SPIの書き出し・読み込み
  LSB,MSB変換
  PS2コントローラはLSBファーストのシリアル通信フォーマットだが、今回利用したSSP(SPI1)ではMSBファーストしかサポートしていない。仕方が無いので、xSBを入れ替えるプログラムを作成した。

 以上、を踏まえてSPI化は成功した。SPIにしたメリットは大きい。クロック速度を自由に設定できるし、ソフトで読み取るよりも高速に読み出せる。プログラムが小さいこともメリットだ。ただ、別の機能をSPIで使うときもあると考えられるので、より自由度の高いGPIO方式も残しておくことにした。ヘッダファイルの #define でどちらの機能を使うか選択できるようにした。

2006年11月26日

DualShock 対応

ビルド 20061106 の改良として、DualShock の対応を行った。DualShock2まで一気に行きたかったけど、スタックの容量設定にてこずったので、ここまでで終了してしまった。 PS2 のコントローラ周りのプログラムは大きく変わってしまってそのテストとデバッグに時間がかかってしまった。

今回のキモはスタックの容量設定に尽きる。途中で変数が書き変わってしまうバグに悩まされたが、グローバル変数と割込みの退避領域が被ってしまっていた。

テストパターン


スタック増量前
>1211 0001 [Enter]
->GameTech コントローラモード

PS2コントローラの左方向キーを押しながら
>1200 [Enter]

0001
...
...

>0900 0001 0000 0000 [Enter]
->Motion 実行

PS2コントローラの左方向キーを押しながら
>1200 [Enter]

0002
^
....
....

============================
スタック増量後
>1211 0001 [Enter]
->GameTech コントローラモード

PS2コントローラの左方向キーを押しながら
>1200 [Enter]

0001
...
...

>0900 0001 0000 0000 [Enter]
->Motion 実行

PS2コントローラの左方向キーを押しながら
>1200 [Enter]

0001
^
....
....

PS2コントローラのパッド入力に対応した、ディスパッチャも問題なく動作する。

めでたし、めでたし。

2006年11月20日

3ヶ月でアカの他人

RoboShell Composer のページを作るべく、RoboShell Composer を久々に操作してみた。やばい、完全に操作を忘れている。適当な操作を繰り返していると、なにやらおかしな動きが…。開発当時ではテストしてないモードに入ったみたい。いいのか? わるいのか? 操作を覚えていないくらいだから、コードの何かさっぱりわからん、先達はおっしゃった 「プログラムなんて3ヶ月経てば、アカの他人よ。」この3ヶ月はパラメータになっているので、3ヶ月の場合もあれば3日もある。

どうにかこうにか、直して前のと差し替えた。

フー、危ないところだった。
そろそろ、使う人が増え始めたので、クレームが来るところだった。

2006年11月17日

RT に行きます

 とりあえず、手持ちの PC に RoboShell の開発環境を入れてみた。全部、動作を確認できた。かなり良い感じだ。

 土曜日の15:30にRTに RoboShell システムを持っていきます。実物や開発環境が見たい方はどうぞ。中川さんに出来上がったら、見せると約束してやっと出来たのでもって行くわけです。

 ドタキャンになったら、またの機会ということで。

 

2006年11月16日

開発環境一新

昨日からいじくりまわしている開発環境がなんとか動作を開始した。

設定方法はこちら

makefile を修正したり、いくつかファンクションを書き足した RoboShell もリリースできた。

GCC 4.1.1

RoboShell 自体もある程度しっかりしてきたので、開発環境の整備に取り組み始めた。今までの開発環境のセッティングはお世辞にもわかりやすいとは言えなかった。

現在は最新のコンパイラ(GCC4.1.x)と組み込み用 Eclipse (Zylin) をきちんと組み合わせた環境を構築している。これにより、あのCygwin を入れることなく、開発環境を構築できるようになった。デバッガもさくさく動く。

 GCC4.0.x -> GCC4.1.x のインパクトはけっこうあると聞いていたが、さすがに RoboShell 程度のソフトだと何も書き換えずにビルドすることが出来た。

この環境設定について近日中にWEBを制作します。お楽しみに!!

2006年11月14日

RoboShellSystem

Board
Board

外部制御が可能になったので、本格的に組み立ててみた。ロボットに必要な機能は一通り装備しているので、モーションをはじめとしたデータの精度向上と新たなロジックを組み込んでいけば、なんとかロボは出来そうだ。

リベンジ(動きました)

前回、バグバグだったRoboShellだがなんとか動作を開始した。不具合のポイントは

 1.スタックの容量不足
 2.ディスパッチャのループの廻し方の不良

などであった。
リンカスクリプトなども修正して、動作を開始した。マルチタスクっぽい処理が堪能できるのはうれしい。もう少し、使い込んで精度と信頼性を上げていく。

2006年11月13日

かっこ悪い(ごめんなさい)

バージョンアップをした RoboShell をアップしたけど、けっこうバグバグ。今度からちゃんとテストしたやつを上げますので勘弁してください。
少し原因がわかったので修正します。

2006年11月11日

RoboShell バージョンアップ

暫くぶりにRoboShellをバージョンアップした。今度は PS2 のコントローラの対応だ。それに加えて、色々な方がRoboShellを使ってくれるようになったので、非常に心強い。今後も様々な機能を取り入れていこうと思う。

PlayStation Pad の読み込み6

手持ちのプレイステーション2のコントローラが4種類あるので、挙動を調べてみた。

 1.純正コントローラ(有線)
 2.ゲームテック(無線)
 3.サイバーガジェット(有線)
 4.MadCatz(無線)

2のゲームテックのコントローラは他のコントローラとビットの出方が違う。修正用のコードを付加することで、問題なく読めるようになった。ここでアイデアが沸いた。このコントローラの違いだが、コードで対応するか?パラメータで対応するかだ。コードと言うのはコントローラを決め打ちにしてコードを固定化するもの。パラメータとはどちらのコントローラでも使えるように、コーディングして実行時に選択する方式である。幸い、コード領域のバジェットは潤沢なので、パラメータ方式にしてみるか?

2006年11月10日

PlayStation Pad の読み込み5

ワイヤレスのコントローラも接続してみた。でも、挙動が純正品と違う?懸案事項であった振動機能も使えた。

RoboShellのコンソールから
1210 0001 でモータが振動し、
1210 0000 で振動が停止する。

海外から取り寄せたワイヤレスコントローラやその他手持ちのコントローラ(純正品を入れると4種類)で色々と試してみるつもりである。

2006年11月08日

PlayStation Pad の読み込み4

読み込んだボタンのステータスからディスパッチするフレームワークを書き足してみた。ボタンの make/break で実行できるようになるわけだ。今はお約束のLEDの点灯を入れている。
ただ、実装がちょっとかっこ悪いので関数ポインタを使って、構造的に把握しやすいように改良する予定。そろそろ、ワイヤレスパッドの購入だな。

2006年11月07日

PlayStation Pad の読み込み3

とりあえず、Padの読み込みが出来るようになった。これで安価なPS2のコントローラをラジコンのコントローラ代わりに使えるようになる。当初はBTを実装しようと考えてもいたが、お手軽に出来るプラットフォームも必要だし、他のコントローラでも実装されているので採用してみた。ラジコンのプロポに比べて、プログラム次第で様々なギミックを入れることも出来る。バーチャファイターの様なボタン入力の組み合わせを一旦受けてから、デコードして各動作に結びつけるようなことも出来そう。楽しみ。

2006年10月27日

PlayStation Pad の読み込み

プレステ3の発売が目前だ。でも、RoboShell用に PSPad の読み込みプログラムを検討している。無線式のコントローラならそのままラジコンチックにロボを操縦できる。

GPIOをそのまま使って、ソフトにて読み込みソフトを作る予定。また、この実装はフレームワークにして機械的にコードが書けるようにする。RoboShellはタスクの切り分けがルール化されているので、それに適合して記述すればテストまで半自動的に実装することが可能だ。
動作確認が出来たら、WEBにて公開する予定。

2006年06月24日

Zylin CDT

Eclipse のC言語開発用プラグイン CDT を組み込み用に強化した Zylin CDT がなんとなく動作した。
以前のバージョンだと、make のオプションを展開できなかったが今回から出来るようになった。まだ、設定が甘いので使い込んではいないが、そろそろ本格的に使い込んでみようと思っている。
きちんと使いこなせばかなり強力な武器になりそうだ。