ubuntu16.04下ROS操作系统学习笔记(三 / 四)ROS基础-ROS中的关键组件(上)

简介: ubuntu16.04下ROS操作系统学习笔记(三 / 四)ROS基础-ROS中的关键组件

ROS当中的关键组件:

  1. Launch文件
  2. TF坐标变换
  3. Qt工具箱
  4. Rviz可视化平台
  5. Gazebo物理仿真环境


Launch文件

我们之前都是使用rosrun命令来运行具体的节点的。当我们启动一个比较复杂的功能的时候,我们需要启动很多个节点。很多时候这种方法非常麻烦。ROS提供了另一种机制来实现多个节点的启动,同时也可以具体地配置每个节点之间的参数。比rosrun这样的命令要方便地多。并且launch文件可以自动启动ros master。我们接下来看一个比较简单的launch文件:

这个文件里面有两个标签,launch的标签和node的标签。

launch标签是整个launch文件中的根元素。也就是说内容都要在launch文件里面。

node标签的意思就是启动ros当中的一个节点。

格式如上图所示,其中含有以下参数:

  • pkg:节点所在功能包名称。要启动的节点的功能包的名字。
  • type:节点的可执行文件名称。功能包下面的可执行文件。
  • name:节点运行时的名称。节点运行成功之后的名字。这个名字会覆盖代码当中的名字的。
  • output、respawn、required、ns、args。除了上述参数之外还有这些参数。output表示的是节点当中的一些内部信息是否要打印到屏幕上。或者说打印到日志文件里面去。respawn表示的是如果当前节点启动失败他会重新启动。required节点表示的是如果这个节点不启动的话,那么整个launch文件将不会启动。ns表示的是name space表示节点空间的命名属性。args表示的是节点当中具体有哪些参数,比如说从命令行输入两个参数的加数这样的。

除了launch标签和node标签之外还有另外的一些标签,比如像参数设置的标签等

更多的标签可以在以下链接中进行学习:http://wiki.ros.org/roslaunch/xml


TF坐标变换

 

在ros里面TF功能包能够帮助我们更好地管理使用坐标变换。那么TF功能包具体可以做什么呢?

  • 我们可以查询五秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样的?
  • 机器人夹取的物体相对于机器人中心坐标的位置在哪里?
  • 机器人中心坐标系相对于全局坐标系的位置在哪里?

我们可以通过广播TF变换或者监听TF变换实现坐标变换。

接下来我们通过一个简单的例子来具体说明一下:

安装一个功能包,是关于小海龟的一个例子

sudo apt-get install ros-kinetic-turtle-tf

接下来运行demo:

roslaunch turtle_tf turtle_tf_demo.launch

这里报了一个错误:ImportError: No module named rospkg。这是由于anaconda里面的环境变量设置导致的。可以由以下方法解决:

 conda install setuptools
 pip install -U rosdep rosinstall_generator wstool rosinstall six vcstools

之后我们运行demo,可以看到以下场景:

之后我们启动键盘控制节点:

rosrun turtlesim turtle_teleop_key

之后我们控制小海龟移动,你会发现一个是跟随着另一个在做移动的:

在这个例子当中就是展示了坐标变换的关系,我们可以通过以下命令看一下它是如何体现坐标变换的。

生成的pdf文件会放到终端运行的根目录下面:

这里面是一个树型结构,可以看到里面有三个坐标系,一个world,一个turtle1和一个turtle2。这三个坐标系有什么关系呢?

我们已知turtle1的位置,也已知turtle2的位置。我们现在的目的是想让第二只海龟向第一只海龟移动。我们可以通过命令行来查找这两个坐标之间的关系:

我们可以看到平移关系的距离为0,旋转角度有一点角度的偏差,角度的表示是通过三种方式来表达的。

 

我们如何来通过代码展示刚才的这样一个例子呢?

  • 定义TF广播器(TransformBroadcaster)
  • 创建坐标变换值
  • 发布坐标变换(sendTransform)

我们在我们的工作空间下面单独编写一下关于tf的代码。创建功能包,然后编写代码:

这两个文件分别是tf的给广播者和监听者。

我们首先看一下TF的广播器:

我们看main函数:首先需要订阅具体的海龟位置,订阅成功之后调用回调函数。在回调函数里面调用广播器,之后封装一个海龟的坐标变换,这个海龟的坐标变换是与世界坐标系的变换,其实只有z轴有旋转,x,y轴都是0。之后的话我们通过sendTransform来将其发布出去。

之后我们看一下TF监听器:

  • 定义TF监听器(TransformListener);
  • 查找坐标变换(waitForTransform、lookupTransform)

写好代码之后就可以编译代码了

之后在工作空间目录下对其进行catkin_make编译就可以了,编译成功之后就可以通过launch文件启动:

在中国大学mooc上面,中科院有ROS公开课。也有讲坐标变换:

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
2月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
240 2
|
2月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
806 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
2月前
|
Ubuntu Shell Python
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
这篇博客详细讲解了如何在Ubuntu 20.04系统中为PyCharm设置快捷启动图标,包括创建.desktop文件、编辑文件内容以及添加到收藏夹的步骤。
411 0
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
|
29天前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
71 14
|
1月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
124 1
|
2月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
48 3
|
2月前
|
Ubuntu
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
本文介绍了如何在Ubuntu系统下使用Anaconda和Jupyter Notebook指定并切换不同的虚拟环境。
109 0
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
|
3月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
129 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
4月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
225 1

热门文章

最新文章