三、理解ROS功能包(一)
三、理解ROS功能包(一)
0.前言
对于功能包的理解意思在于两个方面。
一方面,当你完成各个功能包的功能实现,需要组合各个功能包以实现最终更复杂的功能,例如你完成了定位、路径规划、底盘速度控制、雷达数据获取这几个功能包的实现,现在要完成最终的导航功能,那么就需要从抽象层面清楚理解功能包的构成。功能包在抽象层面最重要的特点就是你要使用它的时候可以完全不了解其内部的代码实现,而只需要了解功能包提供的接口。以gmapping功能包为例,它的接口主要为:订阅/odom、/imu、/laser_scan、/tf话题,发布/map话题,所以单对于gmapping,我们希望它生成代价地图(/map),就需要提供给它/odom、/imu、/laser_scan、/tf话题。
另一方面,功能包的理解是完成整个ROS框架搭建的基础,所有具体的代码,为的都是最后实现功能包所对应的”功能“。
*这里明显写的很抽象,等复习到后面一点的时候,我打算去了解一下turtlesim功能包源码的组成,然后专门总结一下我调包的技术;前者对应的是我说的功能包理解的第二方面,后者对应我说的第一方面。
1.从turtlesim功能包简单理解
这里还要特别指明我复习的参考书是胡春旭写的《ROS机器人开发实践》,作者在B站上还有“ROS入门21讲”的视频,我的ROS技术差不多都是跟着古月学的
为了搞清楚turtlesim功能包节点、服务、话题的基本情况我实际操作了一下,来搞清楚下面几个问题:
a.turtlesim功能包下只有一个节点吗?
其实这个问题不用验证,因为我还是知道turtlesim下有两个节点的,也就是/teleop_turtle和/turtlesim,但是我还是没事检验了一下
我rosrun了turtlesim的两个节点,然后用rosnode list指令在终端输出来
其实可以利用自动补全更加顺理成章地来查看有turtlesim功能包下有哪些节点
我都检验过了,这四个都是turtlesim功能包下的节点
特别要说的是这个draw_square节点,字面意思就是这个节点实现的任务,“画正方形”,运行起来的时候乌龟就会一直在那边画正方形。这应该算是个挺无聊的节点,因为节点本身拥有某种角色身份才更合乎ROS的理念。例如turtlesim_node的身份是海龟本身,turtle_teleop_key的身份是遥控器,而这个draw_square指代了一个具体过程,这个功能可以用节点完成,但是显然用服务的形式更加符合一般思维逻辑(解释“为什么不能用topic代替service“也是一样的理由)。
b.节点会提供哪些东西?
这个问题算是一个先导问题,因为对于功能包实际应用时最重要的就是把它要抽象成一个通过接口就能交互的“盒子”。
这个问题大答案就是第一篇中所说的几个ROS的基本概念,也就是ROS的一些基本组成:话题、服务、参数
c.turtlesim提供了哪些话题?
直接看结果,我们就以turtlesim_node为例:
它产生了“/turtle1/cmd_vel”“ /turtle1/color_sensor”“/turtle1/pose“三个话题
这里说的产生不是发布的意思!更确切是注册的意思,因为生成订阅者也会产生这个话题,话题可以视作公告板上的一张纸,只要是有读者或者有撰写者,这个纸就会被贴到公告板上。
然后我用rostopic echo来查看各个话题,rostopic echo查看的是“纸”上的内容。
cmd_vel(command_velocity)是我最熟悉的话题,它的中文意思是速度指令,我们用echo去查看的时候会发现什么也没有,这个是因为“海龟”本身并不会在纸上写任何东西,它只是作为一个订阅者,阅读纸上内容,然后做出相应动作。
echo pose的话会得到海龟当前的位置信息。
然后我echo了一下color_sensor,它得到的信息是背景的颜色信息:
然后我们可以来看一下各个节点之间通过话题实现的通讯。首先我们要确认海龟本身是我们的主要节点,然后我们开启遥控器操控海龟移动。这个操控的信息实现的办法就是通过话题/cmd_vel,遥控器在纸上写下指令,海龟看了以后进行移动。
这里我就用rqt工具来直观验证一下:
验证完毕。
d.turtlesim提供的服务有哪些?
这里我们先尝试一下不太可能有服务提供的节点,具体见下(话题名简写了):
/teleop_key
/draw_square
他们都是有服务的,但是貌似都是没有肉眼可见的功能
所以主要还是要看turtlesim_node的服务列表了:
提供的服务翻译成中文即可
e.turtlesim提供的参数有哪些?
这里就长话短说了,这里会发现一个奇怪的问题,就是节点一旦启动参数就会被加载到公告板上,就算对应节点关闭,公告板上依然留有参数
这里以turtlesim_node为例,它提供了这些参数,描述的是背景板的颜色:
*到这里就先告一段落,以上是了解了一下turlesim功能包在干些什么,提供了什么,具体怎么被使用,以及怎么搭建就看后续了。现在我又有点明白了开头说的两个理解功能包的方面,现在可以说的更加确切些:一方面,理解功能包怎么使用;一方面,理解功能包怎么被搭建。
三、理解ROS功能包(一)相关推荐
- 机器人SLAM与自主导航(三)——SLAM功能包
机器人SLAM与自主导航(三)--SLAM功能包 目录 一.gmapping 1.gmapping功能包 2.栅格地图取值原理 3.gmapping安装 4.配置gmapping节点 5.启动gmap ...
- 相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 介绍
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 相机与激光雷达外参标定 功能包介绍 环境配置及功能包安装 功能包节点 准备内容 1 l ...
- ROS-3 : Catkin工作空间和ROS功能包
一.创建一个Catkin工作空间 步骤一:构建catkin工作空间 安装完成ROS版本后,设置好环境变量:$ source /opt/ros/kinetic/setup.bash.然后即可创建一个ca ...
- ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试
ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试 gazebo仿真测试 gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaun ...
- ROS实现串口GPS数据的解析与通信(这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样)
我发现这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样!!! https://gitee.com/maxibooksiyi/gps_driver 转载自:https://blo ...
- 对ROS功能包中package.xml文件的疑问
在一个ROS功能包中,CMakeList.txt和package.xml是不可缺少的两个文件. 最近听师兄说,如果xml文件出错了,功能包会无法通过 我是比较怀疑这个说法的,毕竟官方原文是这样说的: ...
- 创建ROS工作空间,ROS功能包(Package)
1.创建ROS工作空间 mkdir -p ros_ws/src cd ros_ws/src/ catkin_init_workspace ############################### ...
- Ubuntu 16.04安装RealSense ROS功能包
RealSense ROS安装 安装SDK 二进制安装 源码编译安装 安装ros包 测试 这个包支持D400 系列 SR300 和T265相机. 安装SDK 个人推荐源码编译安装,源码编译安装比较麻烦 ...
- DJI 无人机 Onboard SDK ROS 功能包demo运行
DJI 无人机 Onboard SDK ROS 功能包demo运行 demo功能 准备测试环境 运行 dji sdk 节点 运行 demo 节点 自动飞行任务 航点自动飞行 兴趣点环绕自动飞行 飞行控 ...
最新文章
- Java NIO之缓冲区
- Tomcat启动失败错误解决Could not publish server configuration for Tomcat v8.0 Server at localhost....
- 第2章 数字之魅——快速寻找满足条件的两个数
- link中的rel表示relation(关系),表示了当前文档与 Web 集合中其他文档的关系
- SEO:避免关键词内部竞争带来的无法收录问题,
- 决策树:ID3和C4.5
- [我的常识]动物庄园里说鼻环,到底为啥要穿鼻环呢
- 用ps绘制中国银行的标志
- Dxdesigner SCH to Mentor PCB
- 【算法学堂】字符串基础算法
- 影视剪辑,Pr视频剪辑软件,波纹滚动编辑及比例拉伸
- for循环 批处理 查找文件 详细信息 文件名
- 什么是顶级域名,二级域名和三级域名
- 阿里云域名如何拍卖?
- mysql俩个表怎么创主外洁_单独招生面试题极其详细答案
- dakai微信小程序 ios_【iOS】微信小程序打开APP到底是怎么回事?
- 从零开始搭建自己的网站一:整体步骤
- Born to Win: Find Your Success Code by Zig Ziglar and Tom Ziglar
- 虚拟化技术 - 概览 [一]
- Openshift入门:基本概念解析
热门文章
- 我的历史文章整理(2017-2019)
- windows 2003添加删除windows组件中无iis应用程序服务器项的解决
- android代码混淆时,如何防止第三方jar包被混淆导致程序出错
- 关于大数据技术原理与应用的学习(5)
- SD卡读写权限和注意事项
- 828计算机组成原理和操作系统,解放军信息工程大学2015年《828计算机组成原理与操作系统》考研专业课真题试卷...
- 《乐得瑞任天堂Switch底座方案》能让任天堂变身超大屏幕的底座方案LDR6023B
- cad移动时捕捉不到基点_CAD对象捕捉也打开完了,怎么交点还是捕捉不到啊
- OpenSearch 可以轻松摄取、搜索、可视化和分析数据
- css第4天笔记-圆角边框;盒子阴影;文字阴影;浮动;PS切图