梵天丸を動かしてみよう

[| ]  最終更新: 2011/02/10 19:08:36

まずはここから

組み立てて、とりあえず動くことは分かったし、プログラムの書き込み方も分かったけど、なにをしたらいいか分からない、そもそも何が何だかさっぱり分からない、という場合、かたっぱしからサンプルプログラムを試してみましょう。

BON10フォルダのMAKIMONOフォルダには、簡単なものからそこそこ複雑なものまで、いろいろなサンプル(例)が入っています。
これらをまずは試してみましょう。

ただし、その際、ただ読み込んで「ほんやく」して書き込んで動いた!で済ませてはなんにもなりません。必ず「ほんやく」前に表示される(もしくは「へんしゅう」して表示される)、その動作の「まきもの」を見て、「なぜそうなるのか」をよく確かめてみてください。
この先、他の講義でC言語やFORTRANなどに触れる機会はあると思いますし、情報系に就職すると様々なプログラミング言語を扱うことになります。そういう場合、文法書を読んでいきなりプログラムが作れるようになるかというと、ふつうはそうではありません。まずは読むことからです。
書けなくても、読むだけなら「なんとなく言いたいことが分かる」で済みます。
ちなみに、英語もそうです。書くには難儀しますが、読むだけなら、一字一句を考えなくても、必要そうな単語をひろって、「notの有無」を見れば、だいたい意味はわかります。

つぎのステップは「改造」です。
単純には、パラメータ(数字)を変えます。
具体的には

です。「3のだん」とかの数字を変えると別の意味で変わってしまいますので、まずは触れない方がいいでしょう。

なにか、調整可能な部分や入力をもった装置があったら、それを変えてみるのが、特性を知るための近道です。ただ、闇雲に変えてもろくなことはありません。そのため、

といったことに注意が必要です。また、「どう変化したか」は「〜な気がする」ですませることなく、客観的な分析が必要です。たとえば、「ぜんしん 7,7」と「ぜんしん 4,4」で後者のほうが遅くなるはずですが、それが具体的に何%くらいにスピードダウンするか、「1,1」から「7,7」まで比例するのかどうか、といったことをちゃんと把握すると、この先の調整が楽になるかもしれません。少なくとも、そういう分析の癖を付けておくと将来役に立ちます。
なお、客観的な測定として、たとえば一定距離を走行する時間を計って速度を出す、などの方法があります。
また、8年ほどまえに取られたデータが公式サイトにあります。
わりと直線的?

ここらへんまでしっかりやると、今度はプログラム本体をいじれるようになると思います。
たとえば、

と行動を変えてみるのは一つの手です。

すると、いつのまにか、たぶん、自分である程度プログラムが書けるようになると思います。

※熊谷自身が、未知のプログラミング言語や装置、現象に出くわしたときは、だいたいこういう手順で進めています。


チャレンジ課題

だいたい分かったら、最終的な八の字走行の前に、以下のような挑戦をしてみましょう。 など。

梵天丸の工学部的、技術的解説

概要

梵天丸上図 梵天丸はロボットとしてみると、

という仕様のロボットです。
以下では、移動とセンサの部分について、解説します。

走行部分

梵天丸はロボットとしては対向2輪型移動ロボットと分類されます。
キャスタも入れると車輪は3輪ありますが、ロボットとして動作を考えるときキャスタは「ささえるだけのもの」として考慮しません。そのため、2輪型ロボットといいます。「対向」とはその車輪が、ロボットを境に向き合った対称の位置にあることを指します。

対向2輪型ロボットは、移動するためには左右の車輪の回転(速度or角度)を制御(コントロール、調整)します。これによって、直線や円弧を描いて移動、もしくは、その場で旋回します。

対向2輪型ロボットについては、ロボット工学:車輪移動ロボットにその理論をまとめてあります。 このページは3年生の「ロボット基礎工学」のためのページですが、対向2輪についてはイメージさえつかめれば、1年生でも(というか、高校生でも)理解できる程度の基礎原理です。
押さえるべき点は

という点です。後者はよく考えてみると当たり前なのですが、非常に重要です。 なお、普通の自動車の場合は、同じような中心(旋回中心)が後輪の軸上にあります。

梵天丸上図 梵天丸裏面
赤線上のどこかを中心に動きます。実際には車輪が接している点の延長、と考えてもいいでしょう。

さて、両輪を同じ速度で回せば前に直進、左の車輪の速度が右より高ければ右に曲がる、というイメージは湧くと思います。
梵天丸においては、Hブリッジと呼ばれる回路によってモータにかかる電圧の正負を、PWMという方式でモータにかかる電圧の平均値を変化させて速さを決めています。 速度の段階としては、+7〜+1、0、−1〜−7と15段階あると考えればよいでしょう。
なお、電圧はおおざっぱには、その大小が速さの大小と関連します。ただし、比例の関係にあるわけではないこと、また負荷(ロボットの重さ、摩擦など)によっては同じ電圧でもスピードが落ちることがあります。
(そのため、本式のロボットでは、まず車輪速度が指定値になるように制御され、ロボットを動かすときはその指定値を操作します)

梵天丸のこうどう命令とそれぞれのモータの制御の関係を表にまとめます。
こうどう左モータ右モータ動作の概要
とまれ停止
ぜんしん L、R+L+R基本的に前方に移動
L>Rなら右方向に曲がる
L<Rなら左方向に曲がる
こうしん L、R−L−R基本的に後方に移動
L>Rなら右方向に曲がる
L<Rなら左方向に曲がる
みぎよれ L+L右は停止=右車輪を軸に右前方に旋回
ひだりよれ R+R左は停止=左車輪を軸に左前方に旋回
みぎまわれ L、R+L−R左車輪が前に、右車輪が後ろに回る=右に旋回
旋回中心は両輪の間のどこか、位置はLRの比で決まる
ひだりまわれ L、R−L+R左車輪が後ろに、右車輪が前に回る=左に旋回
旋回中心は両輪の間のどこか、位置はLRの比で決まる
みぎさがれ L−L右は停止=右車輪を軸に右後方に旋回
ひだりさがれ R−R左は停止=左車輪を軸に左後方に旋回
たとえば、「ぜんしん 7,1」より「みぎよれ 7」、「みぎまわれ 7,7」のほうが旋回がきつくなります。 また、「ぜんしん」では両数字の平均値がロボットの移動の速さを、「みぎよれ」は数値そのものが移動、旋回の速さを決め(中心はかわらず)、「みぎまわれ」ではロボットの移動というよりは、旋回の速さが両数値の平均値で決まります。

具体的に「1〜7」がどの程度かは試してみましょう。

なお、梵天丸の移動速度は、「まきもの」だけではなく、梵天丸本体でも調整可能です。モータにつながる線のそばについている水色の部品(可変抵抗、ポテンショメータ)をまわすと、「まきもの」の設定値に重ねて、全体的に速度を可変できます。
この調整は、

などにつかえます。

梵天丸のセンサ

梵天丸頭部 梵天丸の頭部には障害物センサがついていて、おおざっぱに前方、右前方、左前方の障害物を判別することができます。

具体的には、2個の赤外線発光ダイオード(LED)(図中青丸)と1個の赤外線受光モジュール(赤丸)から構成されています。
(受光モジュールはテレビの赤外線リモコンなどにも使われるもの。実際には光らせるときには38kHz程度で明滅させています&そのくらいの光のみを受信するようにしています<太陽や蛍光灯などの影響を避けることが目的 また、基準値を設けて、受信の有無をはっきりさせています<「強い」「弱い」などの判定はなく、「あり」「なし」のみ)

まず、右のLEDを光らせます。このとき、「なにか」があって、赤外線が反射されると、受光モジュールがそれを検知します。同じく、左のLEDを光らせて反射があるかどうかを調べます。
たとえば、右のLEDを光らせたときに反応があったけど、左のLEDでは反応が無い場合、「なにか」は右の方にあると考えられます。逆の場合は左の方、両方で反応があった場合は前方にあると考えられます。
もちろん、右にも左にも前にもあるという場合もあるでしょうし、右と左で「前」を判定する可能性があります。というくらいアバウトですが、いろいろと使い道はあります。

これらが、まきものの「じょうけん」の「まえだ」「みぎだ」「ひだりだ」に相当します。

さて、以上のような原理で光障害物センサを構成していますが、判断条件は「あるレベル以上の反射があったか」です。そのため、図中紫の丸で示した調整抵抗、および「まきもの」の「かんど」は実際には受光の感度ではなく、発光する強さを調整しています。
(前者はもろに強度を、後者はパルスを調整して見かけ上出力を絞ります)

また、「反射光」であるため、以下のような点に注意が必要です。

なお、梵天丸の電源を入れた状態で、なにかを検知すると緑と赤のLEDが光るため、これで感度を調整するとよいでしょう。ときどき「ちらっ」とつくような状況でも「まえだ」などは反応してしまうので注意が必要です。


熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]