Eloquent Elusor(eloquent
) [14501]
目录 []
*Eloquent Elusor*是ROS 2的第五个版本。 [14502]
支持的平台 [8234]
Eloquent Elusor 主要支持以下平台: [14503]
一级平台: [14235]
Ubuntu 18.04(Bionic):
amd64``和``arm64
[14314]Mac macOS 10.14 (Mojave) [14504]
Windows 10(Visual Studio 2019) [14315]
二级平台: [14236]
Ubuntu 18.04(Bionic):
arm32
[14316]
Tier 3 平台: [14317]
这个ROS 2版本的新功能有: [14170]
我们想要强调一些功能和改进: [14323]
rqt: 参数插件、tf树插件、机器人转向插件 <https://github.com/ros-visualization/rqt_robot_steering/pull/7>`__(也已回溯到Dashing版本) `[14515]
turtlesim <https://github.com/ros/ros_tutorials/pull/53>`__(也已回溯到Dashing版本) `[14516]
RMW实现: [14517]
环境变量 ROS_LOCALHOST_ONLY 用于限制通信仅在本地主机进行 [14521]
MacOS Mojave 支持 [14522]
Tracing instrumentation 用于 rcl 和 rclcpp [14523]
在开发过程中,GitHub 上的 Eloquent meta ticket 包含进行中的高级任务的最新状态,以及涉及更多细节的特定票据的引用。 [14524]
自 Dashing 发布以来的变化 [14525]
geometry_msgs [14526]
现在``geometry_msgs/msg/Quaternion.msg``接口的默认初始化为一个有效的四元数,具有以下值: [14527]
这是有关更多细节的拉取请求: https://github.com/ros2/common_interfaces/pull/74 [14529]
静态变换广播器和监听器现在在``/tf_static``话题上使用QoS持久性``transient_local``。类似于ROS 1中的latched设置,静态变换只需要发布一次。新的监听器将从所有存活且在之前发布的静态广播器接收变换。所有发布者必须更新使用此持久性设置,否则它们的消息将不会被变换监听器接收。有关更多细节,请参阅此拉取请求: https://github.com/ros2/geometry2/pull/160 [14530]
rclcpp [14358]
与``get_actual_qos()``的API中断 [14531]
在Dashing中引入的``get_actual_qos()``方法在``PublisherBase``和``SubscriptionBase``上以前返回了一个rmw类型``rmw_qos_profile_t``,但这使得在创建其他实体时难以重用。因此,它已更新为返回一个``rclcpp::QoS``。 [14532]
现有的代码如果仍需要rmw配置文件,则需要使用``rclcpp::QoS::get_rmw_qos_profile()``方法。例如: [14533]
void my_func(const rmw_qos_profile_t & rmw_qos);
/* Previously: */
// my_func(some_pub->get_actual_qos());
/* Now: */
my_func(some_pub->get_actual_qos()->get_rmw_qos_profile());
这种直接进行更改而不是进行逐步迁移的原因是,这是一个新的函数,预计用户很少使用。此外,由于只有返回类型发生变化,添加一个具有不同返回类型的新函数是进行废弃周期和``get_actual_qos()``是最合适的名称的唯一方法,因此我们将被迫选择一个不太明显的方法名称。 [14534]
与发布者和订阅者类的API变更 [14535]
为了简化发布者和订阅者的构建过程,构造函数的API已进行了更改。 [14536]
不可能支持废弃周期,因为旧的签名接受rcl类型,而新的签名接受``NodeBaseInterface``类型,以便获得现在所需的附加信息,并且无法仅通过rcl类型获取所需的附加信息。如果这有助于贡献者,新的签名可能会被回溯,但由于发布者和订阅者几乎总是使用工厂函数或其他更高级别的API创建,我们不认为这对大多数用户会构成问题。 [14537]
请查看原始的PR了解更多详细信息,并在那里进行评论,如果这引起了问题: [14538]
[https://github.com/ros2/rclcpp/pull/867](https://github.com/ros2/rclcpp/pull/867) [14539]
rmw [14450]
由于新增发布者和订阅者选项而导致的API变更。 [14544]
rmw_create_publisher()
方法新增了一个类型为 const rmw_publisher_options_t *
的参数。这个新结构包含了用于新发布者的选项(除了类型支持、主题名称和QoS之外)。 [14545]
方法``rmw_create_subscription()``的一个参数被删除,即``bool ignore_local_publications``,并被新的类型为``const rmw_subscription_options_t *``的选项所取代。``ignore_local_publications``选项被移入新的``rmw_subscription_options_t``类型中。 [14546]
在这两种情况下,这些新的参数(指针类型)不能为null,因此rmw实现应该检查选项是否为null。另外,应将选项复制到相应的rmw结构中。 [14547]
请参阅此pull request和相关的pull requests获取更多详细信息: [14548]
ros2cli [14550]
TF2 缓冲区 [14559]
现在必须为 TF2 缓冲区提供定时器接口。 [14560]
如果未提供定时器接口,将抛出异常。 [14561]
例如: [14562]
tf = std::make_shared<tf2_ros::Buffer>(get_clock());
// The next two lines are new in Eloquent
auto timer_interface = std::make_shared<tf2_ros::CreateTimerROS>(
this->get_node_base_interface(),
this->get_node_timers_interface());
tf->setCreateTimerInterface(timer_interface);
// Pass the Buffer to the TransformListener as before
transform_listener = std::make_shared<tf2_ros::TransformListener>(*tf);
rcl [14563]
ROS命令行参数更改 [14564]
为了应对日益复杂的接口,现在扩展了一组配置选项,ROS CLI的语法已经发生了变化。例如,使用Dashing语法的命令行如下: [14565]
ros2 run some_package some_node foo:=bar __params:=/path/to/params.yaml __log_level:=WARN --user-flag
使用Eloquent(及更高版本)的语法编写如下: [14566]
ros2 run some_package some_node --ros-args --remap foo:=bar --params-file /path/to/params.yaml --log-level WARN -- --user-flag
这种显式的语法提供了新功能,例如单参数赋值 --param name:=value
。如需更多参考和解释,请查看 ROS命令行参数设计文档。 [14567]
警告
旧的语法已被弃用,并将在下一个版本中移除。 [14568]
已知问题 [17821]
[ros2/rosidl#402]
find_package(PCL)
干扰了ROS接口生成。解决方法:在rosidl_generate_interfaces()
之后调用find_package(PCL)
。 [14569][ros2/rclcpp#893]
rclcpp::Context
由于与rclcpp::GraphListener
存在引用循环而无法销毁。这导致内存泄漏。由于破坏ABI的风险,修复尚未进行回溯。 [14486]
发布前的时间线 [14487]
发布前的一些关键节点: [14488]
- 周一,9月30日(α版) [14570]
核心软件包的首次发布可用。从现在开始可以进行测试(某些功能可能尚未完全实现)。 [14490]
- 周五,10月18日 [14571]
核心包API和功能冻结,此后只能进行错误修复发布。新包可以独立发布。 [14572]
- 周四,10月24日(β版) [14573]
可用的核心包更新版本。对最新功能进行额外测试。 [14494]
- 周三,11月13日(正式版本候选人) [14574]
可用的核心软件包更新版本。 [14498]
- 周二,11月19日 [14575]
冻结 rosdistro。
rosdistro
仓库上关于 Eloquent 的 PR 不会被合并(发布公告后重新开放)。 [14576]