BROKEN's Advanced Vehicle Laboratory

開発日報 2002年 5月

日報 2002年 5月31日 金曜日 悪い癖

予定では今日秋葉原に買出しに行くことになっていたのだが、外は雨模様なので出かけるのは明日にした。 出かけない分、振り子を止める制御の理論立てをしてみることにした。

理論立てといっても、教科書見ながら手順どおりに式を展開していくだけのこと。 しかし、教科書に振り子を止める制御が書いてあるわけではないので、途中でつまづく、転ぶ、訳がわからなくなる(爆)  今回作ったモデルでは、外力をまったく加えなければ(状態方程式の)システム行列の固有値の実部が0になるので、持続した振動になる・・・なんてことは、別に固有値なんて求めなくてもわかり切った事だわな。 リカッチ方程式ってなに?状態なので最適レギュレータはさっさとあきらめて、極配置法でのフィードバック制御系設計を試みるも、どうも上手く式が展開できなくてちょっと逃げ腰に。 目の前にちょっとした壁が立ちはだかるとすぐ逃げ腰になる。 これが私の悪い癖。

朝から何も食べずにそんなことをしていたので、気分転換がてら買い物に。 いろいろ買い物をして帰ってきて,部屋で遅い昼ご飯を食べたのが3時くらい。 今日は寮の夕食をストップしてなかったことに気づいたのが6時くらい。 腹が全然減ってないので夕飯の時間を9時ぐらいに延長。 そしたらTVでワールドカップの初戦を放送していた。 ワールドカップはあんまり興味なし。 韓国と日本が仲良くなるのは大いに結構。 ここで政治的なことを書いてどこかから圧力がかかるといやなので、余計なことは言わないようにしようかな。

日報 2002年 5月30日 木曜日 やる気と根気

今日、明日、土日と4連休。 朝はいつもよりゆっくり起きようと思ったら、寮の掃除のおばさんが朝9時には廊下で掃除機をガーガーやってくれるもんだから仕方なく起きた。 TVをつけてもワイドショーばっかりですごくつまらないので、さっそく車輪式倒立振子の理論立てに取り掛かった。 支点が水平方向に移動できる振子のシミュレーションもバッチリ。 次は支点に水平方向の力を加えることで振子をピタッととめるような制御をしてみる予定。

午後から久しぶりに「4脚移動ロボット入門」に加筆。 歩行パターンの gifアニメを加えてみた。 アニメーションを作るのって結構手間がかかる。 肩こった。 やる気はあるのだが、手間がかかるので気持ちが続かない。 でも、参考にしてくれる人がいる以上、なんとか書き上げたい。(けど、もう忘れてしまったことも多々あったりする。)

ちょこっとトップページのデザインを変えてみたのだが、こうしてみると書こうと思っているのに全然書いていない/書きかけのままのコンテンツがなんと多いことか。 まずは過去コンテンツの移植から片付けて、メインになるものはじっくり腰を据えて書くことにしよう。

日報 2002年 5月28日 火曜日 単振子のシミュレーション 改

昨日に引き続き、単振子のシミュレーション。 昨日は線形近似で片付けていたところを線形じゃなくて sin とかがそのまま入った形でシミュレーションしてみた。 動きはバッチリ。 振子といっても重りを糸で吊っているわけじゃないので、重りが支点の真上を越えてしまうとグルグル回ってしまう(笑) まだ少しだけ振幅が大きくなっていく傾向があるが、これは積分をルンゲクッタ法にでもしない限りは抑えられそうに無いので良いことにする。 単振子の運動方程式を正しく導けていることが確認できたので、今度は単振子の支点を水平方向に移動して重りををピタッと一発でとめる制御のシミュレーションを行う予定。 それが出来たら、あとは逆さまにすれば倒立振子になるでしょ。ならないかな?

そういうことを考えながら、大学の授業で使った現代制御理論の本をパラパラとめくって制御則を設計するまでの流れを確認。 安定性とか、可観測性とか、リカッチ方程式とか。 まぁいいやって感じ(爆) 目標としては積分要素つき最適レギュレータによる状態フィードバックだけど、リカッチ方程式ってよくわかってないから、できなかったら極配置法で済ませよう(^_^;)

日報 2002年 5月27日 月曜日 単振子の動力学シミュレーション

実は昨日、車輪型倒立振子の制御則を設計しようとしたのだけれど、車輪型倒立振子の運動方程式が(私の力不足で)立てられなくってそれでおしまいになっていた。 今日は仕事のほうも余裕があるので早めに帰り、まずは簡単な単振子の運動方程式を立てて、その運動方程式を使って力学的な計算機シミュレーションを行ってみた。 シミュレーションの結果は、お得意のOpenGLで視覚化してアニメーションで確認。

出来栄えはまあまあ。 振子はそれらしい動きをするのだけれど、制御系の設計をするときに状態方程式を用いる都合上運動方程式を線形近似して状態方程式にしてしまったせいか、時間がたつにつれて微妙に振幅が大きくなり、ほおっておくと発散してしまう。 ま、そんなに大きな角度では制御できないだろうから気にしなくて良いかもしれないけど。 でもちょっと不満。 OpenGLによるシミュレーション入門は、あとでまとめてUPする予定。

しかし、運動方程式ひとつまともに立てられなくなっていることには驚いた。 これじゃ、どんな大きさでどんな重さのものを作ったらどれくらいのモータトルクが必要になるのか見積もりが立てられない。 もともと厳密に計算する気は無いし、作ったものの慣性モーメントなんて正確に計測できると思っていないけれど。 でも、運動方程式が立てられないのはまずい。高校生に戻りたい。

日報 2002年 5月26日 日曜日 DCモータのPWM制御

昨日はビールを飲んでTVをつけっぱなしにしたまま早くから寝てしまったため、今朝方3時には目が覚めてしまった。 目が覚めた本当の原因は、うるさい蚊のせいだったのだが。

昨日の遅れを取り戻すべく、今日は朝からDCモータのPWM制御実験。 配線は間違ってない。 プログラムも間違ってない・・・とおもったら、一部間違っていた。 モータドライバには東芝のTA8440Hを使用。 周期 100[us]、デューティ比 0.25 でチョッピングしてみたところ、ギュルギュルギュル、という噛合わせの悪いギアの音を立ててDCモータが回った。

電源には安定化電源を使用しているのだが、最初は電流を絞っていたせいで、モータが回り始めようとしたらマイコンにリセットがかかってしまった。 いつもの突入電流のせい。 回路に手を加えるのが面倒だったので、とりあえず安定化電源の電流を大きめにして回避。次の回路設計には突入電流を補償するためにコンデンサとダイオードを組み込む必要あり。

車輪を手で止めてみると、ヒーーーンという高い音がする。 私の耳では周波数まではわからないが、これはきっとチョッピングの周波数と一致しているはず。 チョッピングの周期が100[us]だから、周波数に直せば 10[kHz]。 人間の可聴域はだいたい50Hz〜20kHzだっけ? ということで、可聴域に入っているので、周期を 50[us]くらいにすれば可聴域をはずせるはず。 と思って、周期を 50[us] にしてみたら、車輪を手で止めても高い音がしなくなった。 PWM波形をこんなに早い周期でソフトウェアで作ろうとしたら結構大変だと思うけど、(H8/3664の)タイマVで作っているので、CPUには何も負担がかかっていない(はず)。

デューティ比をいろいろいじってみたが、まあそれらしい回転数でモータが回っているみたい。 回っているみたい、というのは、モータの回転数を計測する手段を持っていないから。 モータの回転数を計測する方法はいろいろあるようだけど、もっとも直接的なのはタコジェネつけて、タコジェネが発電する電圧を測るという方法。 同じようなやり方では、ロータリーエンコーダをつけて、一定時間内のパルス数を数えるという方法。 でも、手元にタコジェネもエンコーダも無い。 (実はエンコーダはエンコーダは1個だけある。) そういったものを使わないでモータの回転数を計測するなら、モータの逆起電力から計測する方法とモータ電流のリプルから計測する方法がある、とものの本には書いてあるのだけれど、リプルってなんだろ?? とにかく、抵抗を3個プラスしてブリッジを組んでモータの逆起電力をADに取り込めば、回転数の計測は何とかなりそう。 でも、車輪型倒立振子の制御にDCモータの回転数って計測する必要があるのかな? 理論立てをしてないので、理論立てが先になきゃ話にならないかも。

理論立てはやるものとして、あと必要なのはLCDに文字列を表示することと、AD変換かな。

日報 2002年 5月25日 土曜日 雑事

私にとっての大連休がスタート。 今週末から来週末にかけてどのように過ごすかと言うプランを立てて、2月ごろ後輩の結婚式で撮った写真をいままでほったらかしにしてあったものをCD-Rに焼いて、封筒に入れて発送準備。  封筒に宛名を書いている最中に大学の剣道部で同期だったT氏から電話があって、ちょっと長話。 何を探していたのかは忘れたが、押入れをごそごそ漁っていたら「研究資料」と書かれた、引越しに使ったダンボールを発見。 中の資料を吟味しながら、これはhpのネタに使えそうだとか、もう一変勉強しなおそうとか、引きずり出した資料を本棚に移した。 夕方には近所のコンビニに夕飯とビールを買いに行って、それからTVを見ながら一杯やった。 そんなことをしているから、今日立てたプランなんぞ消化できるわけも無く、すでに計画倒れ。 でも、まあまあ有意義な一日だったと思うゾ。

日報 2002年 5月24日 金曜日 フヌケだけど有意義な一日

今日も昨日に引き続き展示会だけど、私は三島でお留守番。 資料の整理やら問題点の整理などをして一日を過ごした。 午後5時に近づこうというころになって、展示会場に行っているSさんから電話で「これから飲むから、小田原まで来い」とのこと。 三島から小田原までは電車で40分。 行くか行かないかちょっと迷った。 Nさんからの電話だったら迷わず行ってた(笑)

久しぶりに、定時退社日じゃないのに定時に退社できたので、洗濯物をしたり買い物に出たりした。 そして、つい先日新聞の折り込み広告で目をつけていた卓上ボール盤を大購入! といっても、値段は\6,000ちょっとなので結構安い買い物。 ロボットに限らず、工作をするのにボール盤は必需品。 これが無いと正確な穴あけが出来ません。 マイクロマウスで有名な森永さん曰く、「モータを買う前に、この工具を買うべきです」。 今週末は土日まるまる休み。 そして、来週末は連休中の代休2日を土日にくっつけて4連休の予定。 ロボット作りと研究、hp更新にスパートをかけるぞ!

気づかなかったけど、今日は給料日だったらしい・・・。

日報 2002年 5月23日 木曜日 一段落

今日は社内の展示会で朝から神奈川の奥地まで出張。 一日立ちっぱなしで説明員に徹した。 朝、電車の中でボケっと寝ていて気が付いたら降りる駅になっていて、慌てて降りて切符を無くした。 改札で改めて\650を支払った。 アホだ。 私が手がけているシロモノの出来は、まあまあ。 たまに狙ったとおりに動かないこともあったが、社長の前ではほぼ100%、狙ったとおりの動きをしてくれた。 観客の反応も上々。 私が説明員をやるのは今日だけなので、これで一段落。 今週末から来週くらいはプレッシャーから開放された生活が出来そうだ。

帰りはYさんに車で送ってもらったのだが、どうみてもふつーに走っていて突然スピード違反で捉まった。 誘導されてたどり着いたところには、同じようにスピード違反で捉まった車が数台列をなしていた。 ちょっと立腹。 Yさん、わざわざ送っていただいたのに、申し訳ないです、ほんと。

日報 2002年 5月20日 月曜日 結果が出たのか、出なかったのか

昨日片付かなかった問題点を考えながら出社してみたら、今日は朝からプロジェクトチーム内でのミーティングだった。そんなことはすっかり忘れていたし、私が朝来なくても当たり前のようにミーティングが始まっていた(爆) およそ30分の遅刻。ごめんなさい。 ミーティング中、私が現在抱えている問題点を説明。 展示会が近いから、とりあえずはデモ環境でちゃんと動くようなセッティングにしておこうか、ということで。 問題点を解決しないで先送り。 おかげでデモ環境ならばバッチリ動くようになった。 これって、結果が出たというのだろうか?

日報 2002年 5月19日 日曜日 結果が出なけりゃ、やってないのと同じ事

今日も昼からこっそり出社して、一人でお仕事。 昨日燻り出した問題点の原因が積分の精度によるものなんじゃないかと踏んでいたのでオイラー積分を台形積分に変えてみたり、サンプリングレートを倍にしてみたりしたけど、たいした効果は無し。 とりあえずのパッチ充てだけして、眉間にしわを寄せたまま22時ごろ寮に戻った。 明日いっぱいで出来てなきゃいけないことが、出来そうな目処が立たない。 出来てなきゃいけないことが出来ていないなら、それはやってないのと同じ事。 プレッシャーとストレスで笑顔が消えている。(まだ徹夜してない分だけ余裕があるかな?)

最近、ART-Linux にちょっとだけ興味があるのだが、いまのところインストールしても使い道が無いので保留中。 カラー液晶のデジタルオシロがノートPC1台分程度のお金で買えるらしいことを聞いて、これにも心が揺らいでいる。 買うべきか、我慢するべきか。

日報 2002年 5月18日 土曜日 休出はお金にならない!?

来週末が本番ということで、今週末も休日出勤。 今月も残業時間の記録をつけていないため、そろそろイエローゾーンに入ったのではないかとヒヤヒヤしながらタイムカードを切らずに休出。 したがって、休出は残業代としてカウントされない。ここしばらく、ほとんど毎日24時以降に帰宅して休日も出勤というペースで来ているので、体力的にも精神的に結構疲労が来ている。 しかし、出来ていなければならないことが出来ていないので、時間がかかってもやるしかない。

そんなわけで、趣味のほうは時間を作ることも出来ず、一歩も進まない。 楽しみが無かったらやってらんね〜〜ヽ(´ー`)ノ

ロボットの話はさておき、今日はDVDでハリポタを見た。原作の第1巻はすでに読んだのでストーリーはわかっていたが、それでも楽しめた。ちょっと話をすっ飛ばしすぎ。原作のほうは4巻まで買ったのに、いまだに2巻の途中で止まったまま。それは電車に乗ったときしか本を読まないから。 結局、「積読」だけ。

日報 2002年 5月15日 水曜日 25時帰宅は体に悪い

仕事は今週〜来週末まで大忙し。 今日は定時退社日なので5時には仕事をストップして帰ってきたが、ここのところ水曜日は仕事をもって帰って進めていることが少なからずあったような気がする。 水曜日以外は出来る限り22時には仕事を終わらせようとは思っているのだが、どうも25時になってしまう傾向がある。 体力的にも精神的にも良くない。

今日は寮での夕食の後で携帯に入っている電話番号の整理をした。 こんなことするのって2、3年ぶりかも。 もう二度とかけないしかかっても来ないことが確定している電話番号を削除しつつ、きまぐれに旧友に電話をかけたりした。 名前を見ても誰だか思い出せない人が1名。 削除するかどうかは迷うところか。

ロボット作成のほうはスケジュールの引きなおしが必要。 秋のマイクロマウスの大会も視野に入れて。

日報 2002年 5月11日 日曜日 タイマVがやっと動いた

H8/3664のタイマVがやっと動いてくれた。タイマAの動作確認はすでに済ませている。タイマAはサンプルプログラムがあったのですぐに出来たのだが、タイマVはサンプルプログラムが無いのでマニュアルを見ながらコーディング。いろいろと勘違いしていたことがあったけれど、ようやく思い通りの動きをするようになってくれた。

今日の写真は、周期 100μs、デューティ比 0.25 のデューティパルスを出力して、アナログオシロで出力波形を確認したところ。 最初はLEDを点滅させて目で確認するつもりだったのだが、タイマVはシステムクロックが16MHzだと最大でもおよそ 1ms 周期まででしか動けないので、さすがにこのレベルでは目で確認できなくてオシロスコープで確認することにした。 ちなみに、LEDは点滅せずにふつーに光っているようにしか見えません。

タイマVが使えるようになったことで、1μs〜1ms 程度の幅で、任意のデューティパルスが出せるようになった。 次はタイマWに挑戦。できれば、(ステッピングモータを回す都合上)4相ノンオーバーラップでデューティパルスを出したいのだけれど、これはタイマWで出来るのかな?

日報 2002年 5月10日 金曜日 無題

いつもお世話になっている(毎日見ていると言う意味で)AAFおぎちゅ〜さんのところと、SuperMachineRがここのところ相次いでお休み中。ちょっと寂しい。

先日のマイクロマウスがステッピングモータの突入電流でリセットしてしまう問題は昨日解決。電解コンデンサに470μFのものを使用したらリセットがかからなくなった。 でも、モータは脱調気味。それはプログラムが悪いから。 左モータは動くのに右モータは動かない。モータドライバまわりの回路も見直しが必要。 まずはモータが正常に動くことを確認するプログラムを書くことから始めるか。

メインPCとして使用しているノートPCの調子がよろしくない。Cドライブも残り容量がわずか。LinuxとWinMeのデュアルブート仕様にしてあるが、Linuxを立ち上げることはほとんど無いのでHDDの肥しとなっている。 再インストールしたいけど、環境を再構築するのに丸一日かかるので簡単には手をつけられないでいる。

仕事のほうは、ようやく希望の光が見えてきたところ。なんとかなりそう。昨日も今日も、一人奥まった実環境試験室でプログラムを書いてはデバッグを繰り返していたので、Nさんとおしゃべりできなくって寂しい(ノ_・、) 明日の土曜日も通常どおり出勤予定。

日報 2002年 5月 8日 水曜日 お持ち帰り

今日は水曜日なので定時退社。 でも仕事のほうが全然進んでいないので、今週の目標をクリアすべく会社のノートPCを寮に持ち帰って自分の部屋でプログラムの続きを書く。 なんだか最近、水曜日はこういうケースが結構あるような気がする。 おかげで水曜日は剣道はずっとサボり気味。

最近に限ったことではないが、仕事中、実験室で駄弁ってしまうことがよくある。 限られた時間の中で仕事をしているので良くないことだとは思うけど、ついつい。 実験室じゃなくて、事務室や実環境試験室(?)でプログラムを書いているときは一人で黙々とこなすのだけれど。 要反省。 でも、おしゃべりはしたい(爆)

今日のおしゃべりの中で出てきたことで一つ。(hpの)BBSを見ると(運営している人の)人柄が判る、といわれてちょっと焦った。 確かにそうかも? 見られて困るものではないけれど。

仕事を持ち帰ってしまったので、今日はプロジェクトの進展なし。 現在、9日(木)の午前2時。これ以上hp更新などをしていると明日(?)朝起きられなくなるのでもう寝る。

日報 2002年 5月 6日 月曜日 連休最終日

ゴールデンウィークも今日で終わり。 連休前に仕事が片付かなかったことが気になって、実家から戻ってくる日を一日繰り上げて今日はこっそり出社してお仕事。 ほんのちょっぴり進めてきた。

今日も少しだけ3664の実験。 タイマーAのオーバーフロー割り込みでLEDが点滅するプログラムと、ボタンが押されたらLEDが点灯するプログラムをアセンブリ言語で書いた。 リセットベクタや割り込みベクタの設定で、3048ならば .DATA.L とするところを 3664ならば .DATA.W とするのが今日のポイント。 アドバンスとモードで動いている3048は割り込みベクタの大きさがLong word ( = 4Byte)なのだが、ノーマルモードで動いている3664はword( = 2Byte)サイズだから。 

ボタンを押すとLEDが点灯するプログラムのほうは、Port2に取り付けたボタンのところにプルアップ抵抗を付け忘れていて、いくらプログラムを見直してもらちがあかないという状況になってしまった。 以前ならここで投げ出してしまうところだが、今日は少しだけ使い方を覚えたモニタデバッガが威力を発揮。 ボタンが押されてもPort2のbit0がHighになっていないことがわかり、プルアップ抵抗が無いことに気が付いた。 モニタデバッガ、なかなか便利です。 (仕事ではJTAG ICE使ってるけど。 FULL ICEは使ったことありません。)

職場の先輩から「マイコンの機能を一通り覚えるまではアセンブリ言語でプログラムを書くことをお勧めするよ」と言われたので今のところアセンブリ言語で3664の実験用プログラムを書いているのだが、必要最低限度の記述しかしなくて済むし、モニタデバッガを使ったときもレジスタやメモリの中身に何が入っているべきなのかが追跡しやすくてとってもGood。 いきなりC言語で書いてしまうとスタートアップルーチンが『おまじない』になって、何をしているのかさっぱり理解できないだろう。 マイコンのプログラムはアセンブリ言語から始めるのがベストなのではないだろうか。(機能が単純なマイコンに限るけど。)

ついでに。 マイコンの電圧が突入電流により下がってしまうことの対策について、BBSで久我さんからアドバイスをいただいたので、電解コンデンサとダイオードを追加してみた。 けど、やっぱりリセットがかかってるみたい。 あくまで、かかってる「みたい」。 ステッピングモータのコネクタをはずすとこの現象がでなくなるから、突入電流が犯人かなぁと踏んではいるのだが、マイコンに供給される電流の変化がどのようになっているのかを確かめる術が、いまのところ見当たらない。 ふるーいアナログオシロならあるけど、単発で起きる現象は捉えられないよなぁ・・・。 プログラムに問題があることも判っているけど、これはまだ少し保留。

実家に帰省した折、このサイトについて100%文系の知人から「日本語で書いて欲しい」との要望をもらった。 たしかにマイコンや電子回路、ロボットについて全然知らない人が読むのには辛いサイトになっているかもしれない(^_^;) 日本語で書いているつもりなんだけどな〜〜〜。

2002年 5月2日〜5日 帰省

日報 2002年 5月 1日 水曜日 本格的に連休

昨日、一昨日と出勤してしまったので、私の連休は今日から本格的に始まる。 連休といってもやることはいつもの休みと大して変わりが無かったりして(爆) それでもhpの移植作業をコツコツと進めたり、H8/3664Fのプログラムをいじってみたり、有意義といえば有意義な時間を過ごしている。

今日の成果その1。 「RSJ99リポート」と「RTLinuxによるリアルタイム制御とOpenGLによるシミュレータの構築」という2つの旧コンテンツの移植が完了したこと。 後者はGoogleとかでRTLinuxとOpenGLをキーワードにするとトップでヒットする。 けど。 内容に関してはちょっと不満あり。 捨ててしまおうと思ったこともあるのだが、たま〜に質問のメールとかが来るので、必要とする人もいるんだなぁと思って残すことにした。 RTLinuxはVer.3まで出ているらしいので、時間を見つけて遊んでみたい。 ・・・でも、何に使おう?

今日の成果その1.5くらい。 ちょっと中途半端なので。 写真中央に移っているのが今日作成したH8/3664Fの簡易実験装置。 LEDx2とボタンx1を追加しただけ。 電源には普段は安定化電源を使っているのだが、明日から実家に帰省するので、実家でも簡単に実験が出来るよう、乾電池のBOXをつないでみた。 写真ではわからないけれど、一応赤と緑のLEDが交互に1秒間隔で光っている。

写真右上は、例の車輪型倒立振子のフレームと車輪とギアとモータ。 ボール盤が無いので穴あけの工作精度が悪くて、ギアが上手く噛合わなくて困っているやつ。 ギア比の計算もしてないのでトルクも足らない。 どんなもんか試しにかるく作ってみた試作品なので、後でちゃんと計算して作り直す予定。 

左上に写っているのは先ほどのフレームに載せるために作ったマザーボード。3664とモータドライバ(TA8440H)とLEDx4が付いているだけ。 加速度センサも付く予定。 なにが中途半端かというと、今日はLEDを交互に点滅させて、モニタデバッガなるものをはじめて動かしてみて満足して終わってしまったから。 結局何も進んでなかったりして・・・(^_^;)

今日、昨年作ったマイクロマウスを修理していて気が付いたことが一つ。 どうもモータが回り始める瞬間に大電流を必要としているらしく、モータがビクッと回ろうとするとマイコンにリセットがかかっているような雰囲気が見られた。 突入電流を補うために470μFという結構大き目の電解コンデンサを積んでるんだけどなぁ。 どうしたら良いんでしょーか?