Nota
Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. ¡Explora más a fondo Raspberry Pi, Arduino y ESP32 con otros entusiastas!
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y vistas previas.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo.
Ajustar Postura
En este ejemplo, utilizamos el teclado para controlar cada pata del PiCrawler y lograr la postura deseada.
Puedes presionar la barra espaciadora para imprimir los valores actuales de las coordenadas. Estos valores son útiles cuando deseas crear acciones únicas para el PiCrawler.
Ejecutar el Código
cd ~/picrawler/examples
sudo python3 10_do_single_leg.py
Después de ejecutar el código, por favor opera según las instrucciones que aparecen en el terminal.
Presiona
1234para seleccionar las patas individualmente:1: pata delantera derecha,2: pata delantera izquierda,3: pata trasera izquierda,4: pata trasera derecha.Presiona
w,a,s,d,r, yfpara controlar lentamente los valores de las coordenadas del PiCrawler.Presiona
Ctrl+Cpara salir.
Código
#!/usr/bin/env python3
from picrawler import Picrawler
from time import sleep
import readchar
crawler = Picrawler()
SPEED = 80
STEP_SIZE = 2
manual = '''
-------- PiCrawler Controller ---------
....... .......
<=| 2 |┌-┌┐┌┐-┐| 1 |=>
``````` ├ ┤ ```````
....... ├ ┤ .......
<=| 3 |└------┘| 4 |=>
``````` ```````
1: Select right front leg
2: Select left front leg
3: Select left rear leg
4: Select right rear leg
W: Y++ R: Z++
A: X-- F: Z--
S: Y--
D: X++ Ctrl+C: Quit
'''
legs_list = ['right front', 'left front', 'left rear', 'right rear']
# Axis mapping for cleaner logic
move_map = {
'w': (1, +STEP_SIZE), # Y++
's': (1, -STEP_SIZE), # Y--
'a': (0, -STEP_SIZE), # X--
'd': (0, +STEP_SIZE), # X++
'r': (2, +STEP_SIZE), # Z++
'f': (2, -STEP_SIZE), # Z--
}
def clear_screen():
print("\033[H\033[J", end='')
def show_info(selected_leg, coordinate):
clear_screen()
print(manual)
print(f"Selected leg: {selected_leg + 1} - {legs_list[selected_leg]}")
print(f"Coordinate: {coordinate}")
def main():
selected_leg = 0
try:
print(manual)
# Stand up first
crawler.do_step('stand', 40)
sleep(0.5)
# Get current coordinates
coordinate = crawler.current_step_all_leg_value()
show_info(selected_leg, coordinate)
while True:
key = readchar.readkey().lower()
# Select leg
if key in ('1', '2', '3', '4'):
selected_leg = int(key) - 1
show_info(selected_leg, coordinate)
# Move selected leg
elif key in move_map:
axis, delta = move_map[key]
# Update coordinate
coordinate[selected_leg][axis] += delta
# Send updated position
crawler.do_single_leg(selected_leg, coordinate[selected_leg], SPEED)
sleep(0.1)
show_info(selected_leg, coordinate)
sleep(0.05)
except KeyboardInterrupt:
print("\nExiting safely...")
finally:
# Return to sitting position on exit
try:
crawler.do_step('sit', 40)
sleep(1)
except Exception:
pass
print("Robot is now sitting. Program ended.")
if __name__ == "__main__":
main()
current_step_all_leg_value(): Devuelve los valores de coordenadas de todas las patas.do_single_leg(leg,coordinate[leg],speed): Modifica el valor de coordenadas de una pata individualmente.