.. include:: /index.rst :start-after: start_hello_message :end-before: end_hello_message .. _ir_ultra_avoid: レッスン8 高度な障害物回避 ================================================== ロボットが家具にぶつからずに部屋を移動できる方法について考えたことはありますか?今日は、マーズローバーにそれを教えます!2種類の異なるセンサーを組み合わせて、超スマートな障害物回避システムを作成します。 センサーがロボットの「視覚」を助ける仕組み ------------------------------------------------ 私たちがどのように感覚を使うか考えてみましょう: * **赤外線センサー** は、コウモリが反響定位を使うように機能します!目に見えない赤外線を発射し、物体から跳ね返ってくるのを待ちます。光がすぐに戻ってきたら、近くに障害物があります。 * **超音波センサー** は、私たちには聞こえない音波で動作します。高周波の音を発信し、エコーが返ってくるまでの時間を測定します。時間が長いほど、物体が遠くにあることを意味します。 .. raw:: html 両方のセンサーを一緒に使用すると、ローバーは周囲の状況をよりよく把握できます。まるで暗い部屋を移動するときに目と耳の両方を使うようなものです! 学習目標 ------------------------- * 超音波センサーと赤外線センサーを組み合わせて高度な障害物回避システムを作成する * マーズローバーが自動的に障害物を感知して回避するようにプログラムする 超スマートローバーの構築 ----------------------------------------------------------- 以前に作成した障害物回避プログラムを覚えていますか?それを出発点として、さらに改良していきます! #. まず、:ref:`app_connect` を行います。 #. それでは、:ref:`ir_obstacle` から以前の赤外線センサープロジェクトをテンプレートとして開きましょう。「ファイル」をクリックして、保存したIR障害物回避プロジェクトを見つけます。 .. image:: img/7_avoid_open.png #. 変更を加える前に、元の作業を失わないようにコピーを保存しましょう。「コピーを保存」をクリックします。 .. image:: img/7_avoid_save_copy.png #. 新しいプロジェクトに「スーパースマートローバー」や「高度な障害物回避」のようなクールな名前を付けます。 .. image:: img/7_avoid_save_rename.png #. 次に、超音波センサーを追加しましょう! ``距離 < 15 cm のとき`` ブロックをドラッグします。これは遠くから障害物を検出する「早期警報システム」になります。 .. image:: img/7_avoid_when.png :width: 800 #. 混乱を防ぐために、``このスプライトの他のスクリプトを止める`` ブロックを追加します。これにより、ローバーは一度に1つの命令セットのみに従います。 .. image:: img/7_avoid_stop.png #. 超音波センサーが何か近くのものを検出したら、ローバーを安全な距離まで後退させます。 .. image:: img/7_avoid_backward.png #. 次に、障害物から離れる方向に旋回する必要があります。ローバーは1秒間旋回します。左折または右折を選択できます! .. image:: img/7_avoid_turn.png #. 最後に、新しい経路で前進を続けるようにローバーに指示します。 .. image:: img/7_avoid_go.png 素晴らしい!これで、3つのセンサーがチームのように連携して動作するローバーができました: - 前面の超音波センサーが遠くの障害物を発見 - 左IRセンサーが左側の物体を検出 - 右IRセンサーが右側を監視 プログラムをテストして、ローバーがどれだけスムーズに障害物を回避するか見てみましょう。障害物コースを作成して、ローバーが衝突せずに完走できるか試してみましょう! チャレンジ:旋回時間や距離を変更して、ローバーの障害物回避能力をさらに向上させられますか?