Skip to content

🏎️ 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.

from jetracer.nvidia_racecar import NvidiaRacecar
import time

car = NvidiaRacecar()

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 
Si observas que al no mandar giro el coche se desvía, tienes que jugar con el 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.")