🏎️ 02. Movimiento Básico (basic_motion)
Este cuaderno es el punto de partida para comprobar que el chasis, los motores y el controlador (NvidiaRacecar) pueden comunicarse perfectamente. A continuación te explicamos paso a paso cómo funciona para terminar con el código listo para ejecutarse.
Guía Paso a Paso
1. Inicialización de la Clase
El primer paso en cualquier cuaderno de movimiento es importar la librería específica que adapta el cochecito y crear un objeto car.
2. Comprobación y Ajuste de Calibración
Los motores no siempre están perfectamente rectos mecánicamente. La función expone una ganancia (multiplicador) y un offset (desplazamiento central). Puedes imprimir estos valores base para saber cómo está configurado tu coche:
print(f"Ganancia Dirección: {car.steering_gain}")
print(f"Offset Dirección: {car.steering_offset}")
print(f"Ganancia Motor: {car.throttle_gain}")
# Recomendación: Bajar la velocidad máxima por seguridad
car.throttle_gain = 0.5
car.steering_offset sumándole o restándole décimas.
3. Modificando la Dirección (Steering)
La variable car.steering espera un rango entre -1.0 (izquierda) y 1.0 (derecha). Podemos testear físicamente cómo gira el servomotor:
car.steering = -1.0 # Giro total Izquierda
time.sleep(1)
car.steering = 1.0 # Giro total Derecha
time.sleep(1)
car.steering = 0.0 # Volver al centro
4. Acelerando y Frenando (Throttle)
La variable car.throttle manda potencia a las ruedas traseras.
[!WARNING] Ten mucho cuidado en las mesas. Si levantas el coche y pulsas acelerar, puede saltar por la tracción. Usa valores bajos (ej. 0.3) para rodar muy despacio.
car.throttle = 0.3 # Avanzar despacio hacia delante
time.sleep(2)
car.throttle = 0.0 # Parada completa
time.sleep(1)
car.throttle = -0.3 # Marcha atrás despacio
Código Completo
Pon todos estos pasos juntos en una única celda de tu Jupyter Notebook para que realice el ciclo automático completo de diagnóstico del motor:
from jetracer.nvidia_racecar import NvidiaRacecar
import time
# 1. Inicializar Coche
car = NvidiaRacecar()
# Imprimir configuración base
print(f"Ganancia Dirección: {car.steering_gain}")
print(f"Offset Dirección: {car.steering_offset}")
print(f"Ganancia Motor: {car.throttle_gain}")
# 2. Bajar la velocidad máxima al 50% por seguridad
car.throttle_gain = 0.5
print("Comenzando secuencia de prueba...")
# 3. Probar la dirección (Steering)
car.steering = -1.0 # Giro total Izquierda
time.sleep(1)
car.steering = 1.0 # Giro total Derecha
time.sleep(1)
car.steering = 0.0 # Volver al centro
time.sleep(1)
# 4. Probar aceleración (Throttle)
car.throttle = 0.3 # Avanzar despacio
time.sleep(2)
car.throttle = 0.0 # Parar
time.sleep(1)
car.throttle = -0.3 # Marcha atrás despacio
time.sleep(2)
# 5. Parada de seguridad
car.throttle = 0.0
print("Prueba finalizada con éxito.")