micro-ROS / micro-ROS/micro_ros_platformio

Deserialization errors and eventual micro-ROS agent crash with best-effort publishers.

Abierto
#167 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
334
Forks
111
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Issue template

  • Hardware description: Arduino Portenta H7
  • RTOS: Mbed OS
  • Installation type: PlatformIO
  • Version or commit hash: Galactic, Humble (I've tried both)
Steps to reproduce the issue

I am running micro-ROS on an Arduino Portenta H7, communicating via UDP with a computer running ROS2. I've been testing with both Galactic and Humble (two different systems, one running Ubuntu 20 and the other 22).

I have four publishers in micro-ROS, each publishing a custom message (containing a builtin_interfaces/Time, a uint8, and two float32s) at 100 Hz using best effort QoS. I also have one publisher publishing a custom message (a builtin_interfaces/Time, and a uint8) at 1 Hz.

After the micro-ROS agent is started, communication works for some time, but deserialization errors start to appear, mostly:

[1736739981.033497] error    | InputMessage.cpp   | log_error                | deserialization error  | buffer: 
0000: 00 00 00 00 00 00

and occasionally:

[1734728823.613239] error    | InputMessage.cpp   | log_error                | deserialization error  | buffer: 
0000: 81 01 49 12 07 01 1F 00 12 AD 00 A5 3E ED 65 67 D3 90 66 22 00 00 00 01 00 00 00 00 00 00 00 00
[1734728823.615098] error    | Processor.cpp      | process_write_data_submessage | deserialization error processing WRITE_DATA submessage | client_key: 0x16BCCD79

Messages continue to publish successfully at around 100 Hz, but eventually the micro-ROS agent crashes with the following message:

terminate called after throwing an instance of 'eprosima::fastcdr::exception::BadParamException'
  what():  Unexpected byte value in Cdr::deserialize(bool), expected 0 or 1

Sometimes it takes a while to crash, and other times it only takes a few minutes. I've also tried publishing with reliable QoS. In that case, the micro-ROS agent doesn't crash or have deserialization errors (at least not as quickly), but each topic is only published at about 1 Hz.

Expected behavior

The micro-ROS agent runs indefinitely with no deserialization errors and doesn't crash.

Actual behavior

Deserialization errors and crash.

Thanks!

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo el problema con Arduino Portenta H7, micro-ROS agent, transporte UDP, mensajes personalizados y publishers best-effort a las frecuencias indicadas. Inspecciona las rutas de deserialización indicadas en InputMessage.cpp y Processor.cpp, incluida la Fast CDR BadParamException. Se considerará terminado cuando el agente se ejecute indefinidamente sin errores de deserialización ni un bloqueo, mientras los publishers continúan a las frecuencias esperadas.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
arduino
Área
embedded-iot, networking
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.