micro-ROS / micro-ROS/micro-ROS-Agent

Run micro-ros-agent on top of rmw_fastrtps_dynamic_cpp, using introspection typesupport

Ouverte
#202 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
C++
Étoiles
201
Forks
111
Merge moyen
1 j 6 h
PR mergées (30 j)
10

Description

## Issue template

- Hardware description: Linux aarch64
- Installation type: https://github.com/mvukov/rules_ros2
- Version or commit hash: humble

I am getting segmentation fault at
https://github.com/micro-ROS/micro-ROS-Agent/blob/8fdc5060c7601a5d7d9e12254a1681e51da02d2c/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp#L33

due to the `type_support_` object being erased from memory somewhere in
https://github.com/micro-ROS/micro-ROS-Agent/blob/8fdc5060c7601a5d7d9e12254a1681e51da02d2c/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp#L31

`type_support_->typesupport_identifier` is `rosidl_typesupport_introspection_cpp` since I am using `rmw_fastrtps_dynamic_cpp` as middleware. I see that L33 in graph_typesupport.cpp compares with `rosidl_typesupport_fastrtps_cpp`, which is why I assume micro-ros-agent requires `rmw_fastrtps_cpp` as middleware. I would like to stick with `rmw_fastrtps_dynamic_cpp`.

Changing this line from `rmw_fastrtps_dynamic_cpp` to `rosidl_typesupport_introspection_cpp` causes the segmentation error to go away and the program can proceed:
https://github.com/micro-ROS/micro-ROS-Agent/blob/8fdc5060c7601a5d7d9e12254a1681e51da02d2c/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp#L32

However, then it fails at this line instead with a segmentation fault:
https://github.com/micro-ROS/micro-ROS-Agent/blob/8fdc5060c7601a5d7d9e12254a1681e51da02d2c/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp#L183

My question is, can micro-ros-agent support introspection, i.e. rmw_fastrtps_dynamic_cpp?
What are the necessary changes if not?

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp, en particulier les lignes 31-33 et 183, et reproduisez la segmentation fault sous Linux aarch64 avec Humble et rmw_fastrtps_dynamic_cpp. Comparez les identifiants de typesupport signalés et déterminez si l’introspection est prise en charge ; le travail est terminé lorsque les modifications requises sont documentées ou que le middleware pris en charge sans le crash est confirmé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp
Domaine
distributed-systems, robotics
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.