美文网首页
ROS新手指导 2- Nodes

ROS新手指导 2- Nodes

作者: irene0_0 | 来源:发表于2020-07-03 16:14 被阅读0次

6 理解ROS节点

  1. 准备条件
    我们用一个轻量的模拟器,以下是安装命令
$ sudo apt-get install ros-<distro>-ros-tutorials

distro可以是indigo jade kinetic melodic 等

  1. 图形概念快速理解
  • Node : ROS和其他node交流的可执行文件
  • Messages: 订阅或者发布topic时候的ROS数据类型
  • Topic:Node可以发布消息到topic也可以订阅一个topic去接收消息
  • Master:ROS的服务名称(便于Node查找)
  • rosout: 相当于stdout/stderr
  • roscore: Master+rosout+parameter 服务
  1. Nodes
    node实际上只不过是ROS包中的一个可执行文件。ROS nodes使用ROS客户端库去和其他节点通信。Nodes可以提供或者订阅一个Topic,Nodes也可以提供或者使用一个服务。

  2. 客户端库
    ROS 客户端库允许使用不同的编程语言去通信:

  • rospy = python 客户端库
  • roscpp = c++ 客户端库
  1. roscore
    使用ros的话,启动roscore是第一要务
$ roscore

运行结果略
如果roscore没有初始化并且说没有权限,就通过root给拥有者赋权限:

$ sudo chown -R your_username ~/.ros
  1. 使用rosnode
    打开一个新终端,执行rosnode看roscore下有什么在运行,记得已经执行了roscore,不要关闭那个终端。
  • rosnode list:列出了ros正在运行的节点
$ rosnode list
/rosout

rosout就是当前正在运行的节点

  • rosnode info: 返回节点的详细信息,有发布的信息,订阅的信息和提供的服务
$ rosnode info /rosout
  1. 使用rosrun
    rosrun允许我们使用包名字直接运行一个包,而不需要知道包的具体路径
 rosrun [package_name] [node_name]

以下,运行turtlesim下的turtlesim_node
打开一个新终端

rosrun turtlesim turtlesim_node

你会看见一个小乌龟,如果和你的不一样,没关系,因为有很多种类的乌龟
现在打开一个新的终端,执行下rosnode list,会看到又多了一个节点.
ROS另一个强大的功能是可以用命令重新定义名字。关闭刚才的小乌龟窗口,我们来重新定义一个节点名字。

$ rosrun turtlesim turtlesim_node __name:=my_turtle

现在我们用rosnode list看当前节点,就会是我们自己定义的名字了。
如果在list下边看到了/turtlesim,可能是因为停止节点的时候使用了Ctrl -C,而没有直接关闭窗口,或者是没有环境变量ROS_HOSTNAME,我们可以使用 rosnode cleanup 清理

相关文章

网友评论

      本文标题:ROS新手指导 2- Nodes

      本文链接:https://www.haomeiwen.com/subject/zglsqktx.html