障害物回避

キットには距離センサーもついています。
ロボットに取り付けることで、近くにある障害物を検知して、それを避けるような動きができます。

取り付け

距離センサーを取り付けましょう。
まず、黒い2つの目のような距離センサーにケーブルを繋ぎます。
ケーブルには3本の赤、黒、黄色の線が出ています。それぞれobnizに接続します。

下の写真のようにobnizの7番に赤、8番に黒、9番に黄色を接続します。

次に距離センサーをボディーに設置します。

ボディーには取付用の穴は用意されていません。軽いセンサーですので、両面テープでどこにでも取り付けできます。

両面テープを距離センサーにつけて、ボディーに設置します。例えばこのように。

この目のようなものから先にある物体までの距離を測ることができます。

距離

ロボットからこの距離センサーを使って測った距離はこの「計測距離(mm)」ブロックで知ることができます。

この丸ブロックが計測された距離になります。
センサーより先に10cmのところにものがあればこのブロックは100になります。

障害物回避

距離センサーを使ってぶつからずに走るようにしてみましょう。

近くにものがなければ(距離の値が大きければ)前に進み、
そうじゃなければ右に回転するようにします。

こうすれば、真っすぐ進み、何かが近づいてきたら右に回り、また何もなくなったら前にすすむ

という動きができます。

もしもブロックを使います。
条件として、「距離が200よりも大きかったら」としてみましょう。

こうすることで「センサーの前200mmまでには何もない」ということがわかりますから、
ここでロボットを進めます。

上の写真ですとセンサーはobnizがある側に設置しました。
スマホを置いていたときとは逆です。
なので、マイナスの値でモーターを回すことでセンサーがある側に進みます。

そしてセンサーの近くに物があるときは回転させましょう。

どちらもあまり早いとぶつかってしまうので、少しゆっくり動けるようにします。

最終的にはこのようなプログラムになります。

<!-- Block Program Example -->
<xml xmlns="http://www.w3.org/1999/xhtml">
  <variables>
    <variable type="obniz" id="X2:3=S(hsdv0mk{aavHW">obniz</variable>
    <variable type="UIButton" id="80uQ37Yg!_RM@zbm[`cF">button</variable>
    <variable type="UIButton" id="#7$4fAkr(P%;.%JaKIy`">backbutton</variable>
    <variable type="UIButton" id="akidXEU*0XQ}VT^!o6Sp">rightbutton</variable>
    <variable type="UIButton" id="KBvD*sLV+fD7(ieEkq5x">leftbutton</variable>
    <variable type="" id="hpvY$6K[tgY$$/L_8%xc">count</variable>
    <variable type="dcmotor" id="V?6USN(jVhQ,P{82]/*M">dcmotor</variable>
    <variable type="airobotkit" id="Jk=/mw~HxfZs@VDVmFYY">airobotkit</variable>
    <variable type="led" id="!MAt1@Dsy)#f.p,K@;=%">led</variable>
  </variables>
  <block type="obniz_connect" id="Z8!^LPO*[5?q{e*57()u" x="154" y="225">
    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
    <value name="obniz_id">
      <shadow type="text" id="XmI_$os3vVOeQ~scg106">
        <field name="TEXT">OBNIZ_ID_HERE</field>
      </shadow>
    </value>
    <next>
      <block type="obniz_parts_airobotkit_wired" id="Z|2}f3PXkYzz)24$KZ.9">
        <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
        <field name="AIRobotKit" id="Jk=/mw~HxfZs@VDVmFYY" variabletype="airobotkit">airobotkit</field>
        <next>
          <block type="obniz_util_repeat" id="9lu9Z1ZCks18R6J`^jq{">
            <statement name="DO">
              <block type="controls_if" id="!/V})r$xUelMg[uMK;8V">
                <mutation else="1"></mutation>
                <value name="IF0">
                  <shadow type="logic_boolean" id="~/Y]V0sB63NH2A2~}:!]">
                    <field name="BOOL">TRUE</field>
                  </shadow>
                  <block type="logic_compare" id="^ek`3CozC{tiDgF.gfTY">
                    <field name="OP">GT</field>
                    <value name="A">
                      <shadow type="math_number" id="Zdk+?ZdSWC]L0qRJ~8!e">
                        <field name="NUM">10</field>
                      </shadow>
                      <block type="obniz_parts_airobotkit_distance" id="!l0dYY]-hK^LI8QBC~.(">
                        <field name="AIRobotKit" id="Jk=/mw~HxfZs@VDVmFYY" variabletype="airobotkit">airobotkit</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="F7@M7+EPw?Vb`wi`9IcR">
                        <field name="NUM">200</field>
                      </shadow>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="obniz_parts_airobotkit_motor" id="T}5ohM~[qrMW^:cNK|iv">
                    <field name="AIRobotKit" id="Jk=/mw~HxfZs@VDVmFYY" variabletype="airobotkit">airobotkit</field>
                    <value name="leftpower">
                      <shadow type="math_number" id="xnH7u%~2}PI=*wWFGO3Z">
                        <field name="NUM">-50</field>
                      </shadow>
                    </value>
                    <value name="rightpower">
                      <shadow type="math_number" id="SDV:0_QtKvUGzR;EIwFm">
                        <field name="NUM">-50</field>
                      </shadow>
                    </value>
                  </block>
                </statement>
                <statement name="ELSE">
                  <block type="obniz_parts_airobotkit_motor" id="^3VjjYMUNIf*u}YCp/.@">
                    <field name="AIRobotKit" id="Jk=/mw~HxfZs@VDVmFYY" variabletype="airobotkit">airobotkit</field>
                    <value name="leftpower">
                      <shadow type="math_number" id="0]r!83SpB10C6q+0qLKO">
                        <field name="NUM">50</field>
                      </shadow>
                    </value>
                    <value name="rightpower">
                      <shadow type="math_number" id="%^4FTbUCRYshk9-av:gA">
                        <field name="NUM">-50</field>
                      </shadow>
                    </value>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

プログラムを動かすとセンサーを使って自分で動きます。手や壁でさえぎってみましょう。



Next : Following a white line

You will Get in Few Days

Circuit for Starter “obniz Board” is available on Amazon and other online stores.
You can get it at below

Our products and resellers

Forum

Visit our developer’s forum to discuss and discover technologies.

Forum

Contact

Feel free to contact out support and technical team.

Contact us