Cristal Clemmys (cristal
)
Table des matières
Crystal Clemmys est la troisième version de ROS 2.
Plates-formes prises en charge
Crystal Clemmys est principalement pris en charge sur les plateformes suivantes (voir REP 2000 pour plus de détails ):
Plateformes de niveau 1 :
Ubuntu 18.04 (Bionique)
Mac macOS 10.12 (Sierra)
Windows 10
Plateformes de niveau 2 :
Ubuntu 16.04 (Xénial)
Nouvelles fonctionnalités de cette version de ROS 2
yorosbag2 <https://index.ros.org/r/rosbag2/githov-ros2-rosbag2/#crystal>yo__
chrysat <../../Concepts/Abbot-Ryat>h
Amélioration de la gestion de la mémoire
Informations d’introspection sur les nœuds
Améliorations du système de lancement
A jeté les bases de la « journalisation basée sur les fichiers et de la publication /rosout <https://github.com/ros2/rcl/pull/327> »__
Changements depuis la sortie de Bouncy
Changements depuis la version Bouncy Bolson :
geometry2 - Modification de l’API
tf2_ros::Buffer
tf2_ros::Buffer
utilise maintenantrclcpp::Time
, le constructeur nécessitant unshared_ptr
pour une instancerclcpp::Clock
. Voir https://github.com/ros2/geometry2/pull/67 pour plus de détails, avec un exemple d’utilisation :#include <tf2_ros/transform_listener.h> #include <rclcpp/rclcpp.hpp> ... # Assuming you have a rclcpp::Node my_node tf2_ros::Buffer buffer(my_node.get_clock()); tf2_ros::TransformListener tf_listener(buffer);
Toutes les macros de journalisation
rclcpp
etrcutils
nécessitent des points-virgules.Voir https://github.com/ros2/rcutils/issues/113 pour plus de détails.
rcutils_get_error_string_safe()
etrcl_get_error_string_safe()
ont été remplacés parrcutils_get_error_string().str
etrcl_get_error_string().str
.Voir https://github.com/ros2/rcutils/pull/121 pour plus de détails.
rmw - Modification de l’API ``rmw_init””
Il y a deux nouvelles structures,
rcl_context_t
etrcl_init_options_t
, qui sont utilisées avecrmw_init
. La structure d’options init est utilisée pour transmettre des options au middleware et est une entrée pourrmw_init
. Le contexte est un handle qui est une sortie de la fonctionrmw_init
est utilisé pour identifier à quel cycle init-shutdown chaque entité est associée, où une « entité » est quelque chose de créé comme un nœud, une condition de garde, etc.Ceci est répertorié ici car les mainteneurs d’implémentations rmw alternatives devront implémenter ces nouvelles fonctions pour que leur implémentation rmw fonctionne dans Crystal.
C’est la fonction qui a eu un changement de signature :
De plus, il y a ces nouvelles fonctions qui doivent être implémentées par chaque implémentation rmw :
Voici un exemple de ce qui doit être modifié au minimum dans une implémentation rmw pour adhérer à ce changement d’API :
rcl - Modification de l’API
rcl_init
Comme le changement
rmw
ci-dessus, il y a deux nouvelles structures dansrcl
appeléesrcl_context_t
etrcl_init_options_t
. Les options d’initialisation sont transmises àrcl_init
en tant qu’entrée et le contexte est transmis en tant que sortie. Le contexte est utilisé pour associer toutes les autres entités rcl à un cycle init-shutdown spécifique, ce qui fait que init et shutdown ne sont plus des fonctions globales, ou plutôt ces fonctions n’utilisent plus un état global et encapsulent à la place tous les états dans le type de contexte.Tout mainteneur d’une implémentation de bibliothèque cliente (qui utilise également
rcl
sous le capot) devra apporter des modifications pour fonctionner avec Crystal.Ces fonctions ont été supprimées :
rcl_get_global_arguments
rcl_get_instance_id
rcl_ok
Ces fonctions avaient des changements de signature :
Voici les nouvelles fonctions et types :
Ces fonctions nouvelles et modifiées auront un impact sur la façon dont vous gérez init et shutdown dans votre bibliothèque cliente. Pour des exemples, regardez les PR
rclcpp
etrclpy
suivants :Cependant, vous pouvez simplement continuer à proposer une initialisation et un arrêt globaux uniques dans votre bibliothèque cliente et stocker un seul objet de contexte global.
Problèmes connus
Une condition de concurrence dans Fast-RTPS 1.7.0 peut entraîner la chute des messages en cas de stress (Issue).
L’utilisation du paramètre QoS TRANSIENT_LOCAL avec rmw_fastrtps_cpp peut planter des applications avec des messages volumineux (Issue).
La communication entre les fournisseurs entre rmw_fastrtps_cpp et les autres implémentations ne fonctionne pas sous Windows (Issue).
Lors de l’utilisation d’OpenSplice (version < 6.9.190227) sur macOS et Windows, vous pouvez rencontrer des conflits de noms lorsque vous faites référence à des types de champs avec des noms d’autres packages si le même nom existe également dans le package actuel (Issue). En mettant à jour vers une version plus récente d’OpenSplice ainsi qu’au moins la troisième version de correctif de Crystal, le problème devrait être résolu. Sous Linux, la mise à jour vers les derniers packages Debian inclura la dernière version d’OpenSplice.