Bemerkung
Hallo und herzlich willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 ein und tauschen Sie sich mit anderen Technikbegeisterten aus.
Warum mitmachen?
Expertenunterstützung: Lösen Sie Probleme nach dem Verkauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu erweitern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Einblicken.
Exklusive Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Verlosungen und Feiertagsaktionen teil.
👉 Bereit für spannende Projekte? Klicken Sie auf [hier] und treten Sie noch heute bei!
9. Pose
Der PiCrawler kann durch die Angabe eines Koordinatenarrays eine bestimmte Haltung einnehmen. Hier nimmt er eine Haltung mit erhobenem rechten Hinterbein ein.
Code ausführen
cd ~/picrawler/examples
sudo python3 9_do_step.py
Nachdem das Programm gestartet wurde, steht der Roboter zunächst langsam auf, um eine stabile Haltung zu erreichen.
Sobald er steht, führt der Roboter in einer Schleife wiederholt zwei Aktionen aus. Zuerst bewegt er sich in eine Stand-Schritt-Position und hält diese Haltung einige Sekunden lang. Anschließend wechselt er zu einem benutzerdefinierten Schritt, bei dem sich die Beine zu unterschiedlichen Koordinaten bewegen. Dadurch entsteht eine sich wiederholende Bewegungssequenz mit wechselnden Haltungen.
Der Roboter wechselt kontinuierlich zwischen diesen beiden Positionen, bis das Programm gestoppt wird. Wenn Ctrl+C gedrückt wird, beendet sich das Programm sicher und der Roboter kehrt in eine Sitzposition zurück.
Code
#!/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()
Funktionsweise
In diesem Code ist die Funktion crawler.do_step() besonders wichtig.
Ähnlich wie bei do_action() kann auch do_step() das Verhalten des PiCrawler
steuern. Der Unterschied besteht darin, dass die erste Methode kontinuierliche Bewegungen wie vorwärts gehen ausführt, während die zweite Methode separate Haltungen wie stehen oder sitzen ermöglicht.
Zwei Verwendungsmöglichkeiten:
Verwendung mit String: Sie können direkt auf die
step_list-Daten impicrawler-Modul zugreifen.crawler.do_step('stand',speed) # "speed" gibt die Geschwindigkeit des Schritts an, der Bereich liegt zwischen 0~100.
Verwendung mit Koordinatenarray: Sie können ein Array mit vier Koordinatenwerten angeben.
new_step=[[45, 45, -75], [45, 0, -75], [45, 0, -30], [45, 45, -75]] # Diese vier Koordinaten steuern die Beine in der Reihenfolge rechts vorne, links vorne, links hinten, rechts hinten.
Jedes Bein hat ein eigenes Koordinatensystem, wie unten dargestellt:
Die Koordinaten jedes Zehs müssen individuell gemessen werden. Beispiel:
Hinweis:
Die step_list-Werte der ersten Methode bestehen ebenfalls aus Arrays mit vier Koordinatenwerten.
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]
],
}