ROS 2Crystal Clemmys (代号'crystal'; 2018年12月) [待校准@4379]
Crystal Clemmys is the third release of ROS 2.
支持的平台 [待校准@1608]
[需手动修复的语法]Crystal Clemmys主要在以下平台上受支持 (详情见 REP 2000 ): [待校准@4381]
一级平台: [待校准@4382]
Ubuntu 18.04 (仿生) [待校准@4354]
Mac macOS 10.12斯莱瑞) [待校准@4314]
Windows 10 [待校准@4315]
2级平台: [待校准@4383]
Ubuntu 16.04 (Xenial) [待校准@4313]
此ROS 2版本中的新功能 [待校准@4317]
C / C ++ 中的Action ( server / client 实例) [待校准@4384]
RQt <Concepts/概念/关于-RQt>' [待校准@4389]
内存管理的改进 [待校准@4390]
节点自检信息 [待校准@4391]
Launch系统改进 [待校准@4392]
自弹性发布以来的变化 [待校准@4400]
自 Bouncy Bolson 发布以来的变化: [待校准@4401]
几何2-“tf2_ros:: buffer” API更改 [待校准@4402]
[需手动修复的语法]``tf2_ros::Buffer`` now uses
rclcpp::Time
, with the constructor requiring ashared_ptr
to arclcpp::Clock
instance。看到https://github.com/ros2/geometry2/拉/67细节,使用示例: [待校准@4403]#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);
所有
rclcpp
和rcutils
日志宏都需要分号。 [待校准@4404]看到https://github.com/ros2/rcutils/问题/113细节。 [待校准@4405]
rcutils_get_error_string_safe()
andrcl_get_error_string_safe()
have been replaced withrcutils_get_error_string().str
andrcl_get_error_string().str
. [待校准@4406]看到https://github.com/ros2/rcutils/拉/121细节。 [待校准@4407]
rmw-
rmw_init
API变更 [待校准@4408]有两种新的结构,
rcl_context_t
和rcl_init_options_t
,它们与rmw_init
一起使用。init options结构用于将选项向下传递到中间件,并且是rmw_init
的输入。上下文是一个句柄,它是rmw_init
函数的输出,用于识别每个实体与哪个初始化关闭周期相关联,其中 "entity" 是任何像节点、保护条件、等等。 [待校准@4409]这里列出这一点是因为替代rmw实现的维护者需要实现这些新功能,以使他们的rmw实现在Crystal中发挥作用。 [待校准@4410]
这是具有签名更改的函数: [待校准@4411]
此外,每个rmw实现都需要实现这些新功能: [待校准@4413]
以下是rmw实现中最低限度需要更改的示例,以遵守此API更改: [待校准@4418]
rcl-
rcl_init
API变更 [待校准@4420]就像上面的
rmw
变化一样,rcl
调用rcl_context_t
和rcl_init_options_t
有两个新的结构。init选项作为输入传递到rcl_init
,上下文作为输出传递。该上下文用于将所有其他rcl实体与特定的初始化关闭周期相关联,从而有效地使初始化和关闭不再是全局函数,或者更确切地说,这些函数不再使用全局状态,而是将所有状态封装在上下文类型中。 [待校准@4421]客户端库实现的任何维护者 (在后台也使用
rcl
) 都需要进行更改以使用Crystal。 [待校准@4422]这些功能已被删除: [待校准@4423]
rcl_get_global_arguments
[待校准@4424]rcl_get_instance_id
[待校准@4425]rcl_ok
[待校准@4426]
这些函数具有特征更改: [待校准@4427]
这些是新的函数和类型: [待校准@4434]
这些新的和更改的函数将影响您在客户端库中处理初始化和关闭的方式。例如,请看以下
rclcpp
和rclpy
PR: [待校准@4450]但是,您可以继续在客户端库中提供单个全局初始化和关闭,并仅存储单个全局上下文对象。 [待校准@4453]
已知问题 [待校准@4348]
快速RTPS 1.7.0中的竞争条件可能会导致消息在压力下下降 ( Issue )。 [待校准@4454]
使用带有rmw_fastrtps_cpp的瞬态本地QoS设置可以使带有大消息的应用程序崩溃 ( Issue )。 [待校准@4455]
rmw_fastrtps_cpp和其他实现之间的跨供应商通讯在Windows ( Issue ) 上不起作用。 [待校准@4456]
使用OpenSplice时 (版本 <6.9.190227) 在macOS和Windows上,如果当前包 ( Issue ) 中也存在相同的名称,则在使用其他包的名称引用字段类型时,可能会遇到命名冲突。通过更新到较新的OpenSplice版本以及至少Crystal的第三个补丁版本,问题应该得到解决。在Linux上,更新到最新的Debian包将包括最新的OpenSplice版本。 [待校准@4457]