.. include:: /index.rst
:start-after: start_hello_message
:end-before: end_hello_message
レッスン 10: マーズローバーのビジュアルシステムを探る - サーボとチルト機構
===================================================================================
おかえりなさい、若き探検家の皆さん!今日の冒険では、マーズローバーのビジュアルシステムの魅力的な世界に飛び込みます。私たちの目と首が連携して周囲を見渡し移動するのと同じように、ローバーにも危険な火星の地形を進むための同様のシステムが必要です。そして、それがまさに今日構築するものです!
ローバーのビジュアルシステムには2つの主要な部分があります。「目」の役割を果たすカメラと、「首」のように機能して上下を見ることを可能にするチルト機構です。このレッスンの終わりまでに、ローバーに「見る」能力と「うなずく」能力を与えます!
まず、チルト機構を構築します。これはローバーのカメラを保持し、垂直に回転させる装置です。ローバーに首を与えて、「頭」つまりカメラを上下にうなずかせることができるようなものです!
次に、チルト機構を動かす小さくても強力な「筋肉」であるサーボについて学びます。その仕組みと、Arduinoプログラミングを使って制御する方法を理解します。
首の筋肉が頭を動かして目がより良く見渡せるようにするのと同じように、サーボはチルト機構を動かしてローバーのカメラが火星の風景をより良く調査できるようにします。
それでは、シートベルトを締めて、ローバーに独自のビジュアルシステムを装備するミッションを始めましょう!
.. raw:: html
学習目標
----------------
* マーズローバーモデルにチルト機構を取り付け、操作する練習をします。
* サーボの動作原理と応用を理解します。
* Arduinoプログラミングを通じてサーボの動きを制御する方法を学びます。
必要な材料
---------------
* Arduino UNO開発ボード
* サーボ
* ジンバルとカメラ
* マーズローバーモデル(TTモーター、サスペンションシステム、超音波および赤外線障害物回避モジュール、RGB LEDストリップをすでに搭載)
* Arduino IDE
* コンピューター
手順
-----------
**ステップ 1: サーボとは?**
人形劇を見たことがありますか?見たことがあれば、操り人形師が糸を引くだけで人形の腕、脚、頭をいかに滑らかに動かすかに驚いたかもしれません。ある意味で、サーボモーターは私たちの操り人形師のようなものです。
.. image:: img/puppet_show.png
:width: 200
:align: center
サーボモーターは、車輪のようにただ回転し続けるだけではない特殊な種類のモーターです。代わりに、特定の位置に移動してその位置を保持することができます。サイモンセイズというゲームをしていて、サイモンが「腕を90度の角度に上げなさい」と言ったと想像してください。できますよね?それは、サーボのように、腕をどれだけ動かすかを正確に制御できるからです。
.. image:: img/servo.png
:align: center
* 茶色の線: GND
* オレンジ色の線: 信号ピン、メインボードのPWMピンに接続します。
* 赤色の線: VCC
あなたが腕を特定の位置に動かすように制御できるのと同じように、サーボモーターを使用してプロジェクト内のオブジェクトの正確な位置を制御できます。マーズローバーでは、サーボを使用してチルト機構の上下動を制御します。これは、頭を上下にうなずくのと同じです。
次のステップでは、サーボモーターの内部への魅力的な旅に出て、その仕組みを理解します。わくわくしますか?行きましょう!
**ステップ 2: サーボの仕組み**
では、サーボはどのようにしてその魔法を機能させるのでしょうか?サーボの内部へのエキサイティングな旅に出ましょう!
サーボの中を覗いてみると、いくつかの部品が見えます。サーボの中心には、マーズローバーの車輪を回転させるモーターと非常によく似た通常のモーターがあります。モーターの周りには、モーターシャフトの小さなギアに接続された大きなギアがあります。これによって、モーターの速い回転運動が、より遅くてもより強力な運動に変換されます。
.. image:: img/servo_internal.png
:align: center
しかし、それがサーボを特別にしている理由ではありません。魔法は、「ポテンショメータ」と「制御回路」と呼ばれる小さな電子部品で起こります。仕組みはこうです:サーボが動くと、ポテンショメータが回転し、その抵抗値が変化します。制御回路はこの抵抗値の変化を測定し、サーボがどの位置にあるかを正確に把握します。賢いでしょう?
サーボを制御するには、「パルス幅変調」信号、つまりPWMと呼ばれる特別な種類の信号を送信します。これらのパルスの幅を変更することで、サーボがどれだけ動くかを正確に制御し、その位置を保持できます。
次のステップでは、Arduinoを使用してサーボを制御する方法を学びます。コードの形での魔法の呪文の準備はできていますか?行きましょう!
**ステップ 3: Arduinoを使ってサーボを制御する**
さて、探検家の皆さん、サーボの仕組みがわかったところで、魔法の杖であるArduinoを使って制御する方法を学びましょう!
サーボを制御することは、方向指示を与えるようなものです。先ほど触れたパルス幅変調(PWM)信号を覚えていますか?それらを使ってサーボにどこへ動くべきかを指示します。
幸いなことに、Arduinoは ``Servo`` という組み込みライブラリを使ってこの作業を簡単にしてくれます。このライブラリを使用すると、``Servo`` オブジェクトを作成し、ピン(サーボが接続されているピン)をアタッチし、そして簡単なコマンド ``write()`` を使用して角度を設定できます。
コードの一例は次のとおりです:
.. code-block:: arduino
#include
Servo myServo; // create a servo object
void setup() {
myServo.attach(6); // attaches the servo on pin 6
}
void loop() {
myServo.write(90); // tell servo to go to 90 degrees
}
このコードでは、``myServo`` がサーボオブジェクト、``attach(6)`` がサーボがピン6に接続されていることをArduinoに伝え、``write(90)`` がサーボに90度に移動するように指示しています。
よくできました、探検家の皆さん!Arduinoでサーボモーターを制御する方法を学びました。さまざまな角度でも実験してみてください!
**ステップ 4: ビジュアルシステムを組み立てる**
ローバーのビジュアルシステムを組み立てる準備ができました。
.. note::
* ESP32 CAMをカメラアダプターに挿入する際は、向きに注意してください。ESP32アダプターに正しく合うようにする必要があります。
.. image:: img/esp32_cam_direction.png
:width: 300
:align: center
.. raw:: html
**ステップ 5: チルト機構の限界を理解する**
サーボは0度から180度の間で回転するように設計されていますが、あるポイント(たとえば150度以降)を超えると応答しなくなることに気づくかもしれません。なぜこれが起こるのか疑問に思ったことはありますか?次の冒険で一緒にこの謎を探ってみましょう!
鳥が首を曲げすぎて自分の体にぶつかり、それ以上動けなくなる様子を想像できますか?ローバーのチルト機構も同様の状況に直面します。サーボがメカニズムを下方向に動かすと、ローバーのボディにぶつかり、特定の角度以上には動けなくなります。
コード内で到達不可能な角度を書き込んで、無理にこのポイントを超えて動かそうとすると、小さなサーボの鳥が動かなくなり、自分自身を損傷する可能性さえあります!そんなことは避けたいですよね?そこで、ちょっとした実験で動きの制限を理解しましょう。
forループを使用してサーボを0度から180度まで回転させながら、シリアルモニターで角度を記録します。
.. raw:: html
* ESP32-CAMとArduinoボードは同じRX(受信)ピンとTX(送信)ピンを共有しています。そのため、コードをアップロードする前に、このスイッチを右側にスライドしてESP32-CAMを解放し、競合や潜在的な問題を回避する必要があります。
.. image:: ../img/camera_upload.png
:width: 600
* このコードをアップロードした後、 **シリアルモニター** を開きます。情報が表示されない場合は、GalaxyRVRシールドの **リセットボタン** を押してコードを再度実行します。
* サーボが回転し、シリアルモニターに角度が表示されます。
.. image:: img/servo_range.png
.. raw:: html
私のローバーでは、チルト機構はローバーのボディにぶつかるまで約135度まで上がり、それ以上は動きませんでした。
ですから、探検家の皆さん、ローバーを安全に機能させるために、常にその限界を尊重することを忘れないでください!
**ステップ 6: 共有と振り返り**
よくできました、探検家の皆さん!今日はローバーにチルト機構を構築しただけでなく、サーボを制御して動かす方法も理解しました。これはマーズローバーミッションにおける大きな前進です。
それでは、経験を共有し、学んだことを振り返りましょう。
チルト機構のセットアップやサーボのプログラミング中に課題に直面しましたか?どのように克服しましたか?
克服するすべての課題が私たちをより賢くし、ローバーをより良くすることを忘れないでください。ですから、あなたのストーリーやアイデア、解決策を遠慮なく共有してください。あなたの革新的な解決策が、仲間の探検家の旅を助けるかもしれません!