Skip to content

迁移脚本

在 ROS 1 中,有多个独立的命令来执行各种操作,如 rosrun、rosparam 等。

在 ROS 2 中,有一个名为 ros2 的顶级命令,所有操作都是它的子命令,如 ros2 run、ros2 param 等。

在 ROS 1 中,节点的参数直接在命令行上提供。

ROS 2 的参数应该用 --ros-args 界定,并以 -- 结尾(如果没有后续参数,末尾的双短横线可以省略)。

名称重映射与 ROS 1 类似,采用 from:=to 的形式,但前面必须加上 --remap(或 -r)标志。 例如:

Terminal window
$ ros2 run some_package some_ros_executable --ros-args -r foo:=bar

我们使用类似的语法来设置参数,使用 --param(或 -p)标志:

Terminal window
$ ros2 run some_package some_ros_executable --ros-args -p my_param:=value

注意,这与 ROS 1 中使用前导下划线的方式不同。

要更改节点名称,请使用 __node(ROS 1 中的等效项是 __name):

Terminal window
$ ros2 run some_package some_ros_executable --ros-args -r __node:=new_node_name

注意使用了 -r 标志。 更改命名空间 __ns 也需要相同的重映射标志:

Terminal window
$ ros2 run some_package some_ros_executable --ros-args -r __ns:=/new/namespace

以下 ROS 1 键在 ROS 2 中没有等效项:

  • __log(但可以使用 --log-config-file 来提供日志记录器配置文件)
  • __ip
  • __hostname
  • __master

有关更多信息,请参阅 设计文档。

功能ROS 1ROS 2
重映射foo:=bar-r foo:=bar
参数_foo:=bar-p foo:=bar
节点名称__name:=foo-r __node:=foo
命名空间__ns:=foo-r __ns:=foo