ROS学习笔记三(理解ROS节点)

要求已经在Linux系统中安装一个学习用的ros软件包例子:

sudo apt-get install ros-indigo-ros-tutorials

ROS图形概念概述

  • nodes:节点,一个节点即为一个可执行文件,可以通过ROS和其他节点进行通信;
  • messages:消息,当订阅或者发布一个topic时使用的数据类型;
  • topics:话题,节点可以发布信息到topics或者从topics那里订阅信息;
  • master:节点管理器,ROS的name service,提供服务,例如让不同的节点可以找到彼此;
  • rosout:等价于ROS中的stdout/stderr;
  • roscore:master+rosout+parameter service(参数服务器)。

ROS客户端库函数允许使用不同的编程语言进行编程通信:

  • rospy:Python client library
  • roscpp:C++ client library

[1]roscore  在运行所有ROS程序前首先要运行的命令

//打开一个新终端roscore &

[2]rosnode 显示当前运行的ROS节点信息,其中rosnode list命令列出了正在运行的节点名称。

//打开一个人新终端$ rosnode list
/rosout

系统中只有一个节点rosout在运行,它将一直运行并收集和记录节点的调试输出。

[3]rosnode info返回一个特定节点的节点信息,事实上由它发布 /rosout_agg。

rosnode info /rosout

[4]rosrun命令允许你直接通过软件包名称运行软件包当中的节点(不需要知道软件包的所在路径,但必须是在ROS的搜索目录范围之内)。

使用方法:

rosrun [package_name] [node_name]

我们现在运行软件包turtlesim中的turtlesim_node节点:

rosrun turtlesim turtlesim_node

检验:在一个新窗口中:

$ rosnode list
/rosout
/turtlesim

[5]在命令行中重新分配名字

$ rosrun turtlesim turtlesim_node __name:=my_turtlesim
$ rosnode list
/my_turtlesim
/rosout

[6]命令rosnode ping:

$ rosnode ping /my_turtlesim
rosnode: node is [/my_turtlesim]
pinging /my_turtlesim with a timeout of 3.0s
xmlrpc reply from http://ubuntu:33201/  time=0.409842ms
xmlrpc reply from http://ubuntu:33201/  time=1.335144ms
xmlrpc reply from http://ubuntu:33201/  time=1.242876ms
xmlrpc reply from http://ubuntu:33201/  time=1.311064ms
xmlrpc reply from http://ubuntu:33201/  time=1.254082ms

总结

  • roscore=ros+core,master(为ROS提供名称服务)+rosout(stdout/stderr)+parameter server。所以在使用ROS的时候的第一件事就是运行roscore来启动这些服务;
  • rosnode=ros+node,ROS tool to get information about a node;
  • rosrun=ros+run,runs a node from a given package。
时间: 2024-11-04 11:51:18

ROS学习笔记三(理解ROS节点)的相关文章

ROS学习(三)—— ROS文件系统

一.预备工作 使用ros0tutorials程序包,先下载: sudo apt-get install ros-<distro>-ros-tutorials 其中<distro>应该需要替换成ROS的对应版本:Jade.Indigo.hydro.groovy.fuerte.kinetic p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 二.文件系统概念: 三.文件系统工具 1.rospack = ros + pac

Ajax学习笔记(三)

三.jQuery库详解 1.使用jQuery之后,javascript操作的不再是HTML元素对应的DOM对象,而是包装DOM对象的jQuery对象.js通过调用jQuery对象的方法来改变它所包装的DOM对象的属性,从而实现动态更新HTML页面. 由此可见,使用jQuery动态更新HTML页面只需以下两个步骤: (1)获取jQuery对象.jQuery对象通常是DOM对象的包装 (2)调用jQuery对象的方法来改变自身.当jQuery对象被改变时,jQuery包装的DOM对象随之改变,HTM

小猪的数据结构学习笔记(三)

小猪的数据结构学习笔记(三) 线性表之单链表 本章引言: 上一节中我们见识了第一个数据结构--线性表中的顺序表; 当你把操作的代码自己写几遍就会有点感觉了,如果现在让你写顺序表的 插入算法,你能够想出大概的代码么?如果可以,那么你就可以进入新的章节了; 否则,还是回头看看吧!在本节,我们将迎来线性表的链式表示--单链表 单链表和顺序表有什么优势和劣势呢?单链表的头插法和尾插法有什么不同呢? 请大家跟随笔者的脚步来解析线性表中的单链表把! 本节学习路线图 路线图解析: ①先要理解顺序表和单链表各自

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没

【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠

碰撞与休眠 上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性.一旦刚体开始运动,那么系统方法便会监视刚体的碰撞状态.一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束.关于休眠可以理解成为让游戏对象变成静止状态.如果给某个游戏对象休眠的状态,那么这个物体将立马静止,不再运动. 碰撞 首先学习下碰撞几个重要的方法: OnCollisionEnter(  ):刚体开始接触的时候,立即调用. OnCollisionStay(  ):碰撞过程中,每帧都会调用此方法,直到撞

angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指令(5)-link文章也提到了link函数的第五个参数linker. 这篇文章就来讲解一下transclude()方法(linker()方法),是怎么使用的,另外,它也是compile函数的第三个参数,用法一样. 下面就通过自己写一个简易的模拟ngRepeat的指令cbRepeat,来了解linke

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

angular学习笔记(三十)-指令(7)-compile和link(2)

继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的代码: html: <body> <div ng-controller="compileCtrl"> <level-one> <level-two> <level-three> hello,{{name}} </level-