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

本文详细介绍了ROS(Robot Operating System)的基本概念和操作,包括如何安装ROS教程包,理解ROS中的节点、消息和话题,以及如何使用roscore、rosnode和rosrun等命令行工具。通过实践演示,如运行turtlesim_node节点和重映射节点名称,帮助读者快速掌握ROS的基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这篇教程主要介绍了 roscorerosnode,和 rosrun等命令行工具。

1 准备工作

首先安装一个轻量级的tutorial

$ sudo apt-get install ros-<distro>-ros-tutorials

其中,<distro>需要用特定的版本号替换,例如kinetic

2 几个基本概念

  • Nodes节点:一个节点就是能与另外一个节点通信的可执行程序。
  • Messages消息:订阅或发布话题时,ROS的数据结构类型。
  • Topics话题:一个能订阅或发布话题的节点。
  • Master:帮助所有nodes找到彼此的节点。
  • rosout:ROS标准输出。
  • roscore:包含了Master,rosout和parameter server参数服务器。

3 节点

节点不仅仅是一个可执行文件。

  • ros节点可以利用ros client libarary来和其他节点通信。

  • 节点可以订阅或者发布一个topic话题。

  • 节点也可以提供或者使用一个service服务。

4 Client Libraries

ROS client libraries允许节点用不同的编程语言编写,并进行通信:

  • rospy = python client libary
  • roscpp = c++ client library

5 roscore

在使用ros之前,第一件要做的事情就是启动roscore

$ roscore

启动之后会看到这样的消息:

... logging to /home/lk/.ros/log/57e9d664-9a49-11e9-8898-d46d6d97e028/roslaunch-Mibook-7319.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://Mibook:45859/
ros_comm version 1.12.14


SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES

auto-starting new master
process[master]: started with pid [7330]
ROS_MASTER_URI=http://Mibook:11311/

setting /run_id to 57e9d664-9a49-11e9-8898-d46d6d97e028
process[rosout-1]: started with pid [7343]
started core service [/rosout]

如果roscore没有被初始化,就会产生一个网路配置的问题。

6 使用rosnode

打开一个新的终端,使用rosnode命令来查看roscore做了什么,注意之前的roscore窗口一定不能被关闭!

打开一个新的终端,环境会被重新设置,~/.bashrc文件会被刷新。

如果新打开一个窗口,rosnode出了问题,需要把环境手动添加到~/.bashrc文件中。

rosnode显示了当前正在运行的ros节点:

$ rosnode list

会看到:

/rosout

使用rosnode info命令来查找特定节点的信息:

$ rosnode info /rosout
# echo
--------------------------------------------------------------------------------
Node [/rosout]
Publications: 
 * /rosout_agg [rosgraph_msgs/Log]

Subscriptions: 
 * /rosout [unknown type]

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


contacting node http://Mibook:45075/ ...
Pid: 7343

7 使用rosrun

rosrun可以在不知道package路径的情况下,直接运行节点。

标准用法:

$ rosrun [package_name] [node_name]

举例,现在运行一个turtlesim_node

$ rosrun turtlesim turtlesim_node

会看到一个窗口:

1561798400199

在新的窗口中查看rosnode节点:

$ rosnode list
# echo
/rosout
/turtlesim

可以使用重映射命令来改变节点的名称:

$ rosrun turtlesim turtlesim_node __name:=liukai_turtle

这时候又会产生一个小乌龟:

1561798841709

最后再查看一下节点:

$ rosnode list
/liukai_turtle
/rosout
/turtlesim

如果出错了,使用rosnode cleanup命令清理所有节点。

最后使用rosnode ping命令来ping一下自己的小乌龟:

$ rosnode ping liukai_turtle
rosnode: node is [/liukai_turtle]
pinging /liukai_turtle with a timeout of 3.0s
xmlrpc reply from http://Mibook:41971/	time=0.499010ms
xmlrpc reply from http://Mibook:41971/	time=2.086878ms
xmlrpc reply from http://Mibook:41971/	time=1.683950ms
xmlrpc reply from http://Mibook:41971/	time=1.563072ms
xmlrpc reply from http://Mibook:41971/	time=2.007008ms
xmlrpc reply from http://Mibook:41971/	time=1.938105ms
^Cping average: 1.629670ms

8 总结回顾

  • roscore = ros + core
  • rosnode = ros + node
  • rosrun = ros + run

常用命令:

命令作用
roscore启动ros核心,
包括master,rosout,
parameter server参数服务器
rosnode list列出所有的rosnode 节点
rosnode info [node_name]列出某个node的信息
rosrun [package_name] [node_name]启动某个ros节点
rosnode ping [node_name]ping某个节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值