5.6 使用rosrun

rosrun允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。 用法:

$ rosrun [package_name] [node_name]

现在我们可以运行turtlesim包中的 turtlesim_node。 然后, 在一个 新的终端:

$ rosrun turtlesim turtlesim_node

你会看到 turtlesim 窗口:

注意: 这里的 turtle 可能和你的 turtlesim 窗口不同。 别担心,这里有许多版本的turtle ,而你的是一个惊喜!

在一个 新的终端:

$ rosnode list

You will see something similar to:
/rosout
/turtlesim

ROS的一个强大特性就是你可以通过命令行重新配置名称。

关闭 turtlesim 窗口停止运行节点 (或者回到rosrun turtlesim终端并使用ctrl -C)。

现在让我们重新运行它,但是这一次使用Remapping Argument改变节点名称:

$ rosrun turtlesim turtlesim_node __name:=my_turtle

现在,我们退回使用rosnodelist:

$ rosnode list

You will see something similar to:
/rosout
/my_turtle

注意: 如果你仍看到 /turtlesim在列表中,这可能意味着你在终端中使用ctrl-C停止节点而不是关闭窗口 或者你没有$ROS_HOSTNAME环境变量,这在 Network Setup - Single Machine Configuration中有定义。 你可以尝试清除rosnode 列表,通过: $ rosnode cleanup

我们可以看到新的/my_turtle节点。 使用另外一个rosnode指令rosnode ping来测试:

$ rosnode ping my_turtle

    rosnode: node is [/my_turtle]
    pinging /my_turtle with a timeout of 3.0s
    xmlrpc reply from http://aqy:42235/     time=1.152992ms
    xmlrpc reply from http://aqy:42235/     time=1.120090ms
    xmlrpc reply from http://aqy:42235/     time=1.700878ms
    xmlrpc reply from http://aqy:42235/     time=1.127958ms

Last updated