- 締切済み
倒立振り子の技術
現在はおもちゃや、セグウェイに代表される乗り物に、倒立振り子の技術が当たり前に使われていると思います。自作も手軽にできる時代になりました。 20~25年前、テレビ番組で倒立振り子が紹介されていましたが、そもそも当時のマイクロコンピュータでは処理速度が遅すぎて不可能であり、当時の新技術であるニューラルネットワークが使われているという説明だったと思います。 現在のセグウェイなどにはニューラルネットワーク等の技術は使われていないのでしょうか。それともCPUの高速化による「力技」なのでしょうか。(もし現在のCPUにニューラルネットワークの技術を組み合わせれば、すごいロボットが出来そうなのですが)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
#2です。 >30年前、小遣いで購入したのがシャープのポケコンPC-1401・・・ 激しく激しく懐かしいです!(^^)。たぶん自分が持ってたのは1402くらいで、PCN88Basicが搭載されてました。Basicの余りの遅さに専門学校の友人に問い合わせたところ紹介されたのが、いわゆるニーモニックでした!。でも面倒過ぎて挫折(^^;)。 その後も何度かマクロアセンブラに挑戦しましたが、毎回面倒臭くて挫折でした(^^;)。そこで、「おいらはVBがC++に追いつく日を待つのだ」と開き直り(Windowsが主流になってからは特に)、現在にいたっています。 >ひょっとしたら、今では、ニューロコンピュータの技術もさりげなく使われているのかもしれませんね。 そういえばニューロとともに流行ったファジーがありましたよね?。確かニューロとファジーの組み合わせは劇的に相性が良く、激的に流行りましたよね?。ファジー洗濯機だのファジー扇風機だの(1/f揺らぎ)・・・。今は影も形もありませんが(^^;)。でもこれは、「さりげなく使われている」からなんでしょう。絶対そう思う。
自分もFPGAは素人ですが、CPUという視点が古いかどうかは不明です。 FPGAの原型はROMだと思います。今は知らないけれど昔のROMは、電気回路でした。電気回路そのもので必要な論理演算やメモリの発生をできるようにしてました。 昔は電子回路の工作精度なんかの問題で、精密なFPGAが作れなかったんでしょうが、今はそれが可能になり、大々的に利用されていると思います。いわばクラゲのように、機能に特化した散在神経系です。ウィキで、お掃除ロボット「ルンバ」を調べると、なかなか面白い話を聞けますよ(^^)。ロバスト問題も回避できそうだし。 FPGA方式とCPU方式の違いは、汎用性だと思います。一つの機能に特化せず汎用性を重視するケースでは、今でもRAM+CPUでしょう。Windowsのウィンドーズ・メッセージポンプ機構の基本は、無限ループです。一つのCPUが、登録された全てのタスクを巡回して見張り、イベントが起こったら割り込みをかける、が基本です。巡回作業の効率化のために、タイムスライスシステムと呼ばれるRTOSが用意されていますが、力技ですよね?(^^;)。 とはいえ現在は、クワッド・コア/1CPUは当たり前ですから、8BitのCPU時代なんかを知ってる自分としては、それでも恐ろしく速いです(^^;)。 ニューロ・コンピューターについては、どうしても動作に学習過程が挟まるので、現在のCPUでも重くなる気がします。学習済みの事なら別かも知れませんが。
お礼
興味深いお話ありがとうございます。 今の高速化したCPUなら、「力技」で倒立振り子を実現できると思います(実際、PICマイコンなどでも倒立振り子が実現できますし・・・。) ただ最新の高度なロボットや乗り物では、もっとすごい技術が使われているのではないかと思ったのです。 30年前、小遣いで購入したのがシャープのポケコンPC-1401でした。私が初めて機械語でプログラミングしたのがそれに搭載されていたこのSC61860です。「当時のパソコン」の数分の1の能力でした。 ↓ http://jp3tlc.dip.jp/pc12/inst.htm ほとんど忘れてしまいましたが、非常に特殊で複雑怪奇な命令セットとなっています(多分、関数電卓用CPUなのでしょう)。なぜこのCPUを覚えようとしたのか、自分でも信じられません。 この時代のCPUでは、とても倒立振り子など無理だったでしょうね。 ひょっとしたら、今では、ニューロコンピュータの技術もさりげなく使われているのかもしれませんね。
- hue2011
- ベストアンサー率38% (2801/7250)
CPUという視点がもう古いんです。 コンピュータは一つの頭があって、それがCPUとかMPUと呼ばれる電子頭脳で、すべてはその脳によって制御される、というのが昔のマイコン装置の思想でした。 ですから、たとえば温度計があって、ある温度になったらたとえばエアコンをつける、と言う風に考えるならこういう考え方をしました。 くりかえし 温度計を調べる もし指定温度以上ならエアコンスイッチON 指定温度以下ならエアコンスイッチOFF 別の処理1をする 別の処理2をする 別の処理3をする つまり、ある瞬間にやることはひとつしかなく、順繰りに全処理をしているので、仮に処理2をしているときに温度計が上がっても、その時点ではわからず次のループサイクルでわかるという流れです。 そうすると、仮に、処理1をしているときに温度が上がって、処理3で下がってしまったとすれば、エアコンは1度も動かないと言うことになります。 コンピュータおかしいんじゃないの、と言われますね。 そこで「割り込み」という技術が導入されます。 温度計の回路の中で所定温度の前と後どちらかに変わった場合CPUに割り込み信号を入れる、という仕組みを作りこむのです。 そうすれば、CPUがそのとき何をしていようとも、緊急事態が発生ということで即エアコン処理をすることができます。 さて、この温度計の回路ですけど、ここにコンピュータ入れてもいいですね。こいつは温度計を見ているだけの処理しかしない。 そうすると、2つのコンピュータが連動して動いている構造になります。 割り込みなんかいれなくたっていいじゃないですか。 温度計見ているコンピュータがエアコンのスイッチをじかにさわればいいでしょう。 話を一気に進めますね。 処理1をするコンピュータ、処理2をするコンピュータ、処理3をするコンピュータを別々に設定したら、もっと効率的に動けませんか。 これは、古典的にいえば、機能のモジュール化といいますが、スマートにはユニット化と言います。 それぞれは極めて簡単な構造でできますので、CPUなんていうものを搭載しなくてもいいと考えられませんか。 所詮コンピュータ処理というのはアナログデータをデジタル化し、デジタルデータを加工するだけですから、電気信号の処理だけです。 だったら電子回路を組んでしまえば、CPUなんて不要です。 これをマイクロプログラミングと呼びます。 今の手法名でいうと、FPGAと呼びます。ハードウェア設計なんですが、論理図をつくり、その論理を実行できるシーケンス回路の設計図を作り揚げるのです。 その設計図を印刷機に載せて、半導体をインクにしてプリントすれば回路はできます。 できた回路をASICと呼びます。VLSIですね。これは所詮部品にすぎません。 処理1をする部品、処理2をする部品、温度計制御をする部品、というようなものを組み合わせるだけでモノができます。 CPUなんてどこにも入っていません。 そうすると、独立してひとつの仕事、という単位で設計をしますので一番無駄なく、複雑な機能はユニットの組み合わせで可能になります。 ジャイロ機能というのはこういうやりかたをすることで、極めてスマートに役に立つようになりました。 軸を見ている機能、傾きを見ている機能、動きを見ている機能、力を計測する機能、が連携しているだけのことです。 いまスマホで横に傾けただけで縦横がスイッチしたりするのは簡単にできますね。 また、歩数や脈拍なんかを取得して勝手に消費カロリー計算をしたり血圧脈拍を逐次記録して衛生管理につかったりしていますね。 ぜんぶジャイロ機能の応用ですね。 あれが、CPUがいちいち計算処理するような様式だったら成立しようがないと思いませんか。やりたいことがあるたびにプログラムしなおさなければいけないんですから。 いまは、機能は部品化されて組み立てるという様式になっているのです。 このことが、技術力が乏しい国も日本と変わらない品質で製品が生産できるようになったので、日本企業クライシスになっているのです。
お礼
回答有難うございます。 最近のマイコンを使った製品は、RTOSで時分割で処理していることが多いと思います。私が実際に扱えるのはここまでくらいです。 FPGAに関しては全くの素人です。 ニューラルネットワークという技術についても、脳の神経細胞のネットワークを模した技術だというくらいしか分かりません。 FPGAを用いてニューラルネットワークを構築することも可能でしょうか。また、実際に作られているのでしょうか。
お礼
そうですね、多分、ファジー制御のメンバシップ関数などは今では普通に使われていると思います。私も実用ではありませんが、VBでメンバシップ関数を使ったプログラムを作って遊んでいたことがあります。 マクロアセンブラは8086ファミリー用のマイクロソフトのMASMでしょうか。 これはアセンブラの全盛期でしたね。MS-DOS時代に常駐プログラムをよく作っていました。MS-DOSのCOMMAND.COMの代わりになるコマンドシェルもどきを自作したのが自分的には最盛期だったかもしれません。 PC-1401(1402も同様)は、マイナス電源が使用されており、外付けの回路を作ろうとすると苦労しました。CMOSのー6V電源だったのです。 GNDが0V、Vddがー6Vなのです。 それでも、このポケコンで家電の制御や模型のモーターの制御をして遊んでいましたよ。 懐かしいお話ありがとうございました。