ROS机器人操作系统的安装、配置与初级教程 6
来源:互联网 发布:央视揭网络消费陷阱 编辑:程序博客网 时间:2024/06/02 02:16
理解 ROS 节点
简介: 本教程主要介绍 ROS 图(graph)概念 并讨论roscore、rosnode和 rosrun 命令行工具的使用。
难度: 初级
下节: 理解ROS话题
相关资料:理解 ROS 节点
1 先决条件
在本教程中我们将使用到一个轻量级的模拟器,请使用以下命令来安装:在线环境中实验楼已经安装,可直接学习
$ sudo apt-get install ros-indigo-ros-tutorials
2 图概念概述
Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: ROS中相当于stdout/stderr。
roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。
3 节点
一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务。
4 客户端库
ROS客户端库允许使用不同编程语言编写的节点之间互相通信:
- rospy = python 客户端库
- roscpp = c++ 客户端库
5 roscore
roscore 是你在运行所有ROS程序前首先要运行的命令。
请运行:
$ roscore
然后你会看到类似下面的输出信息:
... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.logChecking log directory for disk usage. This may take awhile.Press Ctrl-C to interruptDone checking log file disk usage. Usage is <1GB.started roslaunch server http://machine_name:33919/ros_comm version 1.4.7SUMMARY========PARAMETERS * /rosversion * /rosdistroNODESauto-starting new masterprocess[master]: started with pid [13054]ROS_MASTER_URI=http://machine_name:11311/setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cfprocess[rosout-1]: started with pid [13067]started core service [/rosout]
如果 roscore 运行后无法正常初始化,很有可能是存在网络配置问题。参见网络设置——单机设置 http://wiki.ros.org/ROS/NetworkSetup 。
如果 roscore 不能初始化并提示缺少权限,这可能是因为~/.ros文件夹归属于root用户(只有root用户才能访问),修改该文件夹的用户归属关系:
$ sudo chown -R <your_username> ~/.ros
6 使用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_loggerscontacting node http://machine_name:54614/ ...Pid: 5092
现在,让我们看看更多的节点。为此,我们将使用rosrun 弹出另一个节点。
7 使用 rosrun
rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。
用法:
$ rosrun [package_name] [node_name]
现在我们可以运行turtlesim包中的 turtlesim_node。
然后, 在一个 新的终端:
$ rosrun turtlesim turtlesim_node
你会看到 turtlesim 窗口:
注意: 这里的 turtle 可能和你的 turtlesim 窗口不同。别担心,这里有许多版本的 turtle ,而你的是一个惊喜!
在一个新的终端:
$ rosnode list
你会看见类似于:
/rosout/turtlesim
ROS的一个强大特性就是你可以通过命令行重新配置名称。
关闭 turtlesim 窗口停止运行节点 (或者回到rosrun turtlesim终端并使用ctrl-C
)。现在让我们重新运行它,但是这一次使用Remapping Argument改变节点名称:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
现在,我们退回使用 rosnode list:
$ rosnode list
你会看见类似于:
/rosout/my_turtle
注意: 如果你仍看到 /turtlesim在列表中,这可能意味着你在终端中使用ctrl-C停止节点而不是关闭窗口,或者你没有$ROS_HOSTNAME环境变量,这在Network Setup - Single Machine Configuration中有定义。你可以尝试清除rosnode列表,通过: $ rosnode cleanup
我们可以看到新的/my_turtle 节点。使用另外一个 rosnode 指令, ping, 来测试:
$ rosnode ping my_turtle
rosnode: node is [/my_turtle]pinging /my_turtle with a timeout of 3.0sxmlrpc reply from http://aqy:42235/ time=1.152992msxmlrpc reply from http://aqy:42235/ time=1.120090msxmlrpc reply from http://aqy:42235/ time=1.700878msxmlrpc reply from http://aqy:42235/ time=1.127958ms
8 回顾
本节所涉及的内容:
roscore = ros+core : master (provides name service for ROS) + rosout (stdout/stderr) + parameter server (parameter server will be introduced later)
rosnode = ros+node : ROS tool to get information about a node.
- rosrun = ros+run : runs a node from a given package.
到这里,您已经了解了ROS节点是如何工作的,下一步,我们来了解一下ROS话题。如果您想关闭turtlesim_node,请按下Ctrl-C
。
- ROS机器人操作系统的安装、配置与初级教程 6
- ROS机器人操作系统的安装、配置与初级教程 1
- ROS机器人操作系统的安装、配置与初级教程 2
- ROS机器人操作系统的安装、配置与初级教程 3
- ROS机器人操作系统的安装、配置与初级教程 4
- ROS机器人操作系统的安装、配置与初级教程 5
- ROS机器人操作系统的安装、配置与初级教程 8
- ROS机器人操作系统的安装、配置与初级教程 9
- ROS机器人操作系统的安装、配置与初级教程 10
- ROS机器人操作系统的安装、配置与初级教程 11
- ROS机器人操作系统的安装、配置与初级教程 12
- ROS机器人操作系统的安装、配置与初级教程 13
- ROS机器人操作系统的安装、配置与初级教程 14
- ROS机器人操作系统的安装、配置与初级教程 15
- ROS机器人操作系统的安装、配置与初级教程 16
- ROS机器人操作系统的安装、配置与初级教程 17
- ROS机器人操作系统的安装、配置与初级教程 18
- ROS机器人操作系统的安装、配置与初级教程 19
- Unity获取未激活游戏对象的方法
- Android透明化/沉浸式状态栏实践及源码分析
- gerrit流程
- NOIP模拟赛2017/7/9
- hdu1421
- ROS机器人操作系统的安装、配置与初级教程 6
- spring boot + mybatis 多数据源,mysql服务主从读写分离
- 北京大学可视化发展前沿研究生暑期学校第一讲
- 交换机原理简介
- Android自定义控件(一) 自定义组合控件
- 【脚手架-优雅开发Javaweb】springboot+gradle+tomcat
- tomcat数据库连接池密码加密
- 网络编程
- 一句话解决的事何必说三句,Kotlin入坑指南