ROS 2EloquentElusor (代号'eloquent'; 2019年11月22日) [待校准@4648]
目录
Eloquent Elusor is the fifth release of ROS 2.
支持的平台 [待校准@1608]
[需手动修复的语法]EloquentElusor主要在以下平台上受支持: [待校准@4650]
一级平台: [待校准@4382]
乌班图18.04 (仿生):
amd64
和arm64
[待校准@4461]Mac macOS 10.14 (莫哈韦) [待校准@4651]
Windows 10 (Visual Studio 2019) [待校准@4462]
2级平台: [待校准@4383]
乌班图18.04 (仿生):
arm32
[待校准@4463]
3级平台: [待校准@4464]
Debian拉伸 (9):
amd64
、arm64
和arm32
[待校准@4465]开放式重击 (2.6) /网络操作系统:
arm32
和x86
[待校准@4466]
有关RMW实现、编译器/解释器版本和系统依赖版本的更多信息,请参见 REP 2000 。 [待校准@4652]
此ROS 2版本中的新功能 [待校准@4317]
我们想强调的一些特性和改进: [待校准@4470]
[需手动修复的语法] Per-node logging -节点的所有标准输出/标准输出都记录在 ~/.ros中 [待校准@4658]
rviz: interactive markers, torque ring, tf message filters [待校准@4661]
rqt: parameter plugin, tf tree plugin, robot steering plugin (也返回到Dashing) [待校准@4662]
[需手动修复的语法] turtlesim (也返回到Dashing) [待校准@4663]
RMW实现: [待校准@4664]
新的二级实施: rmw_cyclonedds (也返回到Dashing) [待校准@4667]
将通讯限制为localhost的环境变量 ROS_LOCALHOST_ONLY [待校准@4668]
MacOS Mojave支持 [待校准@4669]
rcl和rclcpp的 Tracing instrumentation [待校准@4670]
在开发版本期间,GitHub上的 Eloquent meta ticket 包含正在进行的高级任务的最新状态,以及参考特定票证和更多详细信息。 [待校准@4671]
自Dashing发布以来的变化 [待校准@4672]
几何 _ msgs [待校准@4673]
现在, geometry_msgs/msg/Quaternion.msg
接口默认使用以下值初始化为有效的四元数: [待校准@4674]
这是拉取请求的更多细节: 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()
方法 PublisherBase
和 SubscriptionBase
以前返回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]
关于 add_on_set_parameters_callback
未使用结果的编译器警告 [待校准@4687]
Since Eloquent Patch Release 2 (2020-12-04)
用户应保留 “rclcpp::Node::add_on_set_parameters _ 调用back” 返回的句柄,否则他们的调用可能会被取消注册。已添加警告,以帮助识别未使用返回的句柄的错误。 [待校准@4689]
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]
ros2cli [待校准@4697]
ros2msg和ros2srv已弃用 [待校准@4698]
[需手动修复的语法] ros2msg
和 ros2srv
的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]
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]