.. note::
こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32に関心のある仲間とともに、さらに深く学びましょう。
**参加する理由**
- **専門家のサポート**: 購入後の問題や技術的な課題を、コミュニティやチームのサポートで解決できます。
- **学びと共有**: ヒントやチュートリアルを交換して、スキルを向上させましょう。
- **特別なプレビュー**: 新製品の発表や先行公開に早期アクセスできます。
- **特別割引**: 新製品に対して限定割引を楽しめます。
- **祝祭プロモーションとプレゼント**: プレゼントや祝祭プロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか?[|link_sf_facebook|]をクリックして、今すぐ参加しましょう!
.. _py_move:
1. 移動
==============
これはPiCrawlerの最初のプロジェクトです。最も基本的な機能である「移動」を実行します。
.. .. image:: img/move.png
**コードを実行する**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 1_move.py
プログラムが開始されると、PiCrawler は立ち上がり、短時間待機します。
その後、以下の動作サイクルを継続的に実行します:
前進、後退、左旋回、右旋回、
小さな左旋回、小さな右旋回。
各動作の間には短い待機時間が設けられており、
より滑らかな動きになるようにしています。
Ctrl+C を押すとプログラムが停止します。
終了前に、PiCrawler は安全に座る姿勢に戻ります。
**コード**
.. note::
以下のコードは **修正/リセット/コピー/実行/停止** できます。ですが、実行する前にソースコードパス(例: ``picrawler\examples`` )に移動する必要があります。コードを修正した後は、そのまま実行して効果を確認できます。
.. raw:: html
.. code-block:: python
from picrawler import Picrawler
from time import sleep
crawler = Picrawler() # Create PiCrawler object
def main():
speed = 80 # Movement speed
try:
crawler.do_step('stand', 40) # Stand up
sleep(1.0)
while True:
crawler.do_action('forward', 1, speed) # Move forward
sleep(0.25)
crawler.do_action('backward', 1, speed) # Move backward
sleep(0.25)
crawler.do_action('turn left', 1, speed) # Turn left
sleep(0.25)
crawler.do_action('turn right', 1, speed) # Turn right
sleep(0.25)
crawler.do_action('turn left angle', 1, speed) # Small left turn
sleep(0.3)
crawler.do_action('turn right angle', 1, speed) # Small right turn
sleep(0.3)
sleep(0.5)
except KeyboardInterrupt:
print("\nCtrl+C pressed...")
finally:
crawler.do_step('sit', 40) # Sit down before exit
sleep(1.0)
if __name__ == "__main__":
main()
**仕組みは?**
#. インポートと初期化
.. code-block:: python
from picrawler import Picrawler
from time import sleep
crawler = Picrawler()
このスクリプトでは、必要なモジュールをインポートし、
``Picrawler`` オブジェクトを作成します。
このオブジェクトは、ロボットのすべての動作を制御するために使用されます。
#. メイン関数と初期設定
.. code-block:: python
def main():
speed = 80
crawler.do_step('stand', 40)
sleep(1.0)
``main()`` 関数では移動速度を設定します。
ループを開始する前に、ロボットは立ち上がり、姿勢を安定させます。
#. 連続動作ループ
.. code-block:: python
while True:
crawler.do_action('forward', 1, speed)
crawler.do_action('backward', 1, speed)
crawler.do_action('turn left', 1, speed)
crawler.do_action('turn right', 1, speed)
crawler.do_action('turn left angle', 1, speed)
crawler.do_action('turn right angle', 1, speed)
ロボットは無限ループの中で、事前に定義された一連の
動作を繰り返し実行します。
各動作の間に短い待機時間を入れることで、動きがより滑らかになります。
#. 安全な終了処理
.. code-block:: python
except KeyboardInterrupt:
print("\nCtrl+C pressed...")
finally:
crawler.do_step('sit', 40)
``try / except / finally`` 構造により、以下を保証します:
- Ctrl+C によってループを安全に停止できます。
- プログラム終了前にロボットが座る動作を行います。
#. プログラムエントリ
.. code-block:: python
if __name__ == "__main__":
main()
これにより、スクリプトが直接実行された場合のみ
``main()`` が実行されます。