警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
将启动文件从 ROS 1 移植到 ROS 2
本指南介绍如何编写 XML 启动文件,以便从 ROS 1.0 轻松迁移到 ROS 2.0。
背景介绍
有关 ROS 2 启动系统及其 Python 应用程序接口的介绍,请参阅 发射系统教程.
替换包含标记
为了在 命名空间 则 包括
标记必须嵌套在 组
标签
组>;
包括 file="another_launch_file";/>;
</group>;
然后,不要使用 ns
属性,添加 push-ros-namespace
action 标签来指定命名空间:
组>;
<push-ros-namespace namespace="my_ns";/>;
包括 file="another_launch_file";/>;
</group>;
筑巢 包括
标记下的 组
标记仅在指定命名空间时才需要
替换
有关 ROS 1 的替换文件,请参见 roslaunch XML 维基百科.替换语法没有改变,即仍然沿用了 $(substitution-name 参数1 参数2 ...)
模式。不过,ROS 1 也有一些变化:
环境
和optenv
标记已被环境
标签$(env <NAME>)
会失败。$(env <名称>; '')
与 ROS 1 的作用相同$(optenv <NAME>)
.$(env <名称>; <DEFAULT>)
与 ROS 1 的作用相同$(env <名称>; <DEFAULT>)
或$(optenv <名称>; <DEFAULT>)
.找到
改为find-pkg-share
(代替已安装软件包的共享目录)。或者find-pkg-prefix
将返回已安装软件包的根目录。有一个新的
执行单元
例如$(exec-in-pkg <package_name>; <exec_name>)
.有一个新的
查找执行
换人。雅格
改为变异
.它会查看用雅格
或告诉
标签评估
和dirname
替补没有变化。当然
不支持替换。
类型推断规则
中显示的规则 类型 推论 规则
分节 停止
标记适用于任何属性。例如
<!--为预期为 int 的属性设置字符串值会引发错误;
标签1 attr-expecting-an-int="'1'"/>;
<!--正确版本;
标签1 attr-expecting-an-int=1";/>;
<!--在预期为字符串的属性中设置整数将引发错误;
标签2 attr-expecting-a-str=1";/>;
<!--正确版本;
标签2 attr-expecting-a-str="'1'"/>;
<!--在预期为字符串的属性中设置字符串列表将引发错误;
标签3 attr-expecting-a-str="asd, bsd"; str-attr-sep=",";/>;
<!--正确版本;
标签3 attr-expecting-a-str="不要使用分隔符";/>;
有些属性接受不止一种类型,例如 价值
的属性 停止
标签。通常情况下,参数类型为 int
(或 浮动
) 也接受一个 字符串
,随后将被替换并尝试转换为 int
(或 浮动
)的行动。