ros节点的分析

图概念概述

  • Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
  • Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
  • Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
  • rosout: ROS中相当于stdout/stderr。
  • roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。

节点

  • 一个节点其实只不过是ROS程序包中的一个可执行文件。
  • ROS节点可以使用ROS客户库与其他节点通信。
  • 节点可以发布或接收一个话题。
  • 节点也可以提供或使用某种服务。

客户端库

  • ROS客户端库允许使用不同编程语言编写的节点之间互相通信:
    • rospy = python 客户端库
    • roscpp = c++ 客户端库
    • rosjs = javascripts客户端库

    • rosjava = java客户端库

roscore

  • roscore是你在运行所有ROS程序前首先要运行的命令。
  • 请运行:
$ roscore
  • 如果roscore运行后无法正常初始化,很有可能是存在网络配置问题。
  • 参见 网络设置——单机设置
  • 如果roscore不能初始化并提示缺少权限,这可能是因为~/.ros文件夹归属于root用户(只有root用户才能访问)
  • 修改该文件夹的用户归属关系:
$ sudo chown -R <your_username> ~/.ros

使用rosnode

  • 打开一个新的终端, 可以使用 rosnode 像运行roscore一样看看在 运行什么...
  • 注意: 当打开一个新的终端时,你的运行环境会复位,同时你的~/.bashrc文件会复原。
  • 如果你在运行类似于rosnode的指令时出现一些问题
  • 也许你需要添加一些环境设置文件到你的~/.bashrc或者手动重新配置他们。
  • rosnode显示当前运行的ROS节点信息。
  • rosnode list指令列出活跃的节点:
$ rosnode list
  • 你会看到:
/rosout
  • 这表示当前只有一个节点在运行: rosout。
  • 因为这个节点用于收集和记录节点调试输出信息,所以它总是在运行的。
  • rosnode info命令返回的是关于一个特定节点的信息。
$ rosnode info /rosout
  • 这给了我们更多的一些有关于rosout的信息,
  • 例如,事实上由它发布/rosout_agg
------------------------------------------------------------------------
Node [/rosout]
Publications:
 * /rosout_agg [rosgraph_msgs/Log]

Subscriptions:
 * /rosout [unknown type]

Services:
 * /rosout/set_logger_level
 * /rosout/get_loggers

contacting node http://machine_name:54614/ ...

使用 rosrun

  • rosrun允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。
  • 用法:
$ rosrun [package_name] [node_name]
  • 在一个 新的终端:

$ rosnode list
  • 你会看见类似于:
/rosout
/turtlesim
  • ROS的一个强大特性就是你可以通过命令行重新配置名称。
  • 关闭 turtlesim 窗口停止运行节点 (或者回到rosrun turtlesim终端并使用ctrl -C)。
  • 现在让我们重新运行它,但是这一次使用Remapping Argument改变节点名称:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
  • 现在,我们退回使用rosnodelist:
$ rosnode list
  • 你会看见类似于:
/rosout
/my_turtle
  • 注意: 如果你仍看到 /turtlesim在列表中,这可能意味着你在终端中使用ctrl-C停止节点而不是关闭窗口

  • 你可以尝试清除rosnode 列表,通过:
$ rosnode cleanup
  • 我们可以看到新的/my_turtle节点。

  • 使用另外一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值