ros官网初级教程学习总结(5-9)(代码片段)

NodYoung NodYoung     2023-02-24     700

关键词:

教程网址:http://wiki.ros.org/cn/ROS/Tutorials
本博客为5-9小节。

理解 ROS节点

图概念概述

  • Nodes:节点,一个节点即为一个可执行文件。节点可以发布或接收一个话题,也可以提供或使用某种服务。
  • Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
  • Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
  • rosout: ROS中相当于stdout/stderr。
  • roscore: 主机+ rosout + 参数服务器。

客户端库

ROS客户端库允许使用不同编程语言编写的节点之间互相通信。
- rospy = python 客户端库
- roscpp = c++ 客户端库

roscore

使用rosnode

rosnode 显示当前运行的ROS节点信息。
rosnode list:列出活跃的节点。
rosnode info [结点]:返回一个特定节点的信息。

使用 rosrun

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。
rosrun [package_name] [node_name]

理解ROS话题

使用 rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形。
$ rosrun rqt_graph rqt_graph

rostopic介绍

rostopic命令工具能让你获取有关ROS话题的信息。
$ rostopic -h
rostopic echo [topic]:显示在某个话题上发布的数据。
rostopic list:列出所有当前订阅和发布的话题。$ rostopic list -h
$ rostopic list -v:在rostopic list中使用verbose选项。

ROS Messages

话题之间的通信是通过在节点之间发送ROS消息实现的。这意味着话题的类型是由发布在它上面的消息类型决定的。
rostopic type [topic]:查看发布在某个话题上的消息类型。
$ rosmsg show turtlesim/Velocity :使用rosmsg命令来查看消息的详细情况
rostopic pub [topic] [msg_type] [args]:把数据发布到当前某个正在广播的话题上。
rostopic hz [topic]:查看数据发布的频率。

使用 rqt_plot

rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。
$ rosrun rqt_plot rqt_plot

理解ROS服务和参数

ROS Services

服务(services)是节点之间通讯的另一种方式,服务允许节点发送请求(request) 并获得一个响应(response)。

使用rosservice

rosservice list         输出可用服务的信息
rosservice call [service] [args]        调用带参数的服务
rosservice type  [service]        输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri

使用rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。

rosparam set            设置参数
rosparam get            获取参数
rosparam load [file_name] [namespace]         从文件读取参数
rosparam dump [file_name]          向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

$ rosparam get /:显示参数服务器上的所有内容。

ROS 参数服务器

我们在实现一个机器人的时候,我们一定会遇到需要存储很多参数的情况,当这些参数不断增加的时候我们可能会需要将这些参数存储在文件中,在某些时刻还需要在多个程序间共享这些参数,ROS 为了满足这种需求提供了一个参数服务器,它是一个共享的服务器,所有的ROS节点都可以共享这些参数,任何一个节点都可以对参数服务器上的参数进行增删查改操作。参数服务器可以存储各种类型的数据,并且还可以设置访问的范围是否只有当前的节点可以访问或者全部节点都可以访问。

使用 rqt_console 和 roslaunch

使用rqt_console和rqt_logger_level

rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。
rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括Fatal、Error、Warn、Info和Debug)。
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

使用roslaunch

roslaunch用来启动定义在launch文件中的多个节点。
$ roslaunch [package] [filename.launch]

Launch 文件解析

<launch>:以launch标签开头以表明这是一个launch文件。
<group ns="turtlesim1">:创建了不同分组并以’命名空间(namespace)’标签来区分。这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。
<node pkg="turtlesim" name="mimic" type="mimic">:启动节点。

使用rosed编辑ROS中的文件

使用 rosed

rosed 可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径。rosed默认的编辑器是vim。
$ rosed [package_name] [filename]

ros官网初级教程学习总结(1-4)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为1-4小节。安装并配置ROS环境安装ROS安装时记得换个好点的软件源,要不然会因为网络连接问题一直失败。管理环境export|grepROS主要是查看环境变量是否设置。ROSLISP_PACKAGE_DI... 查看详情

ros官网初级教程学习总结(10-16)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为10-16小节。创建ROS消息和ROS服务消息(msg)和服务(srv)介绍消息(msg):msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。msg文件存放在pack... 查看详情

ros官网初级教程学习总结(17-20)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为10-16小节。录制与回放数据录制数据(通过创建一个bag文件)如何记录ROS系统运行时的话题数据,记录的话题数据将会累积保存到bag文件中。录制所有发布的话题ro... 查看详情

ros官网中级教程学习总结(1-6)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为1-6小节。手动创建ROSpackage添加xml文件。当你的package里已经包含配置文件(package.xml),ROS能够找到它。执行:rospackfind[包名称]。应该注意到我们刚才所创建的package.xml依... 查看详情

ros官网初级教程学习总结(1-4)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为1-4小节。安装并配置ROS环境安装ROS安装时记得换个好点的软件源,要不然会因为网络连接问题一直失败。管理环境export|grepROS主要是查看环境变量是否设置。ROSLISP_PACKAGE_DI... 查看详情

ros官网初级教程学习总结(10-16)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为10-16小节。创建ROS消息和ROS服务消息(msg)和服务(srv)介绍消息(msg):msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。msg文件存放在pack... 查看详情

ros官网初级教程学习总结(17-20)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为10-16小节。录制与回放数据录制数据(通过创建一个bag文件)如何记录ROS系统运行时的话题数据,记录的话题数据将会累积保存到bag文件中。录制所有发布的话题ro... 查看详情

ros官网中级教程学习总结(1-6)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为1-6小节。手动创建ROSpackage添加xml文件。当你的package里已经包含配置文件(package.xml),ROS能够找到它。执行:rospackfind[包名称]。应该注意到我们刚才所创建的package.xml依... 查看详情

ros探索总结——ros新手教程

...结构,接下来就要开始准备动手感受一下ROS的强大了。ROS官网的wiki上针对新手的教程很详细,最好把所有的新手教程都搞清楚,这是后面开发最基础的东西。尽管如此,ROS对于新手来说还是很难上手,这里,我就来总结一下我... 查看详情

ros官方教程知识点总结[低阶阶段](代码片段)

1安装和配置ROS环境为了方便引用ROS的功能包,我们最好在一开始就将source/opt/ros/noetic/setup.bash添加到~/.bashrc文件中,而不是每打开一个终端后输入一次该命令。对于使用Python3的用户,为了告知ROS您的功能包是基于pytho... 查看详情

ros官方教程知识点总结[低阶阶段](代码片段)

1安装和配置ROS环境为了方便引用ROS的功能包,我们最好在一开始就将source/opt/ros/noetic/setup.bash添加到~/.bashrc文件中,而不是每打开一个终端后输入一次该命令。对于使用Python3的用户,为了告知ROS您的功能包是基于pytho... 查看详情

ros1学习-01使用ros系统进行相关代码开发,使用docker解决环境问题,遇到一些奇怪问题,总结汇总下,开始学习研究(代码片段)

目录前言1,关于ROS系统2,使用docker进行安装3,总结前言本文的原文连接是:https://blog.csdn.net/freewebsys/article/details/126063760未经博主允许不得转载。博主地址是:http://blog.csdn.net/freewebsys1,关于ROS系统https:// 查看详情

ros1学习-01使用ros系统进行相关代码开发,使用docker解决环境问题,遇到一些奇怪问题,总结汇总下,开始学习研究(代码片段)

目录前言1,关于ROS系统2,使用docker进行安装3,总结前言本文的原文连接是:https://blog.csdn.net/freewebsys/article/details/126063760未经博主允许不得转载。博主地址是:http://blog.csdn.net/freewebsys1,关于ROS系统https:// 查看详情

ros2学习笔记25--ros2话题统计编写教程(c++)(代码片段)

概要:这篇内容主要介绍用c++编写能够统计话题的侦听器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.1ros2话题统计教程(C++)(... 查看详情

ros学习writingasimplepublisherandsubscriber&examiningthem(代码片段)

本文主要部分全部来源于ROS官网的Tutorials.创建PublisherNoderoscdbeginner_tutorialsmkdir-psrcgeditsrc/talker.cpp&复制如下代码,其大致流程如下:InitializetheROSsystemAdvertisethatwearegoingtobepublishingstd_msgs/Stringmessagesonth 查看详情

ros官方教程知识点总结[低阶阶段](代码片段)

1安装和配置ROS环境为了方便引用ROS的功能包,我们最好在一开始就将source/opt/ros/noetic/setup.bash添加到~/.bashrc文件中,而不是每打开一个终端后输入一次该命令。对于使用Python3的用户,为了告知ROS您的功能包是基于pytho... 查看详情

ros2极简总结-slam(代码片段)

...图推断位置建图:推断给定位置的地图SLAM:同时学习地图和定位机器人 查看详情

ros2极简总结-命令行接口基础(代码片段)

参考文献:ROS2CLIBASICS- AquickdiveintoROS2CommandLineInterface之前,个人博客大量教程分节介绍过这些命令行,此文做一个总述,更方便了解全貌。大纲安装和导入基本命令结构发布者和订阅者服务行动和参数工具安装和... 查看详情