![]() |
![]() |
メカトロニクスは、「メカニクス」(機械工学)と「エレクトロニクス」(電子工学)から作られた言葉で、技術的にもまさに、電子制御された機械、を指します。
一時期は電子回路だけの制御も多くありましたが、最近はコンピュータ制御であることが一般的です。その背景には、コンピュータの高性能化、小型化、低コスト化によって、「コンピュータ制御のほうが安く簡単に高付加価値のものが作れる」ようになったことがあります。
ロボットは定義が曖昧ですが、技術的にはメカトロニクスの一部で、メカトロニクス開発ができれば、アイデア次第でロボット開発ができる、といっても過言ではありません。
メカトロニクスなシステムの構成要素は、
これらを適宜設計開発して組み合わせれば、メカトロニクスな機器を作ることができるといえます。 実際、適切なメカをつくり、コンピュータと無理矢理にでもつないで、電気的に情報のループをつくれば、とりあえず動くものはできます。 ただ、各部分のつなぎ目を適当につくると、効率やコストの面でも、性能の面でもよくありません。 このつなぎ目をどう考えるか、そのためには、「隣のことを知る」ひいては「全体を知る」ことが不可欠と言えます。
本講座では、こういったことを中心に、玉乗りロボットを実例として、考慮すべき点なども含めた解説を行いました。
![]() |
![]() |
今回の講座は大きく3部構成です。
そこで、コンピュータの構造をなるべく簡略化し、解説します。 動作と構造は、本来切っても切れないものなのですが、同じような動作のために、小さなコンピュータからパソコンクラスまで、構造がいろいろあるために、わけて考えます。 その延長で、マイコンがいかなるものかが見えてくるはずです。
最後に、実際に使っているマイコンの例を紹介するとともに、「これからマイコンを触ってみたい」という場合の、とっかかりのおすすめをします。
![]() |
![]() |
今回の講座は大きく3部構成です。
原理を知らなくとも、使うことはできます。 しかし関連するものを「つくる」となったら、ある程度は把握しておいて損はありません。 とくに、回路そのものを作らなくとも、その制御を行う組込ソフトウエア開発においては当然知っておく必要がありますし、純粋なソフトウエアであっても、「デジタルの特性」を把握しておくことが、より効率のいい処理に繋がることもあります。
講義後に受講なされた方々の感想を頂いたところ、ソフト開発系の会社の方からは「なつかしい・思い出した」「久しぶりに意識した」といったご意見を頂きました。
ソフト開発系では新人研修では当然通ったところだと思います。
一方、これまで無縁だった方には少し難解だったようです。後半に実践例が多すぎたかもしれません。ただ、ルールそのものは単純で、そこから「目的に応じてどう積み上げていくか」がデジタルの基本で、AND/OR/NOTだけでいろいろなものができている、という感覚だけでもつかんでもらえればと思います。
話の中で、昔は真空管やリレーで計算機を作ったこともあった、という話をしましたが、関連資料がありました。
コンピュータ博物館:論文
ご参考まで。
今回、回路の動き方を説明するために、簡易的なロジック回路シミュレーションをつくりました。 以下、そのままWEBブラウザでお試しいただけますが、javascriptの互換性の関係で、どのブラウザでも動くかはわかりません。さしあたって、Firefox (5/6)とInternetExplore8では動作を確認しています。また、画面解像度は1024x768は必要です(場合によっては全画面表示をしてください)。
![]() |
![]() |
今回の講座は大きく3部構成です。
アナログを扱う上での最大の問題は、「電圧(電流)がそのまま値を表す」ということです。デジタルの場合は、「大きい/小さい」など極端な状態のみを使うため、多少電圧信号に変化があっても値そのものには影響が出ることはありません。ところが、アナログの場合は、多少の変化でもそれが値の変化に直接繋がります。 フィルタなど、その事後改善を図るための手段はありますが、完全な修復は無理で「いかに信号にゴミを混ぜずにすませるか」は重要な問題です。
今回は、メカトロの一部として、今後、センサなどの話をすることも念頭に、周波数特性(周波数応答)の解説も含めました。
数学的にも実験的にも、信号波形が、様々な周期・振幅の正弦波(+余弦波)の和で表せることが確認されています。そこで、センサや回路の入出力の特性を示すために、なんらかの具体的な波形を用いた結果ではなく、様々な周波数の正弦波を入力したときの応答で表すことにしています。これを一式にした物が周波数特性・周波数応答と呼ばれる物で、これを見ると、ある周波数における 1:増幅率(センサの場合は感度) 2:位相(信号の進み遅れ) を知ることができます。具体的には、何Hzくらいまで信頼して使える回路なのか、信号がどのくらい遅れる可能性があるのか(遅れは計測制御に悪影響が出ることがある)などを知ることができます。
一転して、信号の扱いの話では、主にノイズと計測を話題にしました。
ノイズ対策は、それだけで解説書が何冊も出来るような、それでいて簡単には解決策の見つからない(泥沼な)ものですが、「少なくともこれくらいは試してみるとよいのでは」という手段があります。実際、身の回りの装置類では、これらの対策が大抵取られています。その手段が使われている理由と目的、実際に自分の手元の回路にも使いうる、ということを知ることがスタートだと考えます。
一方、回路に何かあった場合にはそのチェックのために、テスタやオシロスコープなどを当てて信号を調べます。この「測定器をつなぐ」ということが、回路にとって悪さをすることがあります。また、測定器に表示されているものが、現実の波形とは異なることもよくあります。十分すぎるほど性能の高い測定器(でも高価)では起きない問題でも、手近な測定器では当たり前におこる、そんな測定トラブル事例も紹介しました。
![]() |
![]() |
このアナログをデジタルに変換すること、アナログデジタル変換(AD変換)を使うに当たっては、主にハード面への理解と、そのハードを使うためのソフト的理解が必要です。今回のセミナーでは
AD変換そのものの機能は非常に単純で、一言で言えば「入力されたアナログ値に比例したデジタル値を出力する」ものです(一般的には比例とは限らないが、直線的な関係)。
そのため、コンピュータにAD変換器をつなぎ(または内蔵)、適切に変換の指示をおくれば、そのまま、センサなどのアナログ値に対応したデジタル値が得られます。
ただ、実際に使おうとすると、大きく三つの点で、慣れないと面倒なことがあります。
一つ目は、選定などの際にみるデータシート(説明書)の項目の多さです。AD変換の性能を表す数値は非常にたくさんあり、まずはどの値が重要かを知り、それを見分けることが要求されます。 主なものとしては、分解能(ビット数)、変換速度(時間/周波数)、チャンネル数があります。 そのほかにも、アナログ的特性、誤差と言った項目も様々並んでいます。
二つ目はサンプリング定理とよばれる、時間変化するデータを連続して取り込む際に留意すべき制限です。サンプリングとはデータの取り込みを表す言葉で、AD変換に限って言えば、AD変換すること、とほぼ同義です。
1秒間に何回サンプリングするかをサンプリング周波数といいますが、このサンプリング周波数の1/2の周波数(の正弦波)までしか入力してはならない、というルールです。逆に、ある周波数の信号を取り込もうと思ったら、その2倍より速い速度で取り込まなければなりません。
現実には少なくとも4倍、なるべく10倍は必要とされています(特に正弦波以外で波形の違いなどを見たい場合はより高いサンプリング周波数が必要)。
このルールを無視すると、「データがとれない」ではなく「偽のデータがとれる」ため、注意が必要です。これはデジタルオシロスコープなどの「AD変換を使っている装置」でも起きる場合があります。また、テレビの自動車CMでホイールが止まったり、逆回転して見えることがありますが、これもこのサンプリング定理によります。
三つ目は多チャンネルADを使う場合の注意です。AD変換は複数の入力をもつものがよくあります。たとえば「16ビット8チャンネルAD」などと表現されます。 複数の入力をつなぐ場合などには便利なのですが、多チャンネルの変換をするばあいに速度が落ちる場合が多く、かつ、同時にサンプリングできないものも多いため、選定には注意が必要です。
これらの点について、それぞれ紹介しました。
![]() |
![]() |
被測定量としては、
一方、変換されたあとの電気的変化は、
また、同じ対象を測定するのでも、接触式のセンサや非接触のセンサ、受動的(パッシブ、被測定量を受け取るだけ)なセンサや能動的(アクティブ、対象に何らかの働きかけをしてその反応を見る)などの複数の方法がある場合があります。
接触式のセンサは一般に何らかの影響を対象に与えてしまいますが、非接触は影響をほとんど与えずに測定できます(が、一般的に高価だったり性能が得にくかったり)。
能動型のセンサは、受動型では測定できない情報も得ることができますが、センサどうしの干渉の恐れや、受動型にはない環境制限がある場合もあります。
さらに、センサは、変換原理の部分だけをもつセンサ部品(デバイス)、それとセットになる処理回路まで含めたモジュール品やセンサIC、箱に入れて情報処理までこなすセンサ装置などがあります(装置が使いやすい一方で、高価だったり大きかったり重かったりという問題があることも)。
センサを使う場合には、なにを測りたいのか、どういう性能が必要か、どういう出力が望ましいか、などをもとに選定を行うと供に、それをどうやってコンピュータ内のデジタル情報にするかまでを一連として考える必要があります。
さて、センサを選ぶには、センサの特性を知る必要があります。
実際に買ってみて、試して見るのが一番ですが、買ってみるにしても予め調べておく必要があります。
そのためには、センサの特性をカタログ、データシートで確認する必要があります。
センサの特性には、精度はもちろんのこと、ヒステリシスや応答性といった時間変化する値を測定する場合に気をつける特性があります。
さらに、多くのセンサは(温度センサでなくとも)温度変化で出力の特性が変化します。
場合によっては補正が必要ですし、温度を一定に保つ工夫がいる場合もあります。
センサを選定する上では、こういった特徴がある、ということは頭の片隅に置いておいた方がいいでしょう。
さて、目的の特性をもつセンサが無かったとしたら。
一般的には、より性能の低いセンサで制御が耐えられるかを検討することになるでしょう。
大きな余裕があれば、センサ開発から始めるのも可能性の一つです。
加えて、センサは「合成」できる場合があります。
探してきたセンサで「全て特性が完璧ではないけど、AのセンサとBのセンサのいいとこ取りをすれば目的を満たす」という場合には、信号処理で対処することができる場合があります。
たとえば、
これらの点について、それぞれ紹介しました。
![]() |
![]() |
もっとも簡単な処理としては、得たデジタル値を単に被測定量に変換する処理です。
比例関係がはっきりしている場合は、定数をかけたり割ったり(普通は割らないで済むように逆数をかけます)、直線的な特性(一次関数)の場合も簡単な計算で戻せます。
より複雑な場合は、曲線を使ったり、予め用意しておいた変換表(テーブル)を用いて変換します。
信号処理は様々な種類があり、また、その実装方法も様々なため、今回は代表的な物として、移動平均、メディアン(中央値、中間値、メジアン)フィルタ、1次IIRローパスフィルタを波形を交えて紹介しました(そのときのExcelファイルは以下に)。
フィルタにはFIRとIIR型があり、かつ、FIRの場合は未来の値を使うかどうかと言う区別があります(一般にはFIRは未来の値を使う設計をするので、それを全部遅らせる)。
移動平均フィルタはFIRの代表例として、もう一つの1次ローパスフィルタはIIRの代表例として挙げました。いずれもローパス特性を持ちますが、今回の実演の範囲を超えた(Excelではできないような)ところで、両者の演算量や特性には大きな違いが出てきます。
一般に、1次ローパスの方が便利ですが、(1)周波数による遅れを均一化したい(FIRの特性) (2)特定の周波数で強力な除去をしたい、という場合には移動平均は手軽です。
メディアンフィルタは、画像処理では以前からよく使われていたフィルタで、突発的なノイズ(スパイクノイズ)を除去する能力に優れます。その一方で、ローパス系のフィルタだと信号の変化が急なところでなまってしまうところを、エッジを残したまま通す、という特徴があります。
火花が出るような状況(スイッチやリレーや直流モータのブラシなど)ではスパイクが入りやすく、その処置に便利です。
メディアンフィルタは「大きい順に並べ替える」という処理があるため、コンピュータの処理量が多く、能力VS演算量というジレンマがありました。が、いまはコンピュータが十分早いので、必要なら使っても問題ないと思います。
信号中にある特定周波数を抽出する処理も、実用性の高い手法です。
揺れている装置の固有の振動を探したり、周期性はあるけど微弱な信号を検出するといった用途に効果的です。いまでは、オシロスコープなどにFFT機能が標準で搭載され、手軽になりましたが、自分で測定した信号波形に対しても、簡単な処理で周波数分析はできます。
最後に処理の実例を挙げました。
一つはロボットの姿勢センサの処理です。ロボットには角速度ジャイロ(レートジャイロ)と呼ばれる「回転する速さ=倒れる速さ」を測定するためのセンサと、重力の方向を検出するための加速度センサを用いることが一般的です。
これはジャイロは積分しないと傾斜角度が得られないのに、積分には値がずれていく危険性があること、加速度センサは重力の方向だけではなく、自分自身の揺れまで拾ってしまうこと、というお互い短所があるため、ジャイロの反応の良さと加速度センサの長い目で見た安定性を併用するためです。
この組み合わせを簡単に実現する方法を例示しました。
また、音楽を周波数分析する実験例を挙げました。
音楽における音高は周波数で、周波数分析によって確認できますが、それと同時に音の出るタイミングが重要です。周波数分析では一般に、周波数の細かさ(分解能)と時間の細かさは両立しません。
そこで、周波数によって周波数を優先するか、時間を優先するかを変えられるウェーブレット変換の考え方を導入して処理をしました。
これらの点について、それぞれ紹介しました。
数値を変えるところは黄色に塗ったセルです。
処理内容はグラフに表示されます。上のグラフは入力信号、下のグラフは水色は入力(同上)、赤、紫は「出力と補助的値」「2種類の出力」を示します。
![]() |
![]() |
産業目的で用いられるモータでは、
直流モータは直流電力(電圧&電流)を供給すると、交流モータは交流電力を供給すると回転し、「サーボ」とつくものは制御性を重視した構造になっており角度センサを一体化してあることが一般的です。
これらのモータでは、回転モータの力であるトルクは電流に比例するという特徴があります。
直流モータの場合は電圧を高くすると回転速度が速くなる、交流モータの場合は(大抵のものは)周波数を高くすると回転速度が速くなるという特性が目立ちますが、実は、これらの特性より重要な位置にこの電流の関係があります。
とくに、モータの精密な制御を行う場合は、トルクと機械の運動が数学的にも直結しており、一見すると速度や回転角度の制御装置でも内部ではトルク(すなわちそれに比例する電流)を制御している場合が多くあります。
この特性は、モータの使い方にも関係します。
直流モータを例にあげます。本来はモータの性能の上限は「トルク」と「回転速度」です。
前者はモータに流せる電流の大きさ(それを超えると焼けたり永久磁石がダメになったり)で決まり、後者は機械的な制限(ベアリングの寿命、遠心力等への対応)で決まります。
電流制御で回転数も見ながら使用した場合(電圧は状況に応じて制御装置が自動的に決めます)はその性能の範囲が使えますが、モータに供給する電圧を直接調整した場合は、その性能が生かし切れません。その意味でも、電流制御をすると性能が引き出せます。
これは別の視点から見ると、一回り小さなモータで足りる可能性を示唆しており、小型化やコストダウンにも繋がります。
ステッピングモータは直流、交流のモータとはまた違った特徴を持ちます。電流を順番に切り替えるだけで、センサ不要で狙った速度、角度で回すことができるという利点があり、マイコン制御で簡単に動かせます。また、制御性を考慮すると比較的安価なモータです。
ただし、速度・トルクの限度を超えると脱調とよばれる現象を起こして、回転がとまり、力が抜けます(たとえば直流モータは過負荷になっても力は抜けず、回転速度が下がるのみ)。
また、この「限度」の特性はモータによって異なる曲線で表されるため、選定には注意が必要です。
そのため、予め動かし方やどの程度の力がかかるかが分かっている用途に限定されますが、生産機械などは動作が一定のため、問題になることはあまり多くないと考えられます。
こういった内容について、それぞれ紹介しました。
![]() |
![]() |
制御する、という言葉は一般的な言葉で、ことさら定義づける必要はありませんが「対象を思い通りに動かす方法」とおおざっぱにまとめることができます。 この場合の対象は、メカトロにおいては機械であることが多いのですが、電子回路の制御、化学プラントの制御、コンピュータの動作の制御、交通渋滞の制御など、さまざまな対象があります。かつ、その背景となる原理はそれほど違わないため、一つ制御できるといろいろと応用ができます。
制御するという場合、多くはフィードバック制御です。
フィードバック制御においては、対象の状態をセンサで検出し、動作の目標(より上位からの指令)と一致するような対象の操作を算出します。これを対象に与えることで対象の状態が変わり、再びセンサで検出して、と回ります。輪になっているので、クローズドループ制御と呼ばれることもあります。
フィードバック制御の代表的なものに、PID制御があります。
まず、センサから得た対象の現在値を、目標値から引いて誤差を計算します。
この誤差から、操作を決定するために
そのほかにも様々な制御があります。世の中、操作と結果に比例関係があるような単純なものばかりではなく、現実になにかを制御しようという場合には頻繁に問題になると思います。
これらを制御するためには、ある程度補正して、PIDで何とかできるようにする、という手法が効果的です。
たとえば、ロボットの姿勢によって腕にかかる重力の大きさは予め計算で求められます。
これを腕のセンサ値のずれから操作を調整するのではなく、予めこれだけの力が必要と分かっている分を出力してしまう、という方法(フィードフォワードの一種)があります。
対象の特性とその対処法を知ることで、性能向上が容易になるかもしれません。
これらの背景をもとに、実際にモータやロボットを制御する例を紹介しました。
直流モータを制御する場合は、まず、その電流を制御します。電流を制御することで、モータのトルクが間接的に制御されます(第8回を参照)。
これによって、「直流モータ」が「指令したトルクを出力できるモータ」という、新たな制御対象になります。
速度制御や角度制御する場合は、この「指令トルク出力モータ」の速度や角度を測定し、PID制御等によってトルク(電流)を操作量として指令します。
このように、制御を入れ子にして使うことも広く一般に用いられています。入れ子にすることで、トータルの反応速度が落ちることは多いのですが、それぞれの部分の特性がよく見え、制御を安定化しやすくなります。
以上のような内容について、お話ししました。
![]() |
![]() |
今回は、こういった画像処理の基礎的なところを押さえるとともに、画像処理系を独自に開発した実例として、自宅の防犯システムの構成とその手法に至った検討過程などをお話ししました。
画像を利用することの利点は「一度に多くの情報が取れること」であり、逆に欠点は「一度に多くの情報が取れすぎること」です。何の工夫もなく撮影した画像には、不要な情報が大量に入り込み、本来必要な情報を埋もれさせてしまいます。
そのため、画像計測の成否は「いかにくっきりわかりやすい画像を最初から撮影できるか」にかかっていると言っても過言ではありません。
ただ、工場のラインにおいて、この点は有利です。屋外の一般環境、たとえば自動車の自動運転をカメラでやろう、という場合には、なにがごちゃまぜに映るか分からない上に、光源が太陽であるため、天候や時刻によって著しく状況が変わります。
それに対して工場のラインでは対象だけが正面に移るようにする、光などの撮影環境を一定にする(周りを覆ってしまって自前の光源から当てる)などの対策が取れます。
こういう対策が取れるからこそ、ものによっては画像計測が実用になりやすく、かつできる限りの工夫をする価値があります。
画像の下処理(狭い意味での画像処理)はいくつかの系統があります。
こういった処理を行う場合、市販の画像処理ツール(装置、ソフト)を使う場合とプログラムを組む場合があります。前者の場合はソフトに関する知識はさほど必要なく、処理の手順の指定で処理系が用意できるでしょう。後者の場合は、全て手書きしてもいいですし、OpenCVのようなライブラリを使うこともありますが、相応の知識が要求されます。
もし、一般的な処理のみで良ければ前者が無難だと思います。しかし、特殊な処理手法は組み込まれていないこともありますし、例外的な条件判断を多数入れるような「汚い手」を使うことも難しくなります。ある程度挑戦的な処理の場合は、ソフトを書く必要性があります。
画像処理は、「ロボットの目をつくりたい」という希望もあって、ロボット研究分野を一つの中心としてさまざまな研究がなされてきました。1990年代は特殊な演算装置をつかったり、処理時間に目をつぶって(非実用的な速度)研究がなされていきましたが、その後のコンピュータの性能向上と共に、個人的な印象で10年くらい、を経て民生品や産業用機器に当たり前に組み込まれるようになりました。
おそらく、いま研究されている内容もそのいくつかは10年後くらいに実用になっているものと思います。
ファイル内の「contview」シートのうち、水色のセルを設定します。