Nota
Ciao, benvenuto nella Community di SunFounder per gli appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme a noi e ad altri appassionati.
Perché Unirsi a Noi?
Supporto Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e alle anteprime.
Sconti Esclusivi: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Concorsi Speciali: Partecipa a giveaway e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [here] e unisciti oggi stesso!
3. Movimento della Testa
Il movimento del servo della testa di PiDog è controllato tramite le seguenti funzioni:
Pidog.head_move(target_yrps, roll_comp=0, pitch_comp=0, immediately=True, speed=50)
target_angles: È un array bidimensionale composto da un array di 3 angoli dei servo (definiti gruppo di angoli) come elementi. Questi gruppi di angoli verranno utilizzati per controllare i servo della testa. Se vengono definiti più gruppi di angoli, quelli non eseguiti verranno memorizzati nella cache.roll_comp: Fornisce una compensazione angolare sull’asse del rollio.pitch_comp: Fornisce una compensazione angolare sull’asse dell’inclinazione.immediately: Se impostato suTrue, la cache viene svuotata immediatamente per eseguire il nuovo gruppo di angoli; se impostato suFalse, il nuovo gruppo di angoli viene aggiunto alla coda di esecuzione.speed: Velocità di esecuzione del gruppo di angoli.
Il controllo del servo della testa di PiDog dispone anche di alcune funzioni di supporto:
Pidog.is_head_done()
Verifica se tutte le azioni della testa presenti nel buffer sono state eseguite.
Pidog.wait_head_done()
Attende che tutte le azioni della testa nel buffer siano state completate.
Pidog.head_stop()
Elimina tutte le azioni della testa nel buffer, fermando così i servomotori della testa.
Ecco alcuni casi d’uso comuni:
Esegui un cenno del capo cinque volte.
from pidog import Pidog
import time
my_dog = Pidog()
for _ in range(5):
my_dog.head_move([[0, 0, 30], [0, 0, -30]], speed=80)
my_dog.wait_head_done()
time.sleep(0.5)
Scuoti la testa per 10 secondi.
from pidog import Pidog
import time
my_dog = Pidog()
for _ in range(99):
my_dog.head_move([[30, 0, 0], [-30, 0, 0]], immediately=False, speed=30)
# mantenere per 10s
time.sleep(10)
my_dog.head_move([[0, 0, 0]], immediately=True, speed=80)
PiDog mantiene la testa orizzontale anche durante il movimento, sia che stia seduto sia che stia in semi-squat.
from pidog import Pidog
import time
my_dog = Pidog()
# lista delle azioni
shake_head = [[30, 0, 0], [-30, 0, 0]]
half_stand_leg = [[45, 10, -45, -10, 45, 10, -45, -10]]
sit_leg = [[30, 60, -30, -60, 80, -45, -80, 45]]
while True:
# scuotere la testa in posizione di semi-squat
my_dog.legs_move(half_stand_leg, speed=30)
for _ in range(5):
my_dog.head_move(shake_head, pitch_comp=0, speed=50)
my_dog.wait_head_done()
time.sleep(0.5)
# scuotere la testa in posizione seduta
my_dog.legs_move(sit_leg, speed=30)
for _ in range(5):
my_dog.head_move(shake_head, pitch_comp=-30, speed=50)
my_dog.wait_head_done()
time.sleep(0.5)