Comunidad Damiao AGV y preguntas frecuentes

Preguntas frecuentes sobre el protocolo DBUS, navegación, solución de problemas y manipulación móvil con OpenArm. Enlaces al foro y soporte.

Preguntas Frecuentes

¿Cuáles son los ajustes exactos del puerto serie para el Damiao AGV?

El firmware del AGV escucha en UART5 (pin PD2, RX) en 100000 baudios con 8 bits de datos, paridad par y 2 bits de parada (8E2). En pyserial, abre el puerto con:

serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=100000,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_EVEN,
    stopbits=serial.STOPBITS_TWO
)

Un error muy común es usar 8N1 (sin paridad, 1 bit de parada). El AGV parecerá conectarse pero ignorará o interpretará incorrectamente todos los tramas en silencio. Siempre use PARITY_EVEN y STOPBITS_TWO.

¿Cómo codifica el marco DBUS de 18 bytes la velocidad?

El marco DBUS empaqueta cuatro valores de canal de 11 bits (ch0–ch3) en los bytes 0–5 utilizando empaquetado de bits little-endian. Cada canal varía de 0 a 2047 con 1024 como centro (neutral/parada). La asignación de velocidad es: ch3 = 1024 + vx × amp (adelante), ch2 = 1024 + vy × amp (lateral), ch0 = 1024 + (−vw) × amp (rotación). Los bytes 6–15 son campos de mouse/teclado en cero. Los bytes 16–17 contienen ch4, fijado en 1024. Ver Especificaciones para la tabla completa del mapa de canales.

El AGV se mueve brevemente y luego se detiene — ¿qué está pasando?

Esta es la característica de seguridad de tiempo de espera de comando que se activa. Si no se recibe un comando de movimiento o parada dentro de --cmd-timeout-ms (300 ms por defecto), el agente automáticamente pone en cero todos los canales de velocidad y el AGV se detiene. Esto generalmente significa que la plataforma no está enviando comandos lo suficientemente rápido, o hay latencia en la red que causa interrupciones. Soluciones: (1) aumentar --cmd-timeout-ms 500 para conexiones de alta latencia, (2) asegurarse de que el panel de teleoperación del navegador esté enviando activamente comandos repetidos a ~10 Hz mientras se mantiene un botón de dirección, (3) verificar su RTT de red hacia la plataforma. move El AGV se mueve en la dirección incorrecta — ¿cómo lo arreglo?

Use las banderas de inversión de ejes en el agente — no se necesitan cambios de firmware:

Pruebe cada eje individualmente (por ejemplo, envíe solo un comando X, observe el movimiento) para determinar qué banderas son necesarias para la orientación de su instalación física.

# Flip forward/backward
python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x

# Flip lateral (left/right)
python3 dami_agent.py ... --invert-y

# Flip rotation direction
python3 dami_agent.py ... --invert-z

¿Puedo probar sin el AGV físico?

Sí. Pase

al lanzar --mock . En modo simulado, el puerto serie nunca se abre. El bucle de control aún codifica tramas DBUS (almacenadas en memoria), la telemetría se reenvía al WebSocket de la plataforma, y todo el análisis de comandos funciona de manera idéntica. Esto le permite verificar todo el pipeline de WebSocket, probar la interfaz de usuario de la plataforma e integrarse en CI sin hardware: dami_agent.pyObtengo pyserial.SerialException al lanzar — ¿qué debo verificar?

python3 dami_agent.py --session RC-XXXX-XXXX --mock

I get pyserial.SerialException when launching — what do I check?

Primero: ls /dev/ttyUSB* para confirmar que el adaptador aparece. Si no aparece, es posible que el controlador del adaptador USB a TTL no esté cargado (intente un puerto USB diferente). Si el puerto aparece pero recibe un error de permiso, agregue su usuario al grupo dialout:

sudo usermod -aG dialout $USER
# Log out and back in, then retry

Si el puerto aparece en la lista de dispositivos pero el agente aún no puede abrirlo, otro proceso puede tenerlo abierto (por ejemplo, una instancia anterior del agente o un monitor serial). Cierre todos los demás procesos que estén utilizando el puerto.

El agente se conecta pero la plataforma no muestra telemetría — ¿qué está mal?

Confirme que el ID de sesión pasado a --session sigue activo en la interfaz de usuario de la plataforma. Las sesiones pueden expirar si están inactivas. Verifique la salida del terminal del agente para la respuesta del apretón de manos de registro — si imprime "apretón de manos fallido" o no imprime "listo", la sesión puede haber expirado. Cree una nueva sesión en la plataforma y pase el nuevo ID al agente. También verifique que --backend apunta a la URL correcta del WebSocket de la plataforma.

¿Cómo ajusto la velocidad del AGV?

Ajuste el --amp parámetro. Esto establece el desplazamiento del canal desde el centro (1024) que representa el comando de movimiento. El valor predeterminado es 660, lo que da aproximadamente el 64% de la velocidad máxima. Para una operación más lenta y controlada durante tareas de manipulación montadas en el brazo, use --amp 400. Para la velocidad máxima en un suelo abierto, use hasta --amp 900. Tenga en cuenta que las ruedas mecanum pierden algo de eficiencia lateral a velocidades muy altas — mantenga --amp por debajo de 800 para maniobras laterales.

Consejos para Integrarse con OpenArm

Planifique el enrutamiento de sus cables antes de montar el brazo

Enrute los cables CAN/USB del brazo a través del canal de gestión de cables interno del AGV antes de atornillar el brazo. Una vez que el brazo está montado, es difícil volver a enrutar los cables sin quitarlo. Deje 20–30 cm de holgura de cable extra en la muñeca — el espacio de trabajo del brazo se extiende hacia los lados y la parte trasera, donde la tensión del cable puede crear resistencia inesperada en las trayectorias de las articulaciones.

Use un amperaje más bajo cuando el brazo esté montado y en movimiento

Un brazo robótico en el AGV eleva el centro de masa. La aceleración lateral rápida puede hacer que la plataforma se balancee, lo que crea perturbaciones en la trayectoria del brazo — particularmente en posiciones de alcance extendido. Comience con --amp 400 para el movimiento de la base durante la operación del brazo y aumente solo si es necesario. Para la recolección de datos de teleoperación, un movimiento de base lento y constante produce datos de entrenamiento más limpios que movimientos rápidos y bruscos.

Registre ambos agentes con diferentes valores de --node-id

Al ejecutar el agente AGV y el agente de brazo simultáneamente en la misma sesión de plataforma, asigne a cada uno un distinto --node-id. Esto asegura que la plataforma muestre flujos de telemetría separados y el archivo JSONL del episodio etiqueta los datos de cada nodo de manera independiente. Convención de nombres recomendada: damiao-base para el AGV y openarm-right / openarm-left para los nodos de brazo.

Coordinar el movimiento de la base y el movimiento del brazo en teleoperación

En el panel de teleoperación de la Plataforma Fearless, ambos nodos aparecen simultáneamente. Un patrón útil de teleoperación es: detener la base, mover el brazo para agarrar, mover la base para reposicionar, repetir. El archivo JSONL del episodio captura la telemetría de todos los nodos de manera sincrónica por marca de tiempo, para que las políticas posteriores puedan aprender de la trayectoria completa de manipulación móvil. Considere usar los marcadores de grabación de la plataforma para anotar dónde el movimiento de la base transiciona al movimiento del brazo dentro de cada episodio.

Agregue el sensor Paxini GEN3 para datos de manipulación móvil ricos en contacto

monte Paxini PX-6AX GEN3 sensores táctiles en las yemas de los dedos del OpenArm o en el efector final. Registre el puente del sensor como un tercer nodo en la misma sesión. La plataforma graba flujos de telemetría táctil, de articulaciones del brazo y de velocidad de la base de manera sincrónica, creando conjuntos de datos ricos en contacto para la clonación de comportamientos y el aprendizaje por refuerzo.

Foro y Soporte

¿Tiene una pregunta que no se responde aquí? Pregunte a la comunidad SVRC o contacte con el soporte de hardware.

Ir al Foro → Contactar con soporte →

¿Listo para construir un sistema de manipulación móvil?

Sigue la guía de configuración, monta tu brazo y comienza a recopilar demostraciones de teleoperación de cuerpo completo en la plataforma.