という格言を聞いたことがあるような、無いような。
今日は久しぶりに、4月ごろ作ったPICで複数のRCサーボを制御するプログラムのバグ原因究明を行った。結果、一日かけて原因が突き止められなかった。これ以上バグを追いかけても私の力では解決しそうに無いので、このコードは捨てて別のやり方でRCサーボの制御を行うことに決めた。
ただ単にRCサーボを制御する信号を作るなら、別にPICにこだわることは無い。この手のことは、マイコン内蔵タイマのPWM出力機能や、PLDを用いて作るのが上策。なんか、分散処理とかいうとかっこよさげだったのでPICでやってみようと思っただけのこと。 CPLDかFPGAは使えるようにしておきたいと思っているが、いまはPICで制御できるようにしてからでないと、なんか半端な気がするので、とりあえずはPICでRCサーボを複数個同時に制御できるところまでやる予定。もちろん、マルチCPU間通信も。
現在、マウスのソフト分析・設計と、ヒューマノイドのメカ設計、ソフトの要素技術実験の3件が同時並行で進んでいる。これって(私が開発に割ける時間的な)リソースが分散してしまって、開発効率が悪そう。 開発のタイムリミットが一番最初にくるのはマイクロマウスだが、ヒューマノイドのほうは「歩けるようになったらお見せしますよ」と幾人かに言ってしまった手前、早く見せられるようにしたい。 どっちつかずが、一番良くない。
やぱ、タイムリミットが近いマウス優先かな?
残すところ後2日で8月も終わり。小中学生諸君は、今ごろ夏休みの宿題に追われているところだろう。社会人になった私には「夏休みの宿題」なるものは無いが、8月中に片付けなければいけない仕事はあるわけで、今日は午前中は寝て過ごし、午後から会社に出て夜まで一人でお仕事。
22:00ごろ帰宅してから金剛(小型ヒューマノイド)の上半身メカ設計。今日は、バッテリとユーザインターフェースを格納するバックパックの設計をちょこちょこと。早いとこ設計をFIXして、加工・組み立てしたい。
最近のマイブーム。ブザー音を使ったデバッグ。LEDを使ったデバッグでは、LEDが光ったかどうかでほんの一瞬の出来事を捕らえるのは難しいが、音なら「あ、鳴った」とわかるので、組み込み系のデバッグには有効だと感じている。
ここからが本題。昨日のシステムコントローラの設計についてBBSに書き込みをいただいたので、調子に乗って要求仕様とか、大雑把なユースケースのあたりから公開してしまいます。
まずは、要求仕様をざっくり書いた表から。書き出したらきりがないので、細かいところは外部のドキュメントに頼ります。
| 番号 | BM03の要件 |
| 1 | 自律走行により迷路を探索し、ゴールまで到達すること。 |
| 2 | 迷路の条件は、全日本マイクロマウス大会の迷路に準拠すること。 |
| 3 | 迷路の最大サイズは16x16区画とし、最小サイズは3x3区画とする。 |
| 4 | マウスのハードウェアは、森永さんの「マイクロマウス初心者講座」で紹介されたBasicMouseを使用する。 |
| 5 | マウスのユーザインターフェースには、ボタンが4個、LCDが1個使用できる。 |
| 6 | 距離センサ用LEDを用いてマウスの内部状態を表示してもよい。 |
| 7 | 斜め走行とスラローム走行は(今のところは)行わない。 |
| 8 | 迷路探索走行(第1走行)とタイムアタック(第2走行)以外にも、センサの動作テスト機能と、モータの動作テスト機能を備えること。また、姿勢制御テスト機能を備えることが望ましい。 |
| 9 | 迷路探索のアルゴリズムは、等高線マップ法を使用する。 |
| 10 | 迷路探索のデバッグを支援するために、シリアル通信でマウスからPCに迷路情報を転送できること。 |
| 11 | OSは使用せず、自作のスケジューラでタスク管理を行うこと。 |
そして、要求仕様からマウスが提供する機能を抜き出して図にしたのが、こちらのユースケース図。(本当は、ユースケース図を先に描いた)
ユースケース仕様書とかシナリオは以前書いたのがあるけど、ここに載せるとくどいので省略。ここまできたら、トップレベルのユースケースをリリース単位として、分析、設計、実装、テストを繰り返す、という流れでいいのかな?
現在は、「UC-1 ユーザはセンサの動作をテストする」について、クラス図、シーケンス図、アクティビティ図、コラボレーション図を作成してみて、システムコントローラの位置付けで迷っているところ。
オブジェクト指向の概念とUMLの表記方法は学んだが、開発プロセスはまったく無し。UMLの講習を受けた他は、ほとんど独学。例えるなら、「空手の本を読んで一人で練習してるけど、道場に通って稽古したことはないよ」って感じ。実戦でどれだけ役に立つかは、推して知るべし。 < ケンカで経験積む?
そういう状況なので、オブジェクト指向経験者のアドバイスに飢えています。
定時退社日。寮会。夕食後、小型ヒューマノイド(金剛と命名)の上半身メカ設計とマイクロマウスのソフトウェア設計。
マウスのソフト設計をオブジェクト指向っぽくやっていて、ちょい疑問。システムコントローラって、どんな構造にするのが普通なの? とりあえず、以下の二通りを考えてみた。
「○○モード」とかをシステムの状態として扱えば、システムコントローラをStateパターンであらわせるはず。でも、RUPではコントローラがユースケースを制御するので、ユースケース毎にコントローラを用意していたような。
私の身の回り(職場)にこの手の議論をできる人がいないので、相談相手がいなくて困ってます。ご存知の方、アドバイスをお願いします。
仕事のほうが山場なので、退社する時間が22時前だと、今日は早く帰ってきたと勘違いするこの頃。 帰ってきて24時を過ぎてから作業をはじめると、もう眠くなっているのであまりはかどらない。 この状態は、9月いっぱいまで続く予定。「できる人」ってのは、どうやって時間を作り出しているのだろうかと不思議に思う。
今日は会社から帰ってきたら、先日注文したイエロースコープ(デバッガ)やバッテリ、充電器などが届いていた。作業を進めたいのは山々だが、明日は9時には実験室にスタバッてろとのことなので、ここの更新だけして午前3時前には寝るようにします。
2年位前(?)にH8のプログラミング用に購入して、使い方がわからないまま放置してあったYellowIDE。つい先日、YellowSoftのWebSiteで、YCH8やIDE(統合環境)が全部まとめてバージョンアップしているのをみて、ノートPCにインストールしておいたのを、今日試した。
感想。いいんですか、こんなに簡単に動いて!? な〜んも考えずにprintf("Hello");って書いてプログラムを実行したら、ちゃんとIDEのターミナルにHelloって出てるじゃないですか。この感動は、PICで言えば、MPLAB+CSSでC言語のプログラムを初めて書いて、なんのトラブルもなくサクサクっと動いてしまったときと同じくらいの感動。
YellowIDEを(正確に言えば、YCH8を)購入した当初(2年前)は使い方がまったくわからずお手上げ状態だったのに。 私の経験値が上がっているのはあるけれど、格段に使いやすくなっていることは間違いなし。もう、DOSベースのAKI-H8専用Cコンパイラには戻れません。
小型ヒューマノイドプロジェクト。ROBO-ONE第4回大会は、上半身を省略して、PIC1個のみのてきとーな回路を積んだだけで、歩くどころか全てのサーボに制御がかかるのが精一杯で終わってしまった。で、その続き。
マイコンやラジコンプロポ、受信機、バッテリなどの検討を経て、上半身の設計を開始。とりあえず腕は後回しにして、マイコンとバッテリ、受信機を収納する上体を作ることにした。RCサーボを制御するプログラムの方もやらなきゃとは思うのだが、形が見えたほうが嬉しいのでメカ優先。
組み込みプログラミングの世界ではまだまだ浸透していないオブジェクト指向。マイコン用のJavaコンパイラなんてないし、RTOSがC++をサポートしてないとかはよくあるはなし。ツールが全然そろっていない。
先日耳にした話では、UMLのモデリングツールとしてMicrosoftのVisioを使っているところが多いんだとか。私も仕事ではVisioを使っているが、値段が高い上に、UMLのダイアグラムもなんか変。そこで、Visioに替わるモデリングツールを探していて、Jude竹 に出会った。
JudeはJavaでかかれた、フリーのUMLモデリングツール。起動がちょっと遅いけど、使ってみた感じはVisioより良好。今日はJudeでマイクロマウスの簡単なユースケースとアクテビティ図、クラス図、シーケンス図を描いてみた。フリーソフトなので、人に勧めるなら Visio より Jude かな。
モデリングツールというより統合環境になるが、Eclipse とかもいいらしいと聞いている。そのうち使ってみて感想を述べるかもしれない。
ロボットを作る人が誰でも悩むバッテリ問題。
まずは電圧。RCサーボは定格4.8〜6Vで、アナログサーボなら7.2Vぶち込んでもなんとかOK。でも、定格7.2Vのニッケル水素電池って、満充電時は8V超えるしなぁ。 7.2Vを6Vに落とすのは、3端子レギュレータでは電圧降下が少なすぎて、ちとつらそう。DC-DCコンでも難しいか? 負荷がかかったときに多少電圧降下することを祈って、とりあえずそのままぶち込んでみます。
次に電流。電流もどれだけ必要なのかによってバッテリの容量変わる。バッテリの大きさ、数によって、ロボットのバッテリ保持部分の形状が決まる。モータの数からピーク時に流れる電流を見積もってみたが、見積もりが妥当かどうかはロボットを動かして電流を計測するまでわからない。少ない本数でやってみて、駄目なら増やせばいい?
充電器。AC電源から充電するタイプでは、急速充電といっても時間がかかる。その分安全性が高いけど。DC電源から充電するタイプは、自動車用バッテリなり、安定化電源なりが親電源に必要。自動車用バッテリをつかうなら、自動車用バッテリを充電する充電器も必要ってこと。
通販でバッテリ数本と充電器、ケーブル、コネクタ類を発注。結構お金かかります。つい先日もYellowSoftのデバッガ購入して3万円くらいかかってます。お金に羽が生えて飛んでいくようです・・・
誕生日だからといって何もないのは例年のこと。
今日は、会社のPCにはいっているIEのBookMarkと寮の自分のPCのBookMarkを整理統合してみた。重複しているものとか、リンク先が見つからないものとかを整理し、ディレクトリを新たに分けなおした。
ここのサイトのリンクも充実させたいし、RSJリポートも復活させたい。サイトのデザインやディレクトリ構造も変えたい、なんて思ってはいるが、やり始めると1ヶ月くらいはそちらに時間を持っていかれそうなので、あまり手間のかからないものをチョコチョコとUpdateしていくつもり。
今日はここしばらくロボットを口実にサボっていた剣道の稽古に、久しぶりに行ってきた。体力的に衰えていることは言うまでもないが、気力のほうが体力よりさらに衰えているのにはまいった。反省点が沢山。日ごろの鍛錬を怠ると、気力も衰え、ちょっと嫌なことがあると避けて通ろうとする軟弱野郎になるらしい。
巷では新手のコンピュータウィルス(MSブラスター)が猛威を振るっていたり、日記で日記に返事を書く変わった人達がいたり、久しぶりに友人からメールをもらったり、日経平均株価が10000円代に回復していたり、いろいろ。
お盆なので実家に帰省。雨と帰省ラッシュで大渋滞。
昨日は祝勝会の3次会まで行ったおかげで今日は朝が遅い。しかし、ホテルにはチェックアウトの時間があるので9時半には1階ロビーに下りてきたら、夢さんとHiro-Hiro-Elevenの二人、九州大学のみなさん、すがわらさんと遭遇。チェックアウト後は、みんなで駄弁ったり、電話番号を交換したり、デジカメでとった写真をコピーしたりした。
台風が通り過ぎて晴れ渡り、くそ暑い中を大きな荷物を抱えたまま三島まで帰り、荷物も片付けないまま今後の構想とスケジュールを検討。マイクロマウスの全日本大会が11/22,23、東日本地区大会が(たぶん)9/23なので、そろそろソフト作りに入りたい。二足は上半身の設計、回路設計、操縦方法の検討、ソフト設計、モーションの作り方検討など、課題は盛りだくさん。熱が冷めないうちに下半身だけでも歩かせようか、上半身もつけたうえで全体を軽量化してから歩行モーションを作ろうか、まだ未定。
仕事も片付かない、ROBO-ONEの準備もできないというまま、8月に突入。休出すればロボットが気がかりで、寮でロボットを作っていれば仕事が気がかりという悪循環。これと決めたら終わるまで余所見をしない集中力が欲しい。
今日で関東地方も梅雨明けしたらしい。空の雲が完全な夏の雲になっており、日差しも強い。日向に駐車してある車は車内がサウナ状態になっており、ハンドルも触ればやけどするくらいに熱くなっている。うん、これが夏だ。
今日までの成果は写真のとおり。大きさを実感していただくために、バナナと35cmの物差しを添えてみました。これでとりあえずメカは終わり。次はエレキ系。大会まであと5日・・・。