【2006/04/28】
ちょっと考え直し
ここ暫くTekuRoboを留守にしておりました。ここのコラムに書き込むのも2年半ぶりです。この1年間は仕事が異常なほど忙しく、全く趣味を楽しむ余裕がありませんでした。力弥の仕事はテレビ局で番組を作り放送するためのシステム設計です。昨今の地上波デジタル放送に対応するための設備更新により、あと1年程度は特に忙しい日々が続きそうです。
ところで留守にしている間、業界内の情勢は色々な面で変化してきたようです。先ず、市販の二足歩行ロボットがキットで手軽な価格になってきて、更に教示機能の実現によって簡単にモーションの作成ができるなど、より一層手軽に二足歩行ロボットを楽しむことができるようになりました。メーカーから色々なオプションパーツやコントローラなどが準備されていますし、ROBO ONE大会なども非常に裾野の広さを感じます。また、自作派クリエイターの方々の作品にも、当然のように加速度センサーやジャイロなどが搭載され、より安定した姿勢制御を行っている様が伺えます。一方、各種CPUデバイスやプログラミングの開発ツールなどを見てみると、劇的な変化こそありませんが、どんどんバージョンアップがされているようです。
そのような状況の中、ずっと留守にしていた力弥は既に取り残された感があります。知っているCPUは既に過去のものとなり、使っているツールも既に過去のバージョンで使用期限が過ぎていたりします。また、TekuRoboに掲載している技術解説なども陳腐化している点は否めません。このような最新の技術動向を追いかける分野では、やはり常に走り続けていないと付いて行けなくなるというのが実感です。それにもまして、二足歩行ロボットが商業的に一般的なものになってしまい、この分野を開拓してみようという当初の情熱が薄れてきたというのも確かです。それに合わせて「TekuRobo工作室」の存在意義自体も薄れているのではないかと思え、このまま閉幕しようかとも考えました。(-
-;
TekuRoboでは今まで、ギヤードDCモーターやギヤードステッピングモーターを利用したロボットの可能性を探ってきました。元々ロボット作りを始めた当初、ラジコン用のサーボモータがトルクや稼動範囲などの点で非力であったことから、ギヤーボックスやギヤードDCモーターをアクチュエータとして利用する方向性としました。しかし今では、駆動能力や制御性や手軽さなどの全ての点において市販のサーボモータが優位にあることは間違いありません。
ところで、TekuRoboが目指すものは何なのだろうと原点に立ち返ってちょっと考えてみました。今まではマイコンプログラミングの基礎実験と、板金加工による機体の自作ばかりに時間を取られました。しかし、もともと力弥が作りたかったのは、色々な行動能力を身に付けて行き、自律的に動き回るインテリジェンスな二足歩行ロボットでした。つまり、様々なセンサーによる外界環境の認知と、それらの情報を処理して動作に還元するための姿勢制御。また、ちょっとは人口知能的な要素や、経験を積むことによって一定のことを学習したり、行動パターンが変化したり、といったロボットを目標にしていたのです。そう考えると、主題のセンサー技術や知能的なプログラミングには全然至っておらず、ロボット本体のボディー作りや、アクチュエータに何を使うかなどということはあまり重要なことではないのではないかと思うようになりました。当然、自作派を名乗るのであれば自分だけの機体を組み上げ、オリジナリティを追求するということは基本でしょう。しかし、ただでさえ時間が無い毎日のなかで、主題以外の部分に余計な時間が割かれて先に進むことができないというのは非常にもったいないことです。
ということで、KONDO近藤科学さんの二足歩行ロボットキットKHR−1を買ってしまいました。(^^;;;
ちょうどバリューセットというものがあったので、ガニマタに対応するための旋回軸ユニット付きです。目的はRED
Versionのサーボ入手のついでにボディ板金も一緒に揃えてしまおうということと、市販品で最も一般的と思えるセットを実際にいじってみて、今までのブランクを手っ取り早く埋めて勉強するため、そして、デファクトスタンダードとも言えるKHR−1に対応した改造や機能追加は、ともに情報を交換できる仲間が増えるのではないかと思ったからです。もともと自作派の力弥にとって、市販品のキットを購入するということは正直言って不本意というか、自分に負けたといった気持ちの伴うものですし、TekuRoboをずっと見守っていて下さった方々からも「結局そうなるのかよ!」といった落胆の声が聞こえてきそうなのですが、その批判は甘んじてお受けすることとします。今はロボットにより行動力を持たせるための研究に足を踏み入れたいという気持ちを優先しましょう。前回のコラムでいうところの「10から始めて20を目指す」といったところでしょうか。ちょっとの間、標準のKHR−1で遊んでみて、その後どう手を加えていくかを考えてみたいと思います。まだまだ仕事が忙しい状況が続きますが、今まで同様に少しずつ進めて行きますので、気長に見守って下さい。m(_
_)m
【2003/11/16】
近道と遠回り
最近、力弥にとってのホビーロボット業界の情報源は、雑誌の「ロボコンマガジン」と、定期的にメールで送られてくる「ツクモメールニュースロボコン版」です。これらからの情報を見ていると、ここ1年ほどの自作2足歩行ロボットのブームと、それ用のパッケージ化されたマイコン製品の進歩に驚かされます。また、2足歩行ロボットのキットが数十万円という値段で売り出され、ROBO ONEに出場できる!などと謳われていたりもします。ROBO ONEという舞台が、くすぶっていたオリジナル2足歩行ロボットの熱に火を点けたことは間違いありません。また多くのベンチャー企業が、簡単に高機能を実現するための自作ツールや自作キットの販売に参入して来ていることも、力弥にとって予想していなかったことです。一部の自作派が個人的に作ったツールなどがベンチャーとコラボレートして世に商品を送り出すという事例などもあり、自作2足歩行ロボットを取り巻く状況は商業的な要素が加わり、大きく変わりつつあることを感じます。
確かに、これも当然の流れかもしれません。2足歩行ロボットを自作するために、今まで当然だと思っていたマイコンプログラミングの修行や、電気的、機械的ハードウエアの勉強など、いわば専門的な知識を必要とせずに高機能なロボットが組めてしまう時代に突入するのです。1から始めて10で満足する時代から、10から始めて20、30を目指す時代ということでしょうか。基本機能はパッケージ化され、より高機能を実現するための足場が着実に増えつつあります。そして、それが個人ベースではなく、企業が参入して商品化によって行なわれ加速しそうです。
こういった今の状況について、力弥は複雑な想いで見ています。自作2足歩行ロボットの裾野が広がり、色々な可能性が出てきている点については、非常に興味があるところで今後が楽しみです。専門的な知識が無くても夢の2足歩行ロボットが自作できてしまうのですから、仕事に疲れた大人たちなどを中心にブレークするかもしれません。一部のメーカーが作った高価なロボット以外に、より安価なホビーとしての2足歩行ロボットが一般化して行く可能性が非常に高くなりました。
一方で、1から自分で作らなければ気がすまない人(力弥など)にとって、パッケージ品を買ってきて組み合わせるだけなんて非常につまらないと感じてしまうのです。例えROBO ONEに参戦するにしても、キットで買ってきたロボットで参加して、何の意味があるのだろう...と。やはり自分の創意工夫から難産で生まれたロボットでないと、つならない気がしています。でも、そんなことを言っているとすぐに時代に取り残されてしまうことも知っています。マイコン出始めの頃にアセンブラで鳴らした人が、「C言語なんてアセンブラほど木目細かなプログラミングは出来ないし、つまらないよ」などと言うのに似ています。(そんな人がいたかどうかは知りませんが...)個人ベースで開発を進めて、時代を引っ張って行けるだけの成果を出せれば一番楽しいのですが、世の中そう甘くもありません。要は、技術的な基本は押さえつつ、市販されるパッケージ品をどう取り込み、自分なりのアレンジを加えていってオリジナリティを出して行くかということでしょうか。市販品を上手に利用して楽をする手も考えなければいけない時期に入っているとも感じます。
一般向けに作られるメーカー品に対向するためには、個人ベースでこだわりをもった木目の細やかさが勝負です。そこまでやるか!というくらい掘り下げないといけないでしょう。それには自分自信の知識と技術力を広めることだけが頼りです。また、世の流れとはちょっと違った視点に立ったアプローチも必要でしょう。同じことをやっていては、ついて行けなくなるだけですから...。最近の周囲の技術的な進歩に多少(?)のあせりを感じつつ、TekuRobo自体の存在意義に自問自答をしていますが、出来上がったロボットで遊ぶことが目的ではなく、あくまでロボット作りの過程を楽しむのがこのTekuRoboの目的ですので、初心を忘れないように、遠回りでもマイペースで進んで行こうかと思う今日この頃です。(^^;
【2002/08/30】
歩行って難しくて楽しい! (写真をクリックすると歩行ムービーをダウンロードできます。avi 2.8MB)
今回は、TekuRobo2号の電装系が出来てから、実際に歩き出すまでの約2ヶ月間の苦労話を紹介させてください。ここで書き留めておかないと、すぐに忘れてしまいそうなので。(^^; グチばかりですが、お時間がある方はお付き合いください。
TekuRobo2号機の構想を「アクチュエータ編」でご紹介したのが2001年9月ですから、早いもので1年が過ぎてしまいました。よく1年もダラダラやってきたものだと叱られそうですが、その間に機体の製作やDCモータドライバの研究、PICでのギヤードモータのサーボ化、そしてSH2への乗り換えなど、実際に2号機を歩かせるための具体的な作業を行ってきました。
しかし、TekuRobo2号を組み上げ、実際に歩行させる段階になってもなかなか思うように歩いてくれません。小さなトラブルが頻繁に起こり、なかなか安定した動きをしてくれないためです。それはなぜかと考えてみると、半分は技術的な問題で、あとの半分は「これでいいだろう」とか「まあ、こんなもんかな」といった安易な妥協や手抜きがあったからだと痛感しています。力弥自身の性格によるところが大きい(^^; わけですが、それは如実に機体に現れます。
■歩行のためのプログラミングを開始
まず、ボディーが出来上がり、ポテンショメータやギヤードモータのドライバ基板などを取り付けると、早速SH2のプログラムを作って実際に動かし、歩かせるための試行錯誤が始まります。プログラムの手法としては、ロボットが歩く途中の姿勢をいくつかに分類して、それぞれの関節の角度から各サーボやギヤードモータドライバに与えるPWM波形のパルス幅を数値化します。例えば、
1.中腰の静止姿勢
2.左に体重移動
3.右足を上げる
4.右足を前に振り出す。
5.右足を着地させる。
6.体重を右足に移動させる。
といった要所での姿勢を数値化すると、計算が合っていればそれぞれの姿勢をとってくれます。後は、それぞれの姿勢の間を滑らかに移動するようにPWM波形のパルス幅を連続的に変化させてあげれば、基本的には歩いてくれることになります。本当は重心位置や足先の軌道を元に各関節の角度を計算しながら制御するのが目標なのですが、今の時点ではそこまで出来ないため、手っ取り早く歩かせるためにパラメータを指定してのシーケンシャル動作に注力しました。
要所の姿勢においての各関節の角度は、紙で切絵のようなモデルを作って関節角度を分度器で測り、それをもとにパラメータを計算してプログラムに反映させるという(原始的な)方法を取り、実際にロボットを動かしてみて微調整するという方法を繰り返しました。この方法で、なかなか順調に歩行のパターンを作ることができました。
ところが、5.右足を着地させる の次に 6.体重を右足に移動させる を実行させるところになって、PICによるギヤードコントローラの欠点が現れてしまいました。現象としては、ガクガクガクっと断続的な動きが目立ってしまい、バランスを崩してしまうのです。
■自作ギヤードモータコントローラでの落とし穴
歩行用のプログラム側から関節を動かす場合、微小な変化量の指令を連続的に与えて必要な角度まで動かすという手法をとっています。市販のサーボモータは全く問題なく良好に角度制御ができますが、自作のギヤードコントローラではうまく行きません。なぜなら、単純比例制御なので、移動量が少ない間はギヤードモータを動かすための駆動パルスの幅も短くなってしまうためです。駆動パルスの幅が短いとモータは強いトルクを発生させることができず、加えられた角度制御の信号にうまく追従できません。そして、目標角度と現在の角度にある程度の開きが出来て、はじめて動き出すのです。したがって、市販のサーボモータのようにスムーズに動かず、断続的な動きになってしまいます。この断続的な動きというのが結構致命的で、歩行中においてはバランスを崩す大きな要因になるのです。
これは、PICのプログラム中のパラメータを調整することで感度を上げればある程度対応できますが、あまり感度を上げすぎると、今度は目標位置で安定して静止しなくなります。根本的な解決にはなっていませんが、このパラメータ調整で何とか断続動作を少しだけは少なくできました。それでもバランスを崩して転倒してしまいます。5.から6.に移る際には、左右方向の体重移動に加えて、前後方向の体重移動が必要になり、それらが滑らかにバランスよく行えないと転倒してしまうのです。こればかりは簡単には解決できず、やむを得ず足裏の接地面の面積を一回り大きくしました。もともとの足の幅は足首の太さとほとんど一緒でしたので、そもそもサイズが小さすぎたのかも知れません。しかし、足裏の面積を大きくするということは大切なものを失ったような、一線を超えてしまったような、自分に負けてしまったような、と複雑な心境を伴いましたが、「背に腹はかえられない」というところでした。
ところが、足裏の面積を一回り大きくすると、分かりきったことですが「こんなにも倒れないものなのか!」というくらい倒れにくくなりました。ほんの一周り大きくしただけなのに! この時は、これなら歩行は楽勝だ、と思えたのもです。
倒れにくくなったところで、歩行のパラメータ作りは順調に進みました。ところが、1歩目のパラメータ設定が終わり、2歩目も終わり、3歩目のパラメータ作りで思考錯誤をしているうちに、1歩目と2歩目の歩きが当初よりも悪くなっていることに気が付きました。足の上がりも悪く、足腰の震えが多くなり、バランスを崩しやすくなって転倒しそうになったりします。あんなにしっかりと慎重にパラメータを作ってきたのに、その通りに動いてくれなくなるのです。原因は悩むまでもなく、ボディー自体の剛性に問題があったのでした。
■ボディー剛性の低さによる再現性の悪さ
2号機の構想を練っている段階や、アルミ板を加工して機体を製作している間は、ボディー剛性については問題ないだろうと思っていました。何を根拠に?と言われると特に根拠はなく「勘」ですが...。剛性で一番問題になったのは、傘歯車とシャフトを固定するイモネジと、シャフトと軸受けを固定するイモネジがすぐに緩んでしまうことでした。六角レンチを利用しますが、どんなに強く締め上げても、ちょっと経つと緩むのです。これらの緩みは関節部分の緩みとなって姿勢制御の再現性を悪くします。また、それ以外の部分での板金どうしを固定しているネジも意外と早く緩みます。特に、ポテンショメータ自体の固定ネジが緩んだ場合は、思わぬ痙攣や暴走を招きました。そして、ボディを構成しているのが1mm厚のアルミ板であるということから、材質自体のたわみによる姿勢の変形も大きな負の要因でした。特に腰の部分の剛性が足らず、振り出した足を着地させると、軸足を踏んでしまうことなどもおきました。この他にも、ギヤードモータを使っているということから、ギヤーのバックラッシュ(ガタツキ)に起因する姿勢制御への悪影響も無視できません。板金部分のネジの緩み程度であれば緩み止めで解決できますが、シャフト部分の緩みを始めとする、それ以外の要因は簡単には解決できず、結局最後まで「だましだまし持たせる」ということになってしまいました。
で、だましだまし動かしながら、3歩分の歩行のパラメータを完成させ、何とか倒れないで歩かせることに成功しました。さて、いよいよデジカメムービーで録画してお披露目しようという矢先、テスト歩行中の軸足がいきなり暴走して、後ろ向きに思いっきり転倒するというハプニングが起きてしまいました...。
■思いっきり転倒して重症
背中にはギヤードモータドライバの基板を背負わせていたため、その破損が心配されましたが一応無事のようでした。暴走の原因を調べていると、右足ヒザ関節部分の軸受けを止めているネジがいつのまにかグラグラになっていることが分かりました。このネジは構造の内側から止めているために、関節部分を解体して閉め直し、再度組み立ててみると、今後は右足首に激しい痙攣が発生して収まりません。ノイズによる症状か、コネクタ部分の接触不良による症状か、原因が掴めないままギヤードモータドライバの基板の配線をチェックしたり、A/D入力部分にコンデンサを追加したり、フィルタコイルを追加したり、色々と手を打っても改善される兆しが見えません。最終手段としてギヤードコントローラのPICの感度を大きく落としても、大きな改善はありませんでした。
■電装系での微妙なバランス
電装系では、要所でのケーブル束線をはずしてあり、信号線と動力系との間での干渉はないものと思っていましたが、1個所だけポテンショメータからのアナログ線を緩く太もも部分に止めてあったところがあるので、試しにそれをはずしてみると、途端に症状が大きく改善されました。アナログ線にはシールドケーブルを使っていたことと、緩く束線してあったことで、不調の原因にはならないだろうと思い込んでいた部分が、実は大きな落とし穴だったのです。緩くしてあったつもりでしたが、実際に束線してあったケーブルの被覆をみると、擦れて薄くなっているようでした。そもそも、DCモータの本体にアナログ線をバンドで束線するということ自体、もしかしたら暴挙だったのかもしれませんが...。
■足の裏の皮
足首の痙攣も治ったので、再び歩行への挑戦です。色々といじったり解体したりしているうちに狂ったボディーのバランスに合わせて、再度歩行のパラメータを組みなおしました。ところが、ちょっと良くないことが起きました。それは足の裏に貼り付けた人工皮革のスポンジです。思考錯誤している間に滑り止めとして貼り付けたのですが、しっかりと足を持ち上げられずにちょっとでも摺り足になったりすると、床面との摩擦で前に踏み出せなくなってツンノメリ状態になるのです。材質を検討するときにも、ゴムにすると摩擦が強すぎるし、ただのスポンジだと安定しなさそうだし、ということで適度と思われる材質として決めたものでした。歩行のパラメータを大きく組みなおして、しっかり足を持ち上げて振り出し、垂直に着地するように再調整すれば十分クリアできる問題でしょうが、その時の力弥には根気がなく、結局足の裏に紙を貼り付けて(!)滑りやすくして誤魔化してしまいました。(^^;
そしてようやく撮影できたのが、上の写真をクリックするとダウンロードできる2歩だけのムービーです。多少足の裏が滑っている様子が分かるかと思います...。
■手抜きや妥協による不良原因
これ以外にも手抜きによる故障原因などが沢山ありました。シャフトの軸受け部分のベアリングがすぐに外れてしまったり、基板コネクタのピンコンタクト用の圧着工具が専用のものでないために接触不良が起きたり、ポテンショメータをホットボンドで止めていたのでいつの間にか外れてしまっていたり、更にはポテンショメータに配線しているハンダ付け部分が運動による疲労のために切れてしまったり...。一応電気メーカの技術者として働いている力弥の頭には、「品質」という文字が浮かんでは消えました(^^ゞ。これらの「まあ大丈夫だろう」という発想で組み上げた部分はすぐには悪い症状が出ないのですが、佳境のいいところになった時に現れて邪魔します。これは一番の教訓でした。
取り留めもなくご報告してきましたが、無理やり歩かせていることと、まだまだ納得の「歩き」ではないことが分かって頂けますか? 途中、何度「このままごみ箱にブン投げてしまおうかあ!!」と思ったことか知れませんが、まがりなりにも歩行できるようになったのは、パソコンの前で応援してくれた皆さんのお陰です。力弥ひとりだったら、きっとあきらめていたことでしょう。(^^;
苦労はありましたが、やっぱり2足歩行ロボットって難しくて楽しいですね。これが今回の結論です。
【2002/02/03】
第一回ROBO-ONE観戦しました。
![]() |
![]() |
出場ではなく、「観戦」というところが歯がゆいところですが...。しかも、都合で2日目の決勝第一回戦だけの観戦でした。思いのほか報道陣やテレビカメラが多く、その雰囲気には圧倒されるものがありました。ロボコンと呼ばれる大会を見に行ったのは初めてでしたし、その雰囲気を味わったのもまた初めてでした。
最終エントリー数が38。そのうち予選に参加したロボットが29体。今回は力弥のように見送りつつも、次の準備を進めているだろう人たちを考えると、個人レベルの二足歩行ロボットの裾野の広さを感じずにはいられません。今回決勝第一回戦しか見ることが出来なかったので、全てを知っているわけではありませんが、出場ロボットを見てみると大きく以下に分類できるように思います。
■1.完全に人型の二足歩行ロボット
■2.ヒザがないブリキのおもちゃタイプのロボット
■3.低重心の擬似二足歩行ロボット
1.の完全に人型の二足歩行ロボットとは、ほぼ人間と同じ可動部分を持ち、最も高度な制御技術を必要とします。もちろん力弥はこのタイプを目指しています。姿形も人間そっくりになります。やはり歩かせるだけでも困難で、一部の出場者を除いては転倒続出でした。でも、次回の大会からは、みんなのレベルアップがおおいに期待できる分野で、非常に楽しみです。
2.のヒザがないブリキのおもちゃタイプのロボットとは、左右に体を大きく揺さぶりながら歩く、ロボットらしいロボットです。一見構造も制御も簡単そうに見えますが、体を揺さぶり過ぎるとすぐに転倒してしまうという難しさがあります。中には、どうやっているのか分からないけど、ちゃんと方向転換ができるものや、バタバタと素早い横歩きができるものなどもあり、結構楽しめます。
3.の低重心の擬似二足歩行ロボットとは、人間とは似ても似つかない形をして、ロボコン色豊かな工夫が盛り込めるタイプです。色々な武器などを装備させたりしていました。戦車のような感じで、主にリンク機構などで前進しますが、はたして「二足歩行」というくくりで、完全人型と一緒のリングにしてしまって良いものか?という気もしてきますが...
それ以外に目からウロコが落ちてしまったのが、第一回大会で準優勝のマシーン「YRCドム」{片迫春夫氏)です。このロボットはどこにも分類できません。片脚を挙げて腰を回しながら前進するその機動力には驚かされました。力弥が目指すロボットとは違いますが、度肝を抜かれたマシーンです。
ROBO-ONEでは、ただロボットを歩かせるだけではなく、相手と対戦させるためにロボットを操作(制御)し、相手を倒すための工夫が必要なところに奥深さを感じてしまいます。また、それゆえに、本来の二足歩行動作の完成度とは関係なく勝敗が決まってしまうところも非情なところです。今後、こういった格闘形式の競技のほかに、徒競走や重量挙げ、跳び箱などといった陸上競技の分野でも広がっていくのではないかという予感を感じさせます。
会場の雰囲気を味わい、出場者の方々や一般の観戦者の方々の楽しそうな笑顔を見て、第二回大会への意欲を掻き立てられました。絶対に出場したいですね。第一回大会のパンフレットに名前を載せることができなかった悔しさをバネにしましょう。
ところで、当日、会場の日本科学未来館ではロボットミーム展という展示が行なわれていました。贅沢に空間を使った展示場は大きく渦巻き状になっており、渦巻きの中央の大きなテーブルで行なわれていた光景を見て、力弥はそこから動けなくなりました...。
その大きなテーブルでは、何組かの親子連れやカップル達が、楽しそうにペーパークラフトのロボットを作っているのです。それもそんなにオシャレでカッコいいものではなく、本当に四角い箱が繋がって手足になっているようなロボットです。でも、みんな想いおもいに色を塗ったり、顔を書いたりして夢中になっているのです。なぜだかは分かりませんが、その光景が深く心に染み込みました。一所懸命に紙でロボットを作ってる子供達は、将来本当のアトムを作る技術者になるかもしれない。一人でそんな想いにふけってしまいました。
![]() |
![]() |
![]() |
【2001/06/11】
ちょっと昔のマイコン作りのはなし
| ロボット作りには色々な要素や技術が必要になりますが、中でも欠かせず中心的な役目を果たすのはマイコンでしょう。最近では小型で高性能なマイコンボードの完成品が簡単に入手でき、家にパソコンさえあればその開発環境は簡単に整います。全く良い世の中です。 |
力弥が初めてマイコンに興味を持ったのは、今から十数年前の高校3年生の頃です。その頃はパソコンなどは高値の華で、使えるアプリケーションソフトなども無く、一般家庭などには全く普及していない時代でした。力弥は県立千葉工業高校の電気科の学生でしたので、授業でBASICによるパソコンプログラミングなどを体験できる機会がありました。当時のパソコンにはフロッピーディスクというのが付いておらず、では何にデータを記録したかと言うと、傍らに置いてあるカセットテープレコーダに記録したものでした。「ピー、ゴロゴロ...」と、今で言えばFAXのような音と共に記録/呼び出しをしている時代でした。
そんな頃から組み込み用のワンボードマイコンという考え方はあったと思います。当時の主役はZ80(ゼットハチマル)というザイログ社の8ビットCPUでした。他にもあったのでしょうが、力弥はそれしか知りませんでした...(^^; Z80はただのCPUなので、それだけではマイコンとして機能しません。ROMやRAM、PIOやSIOなどの周辺のICと組み合わせて初めてマイコンとなります。今ではトランジスタ技術の広告欄を見れば、簡単にそれらを組み合わせたようなマイコンボードの完成品の広告が載っています。しかし当時はそんなものがあるのかないのかも知らず、とにかく自分で作ることしか頭にありませんでした。当時はマイコンで何をしようという明確な目標は無かったのですが、何となく何かができるのではないかという強い期待感だけは持っていました。
本屋さんに入り浸ってZ80の教科書を買い込み、千葉から秋葉原まで行ってICやユニバーサル基板などの部品を集め、シコシコと自宅で半田ゴテと格闘します。初めて作ったマイコンボードは、確かZ80と64KビットくらいのRAMと8255のPIO、そして少しの汎用ロジックICだけが載った簡単なものでした。ROMにデータを書き込むには特殊な機械(ROMライター)が必要なようでしたので載せていませんでした。
今ならソフトウエア開発にパソコンを使い、テキストエディタでプログラムソースを書き、アセンブラやコンパイラでマシンコードのヘキサファイルを作り、ROMライタやフラッシュ書き込みツールでプログラムをマイコンに流し込むことなど簡単です。しかし、家にパソコンもないし、ましてやROMライタなど見たことも無いという学生時代に、自分で作ったマイコンボードをどうやって動かしていたと思いますか?それは大体以下のような手順でシコシコやることになります。今考えると涙ぐましい努力です...(^^;
【全て手動のZ80マイコンプログラム開発手順】
■1.先ず、ニーモニックを使ってアセンブラでプログラムを作ります。作りますと言ってもパソコンも無いので、もちろんノートに手書きです。この時、ジャンプ命令やサブルーチン呼び出しのラベルなどは分かり易く目立つマークを付けて置きます。
■2.次に、ニーモニックをZ80のマシン語の表に従って、16進数の表記(0〜F)に書き直します。いわゆるハンドアセンブルというやつでしょうか。この作業の最後に、ソースコードがメモリー上どのアドレスに来るかを意識しつつ、さっきマークを付けたジャンプ命令でのジャンプ先ラベルや、サブルーチン呼び出し先のラベルを、間違えないように実際のアドレス値に変換して記入して行きます。
■3.更に、今書き直した16進表記のマシン語プログラムを、今度は2進表記に書き直します...(;_; つまり、ゼロとイチだけが延々と並ぶプログラムに書き直すのです。この時、RAMアドレスもプログラムに対応するように2進表記で記入しておきます。
■4.さて、そこまで出来たら、いよいよマイコンへの書き込みです。どうやって書き込むかというと、マイコンボード上のRAMのアドレスバスとデータバスをZ80と電気的に切り離しておいて、アドレスとデータを手動で設定できるディップスイッチに繋いでおきます。そして、先頭のアドレスから順にプログラムデータを手動で書き込んで行くのです。アドレススイッチとデータスイッチの各ビットを設定する際、先ほど作った2進表記のプログラム通りにスイッチをON/OFFさせます。そして、RAMの書き込み制御端子に繋がったスイッチを押すと、RAMのひとつのアドレス上に、ひとつの8ビットデータが書き込まれます。これを延々と最後まで続けます。後になって、これと同じ方法が「初歩のディジタル回路 手作りマイコン③」(技術評論社 相原隆文氏著)という本で紹介されていることを知りました。
■5.さて、RAMにプログラムを書き込んだら、いよいよ実行です。RAMのバスをZ80に電気的に接続し、Z80のリセット端子に繋いだスイッチを押します。8255PIOのパラレルポートに繋いだ8個のLEDをナイトライダー(左右に行ったり来たりするように光らせること)させるだけの簡単なプログラムで、アセンブラで30〜40行程度だったと思います。ここまでこぎつけるには大変な苦労でした。しかし、リセットスイッチを押してもウンともスンとも言いません...。全く動かないのです。
自作のマイコンシステムが動かない場合、以下のような不良原因が考えられます。
1.回路設計上のミス...勉強不足や考えが足りないための設計段階でのミス。
2.配線上のミス...設計はあってるけど、配線漏れや端子を間違えたりのミス。
3.半田不良のミス...イモ半田などの接触不良による作業ミス
4.プログラムのミス...プログラム設計上のミス。
5.プログラム変換上のミス...16進表記にしたり2進表記にした時の変換ミス。
6.書き込みミス...RAMに書き込むときにON/OFF操作を間違えたりのミス。
7.IC不良説...静電気や半田熱などでICがパーになることもあり得る。
これはもう、途方にくれるしかありません。プログラム以降のミスならば、見直したり、色々と試したりしてやり直しが出来ますが、ハードウエア上のミスを発見するのは相当大変です。手元にあるのはテスターだけなので、水晶がちゃんとクロックを出しているのかすら分かりません。全ての配線をテスターで当たったり、回路図と現物をいくら見比べても、やはり自作マイコンは簡単には動いてくれませんでした。で結局、回路の見直しや拡張なども考えつつ、動かせないまま何度も作り直しをするのです。途中ブランクなどもはさみ、自作マイコンが以上の手順で動くようになる頃には、力弥も日本大学生産工学部電気工学科の学生になっていました。初めてナイトライダーに成功したときの感動は今でも忘れられません。(;_; 当然、先ほどご紹介したような良い書籍と出会えたことも目標達成への大きな要因でした。
大学4年生頃になると、ようやくアルバイトでパソコンが買えるようになりました。NEC9801互換のEPSON製です。その頃になると、パソコンの拡張バス用ユニバーサル基板でROMライターもどきを作り、テキストエディタで打ち込んだ16進表記のマシン語プログラムをRAMに書き込むツールなども自作できるようになりました。その頃にはEEPROMなる電気的に書き込み消去が手軽に行えるROMも出始めていたため、自作のROMライターで書き込んで、マイコンボードに載せ替えるといったことも出来るようになっていました。
その後、しばらくはマイコンで遊ぶことも少なくなり、世間の流れに付いて行けなくなったりしましたが、AKI-H8との出会いで昔の情熱を少しずつ取り戻しつつあります。最近は多機能なマイコンボードの他に、PICやアトメルなどの簡単で安価なマイコンや、論理回路をプログラミングでワンチップに入れてしまうPLDまでが個人レベルで扱えるようになってきました。全く良い世の中です。学生時代の力弥の苦労は一見無駄のようにも見えますが、多分無駄にはなってないと思います。別に役にも立っていませんが...。しかし、納得が行くまで自分で実際にやって見ること。それが一番大切だと思うのです。自分で考えて作ってみる。そして失敗する。それを繰り返して成功した時の感動を、是非多くの学生さん達にも味わって頂きたいと思います。
【2001/01/01】
ロボット作りは楽しいのだ!
こんにちは。力弥です。
2000年11月に開催されたROBODEX2000に行ってきました。そこにはHONDAのASIMOやSONYのSDRなど、夢の2足歩行ロボットが現実のものとなって動き回っていました。見に行く前は、産業界の技術者や学生さんなどが大半だろうと思っていたのですが、予測に反して多かったのがチビッコたちでした。また、5時間待ちの行列で入場が打ち切られるなど、一般の人たちのロボットに対する関心が、こんなに大きいものだったなんて、正直言って驚きました。
1966年生まれの私は、ロボットマンガと共に成長してきました。小さい頃は、ダンボールで「ジャイアントロボ」の着グルミを作ってなりきっていたし、「マジンガーZ」や「ゲッターロボ」の絵を書かせたら右に出る者がいないほど(?)だったし、「人造人間キャシャーン」に出てくる悪役兵隊ロボットに憧れ、同時にキャシャーンを助ける犬のロボットを本気で作ってみたいと思ったりしていました。
現在の私は、技術系でもロボットとは無縁の世界で仕事をしています。しかし、未だにロボットについての関心や興味は薄れることはありません。それは、小さい頃に憧れたロボットたちに対する想いや夢が、深く心に刻まれているからでしょう。HONDAやSONYの技術者の方々も、きっとそんな想いが原動力になっているのではないかと思ったりもします。
ロボット作りは、足や腕に相当するアクチュエータ、人間の五感に相当するセンサー、脳や神経そのものに相当するマイコン等の電子回路、そして本能や心に相当するソフトウエア、といった技術が合わさって、初めて実現します。どれかひとつが抜けてもロボットは動きませんし、全体のバランスが悪ければ、歩いてくれないでしょう。ロボット作りは総合的な技術や知識が必要な、非常に知的な遊びだと思うのです。
しかし、私はメカトロニクスやソフトウエアといったことについて全くの素人です。つまり専門的な知識はありません。世の中には、趣味でロボットを製作されている方々が非常に多くいるみたいで、その方々に比べて非常にレベルが低いとも言えるでしょう。また、ASIMOやSDRといったロボットが現実のものとなった今、私が敢えてオモチャのようなロボットを作るということは、例えて言えば、超LSIが普通となった今、敢えてトランジスタひとつひとつをつなぎ合せてロジック回路を作ろうとしているようなものです。私がロボットを歩かせることに成功する頃には、大メーカーが作ったロボットが、一般家庭に普及しているかも知れません。でも、それでもいいんです。この工作室の目的は、ロボットを完成させることよりも、ロボットを作るプロセスを楽しむことにあるのですから...。
TekuRobo工作室は、ロボット作りに興味があるけど、どうしたら良いか分からないという方々に特に見て欲しいなあと思いますので、進行状況をなるべくリアルタイムに紹介し、何を考えながら作っているのかも出来るだけ易しく解説したいと思っています。でも、普段は本業のお仕事が忙しく、一日30分程度しか時間が取れない毎日ですので、進みが遅くてもカンベンして下さい。m(_ _;m
この工作室をひとつのヒントとして、自分なりのロボット作りへの夢を広げてもらえたらと願います。