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使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
4天前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【10月更文挑战第22天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
|
11天前
|
存储 Unix Linux
哪些工具可以烧录树莓派的操作系统镜像
除了常见的烧录工具,树莓派操作系统镜像还可以通过以下工具烧录: 1. **Etcher**:树莓派官方推荐的图形界面工具,支持多操作系统,使用简单,具备严格的设备验证和校验机制。 2. **dd 命令**:适用于 Linux 和类 Unix 系统,功能强大但需谨慎使用,适合熟悉命令行的用户。 3. **BalenaEtcher**:与 Etcher 类似,跨平台且操作简单,确保烧录过程的准确性和安全性。 初学者建议使用 Etcher 或 BalenaEtcher,熟悉命令行的用户可以选择 dd 命令。
|
1月前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
65 0
|
1月前
|
安全 网络安全 数据库
Kali渗透测试:使用工具Metasploit攻击操作系统(一)
Kali渗透测试:使用工具Metasploit攻击操作系统(一)
|
1月前
|
安全 Linux 网络安全
Kali渗透测试:使用工具Metasploit攻击操作系统(二)
Kali渗透测试:使用工具Metasploit攻击操作系统(二)
|
1月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
29 0
|
3月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
159 1
|
3月前
|
Ubuntu Apache
Ubuntu20.04下一键安装ROS1 Noetic
本文提供了一个简化在Ubuntu 20.04系统上安装ROS1 Noetic过程的一键安装脚本工具,该脚本通过优化配置和使用清华大学镜像源,加速了国内用户的下载速度,并自动完成环境设置和依赖安装,同时提供了详细的使用说明和源码。
321 0
Ubuntu20.04下一键安装ROS1 Noetic
|
3月前
|
Ubuntu 机器人 虚拟化
Ubuntu22.04配置ROS2 Humble
这篇文章是关于如何在Ubuntu 22.04系统上配置ROS2 Humble的详细教程,包括虚拟机安装、环境配置、网络设置、软件源更换、ROS1和ROS2的安装步骤。
227 1
|
3月前
|
Ubuntu Linux 开发工具
Windows11 WSL2 Ubuntu编译安装perf工具
Windows11 WSL2 Ubuntu编译安装perf工具
134 0
下一篇
无影云桌面