micro-ROS / micro-ROS/micro_ros_platformio
Deserialization errors and eventual micro-ROS agent crash with best-effort publishers.
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 334
- Fork
- 111
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
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!
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện sự cố với Arduino Portenta H7, micro-ROS agent, giao vận UDP, các message tùy chỉnh và các publisher best-effort ở các tần suất đã nêu. Kiểm tra các đường dẫn giải tuần tự được báo cáo trong InputMessage.cpp và Processor.cpp, bao gồm Fast CDR BadParamException. Được coi là hoàn tất khi agent chạy vô thời hạn mà không có lỗi giải tuần tự hoặc bị crash, trong khi các publisher vẫn tiếp tục ở các tần suất mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- arduino
- Lĩnh vực
- embedded-iot, networking
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100