注釈
こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32に関心のある仲間と一緒にさらに深く学びましょう。
参加する理由
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートで解決できます。
学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
特別なプレビュー: 新製品の発表や先行公開に早期アクセスできます。
特別割引: 新製品に対して限定割引を楽しめます。
祝祭プロモーションとプレゼント: プレゼントや祝祭プロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
9. ポーズ
PiCrawlerは座標の配列を記述することで特定のポーズを取ることができます。ここでは、右後足を上げたポーズを取らせています。
コードの実行
cd ~/picrawler/examples
sudo python3 9_do_step.py
コード
#!/usr/bin/env python3
from picrawler import Picrawler
from time import sleep
# Create Picrawler instance
crawler = Picrawler()
# Leg order:
# [right front], [left front], [left rear], [right rear]
new_step = [[45, 45, -75], [45, 0, -75], [45, 0, -30], [45, 45, -75]]
# Get the default stand step from the move list
stand_step = crawler.move_list['stand'][0]
def main():
action_speed = 80 # Speed for movement actions
try:
# Stand up slowly at 40% speed to reduce current spikes
crawler.do_step('stand', 40)
sleep(1.0)
# Continuous action loop
while True:
crawler.do_step(stand_step, action_speed)
sleep(3)
crawler.do_step(new_step, action_speed)
sleep(3)
except KeyboardInterrupt:
# Handle Ctrl+C for safe exit
print("\nExiting safely...")
finally:
# Return to sitting position before shutting down
try:
crawler.do_step('sit', 40)
sleep(1.0)
except Exception:
pass
if __name__ == "__main__":
main()
仕組みは?
このコードで注目すべき部分は crawler.do_step() です。
do_action() と似ていますが、 do_step() もPiCrawlerの動作を制御できます。
違いは、前者が「前進」のような連続的な動作を行うのに対し、後者は「立つ」や「座る」などの個別の動作を実行するために使われます。
このメソッドには2つの使い方があります。
1つ目: 文字列を記述し、 picrawler ライブラリ内の step_list 辞書を直接利用できます。
crawler.do_step('stand',speed)
# "speed"はステップの速度を示し、範囲は0~100です。
2つ目: 4つの座標値を含む配列を記述できます。
new_step=[[45, 45, -75], [45, 0, -75], [45, 0, -30], [45, 45, -75]]
# これらの4つの座標は、右前足、左前足、左後足、右後足をそれぞれ制御するために使用します。
各足には独立した座標系があります。以下の図のように表示されます。
各つま先の座標を個別に測定する必要があります。以下の図のように表示されます。
ちなみに、最初の方法で呼び出す step_list も4つの座標値を含む配列で構成されています。
step_list = {
"stand":[
[45, 45, -50],
[45, 45, -50],
[45, 45, -50],
[45, 45, -50]
],
"sit":[
[45, 45, -30],
[45, 45, -30],
[45, 45, -30],
[45, 45, -30]
],
}