ROS 2EloquentElusor (代号'eloquent'; 2019年11月22日) [待校准@4648]

Eloquent Elusor is the fifth release of ROS 2.

支持的平台 [待校准@1608]

[需手动修复的语法]EloquentElusor主要在以下平台上受支持: [待校准@4650]

一级平台: [待校准@4382]

2级平台: [待校准@4383]

3级平台: [待校准@4464]

有关RMW实现、编译器/解释器版本和系统依赖版本的更多信息,请参见 REP 2000[待校准@4652]

此ROS 2版本中的新功能 [待校准@4317]

我们想强调的一些特性和改进: [待校准@4470]

在开发版本期间,GitHub上的 Eloquent meta ticket 包含正在进行的高级任务的最新状态,以及参考特定票证和更多详细信息。 [待校准@4671]

自Dashing发布以来的变化 [待校准@4672]

几何 _ msgs [待校准@4673]

现在, geometry_msgs/msg/Quaternion.msg 接口默认使用以下值初始化为有效的四元数: [待校准@4674]

\[`[待校准@4675] <http://dev.ros2.fishros.com/calibpage/#/home?msgid=4675>`_\]

这是拉取请求的更多细节: https://github.com/ros2/common_interfaces/pull/74 [待校准@4676]

静态变换广播器和听众现在在 /tf_static 话题上使用服务质量耐久性 transient_local 。与ROS 1的锁定设置类似,静态转换只需发布一次。新的听众将接收来自所有静态广播器的转换,这些静态广播器是活的并且已经发布过。必须更新所有发布者以使用此持久性设置,否则转换侦听器将不会接收其消息。有关更多详细信息,请参阅此请求: https://github.com/ros2/geometry2/pull/160 [待校准@4677]

ROS C++客户端库(rclcpp) [小鱼@4505]

get_actual_qos() API中断 [待校准@4678]

介绍Dashing, get_actual_qos() 方法 PublisherBaseSubscriptionBase 以前返回rmw类型, rmw_qos_profile_t ,但那却尴尬重用创建其他实体。因此,它被更新为返回 “rclcpp:: qos”。 [待校准@4679]

如果仍然需要rmw配置文件,则现有代码将需要使用 “rclcpp::QoS::get_rmw_qos_profile()” 方法。例如: [待校准@4680]

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() 是最合适的名称,因此,我们将被迫为该方法选择一个不太明显的名称。 [待校准@4681]

与发布者和订阅类的API中断 [待校准@4682]

为了简化发布者和订阅的构建,更改了构造函数的API。 [待校准@4683]

支持弃用循环是不可能的,因为旧的签名采用rcl类型,而新的签名采用 NodeBaseInterface 类型,这样它就可以获得现在需要的额外信息,而且,仅从rcl类型无法获取所需的其他信息。如果这对贡献者有帮助的话,新的签名可能会被反向移植,但是由于出版商和订阅几乎总是使用工厂函数或其他更高级别的API创建的,我们不认为这对大多数用户来说是个问题。 [待校准@4684]

有关更多详细信息,请参阅原始pr,如果这导致问题,请在此处进行评论: [待校准@4685]

https://github.com/ros2/rclcpp/pull/867

关于 add_on_set_parameters_callback 未使用结果的编译器警告 [待校准@4687]

Since Eloquent Patch Release 2 (2020-12-04)

用户应保留 “rclcpp::Node::add_on_set_parameters _ 调用back” 返回的句柄,否则他们的调用可能会被取消注册。已添加警告,以帮助识别未使用返回的句柄的错误。 [待校准@4689]

https://github.com/ros2/rclcpp/pull/1243

rmw [待校准@4597]

由于增加了发布者和订阅选项而导致API中断 [待校准@4691]

[需手动修复的语法] rmw_create_publisher() 法增加了 const rmw_publisher_options_t * 型的新论点。这种新结构为新出版商提供选项 (除了类型支持、话题名称和服务质量之外)。 [待校准@4692]

[需手动修复的语法] rmw_create_subscription() 法去掉了一个参数, bool ignore_local_publications ,取而代之的是类型 const rmw_subscription_options_t * 的新选项。 ignore_local_publications 选项被转移到新的 rmw_subscription_options_t 类型。 [待校准@4693]

在这两种情况下,作为指针的新参数可能永远不会为null,因此rmw实现应检查以确保选项不为null。此外,应将选项复制到相应的rmw结构中。 [待校准@4694]

有关更多详细信息,请参阅此拉取请求和相关的拉取请求: [待校准@4695]

https://github.com/ros2/rmw/pull/187

ros2cli [待校准@4697]

ros2msg和ros2srv已弃用 [待校准@4698]

[需手动修复的语法] ros2msgros2srv 的CLI工具已弃用。他们已经被工具 ros2interface 取代,它也支持动作和IDL接口。您可以使用 ros2 interface --help[待校准@4699]

ros2node [待校准@4700]

服务客户端已添加到ros2node信息。作为这一变化的一部分,Python函数 ros2node.api.get_service_info 已被重命名为 ros2node.api.get_service_server_info[待校准@4701]

rviz [待校准@4624]

更名为'2D Nav Goal'工具 [待校准@4702]

该工具被重命名为'2D Goal Pose',默认话题从 /move_base_simple/goal 改为 /goal_pose[待校准@4703]

以下是相关的拉取请求: [待校准@4704]

https://github.com/ros2/rviz/pull/455

TF2缓冲器 [待校准@4706]

现在必须给TF2缓冲器一个计时器接口。 [待校准@4707]

如果没有给出计时器接口,将引发异常。 [待校准@4708]

例如:

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 [待校准@4710]

ROS命令行参数更改 [待校准@4711]

为了应对日益复杂的界面,现在有一组扩展的配置选项,ROS CLI语法已更改。例如,使用Dashing语法的命令行如下: [待校准@4712]

ros2 run some_package some_node foo:=bar __params:=/path/to/params.yaml __log_level:=WARN --user-flag

使用Eloquent (及以上) 语法编写为: [待校准@4713]

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 ``. For further reference and rationale, check the ROS command line arguments design document[待校准@4714]

警告

以前的语法已被弃用,将在下一个版本中删除。 [待校准@4715]

已知问题 [待校准@4348]

  • [需手动修复的语法] [ros2/rosidl#402] find_package(PCL) 干扰ROS接口的产生。解决办法: 在 * rosidl_generate_interfaces() 之后调用 find_package(PCL) *[待校准@4716]

  • [需手动修复的语法] [ros2/rclcpp#893] “rclcpp:: 上下文 `` is not destroyed because of a reference cycle with `` rclcpp:: 图形列表”。这会导致内存泄漏。由于存在破坏ABI的风险,修复程序尚未返回。 [待校准@4633]

发布前的时间表 [待校准@4634]

发布前的几个里程碑: [待校准@4635]

9月30日星期一 (阿尔法) [待校准@4717]

核心包的第一个发行版本可用。从现在开始可以进行测试 (某些功能可能尚未登陆)。 [待校准@4637]

10月18日星期五 [待校准@4718]

核心包的API和功能冻结在此之后,仅应进行错误修复发行版本。新包可以独立发布。 [待校准@4719]

10月24日星期四 (测试版) [待校准@4720]

核心包的更新发行版本可用。最新功能的附加测试。 [待校准@4641]

11月13日星期三 (发布候选人) [待校准@4721]

核心包的更新发行版本可用。 [待校准@4645]

11月19日星期二 [待校准@4722]

项目完结,系统自动填充内容 rosdistro 回购协议中没有Eloquent的PRs将被合并 (发布公告后重新开放)。 [待校准@4723]