micro-ROS / micro-ROS/micro_ros_platformio
Deserialization errors and eventual micro-ROS agent crash with best-effort publishers.
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 334
- Forks
- 111
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## 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!
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire le problème avec Arduino Portenta H7, micro-ROS agent, le transport UDP, des messages personnalisés et des publishers best-effort aux fréquences indiquées. Examinez les chemins de désérialisation signalés dans InputMessage.cpp et Processor.cpp, notamment la Fast CDR BadParamException. Le travail sera considéré comme terminé lorsque l’agent s’exécutera indéfiniment sans erreur de désérialisation ni plantage, tandis que les publishers continueront aux fréquences attendues.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- arduino
- Domaine
- embedded-iot, networking
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100