このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ
*目次 [#bd46e2ff]

#contents


*ロボット工学の3原則 [#c3d90ab6]

 SF作家である[[アイザック・アシモフ]]は『われはロボット』(1950年)の冒頭でロボット工学の3原則というものを述べている。

[原則]ロボット工学の3原則~
第1条:ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。~
第2条:ロボットは人間に与えられた命令に服従しなければならない。ただし、与えられた命令が、第1条に反する場合は、この限りではない。~
第3条:ロボットは、前掲第1条及び第2条に反する恐れのない限り、自己を守らなければならない。

 以後、多くのSF作家がこれを前提にした創作を行っている。

 この3原則が多くの人に支持されたのは、誰もが納得するくらい論理的だったからである。そして、誰もが納得するくらい正論だったからに他ならない。この3原則に沿ったロボットを本当に作れるかどうかは別として、この3原則に沿ったロボットなら共に生活していけると感じたのである。

 しかし、この3原則は完全なものではない。矛盾を引き起こす可能性もあり、アシモフ自身もその矛盾を小説のネタに使っている。


*ロボットの構成要素 [#ra7d3795]

**機械部分 [#r2cb7394]

-移動機構を実装する
--ロボットが操作する人の考え通りに移動することは、重要なポイントである。そのための条件は次のようになる。
+++転ばずに進むことができる。
+++真っ直ぐに進む(戻る)ことができる。
+++なるべく小回りで左右に方向が向けられる。
+++リモコンの操作と同時に、素早く進み、素早く止まることができる。
--ロボットが移動する環境は、平坦でない可能性もあります。そういった環境を移動するためのロボットを作成するときは、タイヤではなく、キャタピラにしたり足にしたりする手もある。
-ブレーキ機構を実装する
--目的の場所に目的の向きでピッタリ止まることが一番重要である。
-小回りを考える
--小回りがきくような移動機構を持っているロボットの方が有利な場合が多くある。
---戦車のような[[キャタピラ]]を使えばその場で回転できる。
---[[タイヤ]]2つで、後は[[キャスター]]などで支えることで、小回りを利くスタイルにすることができる。
---自動車のように前輪の向きを変える仕組みは大回りになり、あまり有利とはいえない。
---車高の高さも重要である。障害物やボールなどのポイントとなるものが引っかからないように設計する。
-回転の方向を変える
--回転の方向を逆にする場合は、ギアを普通に連結すれば、お互いに反対回りになる。
--2つのギアの間にもうひとつギアを入れると同じ方向に回転する。
--[[歯車]]の山の数が同じギアならば、回転速度も同じになる。
--片方が半分の数だと、少ない方のギアが2倍の速度になる。
---縦に回っているモーターの軸から、水平に回転する軸を出したいときなど、自分で考えている仕組みを実装するには多くの知識が必要となる。
--回転する軸の方向を直角に変えるときは、ギアの種類を変える。
--クラウンギア・ウォームギアなどを含むギアボックスが使える。
--ギアを使わずに反対方向や軸の方向を変えるやり方として、ベルトと[[滑車]]([[プーリー]])でもできる。
---移動するための減速や簡単な仕組みで動かす場合は、模型用のギアボックスをそのまま利用するほうが簡単である。
--自分でギアの組み合わせを作るときはなるべく正確に軸の穴あけが必要です。ゆるめだとギアが磨り減りやすく、きつめだと回りにくくなり伝わる力が弱くなってしまう。
-[[クランク]]
-[[カム]]
-[[ラダーチェーン]]
-[[タイミングベルト]]
--ロボコンに参加する[[ロボット]]の場合は、一番小さいMXLで十分である。
-[[てこ]]
--[[ロボット]]の腕の動きを作るときに重要になるのが、動く大きさや範囲である。こういったときは、てこの原理を使って棒を揺らす範囲や位置を決定する。基本的な働きは、てこクランク機構と呼ばれる仕組みで、ギアボックスから出ているシャフトにクランク部品を付けて、その先に2本のリンクを繋いだ仕組みである。
-[[リンク装置]]
-[[ジョイント]]([[継ぎ手]])
-[[軸受け]]
--軸受けを取り付ける位置はとても重要である。少しでもずれていると、ロボットの進む方向がずれてしまう。
--小さく軽いロボットでは金属板にシャフトよりわずかに大きくした穴を開けただけで十分だが、重量があるロボットにはそれだけ支えられる丈夫で滑りのよい軸受けが必要である。
--抵抗が少なく、よく回転するものには、軸の中にボールが入っているボールベアリングがある。
--力がかかる場所にはメタルベアリングといって、太目の軸受けに油を染み込ませたものがある。
-[[グリス]]
-[[キャスター]]
--2輪+1キャスターは、4輪より方向転換しやすい。
-[[ヒンジ]]([[ちょうつがい]])
-[[シャフト]]

**電機部分 [#xd587788]

 ロボットの基本的な構成、即ち骨格や手足などにあたる部分は機械系によって決まる。しかし、動く、止まる、何かがあると調べる、考えるなどの動作は電気を利用しないと実現は困難である。つまり、電気はロボットの動力源、五感、頭脳などを受け持つ。


-[[モーター]]
--モーターでの回転運動からあらゆる動作を作り出す。
-[[電源]]
--ロボコンに参加するロボットは電気で動くものがほとんどである。このような電機で動くロボットでは電気を供給するための電源が必須である。
-[[コンピュータ]]
--自律形では頭脳が必要である。この頭脳にはコンピュータが用いられるのが一般的である。そこで、自律形のコンピュータを作る場合には、コンピュータの知識が必要になる。
--[[Z80]]・[[H8]]・[[PIC]]などの選択肢がある。
-[[センサー]]
--ロボット用のセンサーは、外界センサーと内界センサーに大別される。
+++外界センサーは、周囲の状況を知るためのセンサーです。視覚センサー、聴覚センサーなどがこれがあたる。
+++一方、内界センサーは、外界センサーとは異なり、ロボット自身の状態を知るためのセンサーです。自分がどこにいるのか、またどのような姿勢になるかなどを把握するためのセンサーです。加速度センサー、速度センサー、位置センサー、姿勢センサーなどがこれにあたる。
--センサーを搭載したロボットは、ほとんど例外なくフィードバック制御を行う。フィードバック制御は、各種センサーで得た情報を有利に利用するための制御方法である。
---フィードバック制御は、よくクルマの運転に例えられる。人間がクルマを運転する場合、まず道路の状況を目で確認する。そして、それに応じたハンドルやブレーキの操作、ギアチェンジを行う。状況を確認し、目的を遂げるための適切な行動を、その情報に応じて実行する。実行後、状況が変わったなら、またそれに対応して行動する。この繰り返しによって、変化する状況に対応する。
--このフィードバック制御の対極に当たるのが、フィードフォワード制御です。これは、フィードバック制御のように、周囲の状況を確認しながら行動するのではなく、自身の持つ情報を元に行動する方法である。
--フィードバック制御とフィードフォワード制御は、組み合わせて利用することが可能である。フィードバック制御によって得た情報を経験として記憶することで、同じ状況下での行動をフィードフォワード制御で迅速化するというやり方である。実際にこの方法を学習機能のひとつとして用いているロボットは少なくない。
--赤外線センサーや超音波センサーなどを使わず、あるいは併用して、画像認識により自らの場所を判断するタイプのロボットもある。画像認識には、撮影素子を利用しますが、CCDやCMOSにはちょっと問題がある。
---一般に日本や米国で使われているNTSC(National Television System Committee:米国テレビ方式委員会)方式のカメラでは、毎秒30フレームの速度で映像を撮影するが、ロボカップのロボットのように速く動いているロボットでは、1フレームの間にかなりの距離を移動してしまう。例えば、小型リーグでは、最高速度秒速2mで動くチームがありますので、この場合1フレームの間(33.3ms)に、6.7cm(=200÷30)移動していることになる。これに画像解析などの時間も加わるので、毎秒30フレームを前提としたしステムでは、正確な状況の認識やロボットの制御が十分にできないことになる。
---この問題を解決する方法のひとつは、フレームのレートを上げることである。
---また、CCDやCMOSの素子の特性にも問題がある。現在の素子は、ダイナミックレンジが十分ではなく、手前に暗い物体があって遠くに明るい場所があるときに、ピクセルが包和してしまい真っ白になることがある。これを解決するには、サングラスを着用させるという方法があるが、これだと暗い場所が見えなくなるという問題がある。つまり、より高性能な素子の開発を待つしかない。
--カメラに写っている像から、ロボットは何を見ているのかを判断しなければなりません。つまり、画像認識の問題である。 
---ひとつの方法は、色([[色彩]])を使う方法である。例えば、ボールが赤いことがわかっていれば、ある程度の大きさの赤いものはボールであるというプログラムを書けばいいことになる。しかしながら、これは実際には結構難しい。赤といっても色々な赤があるからだ。人間は赤っぽい色も赤とファジーに認識するが、これをロボットがこなすにはなかなか困難である。また、ボールは赤い球ですが、実際には下のほうは影になって黒っぽく見え、上は照明の反射で白くなる。赤とはっきり見えるのは中央の部分だけである。その上、ボールは動き回り、他のロボットに隠れることもある。こういった状況において、ボールを完全に把握することはソフトウェアの精度にかかってくる。
---色に基づいて分類する方法を''カラー・ラベリング法''と呼ぶ。色を指示する際には、いわゆる色の3原色によるRGB表示系を使う方法もあるが、HLS表示系など他の方法もある。HLS表示系では、色を色合い(Hue)、明度(Light)、彩度(Saturation)という要素で表現する。カラー・ラベリングの際には、この色表示で定義された3次元空間の特定の範囲をひとつの色としてプログラミングする。
--動体の動きを認識するときは、多くの場合''オプティカルフロー''という方法を使う。
---これは、ある時点での画像とその次のフレームでの画像を照合して、画像の各点において、フレーム間の動きの推定ベクトルを作成する方法である。固定カメラを使って背景のように動かないものを認識するときには、ベクトルは作られないか、きわめて小さいベクトルのみが作られる。しかし、そこにボールのように動いている物体があると、そこは大きなベクトルが作られる。このベクトルの分布で移動物体を検出します。これらの処理の結果、どの色や形が画像のどの位置にあるかはわかる。
--より細かく対象物を判定するには、色・形状・動きの特性などの色々な知識を与えておく必要がある。この知識をもとに、入力された画像の色や形状などの特長を抽出させて、それらの知識が記述された知識ベースと照合させる方法がある。ところが、物事にはすべて例外やあいまいな部分があり、人手ですべての知識を与えるのは非常に手間がかかり、かつ不正確な作業になる。人工知能の最大の研究テーマが、この世界の知識をいかにコンピュータに持たせるかという問題である。
--ロボットの聴覚には、音声認識と音環境理解という2つの研究がある。
---音声認識は、人の話し言葉を理解する研究である。
---一方、音環境理解は、部屋の中や街角での色々な音を、どの方向から何の音がしたかを識別する研究である。各々の音は、音響ストリームという塊でとらえることができます。これは音の性質の連続性を前提としたもので、ある時間にバイオリンの音は次の瞬間も同じバイオリンの音であるということを計算機で扱うものである。音環境理解で重要なことは、これらの複数の音響ストリームを正しく分離するということである。特に、似たような音響特性を持っている、複数の人の話し声を分離することは、重量だが難しいことです。実用的なロボットには欠かせない技術といえる。例えば、警備ロボットなどは顕著にその必要性が現れるだろう。


*ロボットに使われる移動機構 [#l7cd60a6]

 従来のロボットは、産業用として工場内の限られた場所でしか使われないこともあって、移動のための機構はほとんど必要なかった。唯一、移動機構を備えていたのが、資材などの搬送用ロボットである。

 しかし、ロボットの活躍の場が増えるにしたがい、工場の外、例えば家庭や一般企業でも使われるようになった。それに伴ない、ロボットが部屋や通路を移動する能力が必要となってきたのだ。

**車輪 [#l409ef81]

***二輪走行方式 [#ab84a449]

・左右が別々のモーターで駆動する。

・制御が簡単なので、ロボットでよく使われる。

・車輪の回転方向を変えるだけで、前後進と左右折を行える。

|''(上から見て)左の車輪''|''右の車輪''|''ロボットの動き''|
|↑|↑|↑(前進)|
|↓|↓|↓(後退)|
|↑|↓|→(右に方向転換)|
|↓|↑|←(左に方向転換)|

・小回りが利く。

・ロボットの高さにもよるが、バランスに難がある。急加速や急制動をかけると、バランスを崩してしまう。

 これを防ぐ方法として、ボール型のキャスターを補助輪として使う方法があるが、それでも急激な速度変化に弱いことには変わりない。

・2つのモーターを持ち、その回転数の比率で移動方向を決定する方式を''ディファレンシャル・ドライブ''という。小型リーグの多くのロボットがこの方式を採用している。


***四輪走行方式 [#c2c22a50]

-安定性に優れる。
-高速での移動も可能。
-進路の変更は二輪走行方式ほどすばやく行えない。前輪で舵を取るので、その場での旋回は行えない。
--また、舵の切り方は、そのときの走行速度によって変えなければならず、制御は二輪走行方式よりも難しくなる。
-ステアリング機構の制御が容易ではない。
-四輪走行方式の別の方法としては、四輪駆動式がある。クルマのいわゆる四駆とは異なり、舵はない。方向転換は、二輪走行方式と同じく、車輪の回転方向を変えることで行う。舵がないぶん、制御は容易で、二輪走行式の小回りは期待できないが、よりパワーとスピードがある。


***六輪走行方式 [#w4974fd0]

-火星探査に使われたローバー「ソジャナー」は、四輪駆動式の延長線上にある六輪駆動式である。
-前後が補助輪となるタイプの六輪走行方式では、駆動する車輪が大きくなる。
-中央の二輪だけを駆動させ、前後の四輪を補助輪として使う方法もある。この駆動方法だと、基本的には二輪駆動式なので小回りなどの起動性能がそのまま生きる。前後の四輪の補助輪があるので、純粋な二輪走行方式よりもロボット全体が大きくなるが、バランスが安定するので、ある程度の速度変化にも耐えられる。


***クローラー走行方式(キャタピラ走行方式) [#pdd11e60]

-不整地でも難なく移動することができる。
-複数の車輪の周囲に1本のベルトを掛けることで、幅広い設置面積を得ることができる。
-ベルトを掛けた複数の車輪は、ひとつの車輪のように扱えるので、その制御は二輪駆動式とほとんど変わらなくなる。
-[[クローラー]]走行方式の代表的なものは戦車。不整地でも自由に行動でき、左右のクローラーを異なる方向に回転させることで、その場での旋回もできる。
-急斜面の登坂、雪道の走行ではクローラ走行方式が向いている。同じことは四輪駆動車でも可能かもしれないが、安定感ではクローラー走行方式にはかなわない。
-クローラー走行方式に加えて、それを補助するためのアームを搭載することで、急斜面を登るときに地面に手をつくようにアームを使い、ロボットの重量を少しでも支えることができる。このアームは作業時にも使える。この方法を応用すれば、斜面での方向転換も可能となる。
--クローラーとアームの動きを協調させなければならないので、その制御は決して容易ではないが、ロボットならではの移動機構といえる。
-他にも、クローラーそのものを路面や地形の状態によって変形させながら、効率的な移動を実現しようとする試みもある。


***全方向移動方式 [#y9890977]

-''全方向移動方式''とは、そのままの姿勢で前後左右に動くことのできる移動機構を指す。
-全方向への移動を可能にするオニムホイールがある。全体がひとつのタイヤとして働くと同時に、それを構成する6つの樽状のものもタイヤとしての機能を持っている。
-円周に沿ってオニムホイールを配置すれば、どの方向に動くときにも一定の駆動力を得られる。
-複数のタイヤでひとつのタイヤを構成すると、全方向移動方式のタイヤになる。


**多足歩行 [#f71d1220]

***二足歩行方式 [#id64bf23]

-ロボットの移動機構の中で、最も注目されているのは、人間と同じ二足歩行方式である。
-人間がモデルになることが多いため、形状が人間に近くなるという点も、注目を浴びる理由のひとつだろう。
-二足歩行には静歩行と動歩行がある。


***多足歩行方式 [#v52a3a40]

-実用的な静歩行が四足以上は、二足歩行型よりも制御が容易である。
-多足歩行方式では、車輪走行方式に比べると、足としての複雑な動きが加わるので、それだけ制御は難しくなる。しかし、クローラ走行方式でも行動が難しいような災害地や不整地でも移動することができる。
-平地のまったく見当たらない場所でも多足歩行方式のロボットなら、障害物を足で包み込むようにすることで移動できる。


**無足歩行 [#m7fec398]

-ロボットが移動するには、必ずしも車輪や足はいらない。ミミズや蛇など、足がなくても移動できる生物を模倣すれば、ロボットも同様のことが可能になるはずである。


***蛇型無足歩行方式 [#ka94576a]

-環境に応じた移動方法が異なる蛇は、無足歩行型ロボットの製作のモデルにされることが多い。
-障害物だらけの場所でも荒地でも、また狭い場所でも無理なく移動することができる。沼地や砂地など、車輪歩行や多足歩行では足を踏み入れることさえ難しい場所でも、実際の蛇のように進むことができるようになる。
-蛇型ロボットの胴体部はいくつもの同じユニットを結合することで構成できるので、分解した状態で運び、現地で組み立てて動かすという使い方ができるかもしれない。
-また、作業中にユニットのいくつかが破損しても、それを胴体部から抜き取ることで、作業能率を維持することが可能。


***ミミズ型無足歩行方式 [#aae4f22c]

-胴体部を伸び縮みさせながら前進する、配管内作業用のミミズ型ロボットも考えられている。


***ウニ型無足歩行方式 [#r1ab86bd]

-周囲に棒状の足を張り巡らしたウニ型ロボットも考えられている。
-完全な球体だと移動の際に滑ることもあるが、ウニのようなトゲを持つ形状ならスパイクのように地面をとらえることができる。
-胴体部に[[モーター]]を内蔵し、それによって全体を回転させながら移動する仕組みである。


*ロボットとオートメーション機械の比較 [#s95ae05b]

 [[オートメーション]]の場合は、人間の手足の代わりに部分的な機械をシステムとしてつなげたものにすぎないが、ロボットは本質的に複合性・多機能性を持ち、ある程度の感覚と知能による状況のフィードバック制御が可能である。


**システム的比較 [#u35bdf95]

||システムのマクロ構造|自律的な適応性|個体性|
|オートメーション機械|閉鎖系|低い|要しない|
|ロボット|開放系|高い|不可欠である|


**各要素ごとの比較 [#m32f3e21]

-オートメーション機械
--コントローラ:比較的単純な演算
---増幅、微積分演算など
--[[アクチュエータ]]:運動性能は高いが、メカニズムの自由度は低い
---[[サーボバルブ]]、[[調節弁]]など
--センサー:基本的な物理量の計測
---[[圧力]]、[[流量]]、[[温度]]など
-ロボット
--コントローラ:高度な演算
---[[識別]]、[[認識]]、[[学習]]、[[推論]]、[[データベース]]など
--アクチュエータ:メカニズムの自由度は高く、巧妙な運動ができる
---[[マニピュレータ]]、手、指、歩行脚、[[音声]]など
--センサー:複合的な物理量と化学量の計測
---[[触覚]]、[[圧覚]]、[[イメージ]]、[[色彩]]、[[味]]など


*マイロボットの製作 [#o9e1d8b4]

 ここで述べるのはキットの製作は含まず、ロボットの自作について述べる。

[注意]CPUの製作は含めず、既存のものを利用するので、オール自作とは呼ばないことにする。 ◇

**製作の心構え [#dffb6dc6]

 ロボットは、いくつかの技術を組み合わせて、結合したものである。よって、ロボットを作るためには、必要とする技術に対する的確な知識と、それを現実的に使いこなすことが必要である。しかし、個々の技術について詳しく知っているだけでは不十分で、それらの技術的要素を結合するための考え方が必要である。それは「何のためにロボットを作るのか」というコンセプトであり、「どのようなロボットを作るのか」という製作上のポリシーでもある。

**ロボットを構成する技術要素 [#r40215a9]

+コンピュータ技術
--適したCPUの選択
--CPUを制御するためのソフトウェアのプログラミング
--センサーで取得した情報を適切に処理するためのアルゴリズム
+ハードウェア技術
--メモリの知識
--CPUと周辺部品とのインタフェース部分
--ロボット専用の部品というのは特にないが、よく使われる部品はある。
---例えば、モーターやセンサーなどはその典型であろう。
+メカニズム技術
--ロボットの実際の動作をつかさどるのは、メカニズムの部分である。
---ギア・カム・リンク・モーターとの連結部などの設計についての知識や経験が重要である。
--アマチュアの場合、メカニズム部分の加工が問題となる。
---[[金ノコ]]・[[パンチ]]・[[万力]]・[[金槌]]は最低限必要だが、これだけでは大したものができない。そこで、既成の部品を買ってきていかに組み合わせて、よりよいものを作るかは、工夫とひらめきにかかっている。
+工作技術
--[[はんだづけ]]の技術


**技術の学習プロセス [#v126e717]

+インタフェース回路を作る
--半田づけができるようになったら、ロボットに欠かせないI/Oインタフェースを作ってみる。各社のPCに合わせて[[ユニバーサル基板]]が売られている。それを使ってインタフェースを組むのである。
---通常インタフェースはLS373のような[[ラッチ]]とLS319のような[[デコーダー]]を組み合わせて作る。コンピュータからのデータ信号はデータバスを通ってラッチ部分へ、アドレス信号はアドレスバスを通りデコーダーを通してラッチへ伝わる。このインタフェースがなければ、信号を各機構部分へ伝え、動かすことはできない。
--インタフェースが組みあがったら、インタフェース部分が動いているか、インタフェースの出力に[[LED]]を接続して点灯させてみる。
---LS373なら直接接続して点灯できる。
--LEDの点灯が成功したら、今度はモーターを動作させてみる。
---モーターは単純にON-OFF制御で駆動できる。つまり、コンピュータからの信号をラッチに入れて、[[トランジスタ]]や[[リレー]]を制御して、ON-OFFさせる。この場合のモーターは特別なものでなく、通常のトイ・モーターと呼ばれる数百円程度のものでよい。
---モーターはロボットの駆動の要であり、モーター部分とインタフェースが通常に働かなかったら、意味がない。
+位置決め機構を理解する
--指定位置に正しく動かす装置であるサーボコントロールと、位置を検出する装置であるエンコーダーの利用を知っておく必要がある。
--それ自体が動く個体であるロボットを正しく制御するためには、この部分への理解が必須である。なぜならば、ロボットの場合、単にON-OFF信号だけを送ればよいというわけにはいかない。どのぐらい動作が進んでいるのかを絶えず確認し、それをコンピュータ部分にフィードバックさせて、次の動作の命令を待たなければならない。
--位置決め機構は、腕や首を動かそうとする場合、不可欠な要素となる。
---サーボメカニズムはデジタルコンパレータでコンピュータからの信号とエンコーダーからの信号を比較して、どちらかの方向へモーターを回転させ、信号があえば、モーターを停止させる。つまり、ロボットにおける神経のような役割を果たすものといえる。
---もしロボットの動きに自由度を持たせたければ、自由度の数だけこのような回路とメカニズムが必要になる。
+メカニズムを組み立てる
--メカニズムがないと実際の動きをさせることはできない。コンピュータからの信号がインタフェースを介してサーボに伝えられ、そこで実際のメカの位置とコンピュータからの指示を比較して、ドライバに的確に伝える。そして、ドライバはメカニズムを動かす命令をする。
--一般的には模型工作用の部品を流用するのが、一番手っ取り早い。これだと比較的簡単に手に入りやすいし、組み立ても困難でない。ただ模型工作用材料だと限界があることも確かである。複雑な機構のものを作ったり、精度を上げることは困難だろう。
---初心者は模型工作用のキットを購入し、参考書やマニュアルを参照しながら、少しずつメカニズムの機構を覚え、組み立ての技術を習得することから入った方が無難である。その上で、次第に複雑なメカニズムに挑戦していくとよい。


*参考文献 [#t03c8023]

-『ロボット製作のキーワード』
-『大人のための徹底!ロボット学』
-『入門ビジュアルテクノロジー ロボットのしくみ』
-『K&Gブックス 手作りロボット入門 −マイロボットを作る−』