使用ROS节点(五)

先启动roscore

roscore

为了获取节点信息,可以使用rosnode命令

$ rosnode

获取得一个可接受参数清单

使用rosrun命令启动一个新的节点,如下所示

$ rosrun turtlesim  turtlesim_node

我们可以看见出现了一个新窗口,窗口中间有一个小乌龟,如下图:

出现一个新节点

使用主题与节点交互

现在要使用一个节点,并让节点做如下工作:

$ rosrun turtlesim  turtle_teleop_key

通过节点订阅的主题,我们可以用箭头键移动乌龟,如下图:

为什么turtle_teleop_key执行时,小海龟会移动?

使用以下命令查看主题清单

$ rostopic list

使用echo参数,可以查看节点发出的信息。运行以下命令行并使用键盘出发消息

$ rostopic echo /turtle1/cmd_vel

看到类似显示

使用命令行擦好看消息类型

rostopic  type  /turtle1/cmd_vel 

如果你想看到消息字段,使用以下命令:

$ rosmsg show geometry_msgs/Twist

我们可以通过这些工具使用rostopic pub [topic] [msg_type] [args] 命令直接发布主题

$ rostopic pub -1 /turtle1/cmd_vel  geometry_msgs/Twist -- ‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘

参数分析:

rostopic pub   这条命令将会发布消息到某个给定的话题。

-1           (单个破折号)这个参数选项使rostopic发布一条消息后马上退出。

/turtle1/command_velocity    这是消息所发布到的话题名称。

turtlesim/Velocity           这是所发布消息的类型。

--   (双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。

2.0 1.8  正如之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。这些参数其实是按照YAML语法格式编写的,这在YAML文档中有更多的描述。

小乌龟画圆:

你可能已经注意到turtle已经停止移动了。这是因为turtle需要一个稳定的频率为1Hz的命令流来保持移动状态。我们可以使用rostopic pub -r命令来发布一个稳定的命令流

 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- ‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘

..使用 rostopic hz

  rostopic hz命令可以用来查看数据发布的频率。 用法: rostopic hz [topic]

  我们看一下turtlesim_node发布/turtle/pose时有多快:

rostopic hz /turtle1/pose

现在我们可以知道了turtlesim正以大约60Hz的频率发布数据给turtle。

时间: 2024-11-07 23:09:07

使用ROS节点(五)的相关文章

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

要求已经在Linux系统中安装一个学习用的ros软件包例子: sudo apt-get install ros-indigo-ros-tutorials ROS图形概念概述 nodes:节点,一个节点即为一个可执行文件,可以通过ROS和其他节点进行通信: messages:消息,当订阅或者发布一个topic时使用的数据类型: topics:话题,节点可以发布信息到topics或者从topics那里订阅信息: master:节点管理器,ROS的name service,提供服务,例如让不同的节点可

ROS-4 : ROS节点和主题

依照<ROS-3 : Catkin工作空间和ROS功能包>,创建catkin工作空间,并在起src下创建功能包ros_demo_pkg,依赖项为roscpp.std_msgs.actionlib.actionlib_msgs,并构建该空功能包.ROS中节点间的基本通讯方式是topic,即publish/subscribe模式.以下介绍如何创建两个两个节点分别发布和订阅一个主题. 一.创建节点 1.创建发布者节点topic_publisher 首先在功能包ros_demo_pkg下的src下创建

北洋UAM-05LX(网口系列适用)ROS节点

参考创客智造ROS与激光雷达入门教程 说明: 介绍ROS如何接入Hokuyo网口的雷达及基本使用 测试雷达:UAM-05LX采用太网接口,如果型号是USB口的参考教程 ros wiki: http://wiki.ros.org/urg_node 注意: 户外的直接太阳强光照射可能会产生测量误差 使用时会产生热量,请在底座处安装200x200x20 的铝板用来散热 参数有可能随时改变 urg_node包安装 deb包安装 $ sudo apt-get install ros-indigo-urg-

ROS 节点增加参数

1,直接加参数: eg: 详细见:http://blog.csdn.net/Start_From_Scratch/article/details/51567813 2,通过配置文件增加: ymal 文件 launch 文件 程序:

解决ROS系统中节点无法启动的问题

在调试中出现ROS节点无法启动的问题报错 Usage: rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS] rosrun will locate PACKAGE and try to find an executable named EXECUTABLE in the PACKAGE tree. If it finds it, it will run it with ARGS. 处理方法就是把节点文件直接移到PACKAGE的下一级文

机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】

转自:http://blog.exbot.net/archives/2966 导语:本期公开课面向想入手ROS却又不知从何下手的小伙伴,为大家梳理好学习思路. ROS和Android一样是开源的,功能上也是相差无几,它可以提供硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理.其独特之处在于,能够支持多种语言,如C++.Python.Octave和LISP,甚至支持多种语言混合使用,这可以简化开发者的工作.因为它是基于Linux的系统,其可靠性也会更高,体积可以做到更小,适合嵌入式设

ros:init()

ros::init()是ROS程序调用的第一个函数,用于对ROS程序的初始化. ros::init()函数的声明在ROS代码中的./src/ros_comm/roscpp/include/ros/init.h文件中. 该函数的具体实现在./src/ros_comm/roscpp/src/libros/init.cpp文件中. 该函数主要调用了以下五个函数对ROS程序进行初始化: network::init(remappings); master::init(remappings); this_n

ROS中的日志(log)消息

学会使用日志(log)系统,做ROS大型项目的主治医生 通过显示进程的运行状态是好的习惯,但需要确定这样做不会影响到软件的运行效率和输出的清晰度.ROS 日志 (log) 系统的功能就是让进程生成一些日志消息,显示在屏幕上.发送到特定 topic 或者储存在特定 log 文档中,以方便调试.记录.报警等.下面简单介绍如何生成和查看日志消息. 日志消息 在ROS中,有一个特殊的话题叫作/rosout,它承载着所有节点的所有日志消息./rosout消息的类型是rosgraph_msgs/Log: r

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo