講座資料と簡単な解説(01-10)
ロボット、メカトロニクス分野の全体をおおざっぱに眺めます。

メカトロニクスは、「メカニクス」(機械工学)と「エレクトロニクス」(電子工学)から作られた言葉で、技術的にもまさに、電子制御された機械、を指します。 一時期は電子回路だけの制御も多くありましたが、最近はコンピュータ制御であることが一般的です。その背景には、コンピュータの高性能化、小型化、低コスト化によって、「コンピュータ制御のほうが安く簡単に高付加価値のものが作れる」ようになったことがあります。
ロボットは定義が曖昧ですが、技術的にはメカトロニクスの一部で、メカトロニクス開発ができれば、アイデア次第でロボット開発ができる、といっても過言ではありません。

メカトロニクスなシステムの構成要素は、

  • メカの部分
  • メカを制御するコンピュータとソフトウエア
  • メカの状態を電気信号に変換するセンサと
    それをコンピュータに伝えるための回路
  • コンピュータの指示をメカの動きに変えるアクチュエータと
    それを動かすための回路
で構成されます。全体が一つになって、「メカとコンピュータの情報ループ」が構成されます。

これらを適宜設計開発して組み合わせれば、メカトロニクスな機器を作ることができるといえます。 実際、適切なメカをつくり、コンピュータと無理矢理にでもつないで、電気的に情報のループをつくれば、とりあえず動くものはできます。 ただ、各部分のつなぎ目を適当につくると、効率やコストの面でも、性能の面でもよくありません。 このつなぎ目をどう考えるか、そのためには、「隣のことを知る」ひいては「全体を知る」ことが不可欠と言えます。

本講座では、こういったことを中心に、玉乗りロボットを実例として、考慮すべき点なども含めた解説を行いました。

メカトロニクスなシステムの重要要素である、制御用コンピュータに関する講義です。 とくに、製品に組み込まれる小型コンピュータである、組込マイコンに重点をおいています。

今回の講座は大きく3部構成です。

  • コンピュータの動作の仕組み
  • コンピュータの構造
  • 組込マイコン
普段、いろいろな形で使っているコンピュータですが、制御に使う場合~メカトロなシステムに限らず、電子的なシステムも、また制御でなくとも~は、多少なりとも、コンピュータのハードウエアの構造を知る必要があります。
一つ目の理由は、コンピュータになにか、普通ではないものをつなぐ以上、そのつなぐことを考えるためです。
二つ目の理由は、パソコン用やWEB用のソフトウエアを使うときには、OS(オペレーティングシステム、基本ソフト)がハードウエアがどうなっているかを意識させないように隠している一方で、制御の場合はどうしても直接ハードと向き合ったプログラムが必要になります(ローレベルな、という表現をします)。
三つ目の理由は、マイコンの性能などを見る場合、ハードに直結した記述がたくさん出てきます。そのため、多少なりとも、知っておく必要があります。

そこで、コンピュータの構造をなるべく簡略化し、解説します。 動作と構造は、本来切っても切れないものなのですが、同じような動作のために、小さなコンピュータからパソコンクラスまで、構造がいろいろあるために、わけて考えます。 その延長で、マイコンがいかなるものかが見えてくるはずです。

最後に、実際に使っているマイコンの例を紹介するとともに、「これからマイコンを触ってみたい」という場合の、とっかかりのおすすめをします。

コンピュータを初めとする、さまざまな装置の動作の原理であるデジタルに関する講義です。 デジタルの基本となる原理、電気的な実装方法、様々なデジタル回路の例などを紹介し、基礎に重点を置きつつも、その先も少し覗くことを目指しました。

今回の講座は大きく3部構成です。

  • デジタルの理論と2進数
  • デジタルの電気信号
  • デジタル回路の実際
コンピュータ関連製品は当然のこと、アナログ時計やアナログテレビすら、デジタルな部分が含まれている場合も多く、デジタルにお世話にならない生活は難しいくらい、あふれています。 これらのシステムは、全てを理解するには困難なものばかりですが、その基礎となる部分は非常に少なく単純です。それを気合いと根性で積み上げたのが、いまのデジタルです。

原理を知らなくとも、使うことはできます。 しかし関連するものを「つくる」となったら、ある程度は把握しておいて損はありません。 とくに、回路そのものを作らなくとも、その制御を行う組込ソフトウエア開発においては当然知っておく必要がありますし、純粋なソフトウエアであっても、「デジタルの特性」を把握しておくことが、より効率のいい処理に繋がることもあります。

講義後に受講なされた方々の感想を頂いたところ、ソフト開発系の会社の方からは「なつかしい・思い出した」「久しぶりに意識した」といったご意見を頂きました。 ソフト開発系では新人研修では当然通ったところだと思います。
一方、これまで無縁だった方には少し難解だったようです。後半に実践例が多すぎたかもしれません。ただ、ルールそのものは単純で、そこから「目的に応じてどう積み上げていくか」がデジタルの基本で、AND/OR/NOTだけでいろいろなものができている、という感覚だけでもつかんでもらえればと思います。

話の中で、昔は真空管やリレーで計算機を作ったこともあった、という話をしましたが、関連資料がありました。
コンピュータ博物館:論文
ご参考まで。 今回、回路の動き方を説明するために、簡易的なロジック回路シミュレーションをつくりました。 以下、そのままWEBブラウザでお試しいただけますが、javascriptの互換性の関係で、どのブラウザでも動くかはわかりません。さしあたって、Firefox (5/6)とInternetExplore8では動作を確認しています。また、画面解像度は1024x768は必要です(場合によっては全画面表示をしてください)。 →試す
操作:左のA、Bの四角をクリックすると入力が0/1で切り替わります。
みどころ:回路は4種類ありますが、その出力のX0-X3は全て同じ結果になります。
回路は構成方法がいくらでもありますが、一般には入力から出力までの段数が少ない方がよりよい回路です。一番下は「同一の部品」だけで構成されている点に特徴があります(NANDゲートは市販品は1個の部品に4回路入って売られている)。
一番上は回路が複雑で遅いだけではなく、「A=0 B=1」から「A=0 B=0」に切り替えたときに、最終的な出力は同じ「1」でありながら途中で一時的に0がでます。これは「グリッチ」と呼ばれ、回路の設計が悪いとこの影響で予期せぬトラブルを起こすことがあります。 →試す
操作:左上のA、B、Sの四角をクリックすると入力が0/1で切り替わります。
セレクタは信号の選択をする回路です。上はその実現例、下はよく使われる専用の記号です。
S=0のとき、出力XはAの0/1をそのまま反映し、Bをいじっても影響がありません。 逆に、S=1のとき、XはBを反映するようになります。 つまり、一種の切替スイッチ的に動きます。 →試す
操作:左上のA、Bの四角をクリックすると入力が0/1で切り替わります。
A,Bの入力(2進数)に対応して、X0-X3のうちどれか1本だけが1になります。
この出力を適宜ORすれば、望む真理値表の回路がつくれますが、回路は複雑になるため、最適化はした方がいいでしょう。 →試す
操作:左のSet、Resetの四角をクリックすると入力が0/1で切り替わります。
原始的な順序回路で記憶回路の一種です。
入力は「何もしない状態」は「ともに1」です。
Setのみを0にすると、出力Qが1になります。Resetのみを0にすると出力Qが0になります。 Setを0にしたあとに1に戻すと、Qは1を覚える一方で、Resetを0にしたあとで1にもどすと0を覚えます。
直前にどちらが0だったかを記憶する回路です。
Set, Resetとも0にするのは、回路の意図としては禁止です。そのばあい、「どちらがあとまで0だったか」を覚えます。
なお、この回路はどのように動作するかを見やすくするために、「ゆっくり」動くように設定してあります。ゆっくり操作して下さい。 →試す
操作:左のD、CLKの四角をクリックすると入力が0/1で切り替わります。
実用的なデジタル回路のなかで多用される記憶回路の一種です。右下は使用される専用の記号です。
この回路は「CLKを0から1に変えたとき」(立ち上がりという)にDの値を記憶し、Qに出力します。 DをQと違う状態にして、CLKを0→1としてみてください。 CLKを0→1にしない限りは、DをいくらいじってもQには出てきません。 このことを利用して、変化する信号をあるタイミングで固定する、という使い方がされます。

メカトロニクスなシステムでは、主にセンサ関係で必要になるアナログの扱いに関する講義です。 アナログ回路を設計するため、ではなく、手元にあるシステムを眺めるため、触るため、チェックするために必要な項目について、基礎的かつ即効性のある(あった)内容を雑多に並べています。

今回の講座は大きく3部構成です。

  • アナログを触る基礎知識(概要、部品、法則、周波数特性)
  • アナログ信号の処理回路(増幅回路、フィルタ海路)
  • アナログを触るときの心得(ノイズ対策、測定の注意)
メカトロシステムを設計開発する上で、アナログ部分は一つの大きな課題です。
世の中の多くの現象がアナログであるため、少なくともセンサの周りだけはアナログの要素が残りがちです。近年ではデジタル出力のセンサも増えてきてはいますが、そのセンサにもアナログ的配慮が必要ですし、センサの特性はアナログ的発想で示されていることがよくあります。
加えて、デジタル信号であったとしても、周波数の高いデジタル信号の扱いにはアナログ的理解が必要な場合があることも指摘されています。
メカトロ設計を無難にするには、アナログ部分をなるべく少なくして、なるべくデジタルで行うことが楽をするコツですが、その残ったアナログ部分のための雑学です。

アナログを扱う上での最大の問題は、「電圧(電流)がそのまま値を表す」ということです。デジタルの場合は、「大きい/小さい」など極端な状態のみを使うため、多少電圧信号に変化があっても値そのものには影響が出ることはありません。ところが、アナログの場合は、多少の変化でもそれが値の変化に直接繋がります。 フィルタなど、その事後改善を図るための手段はありますが、完全な修復は無理で「いかに信号にゴミを混ぜずにすませるか」は重要な問題です。

今回は、メカトロの一部として、今後、センサなどの話をすることも念頭に、周波数特性(周波数応答)の解説も含めました。 数学的にも実験的にも、信号波形が、様々な周期・振幅の正弦波(+余弦波)の和で表せることが確認されています。そこで、センサや回路の入出力の特性を示すために、なんらかの具体的な波形を用いた結果ではなく、様々な周波数の正弦波を入力したときの応答で表すことにしています。これを一式にした物が周波数特性・周波数応答と呼ばれる物で、これを見ると、ある周波数における 1:増幅率(センサの場合は感度) 2:位相(信号の進み遅れ) を知ることができます。具体的には、何Hzくらいまで信頼して使える回路なのか、信号がどのくらい遅れる可能性があるのか(遅れは計測制御に悪影響が出ることがある)などを知ることができます。 一転して、信号の扱いの話では、主にノイズと計測を話題にしました。
ノイズ対策は、それだけで解説書が何冊も出来るような、それでいて簡単には解決策の見つからない(泥沼な)ものですが、「少なくともこれくらいは試してみるとよいのでは」という手段があります。実際、身の回りの装置類では、これらの対策が大抵取られています。その手段が使われている理由と目的、実際に自分の手元の回路にも使いうる、ということを知ることがスタートだと考えます。
一方、回路に何かあった場合にはそのチェックのために、テスタやオシロスコープなどを当てて信号を調べます。この「測定器をつなぐ」ということが、回路にとって悪さをすることがあります。また、測定器に表示されているものが、現実の波形とは異なることもよくあります。十分すぎるほど性能の高い測定器(でも高価)では起きない問題でも、手近な測定器では当たり前におこる、そんな測定トラブル事例も紹介しました。

メカトロ・計測で対象とする現象の多く(温度、明るさ、速さなど)は連続量であるアナログです。一方で、その処理を行うコンピュータはデジタルです。 そのため、どこかの段階で、アナログ値をデジタルに変換する必要があります。 今回は、その変換の過程で把握しておいた方がよいことをいくつか取り上げました。

このアナログをデジタルに変換すること、アナログデジタル変換(AD変換)を使うに当たっては、主にハード面への理解と、そのハードを使うためのソフト的理解が必要です。今回のセミナーでは

  • AD変換の特性
  • AD変換の周りの回路(入出力、基準、サンプルホールド)
  • サンプリング定理
  • 誤差の読み方
  • 多チャンネルAD変換の構成と注意点
を中心にまとめました。

AD変換そのものの機能は非常に単純で、一言で言えば「入力されたアナログ値に比例したデジタル値を出力する」ものです(一般的には比例とは限らないが、直線的な関係)。 そのため、コンピュータにAD変換器をつなぎ(または内蔵)、適切に変換の指示をおくれば、そのまま、センサなどのアナログ値に対応したデジタル値が得られます。
ただ、実際に使おうとすると、大きく三つの点で、慣れないと面倒なことがあります。

一つ目は、選定などの際にみるデータシート(説明書)の項目の多さです。AD変換の性能を表す数値は非常にたくさんあり、まずはどの値が重要かを知り、それを見分けることが要求されます。 主なものとしては、分解能(ビット数)、変換速度(時間/周波数)、チャンネル数があります。 そのほかにも、アナログ的特性、誤差と言った項目も様々並んでいます。

二つ目はサンプリング定理とよばれる、時間変化するデータを連続して取り込む際に留意すべき制限です。サンプリングとはデータの取り込みを表す言葉で、AD変換に限って言えば、AD変換すること、とほぼ同義です。 1秒間に何回サンプリングするかをサンプリング周波数といいますが、このサンプリング周波数の1/2の周波数(の正弦波)までしか入力してはならない、というルールです。逆に、ある周波数の信号を取り込もうと思ったら、その2倍より速い速度で取り込まなければなりません。 現実には少なくとも4倍、なるべく10倍は必要とされています(特に正弦波以外で波形の違いなどを見たい場合はより高いサンプリング周波数が必要)。
このルールを無視すると、「データがとれない」ではなく「偽のデータがとれる」ため、注意が必要です。これはデジタルオシロスコープなどの「AD変換を使っている装置」でも起きる場合があります。また、テレビの自動車CMでホイールが止まったり、逆回転して見えることがありますが、これもこのサンプリング定理によります。

三つ目は多チャンネルADを使う場合の注意です。AD変換は複数の入力をもつものがよくあります。たとえば「16ビット8チャンネルAD」などと表現されます。 複数の入力をつなぐ場合などには便利なのですが、多チャンネルの変換をするばあいに速度が落ちる場合が多く、かつ、同時にサンプリングできないものも多いため、選定には注意が必要です。

これらの点について、それぞれ紹介しました。

  • サンプリング定理体験
    ※Firefox7 GoogleChrome14, Safari5.1での動作を確認しています。
    サンプリングしたときに、サンプリング周波数と波形の周波数の比率でどのように取り込まれるかが確認できます。


  • 16ビット、200kHz(200ksps=sample per sec)、4/8チャンネルAD変換IC
    注目点:2ページ DC ACCURACY(精度)、3ページ ANALOG INPUT(入力条件)、7ページ SINAD,SFDR(周波数と精度の関係)、12,13ページ 内部構造 (AD本体は1個)、14ページ 接続例、17ページ Fig10(シリアル, SPI型の通信:デジタル側)、27ページ Fig24(有効なビット数)
    このAD変換ICは「3型」なので、多チャンネル変換をすると速度が落ち、同時サンプルはできません。


  • 16ビット、250kHz、多チャンネルAD変換IC
    注目点:1ページ→Featuresに「250ksps for Each Channel」(各チャンネルで250ksps)と記載、 FunctionDiagram(S/HとADCがすべて並列に)、タイトル部分に「Simultaneous-Sampling」(同時サンプリング)
    このAD変換ICは「1型」なので、多チャンネルを同時変換できます。
    価格比較例:MAX1168: 約2900円、MAX11046: 約3600円 (16bit 8chで比較)


  • 16bitマイコン、10bit8chのADを内蔵
    注目点:15-1 (PDFで473)ページ:内蔵しているAD変換の特徴、15-2(474)ページ:ブロック図
    この内蔵ADは「3型」なので、同時サンプリングはできません。入力0~3、もしくは4~7のセットに対して順番に連続変換することができます。


  • 16bitマイコン、12ビット、最大32チャンネルAD内蔵
    注目点:16-3(3)ページ:ADC Block Diagram (ブロック図)
    この内蔵ADは「2型」と「3型」の中間の機能です。図中に大量のスイッチがありますが、これらをマイコン側の設定でオンにして使います。この図で、ADCは1個なので、同時には1本しか変換できません(多chでは速度が落ちる)。しかし、S/Hを4個持っていますので、多数の入力のうち4本を選んでそれを同時にサンプリングすることができます(この点では「2型」)。また、良く見るとS/Hに+と-の入力があります。これは2本の入力の電圧差を変換できる、ということを意味しています(VREF-側=大抵はAVSS=AGNDにつなぐと単に1本の入力の変換)。
    この会社のマイコンはとにかくいろいろな用途に使えるように構成が工夫されている一方で、この図や説明を理解しないと最低限の変換もままならない、という癖があるように思います。
※データシートは本ページ利用者の利便性を考慮して、各社WEBより頂いています。必要部分のみを引用すべきですが、保護されていて切り抜きもできないので、丸ごと置きます。
メカトロニクスに必要な不可欠な要素として計測があります。
センサはその計測の根幹をなす部品の一つで、被測定量(測定対象となる量、物理的量、化学的状態等)を電気的な変化に変換します。

被測定量としては、

  • 位置/角度/速度/加速度/質量といった運動に関わる量
  • 温度/湿度/圧力(接触圧、油圧、気圧)など空間、面の量
  • 光量(明るさ、色、波長)
  • 電圧/電流/電力/抵抗/容量/インダクタンスなどの電気的量
  • 時間/周波数(センサではありませんが測定手段がある量)
などを測定することが出来ます。

一方、変換されたあとの電気的変化は、

  • 電圧変化 (そのまま増幅→AD変換経由でコンピュータへ)
  • 電流変化 (電圧に変換して(抵抗、変換回路など利用))
  • 抵抗変化 (電圧に変換して(定電流、分圧回路など利用))
  • 容量変化 (時間、周波数に変換して計測)
  • パルス列信号 (マイコンのカウンタに入力)
などの形態となります。

また、同じ対象を測定するのでも、接触式のセンサや非接触のセンサ、受動的(パッシブ、被測定量を受け取るだけ)なセンサや能動的(アクティブ、対象に何らかの働きかけをしてその反応を見る)などの複数の方法がある場合があります。
接触式のセンサは一般に何らかの影響を対象に与えてしまいますが、非接触は影響をほとんど与えずに測定できます(が、一般的に高価だったり性能が得にくかったり)。
能動型のセンサは、受動型では測定できない情報も得ることができますが、センサどうしの干渉の恐れや、受動型にはない環境制限がある場合もあります。
さらに、センサは、変換原理の部分だけをもつセンサ部品(デバイス)、それとセットになる処理回路まで含めたモジュール品やセンサIC、箱に入れて情報処理までこなすセンサ装置などがあります(装置が使いやすい一方で、高価だったり大きかったり重かったりという問題があることも)。

センサを使う場合には、なにを測りたいのか、どういう性能が必要か、どういう出力が望ましいか、などをもとに選定を行うと供に、それをどうやってコンピュータ内のデジタル情報にするかまでを一連として考える必要があります。

さて、センサを選ぶには、センサの特性を知る必要があります。
実際に買ってみて、試して見るのが一番ですが、買ってみるにしても予め調べておく必要があります。 そのためには、センサの特性をカタログ、データシートで確認する必要があります。
センサの特性には、精度はもちろんのこと、ヒステリシスや応答性といった時間変化する値を測定する場合に気をつける特性があります。 さらに、多くのセンサは(温度センサでなくとも)温度変化で出力の特性が変化します。 場合によっては補正が必要ですし、温度を一定に保つ工夫がいる場合もあります。
センサを選定する上では、こういった特徴がある、ということは頭の片隅に置いておいた方がいいでしょう。

さて、目的の特性をもつセンサが無かったとしたら。
一般的には、より性能の低いセンサで制御が耐えられるかを検討することになるでしょう。 大きな余裕があれば、センサ開発から始めるのも可能性の一つです。
加えて、センサは「合成」できる場合があります。

探してきたセンサで「全て特性が完璧ではないけど、AのセンサとBのセンサのいいとこ取りをすれば目的を満たす」という場合には、信号処理で対処することができる場合があります。
たとえば、

  • カメラ1台は奥行きが測れないが2台のカメラでステレオビジョンを構成すると立体情報がある程度得られる。
  • マイク1個では音の方向が分からず、特定方向の音を拾うこともできないが、複数のマイクをつかうと音源探知、特定の音のみを拾うといったことができる。
  • ロボットの姿勢の測定には、応答速度の速い角速度ジャイロセンサと、応答性は良くないが安定して重力方向(鉛直)を測定できる加速度センサを組み合わせる。
などができます。また、速度を測定したいときに、位置を測定して微分したり、加速度を測定して積分したり、異なる測定値から変換することが出来る場合もあります。
そのためには信号処理の方法も知る必要がありますが、その基礎は第7回でお話しします。

これらの点について、それぞれ紹介しました。


  • 資料中に出てくる「使えるカタログ、いい例」で紹介したデータシート。
    基本的なスペックとともに、センサの特性のばらつきの程度(個体差)、加速度への反応(本来は角速度センサであって、加速度に反応してはならないが、原理的に反応がでるセンサが多い)、長時間測定したときの安定性、ノイズの特性などが多くのグラフで示されています。
    とくに、角速度センサはゼロ点の安定性はその利用上非常に重要で、その点を明確に示していることが、センサを選ぶ側にとっては重要な情報となっています。
    このシリーズのセンサが10年ほどまえに発表されたときに、データシートをみて驚きました。 その後、私の研究室のロボットに姿勢センサを付けるときは、同社のセンサを使うことが定番になっています。
※データシートは本ページ利用者の利便性を考慮して、各社WEBより頂いています。必要部分のみを引用すべきですが、保護されていて切り抜きもできないので、丸ごと置きます。
センサを付ければ計測・制御ができる、わけではありません。 センサの信号を回路で適切に変換し、A/D変換してコンピュータに取り込んで得られたものは、まだ、「ただのデジタル数値」です。これを情報とするために、信号の処理が必要になります。

もっとも簡単な処理としては、得たデジタル値を単に被測定量に変換する処理です。 比例関係がはっきりしている場合は、定数をかけたり割ったり(普通は割らないで済むように逆数をかけます)、直線的な特性(一次関数)の場合も簡単な計算で戻せます。
より複雑な場合は、曲線を使ったり、予め用意しておいた変換表(テーブル)を用いて変換します。

信号処理は様々な種類があり、また、その実装方法も様々なため、今回は代表的な物として、移動平均、メディアン(中央値、中間値、メジアン)フィルタ、1次IIRローパスフィルタを波形を交えて紹介しました(そのときのExcelファイルは以下に)。
フィルタにはFIRとIIR型があり、かつ、FIRの場合は未来の値を使うかどうかと言う区別があります(一般にはFIRは未来の値を使う設計をするので、それを全部遅らせる)。 移動平均フィルタはFIRの代表例として、もう一つの1次ローパスフィルタはIIRの代表例として挙げました。いずれもローパス特性を持ちますが、今回の実演の範囲を超えた(Excelではできないような)ところで、両者の演算量や特性には大きな違いが出てきます。 一般に、1次ローパスの方が便利ですが、(1)周波数による遅れを均一化したい(FIRの特性) (2)特定の周波数で強力な除去をしたい、という場合には移動平均は手軽です。

メディアンフィルタは、画像処理では以前からよく使われていたフィルタで、突発的なノイズ(スパイクノイズ)を除去する能力に優れます。その一方で、ローパス系のフィルタだと信号の変化が急なところでなまってしまうところを、エッジを残したまま通す、という特徴があります。 火花が出るような状況(スイッチやリレーや直流モータのブラシなど)ではスパイクが入りやすく、その処置に便利です。
メディアンフィルタは「大きい順に並べ替える」という処理があるため、コンピュータの処理量が多く、能力VS演算量というジレンマがありました。が、いまはコンピュータが十分早いので、必要なら使っても問題ないと思います。

信号中にある特定周波数を抽出する処理も、実用性の高い手法です。
揺れている装置の固有の振動を探したり、周期性はあるけど微弱な信号を検出するといった用途に効果的です。いまでは、オシロスコープなどにFFT機能が標準で搭載され、手軽になりましたが、自分で測定した信号波形に対しても、簡単な処理で周波数分析はできます。

最後に処理の実例を挙げました。
一つはロボットの姿勢センサの処理です。ロボットには角速度ジャイロ(レートジャイロ)と呼ばれる「回転する速さ=倒れる速さ」を測定するためのセンサと、重力の方向を検出するための加速度センサを用いることが一般的です。 これはジャイロは積分しないと傾斜角度が得られないのに、積分には値がずれていく危険性があること、加速度センサは重力の方向だけではなく、自分自身の揺れまで拾ってしまうこと、というお互い短所があるため、ジャイロの反応の良さと加速度センサの長い目で見た安定性を併用するためです。 この組み合わせを簡単に実現する方法を例示しました。
また、音楽を周波数分析する実験例を挙げました。 音楽における音高は周波数で、周波数分析によって確認できますが、それと同時に音の出るタイミングが重要です。周波数分析では一般に、周波数の細かさ(分解能)と時間の細かさは両立しません。 そこで、周波数によって周波数を優先するか、時間を優先するかを変えられるウェーブレット変換の考え方を導入して処理をしました。

これらの点について、それぞれ紹介しました。


  • 講演内で使用した信号処理の体験用ファイルです。
    MicrosoftExcel2003のファイルです(三四郎では関数変換エラー、OpenOfficeではグラフの設定は必要そうですが動きました)。

    数値を変えるところは黄色に塗ったセルです。
    処理内容はグラフに表示されます。上のグラフは入力信号、下のグラフは水色は入力(同上)、赤、紫は「出力と補助的値」「2種類の出力」を示します。

    • A2セル:0~5の数値で下の「組合設定」のセットからフィルタなどを選択します。 選択結果が4行目に表示されます。
    • X5-X10:表示用のパラメータ
      • 周波数:入力波の周波数。
      • 高周波ノイズ:周波数の高いノイズ(50Hz)の振幅(1で本来の入力波の振幅と同一)。
      • ランダムノイズ:乱数で作ったノイズの大きさ。
      • スパイクノイズ:突発的に入るノイズの大きさ。
      • 参照波周波数:周波数解析をする際の参照波の周波数。
      • 参照波位相:周波数解析をする際の参照波の位相(-1.57でsinになる)。
    試し方の例:
    • ノイズの振幅をどれか1にして、フィルタを切り替えて、その処理具合を見ます。 たとえば、メジアンフィルタは、スパイクノイズに非常に強力に作用します。
    • 高周波ノイズは移動平均、ローパスでそれなりに低減できます。
    • 移動平均、ローパスは、入力波の周波数に応じても出力の大きさが変わります。周波数を高くすると出力が小さくなるのがローパス特性です。
    • ローパスフィルタは移動平均に比べて、信号の遅れが目立ちます。 これは、ローパスが「過去の値」しか使っていないことによります。移動平均は「未来の値」も使うようにしているため遅れが見えませんが、「過去の値だけで移動平均」すると、その場合はやはり遅れがでます。
    • 周波数解析では、入力波と参照波の周波数が一致し、位相に適当な関係があると、平均値がゼロでは無くなります。 標準では、入力波、参照波ともに位相ゼロ(cos)なので、周波数が一致すれば平均値が出ます。 この状態でノイズを入れても影響が少なく、周波数の抽出が強力なことが分かります。 実は高周波ノイズも正弦波で作っています。周波数を50に、位相を(-0.57)にすると、高周波数の部分の信号検出ができます。
    補足:ファイルの構成、実現方法
    • OFFSET関数で番号選択→セルの選択をしています。
    • 演算はAD列から右で行っています。
    • 4行目D4-Q4(D6-Q12から選択される)がそれぞれの処理の入力切り替えのスイッチになっています。
    • S:グラフの入力、R1:下のグラフの出力、R2:下のグラフの補助
    • 1s~11s:各種フィルタ類への入力波形の選択(1,2:用意された信号、3:移動平均の出力、など)
    • この書き方で、フィルタを多段に通せるようになっています。(組合設定6参考、1→6→8)
今回はモータの基礎と題して、メカトロにおいて、コンピュータの指令を機械的な運動に変換するアクチュエータについて扱いました。
一般にはアクチュエータと呼ばれていますが、メカトロ業界では電磁式のモータ、もしくは、コンプレッサ+電磁バルブ+空気圧シリンダ、のタイプが主流で、あまり特殊なアクチュエータは使用されていないようです。油圧系も使われていますが、近年のモータおよびその制御技術の性能向上に伴って、電気への置き換えが進んでいます。そのため、今回は特に電磁式アクチュエータの大半である電磁式のモータに絞って、その概要と、実際にモータを使うときに考慮すべき事について、お話ししました。

産業目的で用いられるモータでは、

  • (三相)誘導モータ:動力源としてとにかく回すことが目的
  • 直流モータ:手軽にバッテリ駆動で回す場合など
  • 直流サーボモータ、交流サーボモータ:生産設備、ロボット等で精度を重視した運動(往復)を必要とするところで、制御装置とセットで
  • ステッピングモータ:コスト低めで制御された、負荷の軽い運動が必要な箇所に
などが挙げられます。いずれも電力(直流、交流、パルスなど)を投入し、その結果動力が得られる、電磁式のモータです。

直流モータは直流電力(電圧&電流)を供給すると、交流モータは交流電力を供給すると回転し、「サーボ」とつくものは制御性を重視した構造になっており角度センサを一体化してあることが一般的です。
これらのモータでは、回転モータの力であるトルクは電流に比例するという特徴があります。 直流モータの場合は電圧を高くすると回転速度が速くなる、交流モータの場合は(大抵のものは)周波数を高くすると回転速度が速くなるという特性が目立ちますが、実は、これらの特性より重要な位置にこの電流の関係があります。 とくに、モータの精密な制御を行う場合は、トルクと機械の運動が数学的にも直結しており、一見すると速度や回転角度の制御装置でも内部ではトルク(すなわちそれに比例する電流)を制御している場合が多くあります。

この特性は、モータの使い方にも関係します。
直流モータを例にあげます。本来はモータの性能の上限は「トルク」と「回転速度」です。 前者はモータに流せる電流の大きさ(それを超えると焼けたり永久磁石がダメになったり)で決まり、後者は機械的な制限(ベアリングの寿命、遠心力等への対応)で決まります。 電流制御で回転数も見ながら使用した場合(電圧は状況に応じて制御装置が自動的に決めます)はその性能の範囲が使えますが、モータに供給する電圧を直接調整した場合は、その性能が生かし切れません。その意味でも、電流制御をすると性能が引き出せます。 これは別の視点から見ると、一回り小さなモータで足りる可能性を示唆しており、小型化やコストダウンにも繋がります。

ステッピングモータは直流、交流のモータとはまた違った特徴を持ちます。電流を順番に切り替えるだけで、センサ不要で狙った速度、角度で回すことができるという利点があり、マイコン制御で簡単に動かせます。また、制御性を考慮すると比較的安価なモータです。
ただし、速度・トルクの限度を超えると脱調とよばれる現象を起こして、回転がとまり、力が抜けます(たとえば直流モータは過負荷になっても力は抜けず、回転速度が下がるのみ)。 また、この「限度」の特性はモータによって異なる曲線で表されるため、選定には注意が必要です。 そのため、予め動かし方やどの程度の力がかかるかが分かっている用途に限定されますが、生産機械などは動作が一定のため、問題になることはあまり多くないと考えられます。

こういった内容について、それぞれ紹介しました。

  • 当日は開発中の試作モータの映像を流したりしましたが、まだ、正式発表しているものではありませんので、ここでは公開しません。
    ご要望の方は直接、または事業団経由でお問い合わせ下さい。
いまどきの装置には欠かせない考え方・機能である「制御」を今回の話題にしました。
単純な機械の場合には、モータをただ回すだけでもいいのですが、なにか多少複雑な機能を持たせたり、付加価値、省エネ対策などを考えていくと、多かれ少なかれ、制御が必要になると考えられます。

制御する、という言葉は一般的な言葉で、ことさら定義づける必要はありませんが「対象を思い通りに動かす方法」とおおざっぱにまとめることができます。 この場合の対象は、メカトロにおいては機械であることが多いのですが、電子回路の制御、化学プラントの制御、コンピュータの動作の制御、交通渋滞の制御など、さまざまな対象があります。かつ、その背景となる原理はそれほど違わないため、一つ制御できるといろいろと応用ができます。

制御するという場合、多くはフィードバック制御です。
フィードバック制御においては、対象の状態をセンサで検出し、動作の目標(より上位からの指令)と一致するような対象の操作を算出します。これを対象に与えることで対象の状態が変わり、再びセンサで検出して、と回ります。輪になっているので、クローズドループ制御と呼ばれることもあります。

フィードバック制御の代表的なものに、PID制御があります。
まず、センサから得た対象の現在値を、目標値から引いて誤差を計算します。 この誤差から、操作を決定するために

  • 比例(P)制御:誤差に比例した操作を行う。
  • 積分(I)制御:誤差の時間積分に比例した操作を行う。
  • 微分(D)制御:誤差の時間微分に比例した操作を行う。
という計算をします。対象に応じて、Pのみ、PI、PD、PIDといった組み合わせがあります。
P制御は非常に単純で、誤差があったらそれを打ち消すように対象を操作し、誤差が大きいほど大きく操作することになります。行きすぎたら誤差がマイナスになり、逆向きの操作をすることになります。
ところが、Pだけだと誤差が残り続けるケースがあります。恒常的に重力にひっぱられるようなケースでよく問題になります。その場合、I制御を加えます。これは誤差が残っていると、時間と共に操作が大きくなっていき、誤差が縮小していきます。最終的には重力の影響などをこのI制御が全てかぶります。目標値への一致精度を上げるという点では有用ですが、反応が遅くなるなどの弱点もあります。
また、P制御だけだと対象が往復動作(振動、発振)をし続けて、止まらなくなる場合があります。 このような場合にはD制御を用います。D制御は見方を変えると、目標と対象の速度の差を無くすように働きます。目標が固定値なら速度ゼロなので、速度に比例したブレーキと同じように働きます。逆に目標が移動しているとその速度に合わせようとするので反応速度が速くなることが期待できます。ただ、演算の仕方などでトラブルが起きる場合もあります。
このPIDをそれぞれどのくらい用いるかを決める定数をゲインといい、制御装置の調整では頻繁にこの値の調整があります(市販のモータ制御装置などでも内部パラメータに見られる)。

そのほかにも様々な制御があります。世の中、操作と結果に比例関係があるような単純なものばかりではなく、現実になにかを制御しようという場合には頻繁に問題になると思います。 これらを制御するためには、ある程度補正して、PIDで何とかできるようにする、という手法が効果的です。
たとえば、ロボットの姿勢によって腕にかかる重力の大きさは予め計算で求められます。 これを腕のセンサ値のずれから操作を調整するのではなく、予めこれだけの力が必要と分かっている分を出力してしまう、という方法(フィードフォワードの一種)があります。
対象の特性とその対処法を知ることで、性能向上が容易になるかもしれません。

これらの背景をもとに、実際にモータやロボットを制御する例を紹介しました。
直流モータを制御する場合は、まず、その電流を制御します。電流を制御することで、モータのトルクが間接的に制御されます(第8回を参照)。 これによって、「直流モータ」が「指令したトルクを出力できるモータ」という、新たな制御対象になります。 速度制御や角度制御する場合は、この「指令トルク出力モータ」の速度や角度を測定し、PID制御等によってトルク(電流)を操作量として指令します。 このように、制御を入れ子にして使うことも広く一般に用いられています。入れ子にすることで、トータルの反応速度が落ちることは多いのですが、それぞれの部分の特性がよく見え、制御を安定化しやすくなります。

以上のような内容について、お話ししました。

  • 当日は研究室で学生さんと開発したロボットを題材に、モータの制御モードの切り替えの有用性について紹介しましたが、まだ公開の調整がすんでいませんので、ここでは公開を控えます。
  • 実演したロボットは、実習教材用に熊谷が開発したもので、市販はされていません。 詳細情報をご希望の方は、直接、または事業団経由でお問い合わせ下さい。
一般的には「画像処理」という言葉が知られ、実際に使われていますが、産業的な面で求められるのは「画像計測」や画像、映像を用いた判断です。 たとえば、製品の表面状態を検査したり、マーキングの成否を判断したり、農産物の大きさ形状痛み具合を判断するなどです。 つまり、画像を得た上で、その中の情報を抽出し、それをもとに何らかの判断を下す、そこまでできて、やっと画像関連技術をシステマチックに利用できたことになります。
一般的には、カメラなどで画像を取得し、その下処理として画像処理を施します。画像処理を通したものは以前として画像で、ここから何らかの認識判断手法によって単純な情報(最終的にはOK/NGといった2値情報が多い)を取り出します。一般向けのデジカメ、ビデオカメラなども、撮影し、画像処理をするところまでは同じですが、それらは「人間が見る」という点で判断(感想?)は人間にまかせています。 現状ではソフトウエアによる判断力は人間の判断力には遠く及びません。

今回は、こういった画像処理の基礎的なところを押さえるとともに、画像処理系を独自に開発した実例として、自宅の防犯システムの構成とその手法に至った検討過程などをお話ししました。

画像を利用することの利点は「一度に多くの情報が取れること」であり、逆に欠点は「一度に多くの情報が取れすぎること」です。何の工夫もなく撮影した画像には、不要な情報が大量に入り込み、本来必要な情報を埋もれさせてしまいます。
そのため、画像計測の成否は「いかにくっきりわかりやすい画像を最初から撮影できるか」にかかっていると言っても過言ではありません。 ただ、工場のラインにおいて、この点は有利です。屋外の一般環境、たとえば自動車の自動運転をカメラでやろう、という場合には、なにがごちゃまぜに映るか分からない上に、光源が太陽であるため、天候や時刻によって著しく状況が変わります。 それに対して工場のラインでは対象だけが正面に移るようにする、光などの撮影環境を一定にする(周りを覆ってしまって自前の光源から当てる)などの対策が取れます。 こういう対策が取れるからこそ、ものによっては画像計測が実用になりやすく、かつできる限りの工夫をする価値があります。

画像の下処理(狭い意味での画像処理)はいくつかの系統があります。

  • 画素ごとの処理:色や明るさの修正、変換に関わるもの
  • 近傍画素の処理:空間的な(上下左右方向の)処理に関わるもの。フィルタ類(ノイズ除去、エッジ検出など)。
  • 画像全体に関するもの:歪みの除去など
  • 画像と画像の間の処理:画像の差(一致の程度)の測定、一致する箇所の測定(テンプレートマッチング)、映像での動きの検出。
まずは、元の画像から何を得たいか、どうすればその特徴が鮮明になるか、を考え、その目的に合致した処理を組み合わせます。
ただし、注意しなければならないことは、「撮影の工夫で回避できる処理はソフトでしない」ことです。処理によって速度が低下する(または装置コストのアップ)ということもありますが、ソフトで無理矢理処理するとその予期せぬ影響がでることもあります(たとえば、明るさが不足してノイズが多めになった画像に、ノイズ除去を強力にかけると、画像の鮮明さも失われやすい、など)。 最低限の処理で済むように、入り口からの工夫が必要です。

こういった処理を行う場合、市販の画像処理ツール(装置、ソフト)を使う場合とプログラムを組む場合があります。前者の場合はソフトに関する知識はさほど必要なく、処理の手順の指定で処理系が用意できるでしょう。後者の場合は、全て手書きしてもいいですし、OpenCVのようなライブラリを使うこともありますが、相応の知識が要求されます。
もし、一般的な処理のみで良ければ前者が無難だと思います。しかし、特殊な処理手法は組み込まれていないこともありますし、例外的な条件判断を多数入れるような「汚い手」を使うことも難しくなります。ある程度挑戦的な処理の場合は、ソフトを書く必要性があります。

画像処理は、「ロボットの目をつくりたい」という希望もあって、ロボット研究分野を一つの中心としてさまざまな研究がなされてきました。1990年代は特殊な演算装置をつかったり、処理時間に目をつぶって(非実用的な速度)研究がなされていきましたが、その後のコンピュータの性能向上と共に、個人的な印象で10年くらい、を経て民生品や産業用機器に当たり前に組み込まれるようになりました。
おそらく、いま研究されている内容もそのいくつかは10年後くらいに実用になっているものと思います。


  • ある朝の風景。
    隙間無く1往復半歩いているように見えるが、新聞を郵便受けから取り出す時間、玄関内に戻って鞄に持ち替えて出てくる時間は画面に動きがないので自動的にスキップされている。


  • 東日本大震災時の映像。地震発生中、灯油タンクの揺れによる油漏れが映っていた。その後、停電でカメラが停止。


  • 講演資料で使用した、画像処理のイメージを3次元グラフにした元データです。
    xlsxなファイルですので、Excel2003でも開けますが、おそらく2007以降が無難です。

    ファイル内の「contview」シートのうち、水色のセルを設定します。

    • ソース:1~3で矩形、円、球面のデータを作ります。
    • ノイズ:ホワイトノイズとごま塩ノイズを模擬したノイズデータを指定の大きさで加えます。
    • フィルタ:7種類のフィルタを選択できます。2値化は閾値を合わせて指定います。
    • 最後に2値化:各種フィルタを書けた後にあわせて2値化できます。閾値も指定します。
    フィルタの処理は「filter」シートにありますので、そこのたたみ込みパターンを書き換えたり、別のフィルタを実装したりできます。