启动turtlesim

在三个不同的终端中分别执行如下三个指令

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

 
 

查看软件包列表和定位软件包 package使用命令

rospack list

 
 

找到一个软件包的目录,使用rospack find命令

rospack find package-name

例如:rospack find turtle

查看软件包

rosls package-name

例如:rosls turtlesim

访问软件包roscd package-name

例如:roscd turtlesim/images

节点管理器:ROS的一个基本目标是使机器人专家设计的很多称为节点(node)的几乎相对独立的小程序能够同时运行。为此,这些节点必须能够彼此通信。ROS中实现通信的关键部分就是ROS节点管理器。

 
 

启动节点管理器,使用如下命令

roscore

 
 

 
 

 节点管理器应该在使用ROS的全部时间内持续运行(也就是说这个终端运行roscore之后就不要关闭!)。一个合理的工作流程是在一个终端启动roscore,然后打开其他终端运行其他程序。除非你已经完成ROS的相关工作,否则一般没有理由终止roscore命令。当结束时,可以通过在roscore终端键入Ctrl-C停止节点管理器。

 
 

节点Nodes:一旦启动了roscore后,就可以运行ros程序了,ros运行程序的实例被称为节点。节点的名字都是唯一的。比如在turtlesim的例子中,我们要启动两个节点,分别为模拟turtle的程序turtlesim以及控制其运动的程序turtle_teleop_key。节点turtle_teleop_key节点的作用是捕捉方向键被按下,然后将按键信息转化为运动指令,然后将指令发送导turtlesim_node节点

启动节点:

rosrun package-name executable-name

第一个参数是功能包的名字,第二个参数是该软件功能包中可执行文件的名称。比如我们要创建一个模拟turtle的节点,一个控制turtle移动的节点,则在两个终端里面分别输入以下命令

终端1:

rosrun turtlesim turtlesim_node

终端2:

rosrun turtlesim turtle_teleop_key

 
 

 
 

查看节点列表命令:rosnode list

例如:我们在turtlesim的例子中,输入rosnode list后,显示如下结果

/ rosout

/ teleop_turtle

/ turtlesim

(比较rosnode list的输出与rosrun命令中的可执行文件的名称,你会发现二者并不一定相同)

事实上,可以使用rosrun命令显式设置节点的名称,语法如下:

rosrun package-name executable-name __name:=node-name

这种方法将使用node-name参数给出的名称覆盖节点的默认名

 
 

其中rosout是一个特殊的节点请注意,通过roscore自动启动,

一般除了在终端使用 rosnode list命令查看当前的节点情况外,ROS还提供了一种更加直观的方式来显示ROS节点数,命令为:rqt_graph,然后显示如下节点分布情况。(在默认情况下,rqt_graph隐藏了其认为只在调试过程中使用的节点。你可以通过取消"Hide debug"选项来禁止这个特性)

 
 

 

查看节点信息:rosnode info node-name

 

消息和消息类型

目前为止,我们已经了解了这些节点能相互传递消息,但这些消息里到底包含了什么信息,我们对此还是一无所知。下面,我们将深入探讨话题和消息。

话题列表:

rostopic list

在终端中显示结果为:

/rosout

/rosout_agg

/turtle1/cmd_vel

/turtle1/color_sensor

/turtle1/pose

其实细心的你可以从上面的rqt的图中就可以看的出来,途中方框表示的是topic,刚好是5个,所以这里的List显示的topic 为5个也不足为奇了。

在上面启动的两个节点中,控制节点检测键盘方向按键,然后在turtlesim中的乌龟就会移动,他们之间是以消息传递的,就是通过某个话题发布消息,我们现在打开另外一个终端,输入命令

rostopic echo /turtle1/cmd_vel

看看具体传递的消息是啥?

继续控制乌龟移动,可以发现在终端上的情况

 

 
 

 
 

可见消息内容为位移和角度情况。但是为什么数据格式是0.0、2.0等等格式呢,那么我们来具体看看话题的信息,

查看话题信息 rostopic info topic-name

输入:rostopic info /turtle1/cmd_vel

其中指出了Type、Publishers、Subscribers,其中第一个type特别重要,因为它定义了该话题中的消息类型。因此在话题/turtle1/cmd_vel中传送的消息类型为

geometry_msgs/Twist

 
 

理解消息的类型很重要,因为它决定了消息的内容。也就是说,一个话题的消息类型能告诉你该话题中每个消息携带了哪些信息,以及这些信息是如何组织的。接下来我们顺藤瓜,去看看消息类型的具体内容——查看消息类型。

查看消息类型:命令为:

rosmsg show message-type-name

对上述的geometry_msgs/Twist尝试如下命令

rosmsg show geometry_msgs/Twist

理解消息类型的命名:

和ROS里其他的程序一样,每条消息类型都属于一个特定的包。消息类型名总会包含一个斜杠,斜杠前面的名字是包含它的包:

package-name/type-name

例如:geometry_msgs/Twist消息类型可以按照如下方法分解

geometry_msgs + Twist => geometry_msgs/Twist

 
 

 
 

 
 

1.ROS启动小乌龟的更多相关文章

  1. [ROS]1 小乌龟

    对于一个新新新手,Linux,ROS都要学习.安装ROS真的很讨厌了,于是采用易科机器人实验室的ubuntu12.04-amd64-ros-exbot-h2-140520版本. 测试一下小乌龟节点.主 ...

  2. ROS启动多launch文件

    在ROS工程中经常需要启动好几个launch文件,比较不方便,有下面两种方法可以更高效些: 重写一个大型的launch文件,将所有的节点的启动配置信息都包含进去. 通过bash写一个xxx.sh文件, ...

  3. Ubuntu14.04+ROS 启动本地摄像头

    STEP1安装usb_cam 创建一个工作空间,make一下 mkdir  -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make STEP2下面是安装usb_c ...

  4. ros启动节点Error: package 'chapter2_tutorials' not found问题

    在学习ROS时,实现节点之间的通信时,参考ROS机器人高效编程,每次启动节点的时候 $ rosrun chapter2_tutorials example1_a 都会提示 Error: package ...

  5. ros 启动launch文件,附带参数

    roslaunch cartographer_ros cartographer_ref.launch resolution:=0.07 #下面是cartographer_ref.launch的内容 & ...

  6. ubuntu16.04 ROS安转及RVIZ启动

    1.软件中心配置 首先打开软件和更新对话框,打开后按照下图进行配置(确保你的"restricted", "universe," 和 "multiver ...

  7. (二)ROS系统架构及概念 ROS Architecture and Concepts 以Kinetic为主更新 附课件PPT

    第2章 ROS系统架构及概念 ROS Architecture and Concepts PPT说明: 正文用白色,命令或代码用黄色,右下角为对应中文译著页码. 这一章需要掌握ROS文件系统,运行图级 ...

  8. ROS indigo 删除和安装

    删除比较容易:  sudo apt-get remove ros-jade-desktop-full 但是如果怕删不干净可以采用: sudo apt-get remove ros-*  ,但是不确定会 ...

  9. 2017年7月ROS学习资料小结

    <孙子兵法·谋攻篇>:"上兵伐谋,其次伐交,其次伐兵,其下攻城:攻城之法为不得已." 任何发生在自己国土上的战争,即便胜利,也饱含屈辱. ----~~~~----Gaz ...

随机推荐

  1. java实现《剑指offer》(二)11~20 更新中

    11.二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. (1)最优解 public class Solution { public int NumberOf1(int ...

  2. 细说REST API安全之认证授权

    认证授权包含2个方面:(1)访问某个资源时必须携带用户身份信息,如:用户登录时返回用户access_token,访问资源时携带该参数.(2)检查用户是否具备访问当前资源(url或数据)的权限:访问资源 ...

  3. jsp查询修改

    也是只帖代码....不讲解. 1.search.jsp <%@ page language="java" import="java.util.*" pag ...

  4. gcc 编译 汇编 链接

    要想研究使用 gcc, gcc-multilib 这个包是一定要安装的, 它允许通过 -m32 和 -m64 选项来选择生成 32 位或者 64 的 ELF 文件. 我们知道程序的默认起点是 _sta ...

  5. 开源框架.netCore DncZeus学习(五)下拉树的实现

    千里之行,始于足下,先从一个小功能研究起,在菜单管理页面有一个下拉树,先研究下它怎么实现的 1.先找到menu.vue页面 惯性思维先搜索请选择三个字,原来是动态生成的 再向上找DropDown组件, ...

  6. Image转Base64

    今天和一个朋友联调图片转Base64时发现一个问题 public static string ImageToBase64(Image img) { BinaryFormatter binFormatt ...

  7. 【五】服务熔断、降级 —— Hystrix(豪猪)

    分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖,每个依赖关系将在某些时候将不可避免地失败. 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务 B和微服务 ...

  8. Javaweb学习笔记——(二十一)——————过滤器

    过滤器     过滤器概述         1.什么是过滤器:             过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理       ...

  9. Tomcat配置到JEE版eclipse中

    接我上篇文中的tomcat下载,及环境变量配置,http://blog.csdn.net/qq_40223688/article/details/79451468 这篇文章我就讲一下怎么把tomcat ...

  10. Chrome及Firefox插件

    注:以下所有工具都是笔者自己目前使用的 密码管理工具 lastpass 护眼工具 眼睛护航 待续……