Note

Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Explorez plus en profondeur l’univers du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes post-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé aux annonces de nouveaux produits et d’aperçus exclusifs.

  • Réductions spéciales : Profitez de remises exclusives sur nos produits les plus récents.

  • Promotions festives et concours : Participez à des concours et à des promotions spéciales.

👉 Prêt à explorer et à créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !

12. Twist

Nous savons déjà comment faire en sorte que PiCrawler adopte une posture spécifique. L’étape suivante consiste à combiner plusieurs postures pour créer une action continue.

Ici, les quatre pieds de PiCrawler se soulèvent et s’abaissent par paires, en sautant au rythme de la musique.

Exécuter le code

cd ~/picrawler/examples
sudo python3 12_twist.py

Après le démarrage du programme, le robot se met d’abord debout lentement afin d’atteindre une posture stable.

Une fois debout, la musique de fond commence à jouer. En même temps, le robot effectue un mouvement de danse en torsion continu. Pendant ce mouvement, les quatre pattes se lèvent et s’abaissent alternativement, créant un effet de torsion rythmique. Les pattes se déplacent par paires coordonnées, ce qui donne l’impression que le corps se balance de gauche à droite.

Un court délai entre chaque étape rend le mouvement plus fluide et plus stable, au lieu d’être brusque ou trop rapide.

Le robot continue de danser pendant que la musique joue. Lorsque Ctrl+C est pressé, le programme s’arrête et le robot revient en toute sécurité à une position assise avant de quitter.

Code

Note

Vous pouvez modifier/réinitialiser/copier/exécuter/arrêter le code ci-dessous. Mais avant cela, vous devez vous rendre dans le répertoire du code source, comme picrawler\examples. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

from picrawler import Picrawler
from robot_hat import Music
from time import sleep

music = Music()
crawler = Picrawler()

def twist(speed):
    new_step = [[50, 50, -80], [50, 50, -80], [50, 50, -80], [50, 50, -80]]

    for i in range(4):
        for inc in range(30, 60, 5):
            rise = [50, 50, (-80 + inc * 0.5)]
            drop = [50, 50, (-80 - inc)]

            new_step[i] = rise
            new_step[(i + 2) % 4] = drop
            new_step[(i + 1) % 4] = rise
            new_step[(i - 1) % 4] = drop

            crawler.do_step(new_step, speed)
            sleep(0.03)  # small delay to make motion smoother and less "crazy"

def main():
    try:
        # Stand up slowly first
        crawler.do_step('stand', 40)
        sleep(1.0)

        # Start music
        music.music_play('./musics/sports-Ahjay_Stelino.mp3')
        music.music_set_volume(20)

        while True:
            twist(speed=100)

    except KeyboardInterrupt:
        print("\nCtrl+C detected, exiting...")

    finally:
        # Sit down safely before exit
        try:
            crawler.do_step('sit', 40)
            sleep(1.0)
        except Exception:
            pass

if __name__ == "__main__":
    main()

Comment cela fonctionne ?

Dans ce code, vous devez porter attention à la partie suivante :

def twist(speed):
    new_step = [[50, 50, -80], [50, 50, -80], [50, 50, -80], [50, 50, -80]]

    for i in range(4):
        for inc in range(30, 60, 5):
            rise = [50, 50, (-80 + inc * 0.5)]
            drop = [50, 50, (-80 - inc)]

            new_step[i] = rise
            new_step[(i + 2) % 4] = drop
            new_step[(i + 1) % 4] = rise
            new_step[(i - 1) % 4] = drop

            crawler.do_step(new_step, speed)
            sleep(0.03)  # petit délai pour rendre le mouvement plus fluide et moins brusque

En termes simples, ce code utilise deux boucles for imbriquées pour faire varier de manière continue et régulière les valeurs du tableau new_step. En même temps, crawler.do_step() exécute chaque posture, ce qui crée un mouvement continu.

Vous pouvez obtenir intuitivement le tableau de coordonnées correspondant à chaque posture dans 10. Ajuster la posture.

De plus, cet exemple joue également une musique de fond. La méthode d’implémentation est la suivante.

Jouer de la musique en important la bibliothèque suivante :

from robot_hat import Music

Déclarer un objet Music :

music = Music()

Lire la musique de fond située dans le dossier picrawler/examples/musics et régler le volume à 20. Vous pouvez également ajouter de la musique dans le dossier musics via Logiciel FileZilla.

music.music_play('./musics/sports-Ahjay_Stelino.mp3')
music.music_set_volume(20)